生成对抗网络原始论文重点解读
原文:https://arxiv.org/pdf/1406.2661.pdf
一、GAN基础
“D和G的训练是关于值函数V(G, D)的极小极大化的二人博弈问题”。
minGmaxDV(D,G)=Epdata(x)[log(D(x))]+Epz(z)[log(1−D(G(z)))]…(1)(9)
其中:
maxDV(D,G)=Epdata(x)[log(D(x))]+Epz(z)[log(1−D(G(z)))]…(2)
等价于
minDV(D,G)=−∫Pdata(x)[log(D(x))]dx−∫Pz(z)[log(1−D(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(1−D(G(z))) 是饱和的。因此,我们用最大化 logD(G(z)) 替代最小化 log(1−D(G(z))) 来训练G。我们可以通过下面的图来看看:

很明显, log(1−D(G(x))) 函数的导数由小变大,说明起初训练时更新速度会很慢(训练方法为mini-SGD)。但相反, logD(G(z)) 函数的导数由大变小,符合我们实际训练时的要求(起初提供的梯度大,更新速度快,越接近最优值时更新的幅度越小)。
二、全局最优推导
命题1
固定生成器G,我们考虑最优的D∗:
V(G,D)=∫Pdata(x)[log(D(x))]dx+∫Pz(z)[log(1−D(G(z)))]dz=∫Pdata(x)[log(D(x))]+Pg(x)[log(1−D(G(x)))]dx(10)
对于这个积分,要取其最大值,我们希望对于给定的x,积分里面的项是最大的,也就是我们希望取到一个最优的 D∗,使得下面这个式子最大化
f(D(x))=Pdata(x)log(D(x))+Pg(x)log(1−D(x))
我们通过求导:
f′(D(x))=Pdata(x)D(x)−Pg(x)1−D(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) 式,有:
C(G)=V(G,D∗)=Epdata(x)[log(D∗(x))]+Epg[log(1−D∗(x))]=∫Pdata(x)log(Pdata(x)Pdata(x)+Pg(x))dx+∫Pg(x)log(Pg(x)Pdata(x)+Pg(x))dx={∫Pdata(x)log(Pdata(x)Pdata(x)+Pg(x))dx+log2}+ {∫Pg(x)log(Pg(x)Pdata(x)+Pg(x))dx+log2}−2log2=∫Pdata(x)log(2Pdata(x)Pdata(x)+Pg(x))dx+∫Pg(x)log(2Pg(x)Pdata(x)+Pg(x))dx−log4=KL(Pdata(x)||Pdata(x)+Pg(x)2)+ KL(Pg(x)||Pdata(x)+Pg(x)2)−log4=−log4+2JSD(Pdata(x)||Pg(x))(11)(12)(13)(14)(15)(16)(17)(18)(19)(20)(21)
由于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)