Generative Adversarial Nets 论文解读

本知识库内容包括65分钟讲解视频、讲解文档及示例运行代码

论文解读完整文档(PDF版)及ppt可在官网下载:www.tensorinfinity.com


      

        这篇文章是生成对抗网络(GAN)的开山之作,此后这种方法得到了蓬勃发展,最近这些年成为深度学习最热门的研究方向之一。数据生成模型的目标是对样本的概率密度函数进行建模,或者得到一个能生成服从某种概率分布的样本的映射函数,它不同于分类,回归,聚类等问题。

 

摘要

本文提出了一种通过对抗过程估计生成模型的新框架,这通过同时训练两个模型而实现:一个称为生成模型G,用于捕获数据的概率分布,另外一个是判别模型D,用于估计一个样本是真实样本(而不是由生成模型G生成的样本)的概率。生成模型G的训练目标是最大化D对样本的错判概率,即将G生成的样本判定为真样本。这个框架对应于一个极大值极小值双边博弈。对于函数G和D的任意空间,存在一个唯一解,在这个最优解处,G复原了训练样本的概率分布,而D在任意输入点处的输出值都等于1/2。如果G和D都定义为多层感知器模型,整个模型可以通过反向传播算法进行训练,即训练两个神经网络。在模型训练与样本生成的过程中,无需马尔可夫链或展开的近似推断网络。在实验中,通过对模型生成的样本的定性和定量分析证明了这种框架的潜力。

 

问题与方法简介

深度学习的希望在于发现丰富的、分层的模型,对我们在人工智能应用中所遇到的各种数据的概率分布进行表示,例如自然图像,含有人说话声音的波形信号,自然语言中的语料库等。到目前为止,深度学习最显著的成功都是判别模型,通常是将高维的、丰富的场景数据如声音、图像映射为类别标签,即分类问题。这些显著的成功主要归功于反向传播算法和dropout算法,以及有优良梯度表现的分段线性函数作为激活函数,如ReLU。

到目前为止,深度生成模型产生的冲击相对较小,原因在于对最大似然估计或其他相关策略中所出现的一些棘手的概率计算进行近似时所面临的困难,以及在生成问题中发挥分段线性激活函数威力的困难性。本文提出了一种新的生成模型估计算法,可以有效的避开这些困难。

 

在本文提出的对抗网络框架中,生成模型与一个对手进行竞争:一个判别模型,它通过学习来判断一个样本是来自模型的分布,即是生成模型生成的,还是来自数据分布,即真实样本。生成模型可以类比为一个制造假币的团伙,生产假币,在人们无法察觉的情况下使用它们。而判别模型可以类比为警察,努力查出假币。两个团队竞争的结果是双方不断提高自己的水平,直到假币最后可以以假乱真。

对各种类型的生成器和判别器模型,以及优化算法,这个框架都可以产生出具体的训练算法。在本文中,作者对一种特殊的情况进行探讨:生成模型以随机噪声作为输入,通过多次感知器生成样本数据,判别模型也是一个多层感知器,实现二分类。这种特例称为对抗网络。对于这种情况,可以通过反向传播算法和dropout算法同时训练出生成模型和判别模型。对于判别模型,一部分训练样本通过对生成模型运行正向传播算法而得到,即由生成模型产生。这种方法无需使用马尔可夫链或近似推断。

之前的相关工作

下面介绍数据生成问题上此前的相关工作。含有隐变量的有向图模型的一个替代方案是含有隐变量的无向图模型,如受限玻尔兹曼机,深度玻尔兹曼机以及它们的变种。这种模型内部的相互作用被表示为多个没有归一化的势函数的乘积,用对所有随机变量的各种状态的全局求和或者积分进行归一化。这个量(配分函数)以及它的梯度值对几乎所有琐碎的实例都是难以处理的,虽然可以用马尔可夫链蒙特卡洛算法(MCMC)来估计。这种混合给依赖于MCMC的学习算法带来了大问题。


深度置信网DBN是一种含有单个无向层和多个有向层的混合模型。虽然存在快速近似逐层训练算法,DBN因为同时具有无向层和有向层而难以计算。


也有无需对对数似然函数做近似或限界的方案,如score matching,noise-contrastive estimation(NCE)。这些方法都需要学习得到的概率密度函数有一个解析指定的常数。但在有多个隐变量层的生成模型中,都无法推导出一个易处理的归一化的概率密度函数。有些模型如去噪自动编码器,收缩自动编码器有与RBM中的评分匹配非常类似的学习规则。NCE和本文提出的算法一样,使用了一个判别式训练法则来拟合生成模型。与拟合一个分离的判别模型不同,生成模型本身也被用于从固定的噪声分布来区分生成的数据。由于NCE使用了固定的噪声分布,当模型对观测变量的一个小的子集学习到一个近似正确的分布之后,训练速度会急剧减慢。


还有一类方法,即隐式建模,它们不显式的定义概率密度函数,而是训练一个生成器,直接从想要的概率分布来生成样本。这种方法有一个优点,那就是生成器可以设计成用反向传播算法来训练。这一领域的突出工作是GSN,即生成式随机网络框架,它从广义去噪自动编码器扩展得到。GSN和去噪自动编码器都可以看作是参数化的马尔可夫链。与GSN不同,对抗网络无需用马尔可夫链进行采样。因为对抗网络在生成样本的过程中无需反馈回路,因此能够更有效的使用分段线性激活函数。近期的工作还有自动编码变分贝叶斯,随机反向传播。

 

对抗网络的整体结构

如果生成器与判别器都用多层感知器模型实现,对抗模型的应用是最直接的。为了学习生成器对样本数据x的概率分布Pg,定义随机噪声输入的先验概率Pz(Z),然后将生成器表示成一个映射G(Z,θg),即生成器将噪声数据映射到样本数据空间。其中G是一个用神经网络表示的可微的函数,其参数为θg


另外定义判别模型为一个多层感知器,其表示的映射函数为G(X,θd),它输出一个标量值。其输出值表示一个样本x来自于真实数据而不是由生成器生成的概率。相应的,θd是这个神经网络的参数。


在训练时,生成器与判别器相互博弈。生成器生成样本以欺骗判别器,而判别器则要准确的区分出生成器生成的样本和真实的样本。系统的整体结构如下图所示:

image.png

 

优化的目标函数

生成器和判别器同时训练。训练D以最大化它将真实样本、来自G的样本赋予正确标签值的概率,同时训练G以最小化Log(1 D(G(z)))。后者意味着生成器要使得判别器将自己生成的样本尽量判别为真。训练时优化的目标函数为双边博弈的最大值最小值问题,定义如下:

image.png

实现时,在训练的内层循环中优化D直到完成目标在计算上是不可行的,而且对于有限的样本集会导致过拟合。因此在实现时交替的优化D和G,每一轮迭代中,前者优化k次,后者优化1次。只要G更新的足够慢,D可以维持在其最优解附近。

 

训练算法

训练算法的流程如下:



Generative Adversarial Nets解读.pdf

购买观看完整解读及视频