Generative Adversarial Nets 论文解读

Generative Adversarial Nets 论文解读

generative 生成 adversarial 对抗

摘要 Abstract

提出了一个生成模型框架(framework),通过一个对抗的过程,同时训练两个模型:一个生成模型G,G是用来抓取数据的分布,对其进行建模;一个辨别模型D,D来辨别该样本是生成的,还是真实数据 。G的目标是让D犯错,D的目标是来辨别出生成的数据(不被欺骗)。每个框架都类似于一个 two-player 游戏(博弈论中的著名游戏)。在任何函数的G和D都存在一个独一无二的解,G能找出所有的解,D的辨别率到达50%。G和D是一个MLP(多层感知机),整个系统可以通过一个误差反传来进行训练,在这里不需要使用马尔科夫链和对一个近似的推理过程展开。

导论 Introduction

深度学习是用来发现丰富、有层次的模型,这些模型能对AI中的数据做一个概率分布的表示,深度学习不仅仅是深度神经网络,更多的是对整个数据分布的一个特征的表示。虽然深度学习在辨别模型上取得了很大的成就,但是在生成模型上表现依然较差。这个问题来自在最大化似然函数时,要对概率分布进行很多近似,这个近似会带来很大的困难。
GAN(本篇论文)是一个框架,框架中有两类模型:生成模型G和判别模型D,一个比喻能帮助你更好的理解这个概念。生成模型G是造假币的罪犯,判别模型D是捉罪犯的警察,警察的任务是找出假币,将其与真币区分开。罪犯G和警察D会不断地学习,G会提升自己造假的技能,警察会提升自己判别真假币的技能,最终目标是,罪犯G造的假币和真币没有区别,警察无法区分真币和假币。
在GAN框架下,生成模型G是一个MLP,输入是一个随机的噪音,G能够把产生随机噪音的一个分布(通常是一个高斯分布)可以映射到任何一个我们想要拟合的分布。如果判别模型也是一个MLP,这种情况叫做对抗网络(adversarial nets)。此时由于两个模型都是MLP,可以通过误差的反向传递来对分布进行复杂的采样,而不是采用马尔科夫链的算法。

相关工作 Related Work

其他方法总是想构造一个分布函数,向这个函数提供一些参数让他学习,这些参数通过最大化它的对数似然函数来做,此方法缺点在于采量一个分布时计算较困难,尤其是在较高纬度时。最近有一些工作是,不再构造分布,而是训练一个模型来近似这个分布,此方法缺点在于不知道分布什么样子,只知道结果,好处在于计算较容易。
对f的期望求导等价于对f求导
lim ⁡ σ → 0 ▽ x E ε ∼ N ( 0 , σ 2 I ) f ( x + ε ) = ▽ x f ( x ) \lim\limits_{\sigma\to0} \bigtriangledown_{x} \mathbb{E}_{\varepsilon\sim\mathcal{N}(0,\sigma^{2}\mathcal{I})} f(x+\varepsilon)=\bigtriangledown_{x}f(x) σ0limxEεN(0,σ2I)f(x+ε)=xf(x)
通过一个辨别模型来帮助生成模型也不可以,NCE做过这个工作。后面在解释跟predictability minimization算法的区别(具体小故事可以自行搜索)
跟“adversarial examples”的区别,adversarial examples是构造一些假的样本但是跟真的很像,从而测试算法的稳定性。

算法 Adversial nets

GAN框架最简单的应用是生成模型和判别模型都是MLP的时候,生成器G要学习在数据 x x x上的分布 p g p_{g} pg,我们在输入噪声 z z z上定义了一个先验(先验概率,一个可能性的概率评估),分布为 p z ( z ) p_{z}(z) pz(z),生成模型的功能就是将 z z z映射成 x x x,对于MLP生成器G来说,有一个可学习参数 θ g \theta_{g} θg (可学习参数通常是指权重(weights)和偏置(biases)),上述这个映射表示为 G ( z ; θ g ) G(z;\theta_{g}) G(z;θg)。这个思路的优点,计算比较简单;缺点,没有理解对应的 z z z。辨别器D也是一个MLP,同样拥有可学习参数 θ d \theta_{d} θd,作用是把数据转换为一个标量,输出是真实数据的概率,来自真实的数据输出为1,来自生成器的数据输出为0。我们训练D的同时也在训练G,G用来 minimax l o g ( 1 − D ( G ( z ) ) ) log(1-D(G(z))) log(1D(G(z))) z z z是随机噪声, G ( z ) G(z) G(z)对应生成的数据 x ′ x' x(区别于真实数据 x x x), D ( G ( z ) ) D(G(z)) D(G(z))对应的是判别器的输出, l o g ( 1 − D ( G ( z ) ) ) log(1-D(G(z))) log(1D(G(z)))的功能是辨别器做的很好的情况下为0,否则输出大于0的数,如果 D D D确信 x ′ x' x是真实数据就为1。
总结来说, D D D G G G是两个模型,目标函数是如下的 two-player minmax game 的函数 V ( G , D ) V(G,D) V(G,D)
min ⁡ G max ⁡ D V ( D , G ) = E x ∼   p d a t a ( x ) [ l o g D ( x ) ] + E z ∼   p z ( z ) [ l o g ( 1 − D ( G ( z ) ) ) ] \min\limits_{G} \max\limits_{D} V(D,G) = \mathbb{E}_{x\sim\ p_{data(x)}}[logD(x)]+\mathbb{E}_{z\sim\ p_{z}(z)} [log(1-D(G(z)))] GminDmaxV(D,G)=Ex pdata(x)[logD(x)]+Ez pz(z)[log(1D(G(z)))]
第一项 E x ∼ p d a t a ( x ) [ l o g D ( x ) ] \mathbb{E}_{x\sim p_{data}(x)} [logD(x)] Expdata

你可能感兴趣的:(论文精读,图像处理,gan,生成对抗网络)