浅析生成对抗网络(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大神给出的算法也很详细。先介绍一些参数表示:
即就是在G网络上最大化
文中证明了minimax game有全局最优点在
绿色曲线为G网络输出分布,黑色点画线为data样本分布,蓝色虚线为D网络判别概率分布。
算法描述
Goodfellow给出的算法如下图所示,很详细具体不多解释了。
有一点要注意的是,算法中是k步训练D网络1步训练G网络交替进行,实际实验往往采用
实验部分
本文作者在选用网络时对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
- 浅析生成对抗网络(GAN)—— Generative Adversarial Nets
- 生成对抗网络学习笔记4----GAN(Generative Adversarial Nets)的实现
- 生成对抗网络学习笔记4----GAN(Generative Adversarial Nets)的实现
- Generative Adversarial Nets 生成式对抗网络
- 生成对抗网络Generative Adversarial Nets资料
- 生成式对抗网络generative adversarial nets
- 生成式对抗网络(Generative Adversarial Nets)
- 生成对抗网络Generative Adversarial Nets(译)
- 生成式对抗网络GAN研究进展(五)——Deep Convolutional Generative Adversarial Nerworks,DCGAN
- 生成对抗网络(GAN:Generative Adversarial Networks)
- 生成式对抗网络(Generative Adversarial Networks,GAN)
- 与判别网络对抗的生成网络 (Generative Adversarial Nets)
- 【神经网络与深度学习】生成式对抗网络GAN研究进展(五)——Deep Convolutional Generative Adversarial Nerworks,DCGAN
- 【深度学习】生成对抗网络Generative Adversarial Nets
- 生成对抗网络学习笔记1----论文Generative Adversarial Nets
- GAN: Generative Adversarial Nets
- 【资料】生成对抗网络(GAN,Generative Adversarial Networks)
- 生成对抗网络(GAN,Generative Adversarial Networks) 学习笔记
- java 蓝桥杯 奇怪的数列
- 二进制概念
- Android5.1-s5p6818平台移植FangGet的ORB-SLAM2(以及OpenCVLib)
- 十天学会单片机(一)
- ACM刷题之POJ———— Catch That Cow
- 浅析生成对抗网络(GAN)—— Generative Adversarial Nets
- LeetCode-21. Merge Two Sorted Lists
- Linux init进程产生过程
- Java线程的join()方法
- viewStub使用
- ossp-uuid-1.6.2移植到arm平台
- JS:innerHTML、innerText和value的区别
- emoji表情的保存
- 310. Minimum Height Trees