对甘的认识

生成器(G)是假币的制造者,鉴别器(D)负责鉴别假币。前者试图蒙混过关,后者试图鉴别是真币(从原始样本)还是假币(从生成器生成的样本)。两者的左右博弈最终达到一个平衡:生成器可以为假为真(或者生成的样本不比原样本差),而鉴别器以1/2的概率进行猜测。

GAN的主要结构包括发生器G(发生器)和鉴别器D(鉴别器)。

大家举手写个例子进一步窥探一下GAN的结构吧。

我们现在有大量的手写数字数据集,希望通过GAN生成一些手写图片。它主要由以下两部分组成:

对目标函数的理解:

鉴别器D的任务是最大化右边的函数,生成器G的任务是最小化右边的函数。

首先分解以下公式,主要包括:D(x),(1-D(G(z))。

D(x)是鉴别器D认为样本来自原始分布的概率,D(G(z))是鉴别器D错误地将来自生成器G的假样本鉴别为真的概率。那么D的任务就是最大化D(x),最小化D(G(z))(也就是最大化1-D(G(z)),所以是综合的最大化D(x)(1-D(G(z)),增减不变,方便日志记录。

而G要足够相似,也就是D(G(z))足够大;而logD(x)对自身没有影响,所以他的测度函数可以只是min{log(1-D(z))},也可以给他加一个常数来改变。

目标函数的推导和起源

鉴别器在这里是一个分类器,用来区分样本的真伪,所以我们经常用交叉熵来判别分布的相似性。交叉熵的公式如下:

公式中的和是真实的样本分布和生成器生成的分布。关于交叉熵的内容

在当前模型的情况下,鉴别器是二元分类问题,因此基本交叉熵可以更具体地展开如下:

对于正确的样本分布,那么对应的()就是生成样本的分布。d代表鉴别器,表示判断样本正确的概率,对应的是判断样本错误的概率。

将上述公式推广到n个样本后,将n个样本相加得到相应的公式如下:

到目前为止,还是一个基本的二元分类。再来补充一些甘的特别之处。

对于GAN中的样本点,它们对应两个来源,要么来自真实样本,要么来自发生器产生的样本~(这里以抛入发生器的噪声分布为准)。

其中,对于来自现实世界的样本,要判断为正确分布。从生成的样本来看,我们应该判断它是一个误差分布()。利用概率分布的期望形式进一步写出上述公式(为了表示无限样本情况,等价于无限样本和情况),设其为1/2并利用表示法生成样本得到如下:

其实和原来的配方是一样的。

给定一个样本数据的分布和生成的数据分布,GAN希望找到一组参数使分布和之间的距离最小,即找到一组生成器参数使生成器能够生成非常逼真的图片。

现在我们可以从训练集中提取一组真实的图片来训练分布中的参数,使其接近真实的分布。因此,我们现在从样本中抽取一个真实样本{},对于每个真实样本,我们可以计算该样本出现在由确定的生成分布中的概率。因此,我们可以构造似然函数:

从似然函数中我们可以知道,我们在分布中提取的所有真实样本的概率值都可以表示为l .并且因为如果分布和分布是相似的,那么真实数据很可能会出现在分布中,所以所有样本出现在分布中的概率会很高。

接下来,我们可以最大化似然函数L,找到最接近真实分布的世代分布(即最优参数θ):

在上面的推导中,我们希望最大化似然函数l,如果似然函数是对数的,那么累积积∏就可以转化为累积σ,这个过程不会改变优化结果。因此,我们可以把最大似然估计转化为使期望最大化的θ,期望可以在x上展开成积分形式:因为优化过程是针对θ的,所以在不影响优化效果的情况下,可以加入一个不含θ的积分。加上这个积分后,我们可以把这两个积分合并,构造一个类似KL散度的形式。流程如下:

这个积分就是KL散度的积分形式。因此,如果我们需要使生成的分布尽可能接近真实分布的参数θ,那么我们只需要使KL散度最小的参数θ。如果获得最佳参数θ,发生器产生的图像将显得非常真实。

接下来要证明优化问题有唯一解G*,且唯一解满足。但是,在开始推导最优鉴别器和最优生成器之前,我们需要了解一下Scott Rome对原论文推导的看法。他认为原论文忽略了可逆条件,所以最优解的推导并不完善。

在甘的原论文中,有一个思路与其他很多方法不同,就是生成元g不需要满足可逆性条件。斯科特·罗马认为这非常重要,因为在实际中G是不可逆的。但很多证明笔记忽略了这一点,在证明时错误地使用了积分代换公式,而积分代换恰恰是基于g的可逆条件,斯科特认为证明只能基于以下等式:

这个方程来自测度论中的Radon-Nikodym定理,在原论文的命题1中示出,表达为如下方程:

我们看到讲义上用的是积分代换公式,但是积分代换必须计算,G的逆不假设存在。而在神经网络的实践中,它是不存在的。也许这种方法在机器学习和统计文献中太常见了,以至于我们忽略了它。

极大极小博弈的第一步,给定生成元G,通过最大化V(D,G)得到最优鉴别子D。最大化V(D,G)计算P_G和P_data之间的差异或距离。因为在原论文中,价值函数可以写成x上的积分,即数学期望展开成积分形式:

其实求积分的最大值可以转化为求被积函数的最大值。求被积函数最大值的目的是求最优鉴别器D,所以任何不涉及鉴别器的项都可以看作常数项。如下图,P_data(x)和P_G(x)都是标量,所以被积函数可以表示为a D(x)+b log(1-D(x))。

如果鉴别器D(x)等于y,那么被积函数可以写成:

为了找到最优极值点,如果a+b≠0,我们可以用下一阶导数来求解:

如果我们继续寻找表达式f(y)在驻点的二阶导数:

其中a,b∈(0,1)。因为一阶导数等于零,二阶导数小于零,所以我们知道a/(a+b)是最大值。如果把a=P_data(x)和b=P_G(x)代入这个极值,那么最优鉴别器d(x)= P _ data(x)/(P _ data(x)+P _ G(x))。

最后,我们可以将价值函数表达式写成:

如果我们让D(x)=P_data/(P_data+p_G),那么我们可以最大化价值函数V(G,D)。因为f(y)在定义域上有唯一的最大值,所以最优D也是唯一的,没有其他D能达到最大值。

实际上,最优d在实际中是不可计算的,但在数学中是非常重要的。我们不知道先验的P_data(x),所以在训练中绝对不会用到。另一方面,它的存在使我们能够证明最优G的存在,我们只需要在训练中逼近D。

当然GAN工艺的目标是让P_G=P_data。这对最优D意味着什么?我们可以将这个方程代入D_G*的表达式:

这就意味着鉴别器完全混乱了,根本分辨不出P_data和P_G的区别,也就是判断样本来自P_data和P_G的概率是1/2。基于这一观点,甘作者证明了G是极大极小对策的解。定理如下:

“当且仅当P_G=P_data,可以达到训练标准C(G)=maxV(G,D)的全局极小点。」

上述定理是极大极小对策的第二步,求使V(G,D)最小的生成元G(其中G代表最优鉴别器)。之所以在P_G(x)=P_data(x)时能使价值函数最小化,是因为此时两个分布的JSD (p _ data (x) || p _ g (x))等于零。这个过程的详细解释如下。

原论文中的这个定理是“当且仅当”的陈述,所以需要从两个方向来证明。先从反方向逼近并证明C(G)的值,再用反方向得到的新知识从正方向证明。设P_G=P_data(逆向是指事先知道最优条件并推导出来),我们可以逆向推导:

该值是全局最小值的候选值,因为它仅在P_G=P_data时出现。我们现在需要从正面证明这个值往往是最小值,也就是同时满足“如果”和“仅当”的条件。现在放弃P_G=P_data的假设,对于任意G,我们可以把上一步得到的最优鉴别器D*代入C(G)=maxV(G,D):

因为-log4是已知的全局最小候选,我们想构造一个值使log2出现在等式中。所以我们可以在每个积分上加上或减去log2,然后乘以概率密度。这是一种很常见的数学证明技巧,不会改变方程,因为本质上我们只是在方程上加了0。

采用这种技术的主要目的是构造一个具有log2和JS散度的表单。简化上述公式后,可以得到以下表达式:

由于概率密度的定义,P_G和P_data在其积分域上的积分等于1,即:

此外,根据对数的定义,我们有:

所以代入这个等式,我们可以写为:

现在,如果读者阅读KL散度(Kullback-Leibler divergence),那么我们会发现每个积分都恰好是它。具体来说:

KL散度是非负的,所以我们马上可以看出-log4是C(G)的全局最小值。

如果我们进一步证明只有一个G能达到这个值,因为P_G=P_data就会变成C(G)=?log4的唯一点,这样整个证明就可以完成了。

从上一篇文章可以看出,KL散度是非对称的,所以C(G)中关于KL(P_data || (P_data+P_G)/2)的两项不能互换,但如果同时加上另一项KL(P_G || (P_data+P_G)/2,它们的和就可以成为对称项。这两个KL散度之和可以表示为JS散度(简森-香农散度):

假设有两个分布P和Q,这两个分布的平均分布M=(P+Q)/2,那么这两个分布之间的JS散度就是P和M之间的KL散度加上Q和M之间的KL散度再除以2。

JS散度的值是0到log2。如果两个分布完全不相交,那么JS散度的最大值为log2;如果两个分布完全相同,那么JS散度的最小值为0。

因此,根据JS散度的定义,C(G)可以改写为:

这个散度实际上是简森-香农距离测度的平方。根据其性质:当P_G=P_data时,JSD(P_data||P_G)为0。综上所述,当且仅当世代分布等于真实数据分布时,才能得到最优生成器。

我们证明了P_G=P_data是米女(G,D)的最佳优势。此外,原论文还额外证明了给定足够的训练数据和正确的环境,训练过程将收敛到最优g。

证明了如果把V(G,D)=U(pg,D)看作pg的函数,那么U就是pg的凸函数,它的上确界的次微分一定包含这个函数最大值处的导数。所以给定D,用梯度下降算法更新pg优化G时,PG一定会收敛到最优值。之前证明了目标函数只有唯一的全局最优解,所以pg会收敛到pdata。

其实优化G的时候,更新的是θg而不是pg。

参考链接:

生成对抗网

通俗理解生成一篇反对网络的文章

GitHub项目的机心:甘完整的理论推导和实现,完美!

纸质阅读的生成对抗网络