如果说GAN的发展史上有什么戏剧性事件,那“LSTM之父”Jürgen
Schmidhuber(发音:You_again Shmidhoobuh)和“GAN之父”Ian
Goodfellow之间的恩怨绝对是其中最精彩的一幕。在2016的NIPS大会上,Schmidhuber和Goodfellow就GAN是否借鉴了前者在九十年代发表的一篇论文展开了激烈争论,引得满座震惊。虽然事后学界认可了GAN的原创性,但Schmidhuber似乎对此仍然耿耿于怀。近日,他发表了一篇小短文,文章的主角还是几十年前的那个模型——PM。

作者:刘威威

必威官方网站 1

编辑:李文臣

1990s,无监督神经网络在最小值上的博弈每个网络最小化由另一个网络最大化的值函数或生成实验,产生对好奇心的内在奖励


在对人工神经网络的研究中,研究人员最重要的目标之一是创建能从给定数据中学习统计数据的算法。为了实现这一目标,我在20世纪90年代曾引入一种新型无监督学习机制,它基于极大极小博弈中的梯度下降/上升原理,其中一个NN负责最小化由另一个NN最大化的目标函数。我把发生在这两个无监督神经网络之间的对抗称为“可预测性最小化”(Predictability
Minimization)。


首先,PM需要一个自带初始随机权重的编码器网络,它通过其输入节点接收数据样本,并在其输出节点(下图中的灰色圆圈,也称编码节点)生成对应编码。每个编码节点都可以在区间[0,1]内被激活。

1

必威官方网站 2

1.GAN的
‘前世’?

图中的黑色圆圈表示一个独立的预测网络,经过训练后,给定一部分编码节点,它能学习每个编码节点的条件期望,从而预测所有未提供的编码节点。虽然图中没有标出,编码网络和预测网络都有隐藏节点。

大家都知道GAN是Ian Goodfellow 2
014年放出的一篇开山之作,在深度学习界评价很高,可以说GAN的出现,给深度学习界带来了很多的研究(shui)课(lun)题(wen)。但是如果说GAN是另外一种网络的变种,不知道你是否相信呢?但是有一个人是坚信不疑的,这个人就是德国AI科学家Jürgen
Schmidhuber,说到这个人可能很多人不太了解,毕竟不是像Hinton Yoshua bengio,
Yan
lecun这样出名的人,事实上他对AI界做出了很大的贡献,LSTM就是他在97年发明的。其本人照片如下:

但是,每个编码节点都希望自己能变得更不可预测。因此它需要经过训练,最大限度地提高由预测网络最小化的目标函数。预测器和编码器相互对抗,以激励编码器实现无监督学习的“圣杯”——关于输入数据的理想的、展开的、二元的阶乘编码,其中每个编码节点在统计上彼此互相独立。

必威官方网站 3

理想情况下,NN在经过学习后,给定数据模式的概率就应该等于其编码节点概率的乘积,这个概率也是预测网络的输出。

OK!Jürgen
Schmidhuber之所以认为GAN是其他模型的变种,主要他在92年提出了一种PM(Predictability
Minimization)模型,其与GAN有一些相似之处(起码他自己这样认为),所以他一直认为GAN是goodfellow在自己PM模型上的改进。他92年提出的PM模型才是“第一个对抗网络”,而GAN跟PM的主要差别仅仅在于方向反过来了,可以把GAN名字改成“inverse
PM”,即反过来的PM。并且多次与goodfellow邮件往来说明这个问题,毫无疑问得到了goodfellow的否决。事情甚至发展到Jürgen
Schmidhuber在2016NIPS大会上与goodfellow公开互怼。

无独有偶,生成对抗网络也使用无监督的极小极大原理来模拟给定数据的统计数据。相信读者都熟悉NIPS
2014的那篇GAN论文,虽然那位作者声称PM并不是基于值函数的极大极小博弈,不是一个网络寻求最大化而另一个寻求最小化,相比GAN那种“网络之间的对抗是唯一训练标准,并且足以完成训练”的方法,PM只能算“一个正则,鼓励神经网络的隐藏节点在完成其他任务时在统计上独立,其对抗性不是主要的训练方法”。

