【论文精度(李沐老师)】Generative Adversarial Nets

Abstract

我们提出了一个新的framework,通过一个对抗的过程来估计生成模型,其中会同时训练两个模型:生成模型G来获取整个数据的分布,辨别模型D来分辨数据是来自于训练样本还是生成模型G。生成模型G的任务是尽量的让辨别模型D犯错。这个framework对应一个博弈论中双人对抗游戏。在任何函数空间的G和D中,存在一个独一无二的解,这个解能够将你整个训练中的数据的真实分布找出,D在任何地方等于1/2。如果G和D是一个MLP的话,整个系统可以通过一个误差反传进行训练。我们不需要任何的马尔科夫链或者对一个近似的推理过程展开。实验通过对生成的样本进行定性和定量评估,证明了该框架的潜力。
(介绍了GAN做的是个什么事情)

Introduction

一、深度学习是用来发现一些丰富、有层次的模型,这些模型能够对AI中的各种数据做一个概率分布的表示。虽然深度学习在辨别模型上取得了显著的进展,但是在生成模型上做的还是比较差,这个难点来自于我们最大化似然函数的时,要对概率进行很多的近似,从而带来了很大的计算困难。
二、(对GAN的一些介绍)在所提出的对抗网络框架中,生成模型和对抗模型对立:一个判别模型,它学习确定一个样本是来自模型分布还是数据分布。生成式模型可以被认为是类似于一队造假者,试图生产假币并在不被发现的情况下使用,而鉴别式模型则类似于警察,试图检测假币。这个游戏中的竞争促使两个团队改进他们的方法,直到假币与真币无法区分(希望造假者赢)。
三、这个框架可以产生许多种模型和优化算法的具体训练算法。在这篇文章中,我们探讨了这样一种特殊情况:生成模型通过多层感知器传递随机噪声来生成样本,而判别模型也是多层感知器。我们把这种特殊情况称为对抗性网络。在这种情况下,我们可以只用非常成功的反向传播和dropout算法来训练两个模型,只用正向传播从生成模型中取样。不需要近似推理或马尔科夫链。

Related work

一、之前的方法总是想去构造出一个分布函数,然后给这个函数提供一些参数进行学习,这些参数通过最大对数似然函数来求,但这会导致计算困难,尤其是维度比较高的时候。因为这些方法在计算上有困难,所以最近有些工作**“generative machines”**——学一个模型来近似模拟需要的结果,这项工作计算比较容易但是无法得知最后的分布是什么样子。
二、我们观察到对于f的期望求导等价于对f自己求导(说明为什么通过误差的反向传递对GAN求解)。说了一下VAEs的工作,和GAN类似。
三、说了一下NCE所做工作,但是其损失函数比较复杂,在求解性能上没有GAN好。
四、解释了一下与predictability minimization(PM)的区别。
五、解释了一下与adversarial examples的区别。adversarial examples构造一些假的样本,达到以假乱真的目的,从而测试算法的稳定性。

Adversarial nets

(讲的GAN的目标函数,以及对其的求解)
一、这个框架最简单的应用是当你的生成器和辨别器都是MLP的时候。生成器会学一个在数据x上的 p g p_g pg分布。对于生成模型,我们定义一个先验 p z ( z ) p_z(z) pz(z),在输入的噪音变量z上。对于生成模型,就是把z映射映射成x,参数是 θ g \theta_g θg G ( z ; θ g ) G(z;\theta_g) G(z;θg)。辨别器 D ( x ; θ d ) D(x;\theta_d) D(x;θd),就是把x输出成一个标量,用来表示此数据来自真实数据(用1表示)还是由生成器(用0表示)生成的。在训练D的同时也会训练G,G用来最小化 l o g ( 1 − D ( G ( z ) ) ) log(1-D(G(z))) log(1D(G(z))),即训练一个G使我的辨别器尽量的犯错,G(z)代表是一个假图片。
二、
【论文精度(李沐老师)】Generative Adversarial Nets_第1张图片
最理想状态是图(d),此时D的输出一直是0.5。
【论文精度(李沐老师)】Generative Adversarial Nets_第2张图片
上述算法中,先更新我们的辨别器,再更新我们的生成器。k是超参数,不能太大/小,要保证辨别器有足够的更新,但也不要更新的太好。
如果没有把辨别器足够好的更新,我们更新生成器则没有太大的意义。
如果把辨别器更新的太好了, 1 − D ( G ( z i ) ) 1-D(G(z^i)) 1D(G(zi))会变成0,此时对生成器的更新会有困难。
GAN的收敛是非常不稳定的。

三、在这里插入图片描述
在上面的公式里,后面一项会有一点问题,即容易把辨别器更新的太好了, 1 − D ( G ( z i ) ) 1-D(G(z^i)) 1D(G(zi))会变成0,此时对生成器的更新会有困难,所以更新G的时候把目标函数改成max l o g D ( G ( z ) ) logD(G(z)) logD(G(z)),但同时也会产生一些数值上的问题,今后的工作会对其进行一些改进。

Theoretical Results

(讲了一些理论上的结果)
一、当且仅当 p g = p d a t a p_g=p_{data} pg=pdata(生成器学到的分布=真实数据的分布),目标函数有一个全局最优解。
二、算法一确实能够求解目标函数。

Global Optimality of p g = p d a t a p_g=p_{data} pg=pdata

(讲目标函数是正确的)
Proposition 1 当G固定时,辨别器最优解(取值范围[0,1])为
【论文精度(李沐老师)】Generative Adversarial Nets_第3张图片
p g = p d a t a p_g=p_{data} pg=pdata时,结果为1/2。
Theorem 1 当且仅当 p d a t a = p g p_{data}=p_g pdata=pg时,C(G)取得全局最小值。
【论文精度(李沐老师)】Generative Adversarial Nets_第4张图片
KL散度,量化两种概率分布P和Q之间差异的方式,又叫相对熵。在概率学和统计学上,我们经常会使用一种更简单的、近似的分布来替代观察数据或太复杂的分布。K-L散度能帮助我们度量使用一个分布来近似另一个分布时所损失的信息。
GAN使用的JS散度相对熵(KL散度)虽然可以用来表示两个概率分布之间的差异,但是它并不是对称的,因此有时用它来训练神经网络会有顺序不同造成不一样的训练结果的情况。为了克服这个问题,有人就提出了一个新的衡量公式,叫做JS散度

Convergence of Algorithm 1

Proposition 2
如果 G 和 D 有足够的容量,并且在算法 1 的每一步,允许判别器在给定 G 的情况下达到其最优值,并更新 p g p_g pg 以改进标准 E x ∼ p d a t a [ l o g D ∗ G ( x ) ] + E x ∼ p g [ l o g ( 1 − D ∗ G ( x ) ) ] Ex∼p_{data} [log D∗ G(x)] + Ex∼p_g [log(1 − D∗ G(x))] Expdata[logDG(x)]+Expg[log(1DG(x))] 然后 p g p_g pg 收敛到 p d a t a p_{data} pdata

Advantages and disadvantages

优:生成器没有去看真正样本上的数据,没有试图去拟合那些特征,所以使得其能够生成比较锐利的一些边缘。
缺:要均衡好G和D,如果G和D没均衡好,会导致结果很差。

Conclusions and future work

【论文精度(李沐老师)】Generative Adversarial Nets_第5张图片

你可能感兴趣的:(人工智能,深度学习)