GAN详解

论坛 期权论坛 金融     
期权匿名问答   2022-7-7 01:33   2181   3
前言

GAN[1]是当今最为火热的生成任务算法,由Ian Goodfellow,Yoshua Bengio等人在2014年提出的,Yan LeCun表示道GAN是“adversarial training is the coolest thing since sliced bread”。它使用两个神经网络,将一个神经网络与另一个神经网络进行对抗,通过GAN我们可以生成足以以假乱真的图像,GAN被广泛的应用在图像生成,语音生成等场景中。例如经典的换脸应用DeepFakes背后的技术便是GAN.
1. 判别算法和生成算法

在了解GAN之前,我们有必要先了解什么是判别算法和生成算法。判别算法是指给定实例的一些特征,我么根据这些特征来判断它所属的类别,它建模的是特征和标签之间的关系。例如在MNIST数据集中,我们需要判断一个图片是哪个数字。我们可以用后验概率来建模判别算法,假设一个数据的特征是 ,它的标签是 。判别算法指的是在给定 的前提下,标签是 的概率,表示为 。生成算法并不关心数据的标签是什么,它关心的是能否生成和数据 同一个分布的特征。
2. GAN详解

2.1 逻辑基础

GAN是一个由两个模型组成的系统:判别器( )和生成器( )。判别器的任务是判断输入图像是源自数据集中还是由机器生成的。判别器一般使用二分类的神经网络来构建,一般将取自数据集的样本视为正样本,而生成的样本标注为负样本。生成器的任务是接收随机噪声,然后使用反卷积网络来创建一个图像。生成器的随机输入可以看做一个种子,相同的种子会得到相同的生成图像,不同的种子则得到的图像不同,大量种子的作用是保证生成图像的多样性。在最原始的GAN论文中,它都是使用了MLP搭建生成模型和判别模型。
GAN的双系统的目的是让生成器尽量去迷惑判别器,同时让判别器尽可能的对输入图像的来源进行判断。两个模型之间是互相对抗的关系,它们都会通过试图击败对方来使自己变得更好。生成器可以通过判别器得到它生成的图像和数据集图像分布是否一致的反馈,而判别器则可以通过生成器得到更多的训练样本。



图1:GAN的网络结构

2. GAN的训练

GAN的生成器和判别器通过博弈的手段来不断的对两个模型进行迭代的优化,它的基本流程如下:

  • 初始化判别器的参数 和生成器的参数
  • 从分布为 的数据集中采样 个真实样本 。同时从噪声先验分布 中采样 个噪声样本 ,并且使用生成器获得 个生成样本
  • 固定生成器,使用梯度上升策略训练判别器使其能够更好的判断样本是真实样本还是生成样本,如式(1);


4. 循环多次对判别器的训练后,我们使用较小的学习率来对生成器进行优化,生成器使用梯度下降策略进行优化,如式(2);


5. 多次更新之后,我们的理想状态是生成器生成一个判别器无法分辨的样本,即最终判别器的分类准确率是

这里之所以先循环多次优化判别器,再优化生成器。是因为我们想要先拥有一个有一定效果的判别器,它能够比较正确区分真实样本和生成样本,这样我们才能够根据判别器的反馈来对生成器进行优化。如图2所示。



图2:GAN在训练过程中判别器和生成器的分布变化

图2中的黑色虚线是真实样本的分布情况,绿色实线是生成样本的分布,蓝色虚线是判别器判别概率的分布情况。 是噪声, 的变化是生成器将噪音数据映射到生成数据的过程。从图2中可以看出,(a)是出于初始状态,此时生成样本和真实样本的差距比较大,而且判别器也不能对它们进行很好的区分,因此我们需要先对判别器进行优化。在对判别器优化了若干个Epoch后,来到了(b)状态,此时判别器已能够很好的区分真实样本和生成样本。此时生成样本和真实样本的分布差异还是非常明显的,因此我们需要对生成器进行优化。经过训练后真实样本和生成样本的差异缩小了很多,也就是状态(c)。经过若干轮的对判别器很生成器的训练后,我们希望生成样本和真实样本的分布已经完全一致,而此时判别器也无法再区分它们了。
2.3 GAN的损失函数

