我了解变分自动编码器和正常(确定性)自动编码器的基本结构以及它们背后的数学原理,但是我何时以及为什么更喜欢一种类型的自动编码器而不是另一种类型的自动编码器?我能想到的只是变分自动编码器的潜在变量的先验分布允许我们对潜在变量进行采样,然后构造新图像。变分自编码器的随机性与确定性自编码器相比有什么优势?
什么时候应该使用变分自动编码器而不是自动编码器?
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
如前面的答案所述,它可以被视为只是 PCA 的非线性扩展。
但与变分自动编码器相比,普通自动编码器有以下缺点:
对于生成而言,自动编码器的基本问题是它们将输入转换到的潜在空间以及它们编码向量所在的位置,可能不是连续的或不允许轻松插值。
也就是说,上图中的编码部分无法处理编码器以前从未见过的输入,因为不同的类被直接聚类,而那些看不见的输入被编码为位于空白某处的某处:
为了解决这个问题,变分自动编码器是通过在中间层添加一个包含每个隐藏变量的均值和标准差的层来创建的:
然后,即使对于相同的输入,解码的输出也会有所不同,并且编码和聚类的输入变得平滑:
因此,要对数据进行去噪或分类(过滤掉不同的数据),标准的自动编码器就足够了,而我们最好使用变分自动编码器来生成图像。
此外,可以操纵变分自动编码器中的潜在向量。比如说,我们从戴眼镜的人的潜在向量中减去眼镜的潜在向量,然后解码这个潜在向量,我们可以得到同一个人不戴眼镜。
然后对于图像处理,我们还应该使用变分自动编码器。
参考:
直观地理解变分自编码器
TenaliRaman 有一些优点,但他也错过了很多基本概念。首先应该注意的是,使用类似 AE 的框架的主要原因是潜在空间允许我们压缩信息并希望从中获得代表数据高级特征的独立因素。重要的一点是,虽然 AE 可以解释为 PCA 的非线性扩展,因为“X”个隐藏单元将跨越与第一个“X”个主成分相同的空间,但 AE 不一定在潜在成分中产生正交成分空间(这相当于一种解开形式)。此外,从 VAE 中,您可以获得数据可能性的相似性(尽管是近似的)并从中采样(这对于各种不同的任务很有用)。然而,
由于 KL 散度项,施加在 VAE 中的潜在单元上的先验分布仅有助于模型拟合,[1] 参考文献只是在该项上添加了一个超参数乘数,并从中得到了一篇完整的论文(大部分是相当明显)。本质上,“无信息”先验是单独具有接近于零的 KL 散度并且对损失没有太大贡献的先验,这意味着特定单元不用于解码器中的重建。解缠结自然会在 VAE 上发挥作用,因为在最简单的多模态数据情况下,与模型尝试使用单个高斯捕获多个模式相比,KL 散度成本通过为每个模式设置一个唯一的潜在高斯来降低(这将进一步偏离先验,因为受到 KL 散度成本的严重惩罚) - 因此导致在潜在单位中解开。因此,由于与之相关的统计含义,VAE 自然也适用于大多数数据源。
AE 也有稀疏性强加框架,但不幸的是,我不知道有任何论文严格根据潜在空间表示和解开来比较 VAE 与 AE。不过,我真的很想在那个领域看到一些东西——因为 AE 更容易训练,并且如果它们能够在潜在空间中实现与 VAE 一样好的解缠结,那么它们显然会更受欢迎。在相关的说明中,我也看到了 ICA(和非线性 ICA)方法的一些承诺,但是我看到的那些方法迫使潜在空间与数据具有相同的维度,这几乎没有 AE 有用用于提取高级特征。
选择 VAE 中的代码分布可以实现更好的无监督表示学习,其中同一类的样本最终在代码空间中彼此靠近。同样通过这种方式,为代码空间中的区域找到语义变得更加容易。例如,您会从每个区域知道可以生成什么类。
如果您需要更深入的分析,请查看Durk Kingma 的论文。它是变分推理的重要来源。