阅读小结: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论文笔记+代码解析

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

RCNN学习笔记(0):rcnn简介

reference link:http://blog.csdn.net/shenxiaolu1984/article/details/51066975 Region CNN(RCNN)可以说是利用深...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

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

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

Conditional Generative Adversarial Nets论文笔记

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

阅读小结:Unsupervised Representation with Deep Convolutional Generative Adversarial Networks

What CNN应用于无监督学习。将这种CNN称为DCGANs 1.提出和评估了DCGANs 有一些结构上的限制,让他可以stable的去训练。 2.利用图像分类任务训练的discriminator,...

【TensorFlow】Windows环境下PyCharm运行TensorFlow GPU版(附TensorFlow更新方法)

作为一名谷粉再加上最近研究深度学习,不得不说TensorFlow是一个很好的切入点,今天看了下官方教程踩了几个坑后,终于在PyCharm上起飞了,废话不多说下面开始搭建环境吧。(此教程Win10,8....

目标检测的图像特征提取之(一)HOG特征

目标检测的图像特征提取之(一)HOG特征 zouxy09@qq.com 1、HOG特征:        方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一...

Generative Adversarial Nets(译)

我们提出了一个通过对抗过程估计生成模型的新框架,在新框架中我们同时训练两个模型:一个用来捕获数据分布的生成模型G,和一个用来估计样本来自训练数据而不是G的概率的判别模型D,G的训练过程是最大化D产生错...
  • wspba
  • wspba
  • 2017-01-16 20:42
  • 2480
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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