分享

浅析生成对抗网络

 很安静到无语 2017-02-19

GAN是由Ian Goodfellow在2014年提出的,主要思想发表于这篇里程碑式的论文:Generative Adversarial Networks。2016年,GAN热潮席卷AI领域顶级会议,Yann LeCun更是评价GAN是“20年来机器学习领域最酷的想法”。究其原因,主要是因为GAN为无监督学习提供了一个崭新的方法,而无监督学习又是机器学习的发展方向。因此,GAN备受学术界和工业界的关注。

Ian的论文包含许多形式化的论证,初学者难以完全理解。而本文希望用最通俗易懂的语言,给大家带来对GAN的直观理解,为进一步深入学习GAN打下基础。

GAN的基本框架

任何生成模型的训练目标都是要使得生成出来的数据尽量接近真实数据。但是在实际应用中,我们完全无法知道真实数据的分布。我们所能够得到的只是真实数据的一些样本。传统的生成模型,一般都采用数据的似然性来作为优化的目标,但GAN创新性地引入了判别模型,从而提出了一种全新的优化目标。这个目标就是要寻找生成模型和判别模型之间的一个平衡。

GAN所建立的一个学习框架,实际上就是生成模型和判别模型之间的一个模仿游戏。我们可以把生成模型看作一个伪装者,而把判别模型看成一个警察。生成模型通过不断地学习来提高自己的伪装能力,从而使得生成出来的数据能够更好地欺骗判别模型。而判别模型则通过不断的训练来提高自己判别的能力,能够更准确地判断出数据的来源。GAN的架构如下图所示:

生成模型以隐随机变量作为输入,其输出是对真实数据分布的一个估计。生成数据和真实数据的采样都由判别模型进行甄别,并给出真假性的判断和当前的损失。利用反向传播,GAN对生成模型和判别模型进行交替优化。

GAN的优化目标

GAN的两个模型分别对应两个优化目标。

生成模型的优化目标

生成模型的优化目标是最小化下面这个表达式的值:

其中,是从隐随机变量分布中抽样的个样本,它是生成模型的输入。对机器学习不是很了解的读者可能无法理解这个优化目标是如何形成的,其实这其中的原理很简单。

是指生成模型以隐随机变量为输入,生成一个对真实数据分布的估计。理论上来说,通过不断地学习,生成的数据样本应该越来越接近真实的数据分布。然后,判别模型以生成模型的输出作为输入,并输出一个介于0和1之间的数字。这个输出值越接近0,表示判别模型越认为输入数据是生成的,而不是真实数据。相反,输出值越接近1,表示判别模型越认为输入数据是真实数据的抽样而不是生成的。因此,从生成模型的角度来讲,它希望判别模型的输出值越接近1越好。这样就意味着自己生成出来的数据越来越接近真实数据分布。由于0和1之间的差距很小,为了放大这种差异,加速网络训练的进程,我们对判别模型的输出值取对数。对数函数的图像如下图所示:

可以看到,越接近1,的函数值越小。相反,越接近0,的函数值快速增长,目标函数的这种特性可以给不恰当的网络参数巨大的惩罚,也就保证了生成模型的输出将迅速逼近真实数据分布。

判别模型的优化目标

理解了生成模型的优化目标之后,我们就可以很容易地理解判别模型的优化目标了。判别模型的优化目标是最小化下面这个表达式的值:

其中,第一项表示判别模型希望对于真实数据的输出值尽可能接近1,也就是说判别模型可以正确识别出真实数据。第二项表示判别模型希望对于生成数据的输出值尽可能接近0,也就是说判别模型可以正确识别出生成的数据。

一维生成对抗网络的实现

为了具体阐释生成对抗网络的细节,接下来我们将实现一个非常简单的生成对抗网络,它能够对一维正态分布进行模拟。

数据生成

首先,我们需要编写两个数据生成器,分别用于生成真实数据分布和隐变量。实现代码如下:

DataDistribution从一个正态分布中抽样,这些数据将作为真实数据。GenerationDistribution则随机产生一个数据分布作为隐变量。

模型构建

在构建生成网络和判别网络的过程中,我使用了Keras库,它的优点是API简洁清晰,使得代码的可读性很高。因为一维正态分布比较简单,在生成网络中我只加入了一个隐藏层。而判别网络则加入了两个隐藏层,如下图所示:

具体实现代码如下:

模型的训练

接下来就是交替训练生成模型和判别模型,并使用反向传播算法更新两个网络的参数,使得它们朝着各自的优化目标前进。

实验结果

我们选择批大小为256,生成网络和判别网络隐藏层节点数目都是16,一共迭代15000次。下图分别展示了两个网络的优化目标函数的输出值变化:

可以清晰地看到,当一个网络的目标函数输出值减小时,另一个网络的目标函数输出值就增大。也就是说,一个网络的能力在增强的时候,另一个网络的能力就在减弱。这表明两个网络在互相“对抗”,并最终达到一个平衡。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多