社区计算机视觉课程文档
变分自动编码器
并获得增强的文档体验
开始使用
变分自动编码器
自动编码器简介
自动编码器是一类主要用于无监督学习和降维的神经网络。自动编码器背后的基本思想是将输入数据编码成低维表示,然后将其解码回原始数据,旨在最小化重建误差。自动编码器的基本架构包括两个主要组成部分 - 编码器
和解码器
。
- 编码器: 编码器负责将输入数据转换为压缩或潜在的表示。它通常由一个或多个神经元层组成,这些神经元层逐渐减小输入的维度。
- 解码器: 另一方面,解码器接受由编码器生成的压缩表示,并尝试重建原始输入数据。与编码器类似,它通常由一个或多个层组成,但顺序相反,逐渐增加维度。
此编码器模型由一个编码器网络(表示为 $g_\phi$)和一个解码器网络(表示为 $f_\theta$)组成。低维表示在瓶颈层中学习为 $z$,重建的输出表示为 $x’ = f_\theta(g_\phi(x))$,目标是 $x \approx x’$。
在这种 vanilla 自动编码器中使用的常见损失函数是
它试图最小化原始图像和重建图像之间的误差。这也称为重建损失
。
自动编码器对于诸如数据去噪、特征学习和压缩等任务非常有用。然而,传统的自动编码器缺乏概率性质,而概率性质使 VAE 特别有趣,并且也适用于生成任务。
变分自动编码器 (VAE) 概述
变分自动编码器 (VAE) 通过引入概率方法
进行编码和解码,解决了传统自动编码器的一些局限性。VAE 背后的动机在于它们能够通过从潜在空间中学习到的分布而不是像 Vanilla 自动编码器那样从潜在向量中采样来生成新的数据样本,这使得它们适用于生成任务。
- 概率性质: 与确定性自动编码器不同,VAE 将潜在空间建模为概率分布。这会生成输入编码上的概率分布函数,而不仅仅是单个固定向量。这允许对数据中的不确定性进行更细致的表示。然后,解码器从此概率分布中采样。
- 潜在空间的作用: VAE 中的潜在空间充当输入数据的连续、结构化表示。由于它在设计上是连续的,因此可以轻松进行插值。潜在空间中的每个点都对应一个潜在输出,从而可以在不同的数据点之间实现平滑过渡,并确保潜在空间中更接近的点导致相似的生成结果
可以通过一个简单的示例来说明这个概念,如下所示。神经网络中的编码器负责以向量的形式获取输入图像的表示。此向量封装了各种特征,例如对象的微笑、头发颜色、性别、年龄等,表示为类似于 [0.4, 0.03, 0.032, …] 的向量。在此图中,焦点缩小到单个潜在表示,特别是“微笑”属性。 在 Vanilla 自动编码器 (AE) 的上下文中,微笑特征被封装为固定的确定性值。相比之下,变分自动编码器 (VAE) 经过精心设计,将此特征封装为概率分布。这种设计选择通过允许从指定的概率分布中采样值,有助于在生成的图像中引入可变性。
VAEs 背后的数学原理
理解 VAE 背后的数学概念涉及掌握概率建模和变分推断的原理。
- 概率建模: 在 VAE 中,潜在空间被建模为概率分布,通常假定为多元高斯分布。此分布由均值和标准差向量参数化,这些向量是概率编码器的输出。这包括我们学习到的表示 z,它进一步用于从解码器中采样,如下所示.
- 损失函数: VAE 的损失函数包括两个组成部分:重建损失(衡量模型重建输入的效果,类似于 vanilla 自动编码器)和 KL 散度(衡量学习到的分布与选择的先验分布(通常是高斯分布)的接近程度)。这些组件的组合鼓励模型学习潜在表示,该潜在表示既捕获数据分布又捕获指定的先验。
- 鼓励有意义的潜在表示: 通过将 KL 散度项纳入损失函数,鼓励 VAE 学习一个潜在空间,其中相似的数据点更接近,从而确保有意义且结构化的表示。自动编码器的损失函数旨在最小化重建损失和潜在损失。较小的潜在损失意味着对信息的有限编码,否则会增强重建损失。因此,变分自动编码器 (VAE) 发现自己处于潜在损失和重建损失之间的微妙平衡中。这种平衡变得至关重要,因为
较小的潜在损失
往往会导致生成的图像与训练集中存在的图像非常相似,但缺乏视觉质量。相反,较小的重建损失
会导致训练期间良好重建的图像,但会妨碍生成与训练集显着不同的新颖图像。在这两个方面之间取得和谐的平衡对于在图像重建和生成中实现理想结果至关重要。
总之,VAE 不仅仅是数据重建;它们生成新的样本并为理解潜在表示提供概率框架。模型架构中包含概率元素使 VAE 与传统自动编码器区分开来。与传统自动编码器相比,VAE 提供了对数据分布的更丰富的理解,这使得它们在生成任务中特别强大。