生成对抗网络原始论文重点解读

原文:https://arxiv.org/pdf/1406.2661.pdf

一、GAN基础

“D和G的训练是关于值函数V(G, D)的极小极大化的二人博弈问题”。

(9)minGmaxDV(D,G)=Epdata(x)[log(D(x))]+Epz(z)[log(1D(G(z)))](1)

其中:

maxDV(D,G)=Epdata(x)[log(D(x))]+Epz(z)[log(1D(G(z)))](2)

等价于
minDV(D,G)=Pdata(x)[log(D(x))]dxPz(z)[log(1D(G(z)))]dz

因此可以看作是最小化交叉熵,不断最小化交叉熵的结果使得判别器D判别真实数据和生成的假数据的能力逐渐增强。形象地说就是使得D将真实数据和假数据尽最大能力的分开。

In practice, equation may not provide sufficient gradient for G to learn well. Early in learning, when G is poor, D can reject samples with high confidence because they are clearly different from the training data. In this case, log(1 − D(G(z))) saturates. Rather than training G to minimize log(1 − D(G(z))) we can train G to maximize log D(G(z)).

实际上,等式(1)没有提供给生成器G不断优化所需的足够梯度。因此在训练的初期,当生成器G还很弱时,由于生成的假数据明显不同于训练的真实数据,判别器D有高的置信度去拒绝这些假样本。在这里,log(1D(G(z))) 是饱和的。因此,我们用最大化 logD(G(z)) 替代最小化 log(1D(G(z))) 来训练G。我们可以通过下面的图来看看:

生成对抗网络原始论文解读

很明显, log(1D(G(x))) 函数的导数由小变大,说明起初训练时更新速度会很慢(训练方法为mini-SGD)。但相反, logD(G(z)) 函数的导数由大变小,符合我们实际训练时的要求(起初提供的梯度大,更新速度快,越接近最优值时更新的幅度越小)。

二、全局最优推导

命题1

固定生成器G,我们考虑最优的D

(10)V(G,D)=Pdata(x)[log(D(x))]dx+Pz(z)[log(1D(G(z)))]dz=Pdata(x)[log(D(x))]+Pg(x)[log(1D(G(x)))]dx

对于这个积分,要取其最大值,我们希望对于给定的x,积分里面的项是最大的,也就是我们希望取到一个最优的 D,使得下面这个式子最大化
f(D(x))=Pdata(x)log(D(x))+Pg(x)log(1D(x))

我们通过求导:
f(D(x))=Pdata(x)D(x)Pg(x)1D(x)

令上式等于0,整理得:
D(x)=Pdata(x)Pdata(x)+Pg(x)

下图帮助理解:

生成对抗网络原始论文解读

该图转自译文 | 2014,初见GAN:解读GAN原始论文(含译文PDF下载)

定理1

当且仅当 pg=pdata 时,C(G) 达 到 log4
证明:

D(x)=Pdata(x)Pdata(x)+Pg(x)
代入 (2) 式,有:
(11)C(G)=V(G,D)(12)=Epdata(x)[log(D(x))]+Epg[log(1D(x))](13)=Pdata(x)log(Pdata(x)Pdata(x)+Pg(x))dx+(14)Pg(x)log(Pg(x)Pdata(x)+Pg(x))dx(15)={Pdata(x)log(Pdata(x)Pdata(x)+Pg(x))dx+log2}+(16) {Pg(x)log(Pg(x)Pdata(x)+Pg(x))dx+log2}2log2(17)=Pdata(x)log(2Pdata(x)Pdata(x)+Pg(x))dx+(18)Pg(x)log(2Pg(x)Pdata(x)+Pg(x))dxlog4(19)=KL(Pdata(x)||Pdata(x)+Pg(x)2)+(20) KL(Pg(x)||Pdata(x)+Pg(x)2)log4(21)=log4+2JSD(Pdata(x)||Pg(x))

由于JS散度是大于等于0小于等于1的(当P1,P2完全相同时,那么JS =0, 如果完全不相同,那么就是1)。因此当 pg=pdata 时,C(G) 有最小值 -log4。

我们还可以这样理解,这个max值其实就是由JSD divergence和一个常数(-log4)构成的,这个max的值相当于衡量 Pdata(x)Pg(x) 的差异程度。所以这个时候,我们只要取:

minGC(G)
就能够取到G使得这两种分布的差异性最小,这样就能够生成一个和原分布尽可能接近的分布。

三、GAN资源

[1] 交叉熵代价函数和KL散度/JS散度等概率距离度量
[2] Gan的数学推导
[3] 李宏毅老师的gan
[4] GAN完整理论推导与实现,Perfect!
[5] 生成对抗网络知识资料全集(论文/代码/教程/视频/文章等)
[6] GAN对抗网络相关资源
[7] 李宏毅深度学习视频 GAN(2017)

相关文章: