阅读小结:Generative Adversarial Nets

原创 2016年08月26日 15:03:44

这是Ian Goodfellow大神的2014年的paper,最近很火,一直没看,留的坑。

中文应该叫做对抗网络

代码是用pylearn2写的  github地址为:https://github.com/goodfeli/adversarial/


What:

同时驯良两个模型:一个生成模型G(获得数据分布),一个区分模型D(预测输入是真实的,还是G中产生的)

G的训练目标就是最大化D犯错误的可能,这样G这个生成模型就越厉害。

这个框架很像两个人在玩游戏。

整个系统里只用了bp,没有马尔可夫链或者其他推理的神经网络


读前疑问:

G的输入是label么,还是一个随机高斯噪声。

如果是label,怎么用神经网络写一个生成模型G,用deconv么。。。


How:

1.G是一个简单的神经网络 (比如:一个全连接隐层) 他的输入是一个向量(100维)然后产生一张图作为输出。

2.D也是一个简单的神经网络(比如:一个全连接隐层)他的输入是一张图像,然后产生一个置信度(0-1)

假设B为BatchSize.

3.G的训练如下:

a.创建B个随机100维的向量,比如[-1,1]

b.G中前馈向量得到新的图片image

c.D中前馈图片image得到 得分

d.使用cross entropy 来分类,D中应该认为这些生成的图片(fake)为label = 0,如果D的打分是label=0,那么G的error应该比较低(因为G do a good job 骗了D)

e.执行一个bp (不更新D),得到image每个像素的gradient

d.利用这个gradient,更新G


4.D的训练如下:

a.从G中创建B/2张图片 ground truth label是0

b.从训练集中选择B/2张图片  gt label是1

c.把它们放到一个batch里面

d.在D中前馈这个batch

e.cross entropy error

f.update D


训G一个batch,然后训D一个或者更多batch  (有时候D比较慢,所以要的迭代比G多)

我check了他的模型 (tfd_pretrain/train.yaml)

G用了一个RectifiedLinear和Sigmoid  (这个RectifiedLinear带参数的,不是Relu)

D用了两个Maxout和一个Sigmoid(这个Maxout也带参数的)



目前自己的实现计划:

1. 数据集采用Minist  28*28

2. G的输入采用为32*32 的[-1,1]rand

3. G采用 3*3  1*1  3*3  三层conv  stride1 前两个con后接relu

4. D采用原始的MinistCNN分类网络将最后改为 2分类

5. 使用图模型,所以

update G:fix D  forward G+D (D的input是G的output concat gt file) 

update D: fix G forward G+D 


预想的是这样。。。不知道做出来成不成。。。都是玄学


-----8.27 update

和论文不同的是...

目前实现结果,是一般D网络比较强,G不行

G往往收敛到局部极值,在MINIST上的表现是28*28的全0图

我尝试了将D改弱,也不行。可能下一步就是对G做pretrain

同时参考原文的结构。xjb弄 可能确实不行。

目前代码地址:https://github.com/layumi/2016_GAN_Matlab



----8.28 update

可以看我下一篇阅读小结,这篇paper讲的是如何stable的train GAN (比如,使用batchnorm,leakyrelu等等)

但是道理我都懂,还是训不好。QAQ


- - - - - -   9.2 update

首先输入应该是100维向量,使用deconv来构成G

然后输出到一个局部极值是常见现象(我记得有一张分布的图是关于这个的)

现在在尝试improved gan这篇paper中的方法,修改G的目标函数。 可以见我最近一篇阅读小结



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Generative Adversarial Nets(译)

我们提出了一个通过对抗过程估计生成模型的新框架,在新框架中我们同时训练两个模型:一个用来捕获数据分布的生成模型G,和一个用来估计样本来自训练数据而不是G的概率的判别模型D,G的训练过程是最大化D产生错...
  • wspba
  • wspba
  • 2017年01月16日 20:42
  • 4839

【深度学习】生成对抗网络Generative Adversarial Nets

介绍非监督深度学习经典论文GAN(Generative Adversarial Nets)

Generative Adversarial Nets论文笔记+代码解析

前面在Generative Adversarial Nets(译)一文中对2014年Ian J. Goodfellow这位大牛关于GAN的文章进行了全文的翻译,在翻译的过程中,遇到的不少的问题,也有一...
  • wspba
  • wspba
  • 2017年01月17日 18:34
  • 3553

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

深度学习笔记一:生成对抗网络(Generative Adversarial Nets)

文章链接:http://papers.nips.cc/paper/5423-generative-adversarial-nets.pdf 已经有段时间没看过Deep learning的东西了,最近要...

Conditional Generative Adversarial Nets论文笔记

我们希望得到一种条件型的生成对抗网络,通过给GAN中的G和D增加一些条件性的约束,来解决训练太自由的问题。...
  • wspba
  • wspba
  • 2017年01月22日 17:22
  • 2510

生成对抗网络学习笔记1----论文Generative Adversarial Nets

1、阅读论文:Goodfellow I J, Pouget-Abadie J, Mirza M, et al. Generative adversarial nets[C]// Internation...

在caffe 中实现Generative Adversarial Nets(一)

这里写链接内容#目录 [TOC]一、Generative Adversarial Nets1. GAN简介对抗生成网络(GAN)同时训练两个模型:能够得到数据分布的生成模型(generative m...

GANs学习系列(5): 生成式对抗网络Generative Adversarial Networks

【前言】      本文首先介绍生成式模型,然后着重梳理生成式模型(Generative Models)中生成对抗网络(Generative Adversarial Network)的研究与发展。作者...

GANs学习系列(6):条件生成式对抗网络Conditional Generative Adversarial Networks

【前言】      本文首先介绍生成式模型,然后着重梳理生成式模型(Generative Models)中生成对抗网络(Generative Adversarial Network)的研究与发展。作者...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:阅读小结:Generative Adversarial Nets
举报原因:
原因补充:

(最多只允许输入30个字)