我了解变体自动编码器和常规(确定性)自动编码器的基本结构以及它们背后的数学原理,但是何时,为何以及为什么我会偏爱一种自动编码器呢?我能想到的是,变分自动编码器的潜在变量的先验分布使我们可以对潜在变量进行采样,然后构造新图像。与确定性自动编码器相比,可变自动编码器的随机性有什么优势?
我了解变体自动编码器和常规(确定性)自动编码器的基本结构以及它们背后的数学原理,但是何时,为何以及为什么我会偏爱一种自动编码器呢?我能想到的是,变分自动编码器的潜在变量的先验分布使我们可以对潜在变量进行采样,然后构造新图像。与确定性自动编码器相比,可变自动编码器的随机性有什么优势?
Answers:
VAE是一种框架,被提议作为一种可扩展的方法来对大型数据集进行变异EM(或一般而言为变异推理)。尽管它具有类似AE的结构,但其用途却更大。
话虽如此,当然可以使用VAE来学习潜在表示。已知VAE可以给出解缠结因子的表示形式[1]这是由于潜变量的各向同性高斯先验所致。将它们建模为高斯模型可允许表示中的每个维度将自己与其他因素推得尽可能远。同样,[1]增加了控制先验影响的正则化系数。
各向同性的高斯足以满足大多数情况,但对于特定情况,可能需要对先验模型进行不同的建模。例如,在序列的情况下,可能需要将先验定义为序列模型[2]。
可以看到,回到问题上,“先验”可以有效地控制我们如何对潜伏分布建模。通常的AE框架中不存在这种控制。这实际上是贝叶斯模型本身的强大功能,VAE只是使它对于大规模数据集更加实用和可行。因此,总而言之,如果您想精确控制潜在表示以及您希望它们表示的内容,请选择VAE。有时,精确建模可以捕获更好的表示,如[2]中所示。但是,如果AE足以满足您的工作需求,那么只需使用AE,它就简单而又不够复杂。毕竟,对于AE,我们只是在做非线性PCA。
[1]使用无监督深度学习的早期视觉概念学习,2016年
Irina Higgins,Loic Matthey,Xavier Glorot,Arka Pal,Benigno Uria,Charles Blundell,Shakir Mohamed,Alexander Lerchner
https://arxiv.org/abs/1606.05579
[2]序列数据的潜在潜在变量模型,2015年
Junyoung Chung,Kyle Kastner,Laurent Dinh,Kratarth Goel,Aaron Courville,Yoshua Bengio
https://arxiv.org/abs/1506.02216
TenaliRaman有一些优点,但他也错过了许多基本概念。首先应该注意的是,使用类似AE的框架的主要原因是潜在的空间,它使我们能够压缩信息并希望从中获得代表数据高级特征的独立因素。重要的一点是,虽然AE可以解释为PCA的非线性扩展,因为“ X”个隐藏单元将与第一个“ X”个主分量跨越相同的空间,但AE不一定会在潜伏中产生正交分量空间(这将是一种纠缠的形式)。此外,还可以从VAE获得相似的数据似然性(尽管是近似值),并从中进行采样(这对于各种不同的任务很有用)。然而,
由于KL散度项,在VAE中强加给潜在单元的先验分布仅有助于模型拟合,[1]参考文献仅在该项上添加了一个超参数乘数,并得到了完整的论文(大部分是相当明显)。本质上,“非信息性”先验是指单个的KL散度接近于零,并且对损失的影响不大,这意味着该特定单位不用于解码器中的重建。纠缠自然会在VAE上发挥作用,因为在最简单的多模式数据情况下,与模型尝试使用单个高斯捕获多个模式相比,每个模式具有唯一的潜在高斯比,从而使KL偏离成本更低(与KL偏离成本相差很大,这将与以前的模式相差更大)-因此领先在潜在单位中解开纠缠。因此,由于与VAE相关的统计意义,VAE也自然适用于大多数数据源。
也有一些稀疏的AE框架,但不幸的是,我还没有发现有任何文章严格根据潜在空间表示和解开来比较VAE与AE。我真的很想在那个领域看到一些东西-因为AE更容易训练,并且如果它们可以在潜伏空间中实现与VAE一样好的解缠,那么它们显然将是首选。与此相关的是,我也看到了ICA(和非线性ICA)方法的一些希望,但是我看到的方法迫使潜伏空间与数据具有相同的维数,这几乎没有AE有用用于提取高级功能。
如前面的回答所述,它可以被视为PCA的非线性扩展。
但是,与可变自动编码器相比,原始自动编码器具有以下缺点:
对于自动编码器来说,产生的基本问题是,它们将输入转换为它们的潜在空间以及它们的编码矢量所在的空间可能不是连续的,或者容易插值。
也就是说,上图中的编码部分无法处理编码器以前从未见过的输入,因为不同的类被直截了当地聚类,而那些看不见的输入被编码为位于空白处的某个东西:
为了解决这个问题,通过在中间层为每个隐藏变量添加一个包含均值和标准差的层来创建变分自动编码器:
然后,即使对于相同的输入,解码后的输出也会发生变化,并且编码后的输入和聚类的输入也会变得平滑:
因此,要对数据进行去噪或分类(过滤出不同的数据),标准的自动编码器就足够了,而我们最好采用变分自动编码器进行生成。
参考:
直观理解变体自动编码器
在VAE中选择代码的分布可以更好地进行无监督表示学习,在该学习中,同一类的样本最终在代码空间中彼此靠近。同样,通过这种方式,在代码空间中查找区域的语义也变得更加容易。例如,您会从每个区域知道可以生成什么类。
如果您需要更深入的分析,请参阅Durk Kingma的论文。这是变分推理的重要来源。