Stacked Generative Adversarial Networks
摘要
提出了一种新的生成模型:Stacked Generative Adversarial Networks
引入条件损失(conditional loss)来鼓励使用条件信息
引入了一种新的熵损失,这种熵损失最大化生成啊器的条件熵的变化的低界
先单独训练每个栈,然后训练整个模型。
和原始GAN使用单个噪声向量来表示所有变化不同的是,SGAN将变化分解为多个等级,然后逐渐解决不确定性。
1. 介绍
自低向上的分辨模型关注与从数据学习有用的表征,但不能捕捉数据的分布。
当前最好的深度生成模型当数据分辨变化很大时,仍然不能很好的完成任务。所以自然会出现了一根问题:能否利用分辨模型(如分类器)所学习的层次性的表示来帮助训练一个自顶向上的生成模型呢?
于是本文的作者提出了名为Stacked Generatice Adversarial Networks的生成模型,该模型由多个自顶向下的生成对抗网络组成,每个生成对抗网络在高级特征表示的条件下生成一个低等级的特征表示,然后逐级向下,直到生成最底层的特征表示也就是图像。
作者通过对抗loss来迫使每层生成的特征位于对应的特征流形上,条件loss来使每个生成器使用高级特征作为条件信息,作者还引入了一种新的熵损失,以此来鼓励每个生成器生成的样本具有多样性。
通过将若干个这样的GAN堆叠在一起,然后向最顶层的GAN输入标签,最终会使得最底层的GAN生成图像。
虽然实验花费很大,但是作者证明了SGAN能够产生比原始的GAN质量更高的图像。另外此模型还在cifar-10数据集上获得了领先的IS。
SGAN的结构如上图(a)所示,分为若干个GAN,训练方式有两种:1)单独训练每个GAN 2)先单独训练整个GAN,然后再将SGAN作为一个整体进行训练。
图(b)中的E代表Encoder,也就是平常所说的非类器,输入一个图像x,可以自下向上提取出等级越来越高的特征,最上级的特征就是这个图像所对应的标签。
如果训练方式是单独训练每个GAN:
那么每个GAN的生成器的输入就是由对应等级Encoder所分解输出的特征图(如图中G1的输入是E1的输出特征图h2)以及对应维度的噪声。
如果训练方式是将SGAN作为整体进行训练,那么只需要对最高层的生成器输入条件信息和噪声,对每个等级的生成器输入对应维度的噪声,以及对最底层的Encoder输入图像即可。
三个loss:
第一个loss是adversarial loss,是为了提高生成器的生成质量。
第二个loss是conditional loss,是为了让生成的图像受输入的条件信息的控制,避免生成器无视条件信息,而只是依靠噪声随意生成图像,这个conditonal loss是通过将生成的图像反传给对应等级的Encoder来获得更高等级的特征,然后用这个特征和之前输入到生成器的条件信息(也是高一个等级的特征)进行对比获得的。
第三个loss是entropy loss,是为了让生成的图像具有多样性,避免生成器无视噪声而只关注输入的条件信息。
这个loss是通过计算后验分布得到的。