GAN的一个难点是它的损失函数以及它背后的数学原理,对于这一部分论文中介绍的并不是非常清楚。现在很多技术在推导论文中的公式时,它们都犯了一个重要的错误,即假设生成器 是可逆的,然而这个假设并不成立,因此他们的证明是存在漏洞的。我们这里将给出GAN正确的证明方式(这一部分主要参考[4])。
GAN的目标是让生成器生成足以欺骗判别器的样本。从数学角度将,我们希望生成样本和真实样本拥有相同的概率分布,也可以说生成样本和真实样本拥有相同的概率密度函数,即 。这个结论很重要,因为它是GAN的理论基础,也是我们之后要讨论的GAN的证明策略,即定义一个优化问题,我们寻找一个 满足 。如果我们知道如何判断生成样本是否满足这个关系,那么我们便可以使用SGD来对 进行优化。
GAN的损失函数源自于二分类对数似然函数的交叉熵损失函数,它表示为式(3)。其中第一项的作用是用来使正样本的识别结果尽量为 ,第二项的作用是使负样本的预测值尽量为


根据前面介绍的GAN的原理,首先,我们要求判别器 能够将满足 分布的样本识别为正样本,因此有式(4)。其中 表示期望。这一项取自于对数似然函数的“正类”。最大化这一项能够使判别器将真实样本 预测为 。即当 时,我们有


损失函数的另一项与生成器有关。这一项来自于对数似然函数的“负类”,表示为式(5)。通过最大化式(5),我们可以使 的值趋近于 ,也就是希望判别器能够将生成样本预测为负样本。


结合式(4)和式(5),判别器的优化目标便是最大化两项之和,表示为 ,因此我们有。


在给定 的前提下,我们假设此时得到最优的判别器表示为 ,因此我们可以得到式(7)。注意在实际场景中,我们无法得到 的全局最优解 ,但是在我们推导GAN时,假设可以得到这个全局最优解还是至关重要的。它的存在使得我们我们只要我们去无限的接近这个全局最优解,那么我们就可以得到最优的生成器。


生成器的优化目标是和判别器相反的,它让判别器的分类效果尽可能差。换句话说,当判别器优化到它的全局最优值之后,即 。我们要对生成器进行优化,目的是要最小化式(7)。由此得到的最优生成器 可以表示为式(8)。


综上,我们便可以得到论文中使用的 的极大极小博弈的损失函数,如式(9)。


2.4 理论证明

为了证明GAN最终的收敛结果是我们需要的,我们必须证明GAN满足两个性质:

  • 对于任意给定的 ,我们可以找到最优的判别器
  • 对于全局最优的 ,我们希望它生成数据的分布和真实样本的分布一致,即
2.4.1 最优判别器

推论1:对于任意固定的生成器 ,最优的判别器 满足式(10)。


证明:对于式(6)的期望的形式,我们将其改写为积分的形式,表示为式(11)。


根据LOTUS定理(Law of the Unconscious Statistician),我们可以得到 的另一种表达形式,如式(12)。


对于式(11)到(12)的转化我们需要着重说明一下。因为在很多文章中,他们认为之所以能够进行这一转化是因为微积分的变量变化公式,但是这一解释是错误的。GAN与其它生成算法不同的是,生成器 不需要是可逆的,而且 在GAN中确实是不可逆的。既然 不可逆,那么我们就无法有 这样的推论,因此所有以 为假设前提的证明都是不正确的。
事实上,之所以能这么转化的一句是LOTUS定理,如式(13)。从定理中可以看出,当我们计算一个函数的期望时,我们可以不知道这个函数的分布。取而代之的是我们可以知道一个简单的分布,以及从简单分布到当前分布的映射即可。


根据LOTUS定理,我们可以将 使用它的映射方式进行替换,然后再将转化为积分形式即可,如式(14),将式(14)代入式(11)中边可以得到式(12)了。

我们接着(12)往后证明,为了简洁起见,我们将积分的内部写成式(15)的形式。然后再找出式(15)的上界。


为了找到最大值,我们对式(15)进行求导,并得到导数等于 的点。

如果 ,我们继续求式(15)的二阶导数。

因为 ,随意式(15)的二阶导数,因此式(15)是一个凸函数,因此它在一阶导数值为 的点便是它的唯一的最大值点,此时
根据上面的推导,那么我们可以知道对于式(12),它在 时达到了它的最大值,即最优的判别器 需要满足
证毕!
虽然在实际场景中,因为我们不知道 ,所以我们无法得到判别器的全局最优解。但是只要我们能够在训练过程中逐渐向这个全局最优解逼近就可以了。另一方面,判别器的全局最优解的存在也使得我们证明了GAN的训练目标 是可以达到的。
2.4.2 最优生成器