事情是这样子的:

但是,我觉得PM确实也是个纯粹的极大极小博弈,尤其是它也对抗训练,“网络之间的对抗是唯一训练标准,并且足以完成训练”。

2016NIPS大会上,goodfellow正在做GAN的tutorial,这时,Jürgen
Schmidhuber打断了演讲,站起来首先介绍了一下自己92年提出的PM模型,其实就差直接阐明PM和GAN很相似,然后反问goodfellow,如何看待GAN和PM的相似点。

将无监督极大极小博弈用于强化学习好奇心

必威官方网站 4

还是20世纪90年代,PM论文发表后,我曾尝试过把这个想法扩展到强化学习领域,构建具有人工好奇心的智能体。

外人看上去只是普通的一次提问或者辩证,但是goodfellow反应及其激烈,甚至都要发火了。原来早在GAN提出之后,他们两人就已经互相往来邮件讨论过这个问题,大概流程就是Jürgen
Schmidhuber认为GAN是他的PM模型的演化,现在GAN那么出名了,goodfellow应该承认PM对GAN的贡献。Goodfellow当然说不,自己的成果平白无故被上了一个套,要谁谁也不干,而且在本质上GAN和PM也有很大的不同。但是Jürgen
Schmidhuber还是不死心,以至于事情闹到了NIPS大会上,结果就是:

必威官方网站 5

必威官方网站 6

我构建了一个目标是在环境中生成动作序列的神经网络C,它的动作生成的由一个追求回报最大化的节点控制。作为参考,我设计了一个名叫世界模型M的独立神经网络,它能根据给定的以往输入和动作预测未来输入。动作选择越合理,网络得到的回报就越高,因此C所获得的内在回报和M的预测误差成正比。同时,因为C试图最大化的正是M试图最小化的值函数,这意味着C会尽力探索M无法准确预测的新动作。

可能是动了真怒,Goodfellow直接明说他们之前已经在邮件里讨论了这个问题,不想牵扯到NIPS大会上来做无意义的争辩,最后结果就是goodfelllow的一番话赢得了在场大佬的多次掌声。

最近关于好奇心的强化学习论文有很多,我觉得它们都是基于这个简单的90年代的原理。尤其是在97年的那篇论文中[UARL3-5],我让两个对抗的、追求回报最大化的模块共同设计一个实验:一个能定义如何在环境中执行动作序列、如何通过实现由实验触发的观察序列的可计算函数的指令序列来计算最终实验结果的程序。

题外话

两个模块都能提前预测实验结果,如果它们的预测或假设不同,那么在动作生成和执行完毕后,失败一方会向这个零和博弈的优胜一方提供内在回报。这种设计促使无监督的两个模块专注于“有趣”的事情,也就是不可预测的空间。同样的,在没有外部回报的情况下,每个无监督模块都在试图最大化由另一个最小化的值函数。

Jürgen
Schmidhuber已经五十多岁了,而且是Dalle
Molle人工智能研究所的联席主任。他表示自己的早期研究常常被忽视,另外据网上传言,LeCun教授在一封电子邮件中说道,“Jürgen太想得到大家的认可,每次别人讲完话他都会站起来,说刚刚提出的东西有他的功劳,但是这种方式却不是特别恰当。”

必威官方网站 7

实际上,Jürgen
Schmidhuber的确对人工智能界做出了很大的贡献,LSTM就是一个典型的例子。

当时我在论文中提出,如果想把这种方法用于现实世界的某些问题,我们还需要科学家和艺术家的人为介入,设置合理的外部回报。而时至今日,很多人也确实正在用它处理数据分布建模和人工好奇心等任务。小结

接下来简单介绍一下PM模型。可以用下图来表示PM模型的原理,图片来自郑华滨的知乎文章,下文有关PM的部分均是从他的文章中总结而来,以简单的文字形式来表述,详情可参考链接:

