Generative Adversarial Nets (GAN)解读

会议:NIPS 2014


Introduction

GAN,生成对抗式网络是是Ian Goodfellow经典的大作,引起了很大的轰动,后面的各种GAN也层出不穷。追根溯源,为了了解GAN,需要从这篇开山之作说起。那GAN到底是什么?简单来说,GAN由两个模型组成,一个是生成模型G,一个是判别模型D,G负责从给定训练数据中学习数据的概率分布而D负责判别G生成出来的数据是不是符合真实数据的样本概率分布。两个网络是非合作关系,对于D来说,是要最大化能够判别出G生成的数据是假的的概率,而对于G来说,是要最小化被D判别出来的概率,在这个不断博弈的过程中,两个模型的能力都在变强,最后得到一个均衡。


首先要明确生成模型和判别模型的区别:

生成模型:学习到的是时联合概率密度分布P(X,Y),从统计的角度来说就是学习数据的分布情况,反映同类数据之间的相似性;

判别模型:学习一个判别函数Y = f(x)或者条件概率P(Y|X),并不能反映数据本身的特性,考虑的是异类数据之间的差异性,找到一个  最佳分类面;


因此由生成模型可以到判别模型而判别模型不能到生成模型。

为了更好的理解GAN,可以类比警察与造假币商人,生成模型就类似于造假币的商人,试着造出被检测不出来的假币,而判别模型类比于警察,尝试检测出假币。在这个对抗过程中,两边的方法和水平都提高了,直到警察已经没有办法判别出假币,而某种程度上来说假币就是真的了。


Adversarial nets

文中生成网络和对抗网络都是用的多层感知机(multilayer perceptrons)。

优化的目标函数为:


其中,D(x)表示D判断x来自真实数据的概率,D(G(z))表示D判断G(z)为真实数据的概率,z表示随机噪声,G(z)为生成数据,也就是说D判断错了的概率,1-D(G(z))就是D判断对的概率;因为对于D来讲,需要把他判断对的概率最大化,而对于G来讲,需要把这个目标函数最小化。


训练的算法为:


可以通过SGD 来训练网络,D 和 G是分开训练的,首先外层循环式训练的迭代次数,内层循环是先训练D,在经过k步之后开始训练G,K是一个超参数,得靠经验来定,玄学。。。一直训练直到模型收敛,达到平衡,理论上的全局最优解是:


原论文有详细的数学证明。

下面用一个图来说明训练的过程:


黑色表示真实数据分布p(data),蓝色表示判别网络分布,绿色表示生成数据分布p(g);

(a)最初始阶段,生成数据分布p(g)和正式数据分布相差较大,由于两个网络都没有学的很好,判别网络不是很稳定;

(b)随着D的训练过程,D判别趋于稳定,偏左边判定为正确而偏右边判定为错误;

(c)接着开始训练G,G发现了D判定的规律,分布往左移,更加靠近真实数据分布;

(d)最终得到平衡,D和G都没有办法进行更新,模型收敛;


生成实例:


Disadvantages

问题:

(1)D 和G 训练同步的问题;

(2)生成数据不可控;

(3)产生一些垃圾图片或者一些和真实数据很相似的图片;


未来的很多GAN都是针对这些存在的问题做更新和研究的,比如DCGAN,,WGAN,VAEGAN等。


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值