GAN 和 VAE 的本质区别是什么?为什么两者总是同时被提起?

GAN 和 VAE 的本质区别是什么?为什么两者总是同时被提起?

对于GAN和VAE, 当我们说模型对数据具有很好的表征时,意思是对于数据集中的某个采样/样本 , 必然有个隐变量(Latent variable) 让模型能够生成跟非常相似的数据。用数学语言讲,就是对于高维空间 中的向量 , 我们可以定义概率密度函数(probability density function, PDF) . 这样我们有一个确定性函数 , 其中 是高维空间 中的向量, . 这里 是随机的,但 是固定的参数,所以 是定义在高维空间 (训练数据 所在空间)中的随机变量。我们希望优化参数 , 让 尽量的接近于我们的样本数据集 . 这里把 替换成 , 则有 . 这个优化的过程,就是把数据从某种分布(常见的是混合高斯分布)映射到已知的数据分布(来自于训练数据集)的过程,如果训练数据集有代表性并且数量足够的话,这个目标性已知分布等价于这类数据对象的真实分布。

数据分布的映射其实很常见,上图中就是把一个二维均匀分布通过 映射成圆环样分布的过程。实际上,对于我们人类来说,记忆的提取(回忆)也是这样类似的机制:我们对世界的认知知识信息存储在大脑神经网络的连接权重中,相当于网络的固定参数 , 我们的记忆相当于动因 ,而我们回忆的过程中给予记忆以形象。

这套数据分布映射的算法思想从Helmholtz Machines[1]起就比较成熟了。至少从理论上来看,通过分布的映射把看起来随机的一组向量对应到现实世界中的数据是比较自洽的。怎么处理这样的映射关系是GAN和VAE的本质不同。对于VAE来说,我们希望映射关系是显式的,比如,如果我们假设输出的分布符合高斯/混合高斯分布的话,即有

如果加一个编码器将训练数据映射到Latent Space. 假设编码器的参数 , 并优化参数 使得 , 也就是让 尽量小。对于一个好的生成器,我们希望 值尽量大。而 [2],所以当 尽量小时,恰好优化目标 尽量大。

可以看出来,VAE是一个在数学上具有完美证明的模型,其优化目标和过程都是显式的。由于VAE设计的强预设性,其优化过程强制性地把数据拟合到有限维度的混合高斯或者其他分布上,这导致两个结果:

对应地,GAN的训练中没有这样的强预设,它是通过判别器网络来进行优化的,让生成器产生数据的分布直接拟合训练数据的分布,而对具体的分布没有特别的要求。

不过,我们在GAN的训练中如果采用L2 Loss,也相当于用单峰的高斯分布去拟合多峰的实际数据, 因为其预设是数据符合高斯分布[3],这样也会导致生成图像的模糊。其原理跟VAE生成数据的模糊本质上是一致的。