看到这里,相信大家都看出来了,Jürgen
Schmidhuber还是放不下对GAN的纠结,或者说,是对“对抗”这种方法的执念。虽然GAN的原创性已无争议,但比起抬高/贬低Schmidhuber的为人,我们都不能否认他对深度学习作出的杰出贡献。2年前,他也正是以一种几乎“闹剧”的方式警告所有人,在过去几十年的研究中,可能存放着许多不为人知的珍宝,它们不是不够优秀,而只是输给了时代。

必威官方网站 8

图片的左边是一个自编码器,自编码器对输入输出重构,输入数据经过编码解码后得到输出数据,输入输出存在一个重构误差,当重构误差越小时,说明自编码器中的隐藏层越能学习到表示数据的特征,但是我们希望不仅能学习到特征,而且希望学习到好的特征,于是Jürgen
Schmidhuber就提出了PM模型,如何衡量好的标准,假设自编码器隐藏层学习到的特征是三维的向量,每一维用c来表示,有人认为,当每一维的特征向量是相互独立即解耦的,说明特征就很好,那么Jürgen
Schmidhuber就提出使用一个预测器f(PM中的P部分),f根据其中两个维度的值去预测另外一个维度的值,如果预测的很准,说明他们C之间的独立性就很差,解耦性不好,学习到的特征不好,如果预测的很不准,说明编码器学习到的特征很好。既然这样,可以通过一个损失函数

必威官方网站 9

建立编码器和f预测能力之间的对抗,自编码器希望得到很好的特征表示,令c相互独立,但是f希望预测的很准,预测的准就表示c的独立性差,所以他们之间也有一种‘对抗’,然后通过对抗得到很好的特征表示。

2.PM与GAN的区别:


乍一看或许他们两个很相似,都有‘对抗’机制,实际上差别还是很大的。

首先,PM种的对抗只是相当于一种对获得好的特征表示的辅助,但是GAN的特点就是对抗训练,对抗训练是GAN
的主体。

其次,PM是从复杂分布得到的解耦分布做对抗,而GAN直接对复杂的原始分布做处理,得到最后的判别,所以说GAN或许是inversePM。

再者,PM判别每一个数据的维度,而GAN最后的判别是一维的,即对与错的程度(概率)。

而且PM的作用有限,拓展性不强,而GAN可以用在很多领域,拓展性更强。

我还是很支持GAN是原创的。

必威官方网站,有关GAN前世就简单介绍到这里,下文介绍GAN本身的部分,包括GAN的特点,优缺点总结,常用的训练tricks,以及GAN的一些改进成果,有基础的可以直接跳过这一部分。本文的第三部分会介绍一些GAN的变种以及复现很好的GitHub代码链接,感兴趣的可以看一下。在本文的第四部分,我会列举一些GAN的应用,介绍其原理,同时附有github代码链接。

必威官方网站 10

2

首先,啰嗦一下什么是GAN(Generative adversarial
nets),中文是生成对抗网络,他是一种生成式模型,也是一种无监督学习模型。其最大的特点是为深度网络提供了一种对抗训练的方式,此方式有助于解决一些普通训练方式不容易解决的问题。并且Yan lecun明确表示GAN是近几十年除了面包机最伟大的发明,并且希望是自己发明的GAN。

 关于GAN的入门可以参考机器学习算法全栈工程师公众号之前的文章:GAN入门与实践,里面包含了GAN的入门介绍以及生成人脸图片的实践tensorflow代码。

1. GAN诞生背后的故事:

学术界流传,GAN创始人 Ian Goodfellow
在酒吧微醉后与同事讨论学术问题,当时灵光乍现提出了GAN初步的想法,不过当时并没有得到同事的认可,在从酒吧回去后发现女朋友已经睡了,于是自己熬夜写了代码,发现还真有效果,于是经过一番研究后,GAN就诞生了,一篇开山之作。附上一张大神照片。

必威官方网站 11

 Ian goodfellow

必威官方网站 12

2. GAN的原理:

GAN的主要灵感来源于博弈论中零和博弈的思想,应用到深度学习神经网络上来说,就是通过生成网络G(Generator)和判别网络D(Discriminator)不断博弈,进而使G学习到数据的分布,如果用到图片生成上,则训练完成后,G可以从一段随机数中生成逼真的图像。G,
D的主要功能是:

