[1406.2661] Generative Adversarial Networks (arxiv.org)
读标题
Generative:我们知道机器学习有俩大类:
一种是分辨模型,对一个数据怎么判断它的类别,或者预测一个实数值。
另一种是生成模型,即Generative ,怎么去生成这个数据本身。
Adversarial :对抗的。第一次读应该不能理解,没关系,先看下去。
小八卦~:当时作者有好几个标题可以选,有人告诉作者GAN在中文里叫做干,跟f开头的词有一点点像,但是意义上丰富多了,作者说:这个好!
概述
简单说该论文提出一个框架,包含俩个模型:
生成模型G:抓住整个数据的分布
辨别模型D: 估计你的样本是来自 真实的数据,还是 模型G
导论
深度学习,不仅仅表示深度神经网络,它更多的是对整个数据分布的一个特征的表示。深度学习在生成模型上的进展不多,因为近似似然函数比较困难。于是作者说,我不要去近似你的似然函数了~,我要提出另一种方法!
接着,作者介绍了他提出的框架。框架里面的每一个模型都是一个MLP(多层感知机)。框架里有俩类模型,生成模型和判别模型:
生成模型就像是一些造假的人,去生成一些假币。判别模型就像警察,去区分假币和真币。造假者和警察会不断的学习,去提升自己的专也技能~((*^_^*))。最后作者希望造假者能够取得最终的胜利!
下一段有些难理解,不过先不用着急~
在这个框架下面的生成模型是一个MLP,他的输入是一个随机的噪音。这个MLP能够把产生随机噪音的一个分布(通常是一个高斯分布)可以映射到任何一个我们想去拟合的分布。同样道理,如果我的判别模型也是一个MLP,在这个框架下这个特例我们叫做 adversarial Nets.因为我们俩个模型都是MLP的,所以我们在训练的时候可以直接通过误差的反向传递,从而不需要通过像使用马尔科夫链一样的算法来对一个分布进行复杂的采样。从而在计算上有优势。
算法
这个框架最简单的应用是当你的生成器和辨别器都是MLP的时候。
目标函数
其中
logD(x)
代表了判别器鉴别真实样本的能力,
而
D(G(z))
则代表了生成器欺骗判别器的能力。在实际的训练中,生成器和判别器采取交替训练,即先训练D,然后训练G,不断往复。
这个在博弈论里面叫做俩人的minmax游戏,如果达到了一个均衡,这个均衡就叫做Nash equilibrium~
a:噪音 z 是一个一维的标量,我要去真实拟合的x(黑色的线)是一个高斯分布。生成器把噪音映射过来,成了一个均值(绿色的线)。辨别器(蓝色的线)。
b:下一步,更新辨别器(蓝色的线),去尽量真实(黑色的线)与生成器(绿色的线)分开。
c:更新生成器(绿色的线),去尽量糊弄到你的辨别器(蓝色的线)。
d:最后,生成模型生成的数据和真实的采样几乎一样~
实验
展示一下他生成的一些图片~
论文小结
- 提出方法:提出一个框架,包含俩个模型——生成模型G:抓住整个数据的分布。 辨别模型D: 估计你的样本是来自 真实的数据,还是 模型G
- 解决的问题:生成对抗式模型可以直接通过误差的反向传递训练,从而不需要通过像使用马尔科夫链一样的算法来对一个分布进行复杂的采样。从而在计算上有优势。
- 存在的问题:整个的训练是比较难的,你的G和D要均衡好。
- 启发:对于生成模型,马尔科夫链等算法比较复杂,我们可以尝试本文提出的对抗式方法来训练生成式模型。