GAN系列-原理篇

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/cuihuijun1hao/article/details/83063998

最近开始看GAN相关地知识。GAN是很经典的模型,个人认为这里面的坑还是比较多的,以后写论文说不定能用上。
这篇博客重点是从原理上去说明GAN,会涉及较多的数学公式。GAN的训练方式大家都很熟悉了,认为很简单。但是我认为,要想深入地理解GAN模型光能实践还是不够地,还是需要理解他地由来,以及数学表达方式。这样才有可能进一步地利用GAN ,做出我们自己想要地东西,而不是从网上copy个代码,跑一下就完事了。
接下来的内容我们分为这几个方面讲

GAN的原理
GAN训练要注意的地方
GAN的优势

GAN 从high level 上说就是在拟合一个数据分布。比如我们要生成人脸图像,我们生成器输出可以看作是一个高维度向量,在这个维度向量里面,只有一部分数据看着像是人脸图像,而其他数据就不像人脸,我们地GAN网络中地生成器就是要去拟合那部分 像人脸的向量空间。
那去拟合一个分布,我们使用的方法叫做KL散度。在李宏毅老师的科城里面,证明如下的一个数学式子,就是极大似然其实等价于 KL散度。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

从以上我们可以看出,我们做的事情就是在判别阶段,我们把他当成是一个binary cross entropy 的问题,学习出一个D之后,我们学习G V(G,D)最小。

如果单纯看以上的公式,不能有很好的直觉理解,接下来我们从直觉的角度去解释他。
我们都知道,判别其是学习如何更好地对真实数据和生成数据进行判断,那么我们在公式中看到地minimize 是做什么的呢? 从直觉理解就是 minimize对应的是生成器的部分,minimize 意思是学习让生成数据真实数据之间 KL散度距离更小。以下会从数学推到上去理解这个关系

在这里插入图片描述
以上是我们试着求出max(g,d)中对应的d ,并把d代入到公式中后,我们会发现,我们得到的是KL散度
在这里插入图片描述

在这里插入图片描述

由此可以看出,我们的minimize 其实 对应的KL 散度

GAN在训练的时候需要注意的问题

在这里插入图片描述

如图中所示,我们在更新 G0之后 得到新的G1 ,很有可能我们得到新的点(G1,D)并不是V(G,D)对应值最大的点,这个是训练时候可能会遇到的问题。所以我们的GAN训练是基于这样的假设,G0 和 G1 之间差别不是很大。实现中具体表现为,我们的判别器训练可能会迭代很多次,而生成器迭代就会次数少很多(甚至次数为1)

** GAN的优势**

GAN 效果会如此好,我们分析以下其中的原因。
在没有GAN之前,我们在对于这种生成任务,我们是用有监督学习(VAE),这种生成模型有一个明显缺点是他的输出之间是独立的。因为输出都是经过神经网络的softmax层 ,输出之间是没有关联,而这明显和现实是有差别的。为了增加输出之间的关联性,我们的VAE可能会在原来输出的基础上增加很多层。而如果我们用GAN的话,GAN使用判别器来对数据进行判断。判别器对输出的数据有一个全局考虑的优势,也就弥补了输出之间独立这样的缺点。

最后我们来讲一讲GAN方面,理论方面的争议

有一种观点认为 判别其是学习 生成数据和 真实数据之间的差异。所以GAN训练到最后的时候,判别其就会崩掉,就是没有办法学习,所有数据他都没有办法判别。
但是在实际操作中,我们会对这样一个理论产生怀疑
很多论文里面可以看到,在训练判别其的时候会把之前生成器产生的数据和现在生成器产生的数据一起送入到判别器,他的效果会提升。
还有很多人会用GAN与预训练判别器,从这些情况我们可以猜测 判别器是在学习数据的分布,是用来评价一个数据的好与坏,对他进行打分。
但是以上还是基于猜测,还有待进一步去正式。

展开阅读全文

没有更多推荐了,返回首页