VAE的哲学,GAN的哲学

深度生成模型

深度生成模型希望通过学习真实数据的分布,来产生和真实数据分布一致的样本。本文对两种生成模型——VAE和GAN做定性的介绍。

对于生成模型,我们不仅希望产生的样本分布和真实数据分布尽量重合,还希望对生成的样本属性能有所控制,比如如果生成模型能从一个具有语义的潜空间映射到数据空间,那么我们就可以通过操控潜空间变量来生成具有特定属性的样本。

VAE

VAE的目标是学得从输入数据到一个服从标准正态分布的潜空间向量的映射,同时学得从这个潜空间向量到输入空间的映射。这样从正态分布的潜空间采样,就能生成输入空间的样本。在VAE中,重参数化的采样过程,在均值的方差附近产生潜空间向量,再解码生成样本,重构损失将使这些均值附近的值都能解码成接近的样本。KL loss则使潜空间分布接近标准正态分布,这样一方面有一定的方差,从而保证上述采样的有效,另一方面使各个输入样本在潜空间的均值都接近0,这样不同输入映射到潜空间不会相距太远。总的结果就是潜空间向量彼此接近,又仍然独特,允许平滑差值,和在潜空间采样生成到输入空间。

由于VAE能学到性质比较好的潜空间,所以它可以在潜空间向量上进行算术运算来操纵生成样本的属性,类似于NLP中词向量的概念。

GAN

和VAE不同的是,GAN试图直接学习从潜空间到数据空间的映射。GAN假设有一个从正态分布或者均匀分布的潜空间到数据空间的映射,潜空间向量直接由分布中采样得到,那么关键就是根据输入的样本数据,学习到这个映射。GAN达到这个目的的方式是对抗学习,因此,大多数人对GAN的关注也都集中在“对抗”。不过我还是想提醒,对抗这一方式确实独特的定义了GAN,但同时也不要忘记GAN作为一个生成模型所要达到的目的(参看本文最后一节)。

在对抗训练中,D从训练集的真实图像学到了真实数据应该包含的细节的信息(或者说细节的分布),这迫使G也学会了这些分布,而不管输入的是什么,这里的输入指输入到G的正态分布或均匀分布的采样,实际上就是正态或均匀分布的随机向量。因为G没有与输入图像(这里指训练集中的真实图像)特征一致的约束,它只要生成真实的分布就行了,所以可以生成这些锐利的细节以满足D。

在训练中D首先学到一张图整体有关联的分布,然后当G从潜空间的随机向量产生一些数据分布时,梯度下降使其要向D学到的分布上靠,这样逐渐产生了真实图像,在结果上学到了从潜空间分布产生真实图像的分布。整个训练这个动态的过程使GAN达到从一个潜空间采样生成图像的结果,而不是生成固定的一张图或者无逻辑的细节。当然如果训练不好则会产生模式塌缩,但无论哪种情况,都只是梯度下降,数值计算的结果。本质上,G网络通过训练记住了真实数据的信息(分布),很多GAN的研究都试图证明自己的网络并不是简单的记住了训练数据,然而这些一而再再而三的尝试证明恰恰在做着“此地无银三百两”的宣告。。。

经过对抗训练,GAN也可以做到潜空间平滑插值,依赖的是生成网络通过训练学到的能力。从这点看,VAE的方法并不是必需的。

那些不是GAN的GAN

有些叫着“GAN”名字的GAN其实本质上不能算是生成模型,比如我在另一篇文章《人脸转换GAN》中介绍的StarGAN和AttGAN。它俩都顶着GAN的名字,因为都是用了对抗训练的手段,但它们的网络输入的是图像数据,输出的也是图像数据,中间并没有任何潜空间向量,所以它们只能做图像translation,不能随机的生成样本。AttGAN论文的Figure 2里还专门画上了潜空间向量Z,不过实际上它只是试图表示一个潜空间向量的概念,那个Z实际上是一个卷积层的输出,是一个W × H × C的3d 向量。对于卷积网络,在一个平面(也就是一个channel)上的分布是空间相关的,这个分布根本就不知道,也就无法采样,这也是为什么VAE要把卷积层的3d向量flatten再dense成Z。

实际上StarGAN和AttGAN即使不用对抗训练,只要选取比较好的重构损失,比如使用Perceptual loss,应该也能得到比较好的结果。在StarGAN和AttGAN的研究中,重构损失的权重都比对抗损失大一个数量级以上,对抗损失有帮助,但实际上并非最主要的因素。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章