VAE为什么能做generation?

之前一直认为VAE是学习的是输入和输出的对应分布,今天在看paper过程中发现,监督学习好像也是这样的,即从输入分布中采样映射到对应的输出进行学习,那学习的同样还是输入和输出之间的分布映射关系。那VAE、Diffusion为什么能做生成呢?生成的本质是什么呢?

我认为是有一个先验的媒介,为什么用媒介这个词来形容呢?回想一下VAE的latent是什么,是一个标准的正太分布。换句话说VAE学习的是输入-latent-输出的映射。这里有一个问题,为什么自编码器不能做生成?答案是它的latent不具备先验,也就是说我们是不知道的,没有先验我们就不知道从哪里采样,那就更不用说生成了。到这里,为什么能做生成的问题就大概清楚了,我们要有一个可以采样的先验分布,并且这个分布和输入输出之间有对应的映射关系!顺便说一下VQVAE,它的先验分布是学习过来的,也就是码表。它的分布比较难学所以,一定程度上避免了后验坍塌问题。

补充AE、VAE、VQ-VAE的区别(之前周报记录的)

  • AE: 主要用于降维(压缩)、特征学习和数据去噪等。但同时对于Latent space没有约束,导致latent space的分布不确定,所以不能对其进行采样生成
  • VAE: 通过引入KL散度约束,使得latent space的分布更加结构化,可以对其进行采样生成。但分布使用的是正态分布,这个Prior太简单了,导致容易posterior collapse。即KL散度接近于0,导致latent space的分布与Prior趋向一致。此时,VAE的编码器从x中学习的信息极少,有点类似过拟合。虽然能较好的对x进行重构,但多样性降低。
  • VQ-VAE: 通过引入离散的embedding,使得latent space的分布更加复杂,不再是简单的高斯分布而是学习来的,即KL很难接近于0,从而使得VAE的编码器从x中学习的信息较多,多样性也较好。
  • 补充一点(个人想法):VAE中有对抗的思想,KL既不能很大也不能很小,所以VAE的编码器与解码器是相互对抗的,解码器希望没有噪声,因为采样是从正太分布采样的要求KL尽可能小,KL散度又要要求有噪声,要求KL>0,不能过拟合。