● 
G是一个生成式的网络,它接收一个随机的噪声z(随机数),通过这个噪声生成图像 

● 
D是一个判别网络,判别一张图片是不是“真实的”。它的输入参数是x,x代表一张图片,输出D(x)代表x为真实图片的概率,如果为1,就代表100%是真实的图片,而输出为0,就代表不可能是真实的图片

训练过程中,生成网络G的目标就是尽量生成真实的图片去欺骗判别网络D。而D的目标就是尽量辨别出G生成的假图像和真实的图像。这样,G和D构成了一个动态的“博弈过程”,最终的平衡点即纳什均衡点.

3. GAN的特点:

● 
相比较传统的模型,他存在两个不同的网络,而不是单一的网络,并且训练方式采用的是对抗训练方式

● 
GAN中G的梯度更新信息来自判别器D,而不是来自数据样本

4. GAN 的优点:

(以下部分摘自ian goodfellow
在Quora的问答)

● 
GAN是一种生成式模型,相比较其他生成模型(玻尔兹曼机和GSNs)只用到了反向传播,而不需要复杂的马尔科夫链

● 
相比其他所有模型, GAN可以产生更加清晰,真实的样本

● 
GAN采用的是一种无监督的学习方式训练,可以被广泛用在无监督学习和半监督学习领域

● 
相比于变分自编码器, GANs没有引入任何决定性偏置( deterministic
bias),变分方法引入决定性偏置,因为他们优化对数似然的下界,而不是似然度本身,这看起来导致了VAEs生成的实例比GANs更模糊

●  相比VAE,
GANs没有变分下界,如果鉴别器训练良好,那么生成器可以完美的学习到训练样本的分布.换句话说,GANs是渐进一致的,但是VAE是有偏差的

● 
GAN应用到一些场景上,比如图片风格迁移,超分辨率,图像补全,去噪,避免了损失函数设计的困难,不管三七二十一,只要有一个的基准,直接上判别器,剩下的就交给对抗训练了。

5. GAN的缺点:

● 
训练GAN需要达到纳什均衡,有时候可以用梯度下降法做到,有时候做不到.我们还没有找到很好的达到纳什均衡的方法,所以训练GAN相比VAE或者PixelRNN是不稳定的,但我认为在实践中它还是比训练玻尔兹曼机稳定的多

● 
GAN不适合处理离散形式的数据,比如文本

● 
GAN存在训练不稳定、梯度消失、模式崩溃的问题(目前已解决)

模式崩溃(model
collapse)原因

一般出现在GAN训练不稳定的时候,具体表现为生成出来的结果非常差,但是即使加长训练时间后也无法得到很好的改善。

具体原因可以解释如下:GAN采用的是对抗训练的方式,G的梯度更新来自D,所以G生成的好不好,得看D怎么说。具体就是G生成一个样本,交给D去评判,D会输出生成的假样本是真样本的概率(0-1),相当于告诉G生成的样本有多大的真实性,G就会根据这个反馈不断改善自己,提高D输出的概率值。但是如果某一次G生成的样本可能并不是很真实,但是D给出了正确的评价,或者是G生成的结果中一些特征得到了D的认可,这时候G就会认为我输出的正确的,那么接下来我就这样输出肯定D还会给出比较高的评价,实际上G生成的并不怎么样,但是他们两个就这样自我欺骗下去了,导致最终生成结果缺失一些信息,特征不全。

关于梯度消失的问题可以参考郑华滨的令人拍案叫绝的wassertein GAN,里面给出了详细的解释,不过多重复。

必威官方网站 13局部极小值点

必威官方网站 14

鞍点

为什么GAN中的优化器不常用SGD

1. SGD容易震荡,容易使GAN训练不稳定,

2. GAN的目的是在高维非凸的参数空间中找到纳什均衡点,GAN的纳什均衡点是一个鞍点,但是SGD只会找到局部极小值,因为SGD解决的是一个寻找最小值的问题,GAN是一个博弈问题。

为什么GAN不适合处理文本数据

