TF2 GAN篇之GAN原理及推导
相关文章导航
GAN的起源
在生成对抗网络(Generative Adversarial Network,简称GAN)发明之前,变分自编码器被认为是理论完备,实现简单,使用神经网络训练起来很稳定,生成的图片逼近度也较高,但是人眼还是可以很轻易地分辨出真实图片与机器生成的图片。
2014 年,Université de Montréal 大学Yoshua Bengio(2019 年图灵奖获得者)的学生IanGoodfellow 提出了生成对抗网络GAN [1],从而开辟了深度学习最炙手可热的研究方向之一。从2014 年到2019 年,GAN 的研究稳步推进,研究捷报频传,最新的GAN 算法在图片生成上的效果甚至达到了肉眼难辨的程度,着实令人振奋。由于GAN 的发明,Ian
Goodfellow 荣获GAN 之父称号,并获得2017 年麻省理工科技评论颁发的35 Innovators
Under 35 奖项。如图展示了从2014 年到2018 年,GAN 模型取得了非凡的效果,可以看到不管是图片大小,还是图片逼真度,都有了巨大的提升。

接下来,我们将从生活中博弈学习的实例出发,一步步引出GAN 算法的设计思想和模型结构。
博弈学习实例
我们用一个漫画家的成长轨迹来形象介绍生成对抗网络的思想。考虑一对双胞胎兄弟,分别称为老二G 和老大D,G 学习如何绘制漫画,D 学习如何鉴赏画作。还在娃娃时代的两兄弟,尚且只学会了如何使用画笔和纸张,G 绘制了一张不明所以的画作,如图(a)所示,由于此时D 鉴别能力不高,觉得G 的作品还行,但是人物主体不够鲜明。在D 的指引和鼓励下,G 开始尝试学习如何绘制主体轮廓和使用简单的色彩搭配。
注: 字母D其实就算代表discriminator 字母G其实就算代表Generator
一年后,G 提升了绘画的基本功,D 也通过分析名作和初学者G 的作品,初步掌握了鉴别作品的能力。此时D 觉得G 的作品人物主体有了,如第二张图(b),但是色彩的运用还不够成熟。数年后,G 的绘画基本功已经很扎实了,可以轻松绘制出主体鲜明、颜色搭配合适和逼真度较高的画作,如第三张图©,但是D 同样通过观察G 和其它名作的差别,提升了画作鉴别能力,觉得G 的画作技艺已经趋于成熟,但是对生活的观察尚且不够,作品没有传达神情且部分细节不够完美。又过了数年,G 的绘画功力达到了炉火纯青的地步,绘制的作品细节完美、风格迥异、惟妙惟肖,宛如大师级水准,如第4张图(d),即便此时的D 鉴别功力也相当出色,亦很难将G 和其他大师级的作品区分开来。

在原始的GAN 论文中,Ian Goodfellow 使用了另一个形象的比喻来介绍GAN 模型:生成器网络G 的功能就是产生一系列非常逼真的假钞试图欺骗鉴别器D,而鉴别器D 通过学习真钞和生成器G 生成的假钞来掌握钞票的鉴别方法。这两个网络在相互博弈的过程中间同步提升,直到生成器G 产生的假钞非常的逼真,连鉴别器D 都真假难辨。
这种博弈学习的思想使得GAN 的网络结构和训练过程与之前的网络模型略有不同,下面我们来详细介绍GAN 的网络结构和算法原理。
GAN 原理
1. 网络结构
生成对抗网络包含了两个子网络:生成网络(Generator,简称G)和判别网(Discriminator,简称D),其中生成网络G 负责学习样本的真实分布,判别网络D 负责将生成网络采样的样本与真实样本区分开来。
生成网络G(𝒛) 生成网络G 和自编码器的Decoder 功能类似,从先验分布𝑝𝒛(∙)中采样隐藏变量𝒛~𝑝𝒛(∙),通过生成网络G 参数化的𝑝𝑔(𝒙|𝒛)分布,获得生成样本𝒙~𝑝𝑔(𝒙|𝒛), 如图所示。其中隐藏变量𝒛的先验分布𝑝𝒛(∙)可以假设为某中已知的分布,比如多元均匀分布𝑧~Uniform(−1,1)。

𝑝𝑔(𝒙|𝒛)可以用深度神经网络来参数化,如下图 13.4 所示,从均匀分布𝑝𝒛(∙)中采样出隐藏变量𝒛,经过多层转置卷积层网络参数化的𝑝𝑔(𝒙|𝒛)分布中采样出样本𝒙𝑓。从输入输出层面来看,生成器G 的功能是将隐向量𝒛通过神经网络转换为样本向量𝒙𝑓,下标𝑓代表假样本(Fake samples)。

判别网络D(𝒙) 判别网络和普通的二分类网络功能类似,它接受输入样本𝒙的数据集,包含了采样自真实数据分布𝑝𝑟(∙)的样本𝒙𝑟𝑝𝑟(∙),也包含了采样自生成网络的假样本𝒙𝑓𝑝𝑔(𝒙|𝒛),𝒙𝑟和𝒙𝑓共同组成了判别网络的训练数据集。判别网络输出为𝒙属于真实样本的概率𝑃(𝒙为真|𝒙),我们把所有真实样本𝒙𝑟的标签标注为真(1),所有生成网络产生的样本𝒙𝑓标注为假(0),通过最小化判别网络D 的预测值与标签之间的误差来优化判别网络参数,如图所示

2. 网络训练
GAN 博弈学习的思想体现在在它的训练方式上,由于生成器G 和判别器D 的优化目标不一样,不能和之前的网络模型的训练一样,只采用一个损失函数。下面我们来分别介绍如何训练生成器G 和判别器D。
对于判别网络D,它的目标是能够很好地分辨出真样本𝒙𝑟与假样本𝒙𝑓。以图片生成为例

本文深入解析生成对抗网络(GAN)的原理,包括网络结构、训练方法及变种,如DCGAN、InfoGAN、CycleGAN、WGAN等。并通过实战代码展示WGAN的稳定训练过程。
最低0.47元/天 解锁文章
1694