推论2:当且仅当 时,我们才能得到 的全局最优解。
证明:因为推论2是一个“当且仅当”的逻辑关系,所以我们需要从正向和反向两个方向来证明它的成立。
首先我们先从正面证明它。即假设当 时,它是候选的最优解之一。我们将 代入式(10),得到最优判别器 的值,如式(18)。此时无论输入给判别器的是真实样本还是生成样本,判别器的预测结果始终为 ,这意味着它完全被混淆了。


将最优判别器代入式(11)中,我们有

根据概率密度的定义,在 在定义域上的积分为 ,即 。因此我们可以得到 的值恒为 ,如式(20)。可以看出,当 时, 的值恒为 。这个值是候选的最优解之一,那么它是否为唯一的最优解则需要我们再反向进行证明。


当我们证明"仅当"时, 的假设便不成立了,对于任意的G,我们将 代入

向(21)中插入两个值 的变量, 的值并不会变。

接着对式(21)进行调整。

根据 ,我们有:


因此,式(23)等价于:

根据式(26)的KL散度(Kullback-Leibler Divergence)的定义,我们可以将式(25)写成散度的形式,如式(27)。



因为KL散度的值总是非负的,因此我们可以得到 的全局最小值,换句话说, 将是 的唯一点。
证毕!
除了非负性,KL散度的另外一个特征是不对称性,即 ,由于这个不对称性,可能导致模型在训练过程中的不稳定,为了解决这个问题,在深度学习中一般使用JS散度(Jenson Shannon Divergence)来代替KL散度。JS散度的定义如式(28)。


因此 也可以用JS散度来表示,如式(29)


3. 总结

GAN是深度学习领域最重要的生成模型之一,GAN对深度学习的贡献,可以从三点出发:生成(G),对抗(A),网络(N)。
G:机器学习大抵可分为判别模型和生成模型两类。在之前的深度学习中,判别模型得到了充分的发展,例如在CV领域的物体分离,人脸识别,NLP领域的机器翻译,文本分类等,它们都是经典的判别模型。对于判别模型,损失函数是非常好构建的,我们以损失函数为目标,模型优化起来也不那么困难。而对于生成模型而言,它的目标构建起来就非常困难,因为衡量生成样本的质量不能简单的依靠它和训练集的某个数值的关系。一个高质量的生成样本必然从各个角度上都是非常优秀的,例如我们要生成一只猫,它从整体的轮廓到具体到毛发的细节,每一个环节都非常重要。而要做到这一点,GAN正式采用了对抗的思想。
A:我们对一个生成样本质量的评估,往往是一个很难量化的指标。但是这种无法量化的任务深度学习就无能为力了吗,GAN给出了否定的答案。GAN提出了把评估生成样本的质量的任务也交给一个模型去做,这个模型就是判别器。这个判别器和生成样本的生成器通过对抗的方式不断的通过对方的反馈来提升自己,这种亦敌亦友的关系正是GAN最具创新性的地方。
N:GAN的理论基础是生成对抗,那GAN的容量基础则是神经网络。比起传统方法,GAN拥有更强的建模能力,尤其是在处理非结构化数据上更是远胜于传统机器学习方法。正式依赖于GAN强大的建模能力,它的生成器和判别器才能通过不断的迭代,无限的逼近全局最优解。
在2014年之后,GAN迎来了蓬勃的发展。在CV领域,诞生了BigGAN,CycleGAN等经典算法,也诞生了AI换脸,高清重建,黑白电影上色等重要应用。此外GAN在NLP和语音领域也取得了比较重要的成果,例如NLP领域的SeqGAN,NDG,语音领域的WaveGAN等。
Reference

[1] Goodfellow, Ian, et al. "Generative adversarial nets." Advances in neural information processing systems 27 (2014).
[2] Arjovsky, Martin, and Léon Bottou. "Towards principled methods for training generative adversarial networks." arXiv preprint arXiv:1701.04862 (2017).
[3] Wang, Yang. "A Mathematical Introduction to Generative Adversarial Nets (GAN)." arXiv preprint arXiv:2009.00169 (2020).
[4] http://srome.github.io//An-Annotated-Proof-of-Generative-Adversarial-Networks-with-Implementation-Notes/
[5] https://zhuanlan.zhihu.com/p/33752313
分享到 :
0 人收藏

3 个回复

倒序浏览
原论文中还有一个推论你没写
真不错,学习了[赞同]
受益匪浅
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:391512
帖子:78303
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP