生成式对抗网络 NIPS 2016 课程 第 3 节
本文转载自知乎专栏UAI人工智能
专栏链接:https://zhuanlan.zhihu.com/uai-rocks
原文链接:https://zhuanlan.zhihu.com/p/27246881
本报告总结了 NIPS 上 Ian Goodfellow 的 生成式对抗网络课程。其内容有:(1)为何生成式建模是值得学习的话题;(2)生成式模型如何工作,GAN 与其他生成式模型的比较;(3)GAN 工作原理;(4)GAN 的研究前沿;(5)将 GAN 和其他方法组合的当前最优的图像模型。最后给出帮助读者学习的三个练习和相应的解答。
3 GANs 如何工作?
我们现在已经看过了几种其他的生成式模型,并解释了 GANs 与他们的不同原理。但是 GANs 是如何工作的呢?
3.1 GAN 框架
GANs 的基本思想是设置两个参与人的博弈。其中一个是生成器(generator)。生成器产生来自和训练样本一样的分布的样本。另外一个判别器(discriminator)。判别器检查这些样本来确定他们是真实的还是伪造的。判别器使用传统的监督学习技术进行训练,将输入分成两类(真实的或者伪造的)。生成器训练的目标就是欺骗判别器。我们可以将生成器当做一个伪钞制造者,而判别器是警察,想要找出伪钞。为了在这样的博弈中取胜,伪钞制造者必须学会制造出与真币相似的伪钞,生成器网络必须学会产生出和训练数据一致的分布的样本。图 12 解释了这个过程。
图 12
形式上看,GANs 是一种结构化概率模型(参看 Goodfellow 等人书的第 16 章)包含了隐含变量 z 和可观测变量 x。图结构在图 13 展示。
图 13
博弈中的两个参与人由两个函数表示,每个都是关于输入和参数可微分的。判别器是一个以
两个参与人有用两个参与人的参数定义的代价函数。判别器希望仅控制住
生成器 生成器是一个可微分函数
训练过程 训练过程包含同时随机梯度下降 simultaneous SGD。在每一步,会采样两个 minibatch:一个来自数据集的
3.2 代价函数
有几种不同的代价函数可以用在 GANs 框架中。
3.2.1 判别器的代价
目前为 GANs 设计的所有不同的博弈针对判别器
判别器的代价函数是:
这其实就是标准的训练一个 sigmoid 输出的标准的二分类器交叉熵代价。唯一的不同就是分类器在两个 minibatch 的数据上进行训练;一个来自数据集(其中的标签均是 1),另一个来自生成器(其标签均是 0)。
GAN 博弈的所有版本都期望判别器能够最小化(8)式。所有情况下,判别器有同样最优策略。读者现在可以尝试一下 7.1 节的练习并在 8.1 节可以考到给出的答案。这个练习展示了如何去推到最优的判别器策略并讨论了这个解的形式的重要性。
我们发现通过训练这个判别器,能够得到一个在每个点
对其的估计可以让我们计算很多的散度和梯度。这其实是将 GANs 和变分自编码器和 Boltzmann machines 区分开的关键的近似技术。其他的深度生成式模型基于下界或者 Markov chain 进行近似;GANs 基于监督学习来估计两个密度的比例来进行近似。GANs 近似受到监督学习的影响:过匹配或者欠匹配。原则上讲,有最好的优化技术和足够多的训练数据,这些影响可以被克服。其他的模型使用不同的近似方法也有对应的缺点。
由于 GAN 框架可以被博弈论工具自然地分析,我们称 GANs “对抗”。但是我们同时也将其看做“合作”的,因为判别器估计密度之间的比例,然后自由地将这个信息分享给了生成器。从这一点看,判别器更加像是一名老师在教生成器如何提升效果。到目前为止,合作博弈的观点还没有产生特定的数学形式的变化。
3.2.2 Minimax
我们目前仅仅介绍了判别器的代价函数。而这个博弈需要的完整的说明包含对生成器的代价函数介绍。
最简单的博弈版本是零和博弈,其中所有参与人的代价总是 0。在这个版本的博弈中,
因为 J^{(G)} 和 J^{(G)} 直接捆绑,我们可以将整个博弈通过一个指定判别器收益的值函数来进行刻画:
Minimax 博弈由于其理论分析的便利,大家都比较喜欢。Goodfellow et al. (2014b) 使用这个 GAN 博弈变体展示了在这个博弈中的学习类似于最小化数据分布和模型分布 Jensen-Shannon 散度,当所有参与人的策略可以在函数空间直接进行更新时,这个博弈将收敛到均衡点。特别地,参与人由深度神经网络表示,更新则是在参数空间中,所以这些依赖于凸性(convexity)的结论不能应用。
3.2.3 启发式,非饱和博弈
在 minimax 博弈中用在生成器上的代价对理论分析很有用但是在实践中表现很糟糕。
最小化目标类和分类器预测的分布的交叉熵是很高效的,因为代价不会在分类器有错误的输出的时候饱和。最终代价会饱和到 0,但是仅仅是在分类器选择了正确的类标的情况下。
在 minimax 博弈中,判别器最小化交叉熵,但是生成器是最大化同一个交叉熵。这对于生成器是不利的,因为判别器成功地以高置信度反对生成器产生的样本时,生成器的梯度会消失。
为了解决这个问题,一种方式是继续使用交叉熵来最小化生成器。不过我们不是去改变判别器代价函数的正负号来获得生成器的代价。我们是将用来构造交叉熵代价的目标的正负号。所以,生成器的代价函数就是:
在 minimax 博弈中,生成器最小化判别器正确的对数概率。在这个博弈中,生成器最大化判别器错误的对数概率。
这个版本的博弈是启发式激发的想法,而非理论上的考量。而唯一的动机就是确保每个参与人在他要输掉博弈时有一个更强的梯度。
当然,这里已经不再是零和博弈了,所以不能被描述成一个单一值函数。
3.2.4 最大似然博弈
我们可能能够使用 GANs 进行最大似然学习,这就意味着可以最小化数据和模型之间的 KL 散度,见(4)。
在第 2 节中,为了简化模型之间的对比,我们提到 GANs 可以选择性地实现最大似然。
有很多中方式能够使用 GAN 框架来近似(4)式。 Goodfellow (2014) 使用下式:
其中
另外还有一些近似最大似然的方法。比如说 Nowozin et al. (2016).
3.2.5 选择散度是 GANs 的突出特点么?
作为我们讨论 GANs 如何工作的一部分,大家可能想知道什么让 GANs 能够产生更好的样本。
以前,很多人(包括作者本人)相信 GANs 能够产生清晰真实的图片是由于他们最小化了数据和模型之间的 Jensen-Shannon 散度而 VAEs 产生模糊的图片是其最小化 KL 散度 造成的。
KL 散度不是对称的;最小化
某些更新的证据表明使用 Jensen-Shannon 散度并没有解释为何 GANs 得到更加清晰的图片:
图 15
- 3.2.4 节提到现在可以使用最大似然来训练 GANs 了。这些模型也能够产生清晰的样本,并且也选择了少量的众数。参见图 15.
- GANs 通常会从极少量的众数中选择生成;小于由模型容量带来的限制。逆KL倾向于生成和模型能够容纳的那么多的数据分布的众数;一般不会是更少的众数。这就意味着众数坍缩是由于散度之外的因素导致。
3.2.6 代价函数的比对
我们可以讲生成式网络看成是一个特别的强化学习。不是被告知一个具体的输出 x 应该被关联上每个 z,生成器采取行动并接受奖励。特别是,注意到 J^{(G)} 没有直接引用训练数据,所有关于训练数据的信息都仅是从判别器所学到的获得。(巧的是,这会让 GANs 不再害怕过匹配,因为生成器不能够直接复制训练样本)学习过程和传统的强化学习也有一点差异:
- 生成器能够同时观察奖励函数的输出和梯度
- 奖励函数不是静止的,奖励是基于学习生成器策略的变化的判别器的。
在所有的情形中,我们可以将采样过程看做是从一个特定 z 选择开始作为一个 可以获得奖励的 episode,而独立的行动对所有其他的
图 16
图 16 展示了三个不同 GANs 的作为
图 17
3.3 DCGAN 架构
大多数 GANs 或多或少是基于 DCGAN 架构的 (Radford et al., 2015). DCGAN 全称“deep, convolution GAN”。尽管 GANs 在 DCGANs 前也是深的和卷积的,不过 DCGAN 就用来代表这一类风格的架构了。DCGAN 架构的关键点如下:
- 使用批规范化 Batch Normalisation,简称 BN (Ioffe and Szegedy, 2015)层,在判别器和生成器中大多数层是 BN 的,有两个独立的 minibatch。生成器最后一层和判别器的第一层没有BN,所以模型可以学到数据分布的正确的均值和尺度。参加图 17。
- 总体网络结构师从 all-convolutional net(Springenberg et al., 2015). 这个架构不含有pooling 或者 unpooling 层。当生成器需要增加空间维度是,它使用了 stride 大于 1 的转置卷积。
- 使用 Adam 优化器而不是 SGD with momentum
图 18
在 DCGANs 前,LAPGANs 是唯一一个能规划化到高分辨率图像的 GAN。LAPGANs 需要一个多步骤生成过程,多个 GANs 产生在一个图像的 Laplacian 金字塔表示不同细节的层。DCGANs 是第一个学会单步生成高分辨率图像的 GAN。正如图 18 所示,DCGANs 在限制的图像领域能够产生高质量的图像,比如说卧室的图像。DCGANs 同样能够展示 GANs 学会以很多有意义的方式来使用他们的隐含编码,隐含空间中的简单的算术运算也有了语义上的意义,比如图 19 所示。
3.4 GANs 和 noise-contrastive 估计和最大似然有什么关联?
在理解 GANs 工作原理时,大家很自然地想了解他们和 noise contrastive estimation(NCE) (Gutmannand Hyvarinen, 2010)的关联。Minimax GANs 使用 NCE 的代价函数作为值函数,所以这两个方法看起来紧密关联。但实际上,他们学到的非常不同的东西,因为两个方法关注博弈中的不同参与人。粗略地说,NCE 的目标是学习判别器的密度模型,GANs 则是学习定义生成器的采样器。尽管这两个任务看起来在相近,其梯度完全不同。令人惊奇的是,最大似然是和 NCE 更为相近的,对应于进行一个用同样的值函数的 minimax 博弈,但是使用启发式更新策略而不是对参与人其中之一进行梯度下降。这个在图 20 中进行了总结。
图 20