VAE的哲学,GAN的哲学

编程入门 行业动态 更新时间:2024-10-07 07:31:50

VAE的<a href=https://www.elefans.com/category/jswz/34/1769917.html style=哲学,GAN的哲学"/>

VAE的哲学,GAN的哲学

深度生成模型

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

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

VAE

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

由于VAE能学到性质比较好的潜空间,所以它可以在潜空间向量上进行算术运算来操纵生成样本的属性,类似于NLP中词向量的概念。参见AI生成模型之人脸变换(一) VAE。

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论文还专门强调了自己的网络结构有潜空间的表达,和StarGAN不一样(我觉得这算是他们论文的一个小瑕疵吧,瑕不掩瑜 ? ),论文的Figure 2里也专门画上了潜空间向量Z,不过实际上它只是一个潜空间向量的概念,那个Z实际上是一个卷积层的输出,是一个W × H × C的3d 向量。对于卷积网络,在一个平面(也就是一个channel)上的分布是空间相关的,这个分布根本就不知道,也就无法采样,这也是为什么VAE要把卷积层的3d向量flatten再dense成Z。

对抗的威力

GAN是生成网络的一种,在有GAN之前就已经有了生成网络,所以让GAN独特的是它的对抗,而不是生成。“对抗”与其它深度网络相比独特之处有两个:

  • 一是通过对抗这个手段,极度的压榨出网络的能力。普通的监督学习,只能设定一个死目标,包括本系列VAE中使用的perceptual loss(它通过一个预训练网络得到生成图像的质量),优化的方向是不变的。随着网络向目标的接近,越来越难提升性能。而对抗网络可以在训练开始时提供比较低的学习难度,训练后期则不断提供更难的新的优化方向。普通的深度网络在固定的优化目标下可能无法得到对抗网络那么好的解。
  • 二是通过对抗的方式,可以用一个网络为另一个网络设定目标,这个目标用普通方法可能是无法描述的。比如训练网络生成人脸,不使用对抗的话通常只能使用重构损失作为优化目标,想要生成真实的人脸肤质,发丝光泽,五官特征,表情,皱纹,这些目标统统无法描述。而使用GAN则只需要一个目标,让Discriminator输出“真”。这就像生物进化过程中的对抗,猎豹一代代不断的追逐着羚羊,双方都越来越快,越来越灵敏,运动系统越来越精致。你不需要给它们设定目标:猎豹的爪子有多尖,尾巴有多细,腿有多长,羚羊的耳朵有多敏锐,弹跳有多高,耐力有多好。大自然只给它们设定一个目标:生存。

正是因为这两个独特而强大的威力,“对抗”才是GAN最核心的哲学!关于“对抗”的活学活用,读者不妨参考Fader Networks ?

更多推荐

VAE的哲学,GAN的哲学

本文发布于:2024-02-28 11:01:04,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1769199.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:哲学   VAE   GAN

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!