Variational auto-encoder VS auto-encoder

AE: 自编码器将输入转换为隐含空间中的表达并不是连续的,使得其中的插值和扰动难以完成。
  例如利用MNIST数据集训练的自编码器将数据映射到2D隐含空间中,图中显示不同的分类之间存在着明显的距离。这使得解码器对于存在于类别之间的区域无法便捷的进行解码。如果你不想仅仅只是复现输入图像,而是想从隐含空间中随机的采样或是在输入图像上生成一定的变化,那此时一个连续的隐含空间就变得必不可少了。
  如果隐含空间不连续,那么在不同类别中间空白的地方采样后解码器就会生成非真实的输出。因为解码器不知道如何除了一片空白的隐含区域,它在训练过程中从未见到过处于这一区域的样本。
VAE: 具有与标准自编码器完全不同的特性,它的隐含空间被设计为连续的分布以便进行随机采样和插值,这使得它成为了有效的生成模型。它通过很独特的方式来实现这一特性,编码器不是输出先前的n维度向量而是输出两个n维矢量:分别是均值向量μ和标准差向量σ

  我们希望得到尽量互相靠近但依然有一定距离的编码,以便在隐含空间中进行插值并重建出新的样本。为了实现满足要求的编码需要在损失函数中引入Kullback-Leibler散度(KL散度)。KL散度描述两个概率分布之间的发散程度。最小化KL散度在这里意味着优化概率分布的参数(μ,σ)尽可能的接近目标分布。

  这一随机生成意味着即使对于均值和方差相同的输入,实际的编码也会由于每一次采样的不同而产生不同的编码结果。其中均值矢量控制着编码输入的中心,而标准差则控制着这一区域的大小(编码可以从均值发生变化的范围)。

所得到的模型目前就暴露在了一定程度局域变化的编码中,使得隐含空间中的相似样本在局域尺度上变得平滑。理想情况下不相似的样本在隐含空间中存在一定重叠,使得在不同类别间的插值成为可能但这样的方法还存在一个问题,我们无法对μ和σ的取值给出限制,这会造成编码器在不同类别上学习出的均值相去甚远,使它们间的聚类分开。最小化σ使得相同的样本不会产生太大差异。这使得解码器可以从训练数据进行高效重建。

References: 

  1. 生成模型--变分自编码器(Variational Autoencode,VAE)

  2. Intuitively Understanding Variational Autoencoders, 中文版:https://www.a-site.cn/article/1668783.html

  3. https://www.jeremyjordan.me/variational-autoencoders/#
原文地址:https://www.cnblogs.com/dulun/p/12836909.html