浅析生成对抗网络(GAN)—— Generative Adversarial Nets

来源:互联网 发布:极速浏览器 mac 编辑:程序博客网 时间:2024/06/05 05:58

这两天在学习Goodfellow大神的生成对抗网络,想在此写此博文来对GAN做一个回顾,也能更深化自己对GAN Nets的理解。(本人还是深度 学习的小白枚,如有讲解不清楚的地方,还请广大博主指导。)

主要思想

对于大多数的深度学习网络,还都是搭建好一个固定的网络,本着一定的目的通过数据去训练该网络直到学到一个很好地效果,以此为目的。如:Alexnet做分类,Lenet用来做mnist手写数字识别。但是Goodfellow大神在2014年对于一个无监督学习提出了一个非常innovative的想法——就是GAN 了。
GAN跟一般的深度学习网络不同,可以说他一共需要train两个网络,一个叫做生成网络(Generative Nets),另一个叫做判别网络(Discriminative Nets),生成网络的输入是随机噪声(服从一定分布),通过该网络生成一幅与样本一样大小的图像;判别网络输入是一系列样本,也可以是生成网络的输出,用来判别输出是否是样本这一类。做一个形象的比喻:生成网络就好比是假货(fake)的制造者,判别网络好比是警察,每当生成网络生成一个新的假货,就交由判别网络来鉴别该货物是否属于正品(原始数据样本),刚开始G网络(即生成网络)的权重肯定是随机的,因此前几次迭代的生成值对于D网络(判别网络)来说很容易判别;而整个GAN网络就是根据最后D网络的输出的loss来进行优化更新权重的。直到最后D网络很难判断G网络的生成结果是否属于数据样本。

数学方法

主要用到了一些优化方法,而本文作者Goodfellow大神给出的算法也很详细。先介绍一些参数表示:
xpz是G网络输入噪声的分布,xpg是输入的数据服从的分布(一般都服从高斯分布),我们的最终目的是让G网络能够学出一个从输入噪声z到数据样本x的一个映射(mapping)G(z;θg),并定义判别器网络(D网络)的映射(mapping)为D(x;θd),我们的目的是给G网络输入噪声样本,通过网络生成一个样本;给D网络输入G网络输出样本与正式data样本,让D网络判断G的output是否属于data样本,返回loss值用于反向更新网络。我们的目的是不断更新G网络权值使G网络的输出能够以假乱真,文中给出了一个需要优化的目标,即train G 最小化 log(1D(G(z)))。D和G就像2个正在玩游戏的玩家,G想让自己的output更接近真实data的样本,而D则是劲量更新网络权值使自己能够尽量鉴别G的output。这是一个minimax game,而我们需要优化的vaule function 是:

这里写图片描述

即就是在G网络上最大化 logD(G(z))

文中证明了minimax game有全局最优点在 pg=pdata 的时候取到,Goodfellow还证明了当去的全局最优点时,D(X)=12 , 而在训练过程中,D的输出概率为 pdata(x)pdata(x)+pg(x). 在训练过程中可以看到noise样本分布会不断趋近于data样本分布,如下图所示:

绿色曲线为G网络输出分布,黑色点画线为data样本分布,蓝色虚线为D网络判别概率分布。

算法描述

Goodfellow给出的算法如下图所示,很详细具体不多解释了。

这里写图片描述

有一点要注意的是,算法中是k步训练D网络1步训练G网络交替进行,实际实验往往采用k=1.

实验部分

本文作者在选用网络时对G网络和D网络都选用全连接神经网络,并应用到mnist, TFD, CIFAR-10训练集,在D网络应用dropout。实验结果图如下:

这里写图片描述

我也用caffe 跑了一下dcgan(其实就是把G与D网络结构换成CNN具体可以参考文献[2]),我的网络结构图如下: 有兴趣的读者可以根据网络尝试搭建一下,不过建议读者还是用Tensorflow比较好,caffe训练效果并不尽如人意。

这里写图片描述

今天就分享到这里,欢迎大家指出我的错误。

[1]Goodfellow, Ian J., Pouget-Abadie, Jean, Mirza, Mehdi, Xu, Bing, Warde-Farley, David, Ozair,Sherjil, Courville, Aaron C., and Bengio, Yoshua. Generative adversarial nets. NIPS, 2014.
[2]Alec Radford, Luke Metz, Soumith Chintala. UNSUPERVISED REPRESENTATION LEARNING WITH DEEP CONVOLUTIONAL GENERATIVE ADVERSARIAL NETWORKS

6 0
原创粉丝点击