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

关注者
1,321
被浏览
532,168
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏

简单来说,GAN和VAE都属于深度生成模型(deep generative models,DGM)而且属于implicit DGM。他们都能够从具有简单分布的随机噪声中生成具有复杂分布的数据(逼近真实数据分布),而两者的本质区别是从不同的视角来看待数据生成的过程,从而构建了不同的loss function作为衡量生成数据好坏的metric度量。

要注意的是,这里我们讲的深度生成模型,是专指通过神经网络生成逼真数据的model,不同于在统计机器学习中常说的判别模型和生成模型,后者指的是对feature和label的联合概率 p(x,y) 建模的分类方法。 而针对深度生成模型,要生成逼真数据,也有两种基本的思路:

  • explicit model:建立并给出显式的关于instance x 的概率分布函数 p(x) ,生成数据的过程需要从 p(x) 分布里采样。典型的方法包括deep energy model、autoregressive model、flow model。这种方法的优势是给出了显示的分布函数,劣势是由于真实数据分布通常是高维复杂分布,因此loss中包含的模型分布 p_\theta(x) 难以计算,从而导致训练和采样的困难。
  • implicit model:直接考虑一个从简单分布 p(z) 到复杂数据分布 p(x) 的映射函数 g:z\rightarrow x ,这里的 g 就是常说的生成器(本质上是一个push-forward)。典型的方法就是GAN、VAE。这种方法的优势是模型能够很灵活的采样,劣势是没有关于样本 x 显式概率分布。

欢迎大家关注我们在NeurIPS上发表的,将explicit和implicit这两类生成模型统一到一个训练框架,主要思路是采用Stein距离来联合训练energy model和GAN两类模型,同时逼近两类模型所给出的分布。下面是论文链接:


回到正题,我们再说说模型训练的问题,首先以上所有的深度生成模型,最终的loss function都可以用一个统一的形式来表达

\min_{\theta} \mathcal D(p_{data}(x), p_\theta(x))

即要求得一个生成模型使其生成数据的分布 p_\theta(x) 能够最小化与真实数据分布之间的某种分布差异度量,例如KL散度、JS散度、Wasserstein距离等。采用不同的差异度量会导出不同的loss function,比如KL散度会导出极大似然估计,JS散度会产生最原始GAN里的判别器,Wasserstein距离通过dual form会引入critic。而不同的深度生成模型,具体到GAN、VAE还是flow model,最本质的区别就是从不同的视角来看待数据生成的过程,从而采用不同的数据分布模型来表达 \mathbb P_{ model}: p_\theta(x), x\in \mathcal X

  • 对于Autoregressive model,研究者认为数据x的feature具有某种顺序,并且每一个feature都依赖于之前的feature,考虑 p_\theta(x)=\prod_{i=1}^N p_\theta(x_i|x_{<i})
  • 对于Variational auto-encoder,研究者认为数据x是由一个latent variable z 生成得到的,考虑 p(x)=\int_{z} p(x|z)p(z)dz 。因为这一优化目标很难优化(因为需要对高维空间积分),所以退而求其次的提出 \log p(x)\geq ELBO 作为原目标的lower bound,由此才产生来模型里的encoder和decoder结构。因为lower bound只是原likelihood的近似估计,所以VAE无法给出显式的数据分布。同时,由encoder结构产生的latent variable z 也是有物理含义的,也就是对x的一种表示,其中包含了x的特征和信息
  • 对于flow model和GAN,研究者都认为数据x的复杂分布可以从一个简单的分布 p (z) 经过一系列的变换得到。不同的是在flow model中考虑一连串的invertible变换,这一性质保证了 p(x) 可以由 p(z) 显式的表达出来 p_{X}(x)=p_Z(g^{-1}(x))\left |det(\frac{\partial f_{-1}(x)}{\partial x})\right| ;而GAN则不要求g能够可逆,因此我们无法写出p(x)只能得到生成数据的采样 x'=g(z), z\sim p_0(z) 。与VAE不同的是,这里的z只是一个简单分布下的随机噪声,没有物理含义,也通常无法作为x的一种表示。

此外,GAN的巧妙之处还在于对原优化目标进行了变形,比如原始的GAN将之前说的JS散度距离转化成

\min_G\max_D \mathbb E_x[\log(D(x))] + \mathbb E_z[\log(1-D(G(z)))]

同样,著名的Wasserstein GAN以及f-GAN也是将Wasserstein距离和f距离转化成了另一种dual form形式。这些转化后的目标函数(如上式)一大好处是只需要利用真实分布和模型产生分布的样本就可以完成训练了,而不用要求其中之一的具体分布形式。但是,这样做的劣势在于引入了对抗训练,这也增加了优化的难度,因此GAN才会有典型的mode collapse和训练不稳定等问题

最后,可以看到,上述的几个DGM都有各自的优点和缺点,一般实际应用中需要根据场景所需来选择更适合的模型。目前也有很多研究致力于统一上述的模型和思路,或者提出了很多有意思的联合训练多个模型的方法,给几个作为参考

  1. 利用Stein距离联合训练energy model和GANs:

2. 从contrastive learning角度结合deep energy model和GAN:

3. 联合训练GAN和VAE:

编辑于 2023-01-30 23:42・IP 属地美国