GAN 笔记

GAN

计算过程

目标: 学习一个在x上的分布 p g p_g pg​

定义:

随机噪声z作为输入: P z ( z ) P_{z}(z) Pz​(z)

生成网络函数: G ( z ; Θ g ) G(z;\Theta_g) G(z;Θg​)用来表示可导函数G在参数 θ g \theta_g θg​下的函数

判别网络函数: D ( x ; θ d ) D(x;\theta_d) D(x;θd​)的输出是一个{0,1}标量,D(x)表示x是否为从真实样本中取的样例。

对于判别网络而言:它的目标是最大程度的识别出真实样本和*生的对抗样本。

对于生成网络而言,它的目标是让判别器无法识别*生的对抗样本:

最小化这个函数等价于最大化 l o g ( D ( G ( z ) ) ) log(D(G(z))) log(D(G(z))),因为越接近1表示样本越接近真实。
l o g ( 1 − D ( G ( z ) ) ) log(1-D(G(z))) log(1−D(G(z)))
在训练的初期,D可以轻识别出*生的样本,因此,在该条件下 l o g ( 1 − D ( G ( z ) ) ) log(1-D(G(z))) log(1−D(G(z)))是饱和的,所以可以使用一个等价的损失函数: l o g ( D ( G ( z ) ) ) log(D(G(z))) log(D(G(z)))作为优化目标(log trick)。

训练过程

最小化最大化的过程:
1. 先训练一个最优的判别器;
2. 基于最优的判别器训练一个最优的生成器

训练过程:往往先把判别器训练K次,然后生成器再训练一次,使得判别器总是要比生成器强一些。

存在的问题

梯度消失

GAN 笔记

当判别器目标函数达到最大值的时候,可以得到最优的判别网络为:

GAN 笔记

代入GAN的整体损失函数可以得到:

GAN 笔记

当判别网络最优的时候, P r 和   P Θ P_r和\space P_{\Theta} Pr​和 PΘ​应该是无限接近的,则这两个分部的JS散度为0,导致整个网络的优化目标变为 − 2 l o g 2 -2log2 −2log2,这是一个没有梯度的常量。所以证明了梯度消失是存在的。

模型坍塌

概念:训练集中有很多类别,但是GAN只能产生其中某几类。

GAN 笔记

产生原因:在最优判别网络的条件下,生成网络的目标函数更多的收到逆向KL散度的影响,使用逆向KL散度带来的负面影响就是它会尽可能避开所有真实分布中约等于0的点,所以生成的图像都集中在某几个类别中。

TODO

一些概念:

KL散度:计算信息增益,它是两个概率分布P和Q差别的非对称度量,是用来度量使用基于Q的编码来编码来自P的样本平均所需的额外位元数。
JS散度:用来度量两个概率分布的相似度。
Wasserstein距离:E(x,y)∼γ[||x−y||]可以理解为在这个路径规划下把P1推导P2的消耗,而Wass距离表示在该路径下的最小消耗。

W距离相比KL和JS散度的优势在于:即使两个分部的支撑集合(我理解为样本)没有重叠或者重叠非常少,仍然能反映两个分布的远近。而JS在此情况下是常量,KL散度可能没有意义。

一些疑问:

应该算一些trick。

在训练生成网络的时候,使用ReLU和sigmoid进行激活;
在训练判别网络的时候,使用maxout进行激活,并使用droppout来防止过拟合。
上一篇:信息熵、相对熵与交叉熵


下一篇:理解机器学习的交叉熵为何用来表示损失函数