GAN这个东西说难也难说不难也不难,最主要是看你怎么理解,接下来我来给大家用最简单最易懂那的语言来介绍GAN的原理。
所谓的GAN其实是Generative Adversarial Network的缩写。里面主要的有两个东西,我们来看一下。
1.生成器Generation
生成器就是通过一些随机噪声直接生存数据。它的任务就是不断学习然后生成一些最逼近真实的图片。这就是GAN里面的一个网络生成网络(G网络)。
深度学习之GAN简单原理(对抗网络)
2.辨别器 Discriminator
辨别器的任务就是只需要分辨生成器生成的图片是真的还是假的只反馈一个0或者1,也就相当于一个二分类器,这就是GAN里面的另外一个网络辨别网络(D网络)。
深度学习之GAN简单原理(对抗网络)
3.对抗网络原理
对抗网络的原理就是通过生成网络和辨别网络之间的博弈来使生存网络生成的图片越来越接近真实图片,使辨别网络能够更好地辨别出谁是真的图片谁是假的图片。就通过这样的博弈来训练模型。训练一代generation之后就会训练出一代discriminator,两者在训练的时候是先训练D再训练G而不是一起训练。
下面就是一个简单的对抗学习过程:
深度学习之GAN简单原理(对抗网络)
接下来我来给大家介绍一下数学上的原理:
在GAN中最主要的一个函数就是:
深度学习之GAN简单原理(对抗网络)
这个函数其实就是刻画两个数据分布之间距离,我在下面作解释。
在这里我们可以把这个函数分成两个部分:
第一个部分是:距离最大化
深度学习之GAN简单原理(对抗网络)
这里我们可以这样理解:有一个给定的G0,那么我们就在G0给定的情况下,找一个D0使得V最大,V值得就是Pdata与PG之间的距离也就是生成网络G生成的数据与真实数据之间的距离.
第二个部分就是:减小距离
深度学习之GAN简单原理(对抗网络)
在我们找到D0使得V最大之后我们固定D0,去寻找一个G1使得V变小,也就是缩短Pdata与PG之间的距离。也就是优化G生成网络。所以在训练的时候我们是先训练D再训练G。

在找到G1之后我们再去寻找D,也就是在给定G1的情况下等再去找一个D1,使得V最大,然后再固定D1去寻找G2。
以此类推Pdata与PG之间的距离会越来越小,这就是算法的原理。
一直像这样下去,就会找到一个G和D使得Pdata与PG相等,也就是G生成的数据与真实数据相等。