(转)GAN论文阅读——原始GAN(基本概念及理论推导)

GAN论文阅读——原始GAN(基本概念及理论推导)

2018年02月23日 20:12:47 StarCoo 阅读数:5008

 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/stalbo/article/details/79283399

参考资料:http://blog.csdn.net/sallyxyl1993/article/details/64123922 
     https://baijiahao.baidu.com/s?id=1580024390078548003&wfr=spider&for=pc 
     https://sherlockliao.github.io/2017/06/20/gan_math/ 
     http://blog.csdn.net/u011534057/article/details/52840788


GAN背后的思想其实非常朴素和直观,就是生成器和判别器两个极大极小的博弈。下面我们进一步了解该理论背后的证明与推导。

一、基本概念

1.1 符号定义

  data真实数据(groundtruthdata→真实数据(groundtruth) 
  pdata真实数据的分布pdata→真实数据的分布 
  z噪音(输入数据)z→噪音(输入数据) 
  pz原始噪音的分布pz→原始噪音的分布 
  pg经过生成器后的数据分布pg→经过生成器后的数据分布 
  G()→生成映射函数G()→生成映射函数 
  D()→判别映射函数D()→判别映射函数

GG 是生成器,结构为一个多层感知机,参数为 θgθgG(z;θg)G(z;θg) 为生成映射函数,将噪音 zz 映射到新的数据空间。DD 是判别器,也是一个多层感知机,参数为 θdθdD(x;θd)D(x;θd) 输出为一个标量,表示 xx 来自真实数据data而不是生成数据的概率。


1.2 目标函数

GAN的目标函数:

https://i-blog.csdnimg.cn/blog_migrate/76eb59df74f46acea1686969b3647509.png

从判别器 DD 的角度看,它希望自己能尽可能区分真实样本和虚假样本,因此希望 D(x)D(x) 尽可能大,D(G(z))D(G(z)) 尽可能小, 即 V(D,G)V(D,G)尽可能大。从生成器 GG 的角度看,它希望自己尽可能骗过 DD,也就是希望 D(G(z))D(G(z)) 尽可能大,即 V(D,G)V(D,G) 尽可能小。两个模型相对抗,最后达到全局最优。

https://i-blog.csdnimg.cn/blog_migrate/c6fb5a94a897e8be83e0d94947e3523a.png

图中,黑色曲线是真实样本的概率分布函数,绿色曲线是虚假样本的概率分布函数,蓝色曲线是判别器D的输出,它的值越大表示这个样本越有可能是真实样本。最下方的平行线是噪声z,它映射到了x。

我们可以看到,一开始, 虽然 G(z)G(z) 和 xx 是在同一个特征空间里的,但它们分布的差异很大,这时,虽然鉴别真实样本和虚假样本的模型 DD 性能也不强,但它很容易就能把两者区分开来,而随着训练的推进,虚假样本的分布逐渐与真实样本重合,DD 虽然也在不断更新,但也已经力不从心了。

最后,黑线和绿线最后几乎重合,模型达到了最优状态,这时 DD 的输出对于任意样本都是 0.50.5


二、最优化问题表达

定义最优化问题的方法由两部分组成。首先我们需要定义一个判别器 D 以判别样本是不是从 Pdata(x)Pdata(x) 分布中取出来的,因此有:

https://i-blog.csdnimg.cn/blog_migrate/757dbbb462dd178623c83c0c5b3f495b.png

其中 E 指代取期望。这一项是根据「正类」(即辨别出 x 属于真实数据 data)的对数损失函数而构建的。最大化这一项相当于令判别器 D 在 x 服从于 data 的概率密度时能准确地预测 D(x)=1,即:

https://i-blog.csdnimg.cn/blog_migrate/649cc043f6d7f4cd9973d9f537f6eadc.png

另外一项是企图欺骗判别器的生成器 G。该项根据「负类」的对数损失函数而构建,即:

https://i-blog.csdnimg.cn/blog_migrate/df7d43e6704b635a7c8aa4ef80dc29c0.png

我们定义目标函数为:

https://i-blog.csdnimg.cn/blog_migrate/76eb59df74f46acea1686969b3647509.png

对于 D 而言要尽量使公式最大化(识别能力强),而对于 G 又想使之最小(生成的数据接近实际数据)。整个训练是一个迭代过程。其实极小极大化博弈可以分开理解,即在给定 G 的情况下先最大化 V(D,G)V(D,G) 而取 D,然后固定 D,并最小化 V(D,G)V(D,G) 而得到 G。其中,给定 G,最大化 V(D,G)V(D,G) 评估了 PgPg 和 PdataPdata 之间的差异或距离。

最后,我们可以将最优化问题表达为:

https://i-blog.csdnimg.cn/blog_migrate/c11782385447dc125703fedb861ea240.png

上文给出了 GAN 概念和优化过程的形式化表达。通过这些表达,我们可以理解整个生成对抗网络的基本过程与优化方法。当然,有了这些概念我们完全可以直接在 GitHub 上找一段 GAN 代码稍加修改并很好地运行它。但如果我们希望更加透彻地理解 GAN,更加全面地理解实现代码,那么我们还需要知道很多推导过程。比如什么时候 D 能令价值函数 V(D,G)V(D,G) 取最大值、G 能令 V(D,G)V(D,G) 取最小值,而 D 和 G 该用什么样的神经网络(或函数),它们的损失函数又需要用什么等等。总之,还有很多理论细节与推导过程需要我们进一步挖掘。


三、理论推导

3.1 知识预备——KL散度

要进行接下来的理论推导,我们首先需要一点预备知识,KL散度(KL divergence),这是统计中的一个概念,是衡量两种概率分布的相似程度,其越小,表示两种概率分布越接近。 
对于离散的概率分布,定义如下:

https://i-blog.csdnimg.cn/blog_migrate/f842835a5e12d0bb6926f137a70524aa.png

对于连续的概率分布,定义如下:

https://i-blog.csdnimg.cn/blog_migrate/029c7c2a5de191b7288451ed3c89876f.png

我们想要将一个随机高斯噪声z通过一个生成网络G得到一个和真的数据分布 Pdata(x)Pdata(x) 差不多的生成分布 PG(x;θ)PG(x;θ),其中的参数 θθ 是网络的参数决定的,我们希望找到 θθ 使得 PG(x;θ)PG(x;θ) Pdata(x)Pdata(x) 尽可能接近。

Maximun Likelihood Estimation 
我们从真实数据分布 Pdata(x)Pdata(x) 里面取样 mm 个点,x1,x2,,xmx1,x2,,xm,根据给定的参数 θθ 我们可以计算如下的概率 PG(xi;θ)PG(xi;θ),那么生成这 mm 个样本数据的似然(likelihood)就是:

https://i-blog.csdnimg.cn/blog_migrate/759cf11405118d003bd121351e92d4a1.png

我们想要做的事情就是找到 θθ 来最大化这个似然估计:

https://i-blog.csdnimg.cn/blog_migrate/4bba9a2364cecaa3fc6f8af6ed69d5ce.png

在上面的推导中,我们希望最大化似然函数 LL。若对似然函数取对数,那么累乘  就能转化为累加 ,并且这一过程并不会改变最优化的结果。因此我们可以将极大似然估计化为求令 logPG(x;θ)logPG(x;θ) 期望最大化的 θθ ,而期望 ElogPG(x;θ)ElogPG(x;θ)可以展开为在 xx 上的积分形式 Pdata(x)logPG(x;θ)dx∫Pdata(x)logPG(x;θ)dx

又因为该最优化过程是针对 θθ 的,所以我们添加一项不含 θθ 的积分并不影响最优化效果,即可添加 Pdata(x)logPdata(x)dx∫Pdata(x)logPdata(x)dx。添加该积分后,我们可以合并这两个积分并构建类似 KL 散度的形式。该过程如下:

https://i-blog.csdnimg.cn/blog_migrate/624d7788637923038bc3fb4db0dadeb7.png

这里在前面添加一个负号,将 log 里面的分数倒一下,就变成了KL 散度:

而 PG(x;θ)PG(x;θ) 如何算出来呢?

https://i-blog.csdnimg.cn/blog_migrate/7daee1025dff36e4619912db1a6a632a.png

里面的I表示示性函数,也就是:

https://i-blog.csdnimg.cn/blog_migrate/2bf422e6c0d4eed9db00a654a1375633.png

这样我们其实根本没办法求出这个 PG(x)PG(x) 出来,这就是生成模型的基本想法。


3.2 Global Optimality of pg=pdatapg=pdata

下面,我们需要证明:该最优化问题有唯一解 GG,并且该唯一解满足 PG=PdataPG=Pdata

Basic Idea of GAN

  • 生成器 G: 
    G 是一个生成器,给定先验分布 Pprior(z)Pprior(z) 我们希望得到生成分布 PG(x)PG(x),这里很难通过极大似然估计得到结果。
  • 判别器 D: 
    D 是一个函数,来衡量 PG(x)PG(x) 与 Pdata(x)Pdata(x) 之间的差距,这是用来取代极大似然估计

最优判别器 
在极小极大博弈的第一步中,给定生成器 G,最大化 V(D,G)V(D,G) 而得出最优判别器 D。其中,最大化 V(D,G)V(D,G) 评估了 PGPG 和 PdataPdata之间的差异或距离。因为在原论文中价值函数可写为在 xx 上的积分,即将数学期望展开为积分形式:

https://i-blog.csdnimg.cn/blog_migrate/ccaa88b13b5d0a550f15553ff2a20bf6.png

关于上面积分式的证明 
在 GAN 原论文中,有一个思想和其它很多方法都不同,即生成器 G 不需要满足可逆条件。Scott Rome 认为这一点非常重要,因为实践中 G 就是不可逆的。而很多证明笔记都忽略了这一点,他们在证明时错误地使用了积分换元公式,而积分换元却又恰好基于 G 的可逆条件。Scott 认为证明只能基于以下等式的成立性:

Ez∼pz(z)log(1−D(G(z)))=Ex∼pG(x)log(1−D(x))Ez∼pz(z)log⁡(1−D(G(z)))=Ex∼pG(x)log⁡(1−D(x))

该等式来源于测度论中的 Radon-Nikodym 定理。 
有一些证明过程使用了积分换元公式,但进行积分换元就必须计算 
G(−1)G(−1),而 G 的逆却并没有假定为存在。并且在神经网络的实践中,它也并不存在。可能这个方法在机器学习和统计学文献中太常见了,因此我们忽略了它。

在数据给定,G 给定的前提下, Pdata(x)Pdata(x) 与 PG(x)PG(x) 都可以看作是常数,我们可以分别用 a,ba,b 来表示他们,这样我们就可以得到如下的式子:

https://i-blog.csdnimg.cn/blog_migrate/baef3c5d279792ffa81e458ce09a63c9.png

由此,我们得到论文中的第一个推论:

https://i-blog.csdnimg.cn/blog_migrate/858a1971aabe11df1b2f9dae0b69cf0d.png

其实该最优的 D 在实践中并不是可计算的,但在数学上十分重要。我们并不知道先验的 Pdata(x)Pdata(x),所以我们在训练中永远不会用到它。另一方面,它的存在令我们可以证明最优的 G 是存在的,并且在训练中我们只需要逼近 D。

最优生成器 
当然 GAN 过程的目标是令 PG=PdataPG=Pdata。这对最优的 D 意味着什么呢?我们可以将这一等式代入 DGDG 的表达式中:

https://i-blog.csdnimg.cn/blog_migrate/780950a76f0167b34983b6de438556ce.png

这意味着判别器已经完全困惑了,它完全分辨不出 PdataPdata 和 PGPG 的区别,即判断样本来自 PdataPdata 和 PGPG 的概率都为 1212。基于这一观点,GAN 作者证明了 G 就是极小极大博弈的解。该定理如下:

https://i-blog.csdnimg.cn/blog_migrate/f1f066cc7d3ed769eba062c7dddfb521.png

即当且仅当 PG=PdataPG=Pdata,训练标准 C(G)=maxV(G,D)C(G)=maxV(G,D) 的可以达到全局最优。

以上定理即极大极小博弈的第二步,求令 V(G,D)V(G,D) 最小的生成器 G(其中 DD 代表最优的判别器)。之所以当 PG=PdataPG=Pdata 可以令价值函数最小化,是因为这时候两个分布的 JS 散度 JSD(Pdata(x)||PG(x))JSD(Pdata(x)||PG(x)) 等于零,这一过程的详细解释如下。

原论文中的这一定理是「当且仅当」声明,所以我们需要从两个方向证明。首先我们先从反向逼近并证明 C(G)C(G) 的取值,然后再利用由反向获得的新知识从正向证明。设 PG=PdataPG=Pdata(反向指预先知道最优条件并做推导),我们可以反向推出:

https://i-blog.csdnimg.cn/blog_migrate/550381cfaeb3850d8ade5a81d0dcf449.png

该值是全局最小值的候选,因为它只有在 PG=PdataPG=Pdata 的时候才出现。我们现在需要从正向证明这一个值常常为最小值,也就是同时满足「当」和「仅当」的条件。现在放弃 PG=PdataPG=Pdata 的假设,对任意一个 G,我们可以将上一步求出的最优判别器 DD 代入到 C(G)=maxV(G,D)C(G)=maxV(G,D) 中:

https://i-blog.csdnimg.cn/blog_migrate/11ec2f27135abe0c2ac9a9d83f65fc43.png

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

https://i-blog.csdnimg.cn/blog_migrate/bd4e95acc5b83afcffd5359872730e1c.png

采用该技巧主要是希望能够构建成含 log2 和 JS 散度的形式,上式化简后可以得到以下表达式:

https://i-blog.csdnimg.cn/blog_migrate/966d759dfadc6fd878fadc97af648564.png

因为概率密度的定义,PGPG 和 PdataPdata 在它们积分域上的积分等于 11,即:

https://i-blog.csdnimg.cn/blog_migrate/8bfee17292219bb4eb6f4725ed08e234.png

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

https://i-blog.csdnimg.cn/blog_migrate/0c7f509b5fb4278783c540796861f714.png

因此代入该等式,我们可以写为:

https://i-blog.csdnimg.cn/blog_migrate/118a40d2b33bf9a1c5ab8fcd7961c744.png

现在,如果读者阅读了前文的 KL 散度,那么我们就会发现每一个积分正好就是它。具体来说:

https://i-blog.csdnimg.cn/blog_migrate/9b423cf9dc7e246cea355e46c3adf863.png

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

如果我们进一步证明只有一个 G 能达到这一个值,因为 PG=PdataPG=Pdata 将会成为令 C(G)=−log4C(G)=−log4 的唯一点,所以整个证明就能完成了。

从前文可知 KL 散度是非对称的,所以 C(G)C(G) 中的 KL(Pdata||(Pdata+PG)/2)KL(Pdata||(Pdata+PG)/2) 左右两项是不能交换的,但如果同时加上另一项 KL(Pdata||(Pdata+PG)/2)KL(Pdata||(Pdata+PG)/2),它们的和就能变成对称项。这两项 KL 散度的和即可以表示为 JS 散度(Jenson-Shannon divergence):

https://i-blog.csdnimg.cn/blog_migrate/7a39f0f176019df13ba660a5192f01ae.png

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

JS 散度的取值为 0 到 log2。若两个分布完全没有交集,那么 JS 散度取最大值 log2;若两个分布完全一样,那么 JS 散度取最小值 0。

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

https://i-blog.csdnimg.cn/blog_migrate/bd006ed44706fad9e6a8e63cd47e98cd.png

这一散度其实就是 Jenson-Shannon 距离度量的平方。根据它的属性:当 PG=PdataPG=Pdata 时,JSD(Pdata(x)||PG(x))JSD(Pdata(x)||PG(x)) 为 0。综上所述,生成分布当且仅当等于真实数据分布式时,我们可以取得最优生成器。


3.3 收敛

现在,该论文的主要部分已经得到了证明:即 PG=PdataPG=Pdata 为 maxV(G,D)maxV(G,D) 的最优点。此外,原论文还有额外的证明白表示:给定足够的训练数据和正确的环境,训练过程将收敛到最优 G,我们并不详细讨论这一块。


四、训练方法

https://i-blog.csdnimg.cn/blog_migrate/647eff00be769cc5fc18bfafe4b1b87e.png


五、GAN的优势与缺陷

与其他生成式模型相比较,生成式对抗网络有以下四个优势OpenAI Ian Goodfellow的Quora问答】:

  • 根据实际的结果,它们看上去可以比其它模型产生了更好的样本(图像更锐利、清晰)。
  • 生成对抗式网络框架能训练任何一种生成器网络(理论上-实践中,用 REINFORCE 来训练带有离散输出的生成网络非常困难)。大部分其他的框架需要该生成器网络有一些特定的函数形式,比如输出层是高斯的。重要的是所有其他的框架需要生成器网络遍布非零质量(non-zero mass)。生成对抗式网络能学习可以仅在与数据接近的细流形(thin manifold)上生成点。
  • 不需要设计遵循任何种类的因式分解的模型,任何生成器网络和任何鉴别器都会有用。
  • 无需利用马尔科夫链反复采样,无需在学习过程中进行推断(Inference),回避了近似计算棘手的概率的难题。

  与PixelRNN相比,生成一个样本的运行时间更小。GAN 每次能产生一个样本,而 PixelRNN 需要一次产生一个像素来生成样本。 
  与VAE 相比,它没有变化的下限。如果鉴别器网络能完美适合,那么这个生成器网络会完美地恢复训练分布。换句话说,各种对抗式生成网络会渐进一致(asymptotically consistent),而 VAE 有一定偏置。 
  与深度玻尔兹曼机相比,既没有一个变化的下限,也没有棘手的分区函数。它的样本可以一次性生成,而不是通过反复应用马尔可夫链运算器(Markov chain operator)。 
  与 GSN 相比,它的样本可以一次生成,而不是通过反复应用马尔可夫链运算器。 
  与NICE 和 Real NVE 相比,在 latent code 的大小上没有限制。

GAN目前存在的主要问题:

  • 解决不收敛(non-convergence)的问题。 
    目前面临的基本问题是:所有的理论都认为 GAN 应该在纳什均衡(Nash equilibrium)上有卓越的表现,但梯度下降只有在凸函数的情况下才能保证实现纳什均衡。当博弈双方都由神经网络表示时,在没有实际达到均衡的情况下,让它们永远保持对自己策略的调整是可能的【OpenAI Ian Goodfellow的Quora】。
  • 难以训练:崩溃问题(collapse problem) 
    GAN模型被定义为极小极大问题,没有损失函数,在训练过程中很难区分是否正在取得进展。GAN的学习过程可能发生崩溃问题(collapse problem),生成器开始退化,总是生成同样的样本点,无法继续学习。当生成模型崩溃时,判别模型也会对相似的样本点指向相似的方向,训练无法继续。【Improved Techniques for Training GANs
  • 无需预先建模,模型过于自由不可控。 
    与其他生成式模型相比,GAN这种竞争的方式不再要求一个假设的数据分布,即不需要formulate p(x),而是使用一种分布直接进行采样sampling,从而真正达到理论上可以完全逼近真实数据,这也是GAN最大的优势。然而,这种不需要预先建模的方法缺点是太过自由了,对于较大的图片,较多的 pixel的情形,基于简单 GAN 的方式就不太可控了(超高维)。在GAN[Goodfellow Ian, Pouget-Abadie J] 中,每次学习参数的更新过程,被设为D更新k回,G才更新1回,也是出于类似的考虑。
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值