1. 文本数据相比较图片数据来说是离散的,因为对于文本来说,通常需要将一个词映射为一个高维的向量,最终预测的输出是一个one-hot向量,假设softmax的输出是(0.2,
0.3,
0.1,0.2,0.15,0.05)那么变为onehot是(0,1,0,0,0,0),如果softmax输出是(0.2,
0.25, 0.2, 0.1,0.15,0.1 ),one-hot仍然是(0, 1, 0, 0, 0,
0),所以对于生成器来说,G输出了不同的结果但是D给出了同样的判别结果,并不能将梯度更新信息很好的传递到G中去,所以D最终输出的判别没有意义。

2. 另外就是GAN的损失函数是JS散度,JS散度不适合衡量不想交分布之间的距离。

(WGAN虽然使用wassertein距离代替了JS散度,但是在生成文本上能力还是有限,GAN在生成文本上的应用有seq-GAN,和强化学习结合的产物)

训练GAN的一些技巧

1. 输入规范化到(-1,1)之间,最后一层的激活函数使用tanh(BEGAN除外)

2. 使用wassertein
GAN的损失函数,

3. 如果有标签数据的话,尽量使用标签,也有人提出使用反转标签效果很好,另外使用标签平滑,单边标签平滑或者双边标签平滑

4. 使用mini-batch norm,
如果不用batch norm 可以使用instance norm 或者weight norm

5. 避免使用RELU和pooling层,减少稀疏梯度的可能性,可以使用leakrelu激活函数

6. 优化器尽量选择ADAM,学习率不要设置太大,初始1e-4可以参考,另外可以随着训练进行不断缩小学习率,

7. 给D的网络层增加高斯噪声,相当于是一种正则

**GAN的变种**

自从GAN出世后,得到了广泛研究,先后几百篇不同的GANpaper横空出世,国外有大神整理了一个GAN zoo(GAN动物园),链接如下,感兴趣的可以参考一下:

GitHub上已经1200+star了,顺便附上一张GAN的成果图,可见GAN的研究火热程度:

必威官方网站 15

由于GAN的变种实在太多,这里我只简单介绍几种比较常常用的成果,包括DCGAN,,
WGAN, improved-WGAN,BEGAN,并附有详细的代码github链接。

**GAN的广泛应用**

1. GAN本身是一种生成式模型,所以在数据生成上用的是最普遍的,最常见的是图片生成,常用的有DCGAN WGAN,BEGAN,个人感觉在BEGAN的效果最好而且最简单。

2. GAN本身也是一种无监督学习的典范,因此它在无监督学习,半监督学习领域都有广泛的应用,比较好的论文有

Improved Techniques for Training
GANs

Bayesian GAN(最新)

Good Semi-supervised
Learning

3. 不仅在生成领域,GAN在分类领域也占有一席之地,简单来说,就是替换判别器为一个分类器,做多分类任务,而生成器仍然做生成任务,辅助分类器训练。

4. GAN可以和强化学习结合,目前一个比较好的例子就是seq-GAN

5. 目前比较有意思的应用就是GAN用在图像风格迁移,图像降噪修复,图像超分辨率了,都有比较好的结果,详见pix-2-pix
GAN 和cycle GAN。但是GAN目前在视频生成上和预测上还不是很好。

6. 目前也有研究者将GAN用在对抗性攻击上,具体就是训练GAN生成对抗文本,有针对或者无针对的欺骗分类器或者检测系统等等,但是目前没有见到很典范的文章。

注:配图来自网络

参考文献:

后续连载。。

~敬请期待~

1. GAN的入门与实践

2. 史上最详细的XGBoost实战(上)

3. 机器学习从零开始系列连载(2)——线性回归

3. Scikit-learn之决策树

扫描个人微信号,

拉你进机器学习大牛群。

福利满满,名额已不多…

必威官方网站 16

80%的AI从业者已关注我们微信公众号

必威官方网站 17 必威官方网站 18 必威官方网站 19 必威官方网站 20 必威官方网站 21 必威官方网站 22 必威官方网站 23 必威官方网站 24

必威官方网站 25 必威官方网站 26 必威官方网站 27 必威官方网站 28 必威官方网站 29 必威官方网站 30 必威官方网站 31 必威官方网站 21

相关文章