《深入浅出GAN-原理与应用》学习笔记
导语:
本文是集智粉丝网小鱼在学习《深入浅出GAN-原理与应用》后(点击阅读原文即可观看),所撰写的学习笔记。内容包括GAN的框架原理,模型原理及推导,以及GAN的改进版DCGAN和WGAN的简单介绍。如果你要学习GAN系列课程,那么先阅读本篇笔记,能让你对GAN家族有一个大概的了解,使你的学习之路更加顺畅。
GAN全称是Generative Adversarial Nets,中文叫做“生成对抗网络”。
在GAN中有2个网络,一个网络用于生成数据,叫做“生成器”。另一个网络用于判别生成数据是否接近于真实,叫做“判别器”。 下图展示了最简单的GAN的结构以及工作原理。
这个图示是最简单的GAN框架,在实际应用中还可以把“生成器的输入-输出”作为判别器的输入,这样就可以做到生成符合某些条件的任务内容。例如根据文字内容生成符合描述的图片。
GAN的训练是价值函数最大化和最小化的交替游戏:
其中Pdata是真实数据,Pz是生成数据。
当我们训练判别器D时,我们希望真实数据的判别值越大越好。同时我们希望对生成数据的判别值越小越好,所以也是越大越好。训练中使用梯度上升,使价值函数的值越来越高。
同理,当我们要训练生成器G时,就希望价值函数的值越小越好,即使用梯度下降来训练生成器的参数。
理论推到基于3个假设:
训练时间是无限的
(生成器和判别器)模型的能力是无限的
直接更新生成器的分布
基于以上假设GAN可以得出以下结论:
即不论初始值如何,GAN最终都必然会达到均衡。
GAN可以生成非常清晰的图片,而传统的生成模型生成的图片通常比较模糊。
顾名思义,DCGAN就是采用深度卷积的生成对抗网络。英文全称是deep convolutional generative adversarial networks。
DCGAN是第一个把Batch normalization引入到GAN的网络架构,并且使用了Adam等方法,增强了网络的稳定性。
上图是DCGAN生成器的网络结构。
上图是CDGAN论文中提到的“插值”。
最左侧一列是由最上面一副随机扰动图片逐渐生成的图片(最下面是最终结果)。最右侧是另一个随机扰动。中间的列是两边的随机扰动向量的中间值(插值),可以看到在生成器的结果随着随机向量的渐变,生成结果也像是在连续的产生变化。说明生成器生成内容是光滑的。
上图是CDGAN论文中的向量加减法,生成器可以把输入向量作为生成目标的某些特征值。
例如:戴眼镜的男人 – 男人 + 女人 = 戴眼镜的女人
图片最下面一行是图片本身直接叠加产生的效果,可以看到简单叠加并不能取得很好的效果。说明生成器对特征运算起到了决定性的作用。
该部分内容引自论文《Improved Techniques for Training GANs》。
原始GAN的训练是非常不稳定的,缺乏一个很好的评价标准。我们只能用肉眼观察当前生成的图像是否像真实数据。针对这些问题该论文提出了一些训练技巧。这篇论文还把GAN引入了半监督学习中。
从判别器的中间层中取出一些节点作为特征,对特征进行L2正则化监督。
在最小批次的训练内容中尽量引入更多的训练集的特征。
以上是论文中提到的其他优化技巧。不过这些技巧没有其他论文跟进。
使用GAN可以生成很多和真实数据极其相似的数据,把这些数据也作为训练数据,就可以增加已经标记的数据集大小。所以GAN可以看作是一个半监督学习的支持方法,可以一定程度上弥补现实中训练集不足的问题。
进一步提升了训练的稳定性。不需要精心设置G和D一轮一轮的更新。不需要精心设置复杂的网络结构。(原始GAN的价值函数的梯度很可能是0,就没法得到更新。WGAN提出了新的价值函数解决这个问题。)
几乎解决了mode collapse问题。mode collapse是说生成器生成的内容过于雷同,缺少变化。
提供了具有意义的价值函数,可以判断判别器和生成器是否已经收敛。(原始GAN中如果D的效果不好,我们不知道是G生成的好,还是D判别的不好)
提供了理论公式(不过很难理解)。
在判别器输入中加入噪声,使优化分布成为可能。
随着真实分布和生成分布的距离越来越小,对噪声进行退火,使噪声越来越小直至消除噪声。
把真实数据和生成数据的分布的最小距离的期望叫做Wasserstein距离。
如果右上图中AB是真实数据,CD是生成数据,则他们的W距离=θ 。
WGAN采用“W距离”作为训练的价值函数。
当移除BN后DCGAN无法正常工作,而WGAN仍然可以生成很好的图片。所以WGAN可以使用更简单的网络结构。
上图展示了WGAN变了DCGAN中的mode collapse问题。避免经常生成雷同的图片。
此学习笔记是在看了集智AI学园的《深入浅出GAN—原理与应用》系列视频后写下的,扫码即可进入
http://campus.swarma.org/gpac=8src=1
深入浅出GAN-原理与应用
小编寄语:
以上为“网小鱼”同学提供的笔记,写的非常认真,可见是花了很多心思的。如果有同学对人工智能感兴趣,想学习人工智能、想写学习笔记,都可以联系我们,欢迎同样热爱学习的你~
关注集智AI学园公众号
获取更多更有趣的AI教程吧!
搜索微信公众号:swarmAI
商务合作|zhangqian@swarma.org
投稿转载|wangjiannan@swarma.org