横向与其他模型的比较较多,感觉需要对很多模型有一定理解才能看的明白,看到一半看不下去了。
本报告总结了作者在NIPS2016上关于GAN的综述演讲。其主要讲了:
生成性对抗网络就是生成性模型的一个例子。术语“生成模型”有许多不同的用法。在本教程中,这个术语指的是接受训练集(由从分布 p d a t a p_{data} pdata中抽取的样本组成)并学习以某种方式表示该分布的估计值的任何模型。结果是一个概率分布 p m o d e l p_{model} pmodel。在某些情况下,模型显式地估计 p m o d e l p_{model} pmodel,如图1所示。在其他情况下,模型只能从 p m o d e l p_{model} pmodel生成样本,如图2所示。一些模型可以同时做到这两点。GANs主要关注于样本生成,不过也可以设计出同时具备这两种功能的GANs
图1:一些生成模型执行密度估计。这些模型从一个未知的数据生成分布 p d a t a p_{data} pdata中抽取一组训练示例,并返回该分布的估计值。对于特定的x值,可以对估计值 p m o d e l p_{model} pmodel进行评估,得到真实密度的估计值。这张图说明了一维数据和高斯模型的采样过程。
图2:一些生成模型能够从模型分布中生成样本。在这个过程的插图中,我们展示了来自ImageNet的样本(Deng et al., 2009, 2010;Russakovsky等,2014)。理想的生成模型应该能够训练左边所示的示例,然后从右边所示的相同分布中创建更多的示例。目前,生成模型还不够高级,无法对ImageNet正确地执行此操作,因此出于演示目的,该图使用实际的ImageNet数据来说明理想的生成模型将生成什么。
人们可能会理所当然地想知道为什么生成模型值得研究,尤其是那些只能够生成数据而不能提供密度函数估计的生成模型。毕竟,当应用于图像时,这样的模型似乎只提供了更多的图像,而世界上并不缺少图像。
有以下几个原因:
从生成模型中进行训练和抽样是对我们表示和操纵高维概率分布能力的一个很好的测试。高维概率分布是应用数学和工程领域的重要研究对象。
生成模型可以通过几种方式整合到强化学习中。强化学习算法可以分为两大类;基于模型和非模型,基于模型的算法是那些包含生成模型的算法。时间序列数据的生成模型可以用来模拟可能的未来。这样的模型可以用多种方式用于计划和强化学习。用于规划的生成模型可以学习世界未来状态的条件分布,给定世界当前状态和代理可能作为输入采取的假设行动。代理可以查询具有不同潜在操作的模型,并选择模型预测的可能产生所需状态的操作。有关此类模型的最新示例,请参见Finn等人(2016b),关于使用此类模型进行规划的最新示例,请参见Finn和Levine(2016)。生成模型用于强化学习的另一种方法是在一个假想的环境中进行学习,在这个环境中,错误的行为不会对真实世界造成真正的损害。生成模型还可以通过跟踪不同的状态被访问的频率或以前尝试过的不同操作来指导探索。生成模型,特别是甘斯模型,也可以用于逆向强化学习。其中一些与强化学习的联系将在第5.6节中进一步描述
生成模型可以使用丢失的数据进行训练,并可以提供关于丢失数据的输入的预测。数据丢失的一个特别有趣的例子是半监督学习,在这种情况下,许多甚至大多数训练示例的标签都丢失了。现代深度学习算法通常需要非常多的标记示例才能很好地概括。半监督学习是减少标签数量的一种策略。该学习算法可以通过学习大量的未标记的例子来提高其泛化能力,这些例子通常更容易获得。生成模型,特别是GANs,能够很好地执行半监督学习。
图3: 图3:Lotter等人(2015)很好地说明了对多模态数据建模的重要性。在这个例子中,一个模型被训练来预测视频序列中的下一帧。该视频描述了电脑渲染的一个人头部的移动3D模型。左边的图像显示了一个实际视频帧的例子,这个模型可以很好地预测。中间的图像显示了使用实际的下一帧与模型s预测的下一帧之间的均方误差训练模型时的情况。模型被迫为下一帧选择一个答案。因为有许多可能的未来,对应于头部的略微不同的位置,模型选择的单一答案对应于许多略微不同的图像的平均值。这导致耳朵几乎消失,眼睛变得模糊。使用一个额外的GAN损失,右边的图像能够理解有许多可能的输出,每一个输出都是清晰的,可以识别为一个真实的、详细的图像。
生成模型,特别是GANs,使机器学习能够处理多模态输出。对于许多任务,一个输入可能对应许多不同的正确答案,每个答案都是可接受的。一些传统的训练机器学习模型的方法,例如最小化期望输出和模型s预测输出之间的均方误差,不能训练能够产生多个不同正确答案的模型。这种场景的一个例子是预测视频中的下一帧,如图3所示
最后,有些任务的确需要从一些分布中生成样本。
这些任务中有一些本质上需要产生良好样本的例子包括:
单图像超分辨率:本任务的目标是获取低分辨率图像并合成高分辨率的等效物。生成式建模是必需的,因为这一任务要求模型向图像中输入的信息比输入时更多。与低分辨率图像相对应的高分辨率图像可能有很多。模型应该从可能的图像中选择概率分布为样本的图像。选择一张所有可能图像的平均值的图像将产生一个过于模糊而不令人满意的结果。见图4。
图4:Ledig等人(2016)展示了优秀的单图像超分辨率结果,显示了使用经过训练的生成模型从多模态分布生成真实样本的好处。最左边的图像是原始的高分辨率图像。然后对其进行降采样,得到低分辨率图像,并采用不同的方法试图恢复高分辨率图像。双三次方法是一种简单的插值方法,完全不使用训练集的统计量。SRResNet是一种通过均方误差训练的神经网络。SRGAN是一种基于GAN的神经网络,它比SRGAN有所改进,因为它能够理解有多个正确答案,而不是对多个答案求平均值,从而实现单个最佳输出。
任务的目标是创造艺术。最近的两个项目都证明了生成模型,特别是GANs,可以用来创建交互程序,帮助用户创建符合用户想象中的粗糙场景的真实图像。参见图5和图6。
图像到图像的转换应用程序可以将航空照片转换成地图或将草图转换成图像。有一个非常长的创造性应用程序的尾巴,很难预测,但一旦发现,它们是有用的。请参见图7。
图5:Zhu等人(2016)开发了一种交互式应用程序,称为交互式生成对抗网络(iGAN)。用户可以绘制图像的草图,而iGAN使用GAN生成最相似的逼真图像。在这个例子中,用户草草地画了几条绿线,iGAN将这些绿线转换成草地,用户还画了一个黑三角形,iGAN将其转换成一座详细的山。创造艺术的应用程序是研究创造图像的生成模型的众多原因之一。
图6:Brock等人(2016)开发了内省的敌对网络(IAN)。用户对照片进行粗略的修改,比如在用户希望添加黑发的区域使用黑色颜料作画,IAN将这些粗糙的颜料笔触转换成符合用户需求的逼真图像。让用户能够对照片媒体做出真实修改的应用程序是研究生成模型的众多原因之一。
图7:sola等人(2016)提出了一个概念,他们称之为图像到图像的翻译,包括图像的多种转换:将卫星照片转换成地图,将草图转换成逼真的图像,等等。由于许多转换过程对每个输入都有多个正确的输出,因此有必要使用生成模型来正确地训练模型。特别是Isola等人(2016)使用了GAN。图像到图像的翻译提供了许多例子,说明一个有创意的算法设计师如何能够发现生成模型的几个意想不到的用途。在未来,可能会发现更多这样的创造性用途。
为了在一定程度上简化讨论,我们将关注通过最大似然原理工作的生成模型。并不是每个生成模型都使用最大似然。一些生成模型默认情况下不使用最大似然,但是可以这样做(GANs属于这一类)。通过忽略那些不使用最大似然的模型,通过关注通常不使用最大似然的模型的最大似然版本,我们可以消除不同模型之间一些更令人分心的差异。
最大似然的基本思想是定义一个模型,该模型提供由参数 θ \theta θ参数化的概率分布估计值。然后我们将似然值认为是模型产生训练数据的概率:在一个数据集包含m个训练样本时,公式为 ∏ i = 1 m p m o d e l ( x ( i ) ; θ ) \prod_{i=1}^{m}p_{model}(x^{(i)};\theta) ∏i=1mpmodel(x(i);θ)
最大似然原理简单地说就是为模型选择使训练数据的似然值最大化的参数。这在对数空间中是最简单的,在对数空间中我们有一个和而不是乘积。这个和简化了对模型的似然导数的代数表达式,并且当在数字计算机上实现时,不太容易出现数值问题,比如几个非常小的概率相乘后产生的下溢。
最大似然估计过程在图8有展示。
我们也可以认为最大似然过程时在最小化数据生成分布和模型之间的KL散度。
如果我们能够精确地做到这一点,那么如果 p d a t a p_{data} pdata属于分布 p m o d e l ( x ; θ ) p_{model}(x;\theta) pmodel(x;θ),该模型将 p d a t a p_{data} pdata完全恢复。在实践中,我们不能访问 p d a t a p_{data} pdata本身,而只能访问由来自 p d a t a p_{data} pdata的m个样本组成的训练集。我们用这些来定义 p d a t a p_{data} pdata,一个经验分布,它只把质量放在m个点上,近似于 p d a t a p_{data} pdata。最小化 p d a t a p_{data} pdata和 p m o d e l p_{model} pmodel之间的KL散度与最大化训练集的log-likelihood完全等价。
图8:最大似然过程包括从数据生成分布中抽取几个样本,形成一个训练集,然后将模型赋予这些点的概率向上推,以使训练数据的似然最大化。这个例子显示了不同的数据点如何向上推到密度函数的不同部分,高斯模型应用于一维数据。密度函数必须和为1这一事实意味着我们不能简单地给所有点分配无限可能性;当一个点在一个地方向上推时,它不可避免地在其他地方向下拉。由此产生的密度函数抵消了来自不同位置的所有数据点的向上力。
如果我们将注意力限制在通过最大似然来工作的深层生成模型上,我们可以通过对比几种模型计算可能性及其梯度的方法,或者这些量的近似值,来比较它们。正如前面提到的,这些模型中有许多经常与除最大似然外的其他原则一起使用,但是我们可以检查每个模型的最大似然变体,以减少方法之间令人分心的差异。按照这种方法,我们构建了如图9所示的分类法。这棵分类树上的每一片叶子都有其优缺点。GANs的设计避免了树中已有节点存在的许多缺点,但也引入了一些新的缺点。
图9:图9:通过极大似然原则可以学习的深层生成模型在表示或近似似然的方式上有所不同。在该分类树的左分支上,模型构造了一个显式密度 p m o d e l ( x ; θ ) p_{model}(x;\theta) pmodel(x;θ),因此一个显式的可能性,可以最大化。在这些显式的密度模型中,密度可能在计算上是可处理的,也可能是难以处理的,这意味着为了使可能性最大化,有必要进行变分逼近或蒙特卡罗逼近(或两者兼而有之)。在树的右分支上,模型没有显式地表示数据所在空间上的概率分布。相反,该模型提供了一种与这种概率分布不太直接交互的方式。通常,与概率分布交互的间接方法是从中抽取样本的能力。其中一些隐式模型提供了使用马尔可夫链从分布中取样的能力;该模型定义了一种随机转换现有样本的方法,以便从相同的分布中获得另一个样本。其他人能够在不需要任何输入的情况下,在单个步骤中生成示例。虽然GANs所使用的模型有时可以用来定义一个显式的密度,但是GANs的训练算法只利用模型s生成样本的能力。因此,GANs使用来自树最右边叶子的策略进行训练:使用一个隐式模型,该模型直接从模型所表示的分布中采样。
在图9所示的分类法的左分支中,是定义了显式密度函数 p m o d e l ( x ; θ ) p_{model}(x;\theta) pmodel(x;θ)的模型。对于这些模型,似然的最大值化很简单;我们只需将密度函数的模型s定义代入似然表达式中,然后沿着梯度向上。显式密度模型存在的主要困难是设计一个模型,该模型可以捕获要生成的数据的所有复杂性,同时仍然保持计算的可跟踪性。应对这一挑战有两种不同的策略:(1)仔细构建模型,如2.3.1节所述,模型的结构保证其可跟踪性;(2)模型允许对允许对其似然和梯度可以逼近,近似,如2.3.2节所述。
在图9的分类树的最左边的叶子中是定义了一个显式的密度函数的模型,该函数在计算上是可处理的。目前有两种流行的方法来处理可处理的显式密度模型:完全可见的信念网络和非线性独立分量分析。
完全可见的信念网络 完全可见的信念网络(Frey et al., 1996;FVBNs是利用概率链式法则将n维向量x上的概率分布分解为一维概率分布的乘积的模型。
在撰写本文时,FVBNs是生成建模的三种最流行的方法之一,与GANs和变分自编码器一起。它们构成了DeepMind复杂生成模型的基础,如WaveNet (Oord et al., 2016)。WaveNet能够生成逼真的人类语音。FVBNs的主要缺点是每次必须生成一个条目:首先是x1,然后是x2,等等,所以生成一个样本的成本是O(n)。在现代的fvbn(如WaveNet)中,每个xi上的分布是由一个深度神经网络计算的,因此这n个步骤中的每一步都涉及大量的计算。此外,这些步骤不能并行化。因此WaveNet需要两分钟的计算时间来生成一秒钟的音频,目前还不能用于交互式对话。GANs被设计成能够并行生成所有x,从而提高生成速度
非线性独立分量分析
。。。没看懂------
总之,定义显式的、可处理的密度的模型是非常有效的,因为它们允许直接对训练数据的log-likelihood使用优化算法。然而,提供可处理密度的模型家族是有限的,不同的家族有不同的缺点。
为了避免具有可处理的密度函数模型的设计要求所带来的一些缺点,已经开发了其他模型,这些模型仍然提供显式的密度函数,但使用的是难以处理的密度函数,需要使用近似来最大化可能性。这些方法大致可分为两类:一类是使用确定性近似(几乎总是表示变分方法),另一类是使用随机近似(表示马尔可夫链蒙特卡罗方法)。
变分近似变分方法定义了一个下界
L ( x ; θ ) ≤ log p m o d e l ( x ; θ ) ( 7 ) L(x;\theta)\leq \log p_{model}(x;\theta) \qquad (7) L(x;θ)≤logpmodel(x;θ)(7)
一个最大化L的学习算法保证至少能获得与L一样高的对数似然值。对于许多模型族,即使在对数似然不存在的情况下,也有可能定义一个计算上可处理的L。目前,在深度生成模型中最流行的变分学习方法是变分自编码器(Kingma, 2013;Rezende et al., 2014) or VAE。变分自编码器是三种深入生成建模方法之一,在本文写作时是最流行的,另外两种是FVBNs和GANs。变分方法的主要缺点是,当太弱的近似后验分布或太弱先验分布,2即使有一个完美的优化算法和无限的训练数据,L和真实之间的差距可能会导致 p m o d e l p_{model} pmodel学习到真正 p d a t a p_{data} pdata以外的东西。GANs被设计成无偏的,在一个足够大的模型和无限的数据的意义上,一个GANs博弈的纳什均衡对应于准确地恢复 p d a t a p_{data} pdata。在实际应用中,变分方法往往得到很好的似然性,但被认为是产生较低质量的样本。目前还没有一个很好的定量测量样品质量的方法,所以这只是一个主观的观点,而不是一个经验的事实。图11显示了从VAE中抽取的一些示例。虽然很难指出GAN设计的一个方面并说它能产生更好的样品质量,但一般认为GANs能产生更好的样品。与FVBNs相比,VAEs被认为更难优化,但GANs在这方面并没有改善。有关变分近似的更多信息,请参见Goodfellow等人(2016)的第19章。
马尔可夫链近似 大多数深度学习算法都是利用某种形式的随机逼近,至少是以使用少量随机选取的训练实例的形式,形成一个用于最小化期望损失的小批量。通常,只要能够快速生成一个公平的样本(例如,从训练集中选择一个示例是一种廉价的操作),并且样本间的方差不太高,基于抽样的近似就可以很好地工作。有些模型需要使用马尔可夫链技术生成更昂贵的样本。马尔可夫链是通过反复绘制样本x 0 q(x 0 | x)来生成样本的过程,通过根据过渡算子q对x进行反复更新,马尔可夫链方法有时可以保证x最终收敛于pmodel(x)中的样本。不幸的是,这种收敛速度可能非常慢,而且没有明确的方法来测试链是否已经收敛,因此在实践中,我们经常过早地使用x,在它真正收敛为pmodel中的一个公平样本之前。在高维空间中,马尔可夫链的效率降低。玻尔兹曼机器(Fahlman et al., 1983;Ackley等,1985;Hinton等,1984;Hinton和Sejnowski(1986)是一组生成模型,它们依赖于Markov链来训练模型或从模型生成样本。玻尔兹曼机器是2006年开始的深度学习复兴的重要组成部分(Hinton et al., 2006;但是它们现在很少被使用,可能主要是因为底层的马尔可夫链近似技术还没有扩展到像ImageNet生成这样的问题。此外,即使马尔可夫链方法的可扩展性足够好,可以用于训练,但与单步生成方法相比,使用马尔可夫链从训练模型生成样本是不可取的,因为多步马尔可夫链方法具有较高的计算成本。由于这些原因,GANs被设计成避免使用马尔可夫链。有关马尔可夫链蒙特卡罗近似的更多信息,请参见Goodfellow等人(2016)的第18章。有关玻尔兹曼机器的更多信息,请参见同一本书的第20章。一些模型同时使用变分和马尔可夫链近似。例如,deep Boltzmann机器利用了这两种近似(Salakhutdinov和Hinton, 2009)。
有些模型甚至不需要显式定义密度函数就可以训练。相反,这些模型提供了一种方法来训练模型,同时只与pmodel进行间接交互,通常是从pmodel中取样。这些构成了图9中描述的生成模型分类的右边的第二个分支。
其中一些隐式模型基于从pmodel中抽取样本,定义了一个马尔可夫链转换算子,必须运行几次才能从模型中获得样本。其中最主要的例子是生成随机网络(Bengio et al., 2014)。正如第2.3.2节所讨论的,马尔可夫链通常无法扩展到高维空间,并且增加了使用生成模型的计算成本。GANs 16的设计就是为了避免这些问题。最后,分类树最右边的叶子是隐式模型家族,它可以在一个步骤中生成一个样本。在引入GANs时,GANs是这个家族中唯一值得注意的成员,但从那时起,基于核化矩匹配的其他模型加入了GANs (Li et al., 2015;Dziugaite等,2015)。
综上所述,GANs的设计是为了避免与其他生成模型相关的许多缺点:
甘斯的基本思想是在两个玩家之间建立一个游戏。其中一个叫做发电机。生成器创建的示例将来自与训练数据相同的分布。另一个玩家是鉴别者。鉴别器检查样品以确定它们是真的还是假的。鉴别器使用传统的监督学习技术,将输入分为两类(真假)。这个发生器被训练用来欺骗鉴别器。我们可以把生产者想象成一个伪钞制造者,试图制造假币,而鉴别者则像警察一样,试图允许合法货币流通,并抓住伪钞。为了在这个游戏中取得成功,伪造者必须学会制造与真金白银难以区分的货币,而生成器网络必须学会从与训练数据相同的分布中抽取样本。这个过程如图12所示。在形式上,GANs是一个包含潜在变量z和观测变量x的结构化概率模型(Goodfellow et al.(2016)第16章为结构化概率模型介绍),其图结构如图13所示。游戏中的两个参与者由两个函数表示,每个函数的输入和参数都是可微的。的鉴别器是一个函数D x作为输入,并使用θ(D)作为参数。发电机被定义为一个函数G, z作为输入,并使用θ(G)作为参数。两个参与方都具有根据两个参与方参数定义的成本函数。鉴频器希望最小化J (D)θ(D),θ(G),必须在控制只有θ(D)。发电机希望最小化J (G)θ(D),θ(G),必须在控制只有θ(G)。因为每个玩家的成本取决于其他玩家的参数,但是每个玩家不能控制其他玩家的参数,所以这个场景最直接的描述为一个游戏而不是一个优化问题。优化问题的解是(局部)极小值,即参数空间中所有相邻点的代价都大于或等于的点。博弈的解是纳什均衡。这里,我们使用局部微分纳什均衡的术语(Ratliff et al., 2013)。在这种背景下,纳什均衡是一个元组(θ(D),θ(G))这是一个局部最小值的J (D)对θ(D)和局部最小值的J (G)对θ(G
发电机发电机只是一个可微函数G。当z从一个简单的先验分布中采样时,G(z)从pmodel中得到一个x的样本。通常,使用深度神经网络表示G。注意,函数G的输入不需要与深度神经网络第一层的输入对应;可以在整个网络的任何位置提供输入。例如,我们可以将z分成两个向量z(1)和z(2),然后将z(1)作为输入输入到神经网络的第一层,并将z(2)添加到神经网络的最后一层。如果z(2)是高斯的,则使得x在给定z(1)的条件下是高斯的。另一种常用的策略是将加性或乘性噪声应用于隐层,或将噪声连接到神经网络的隐层。总的来说,我们看到对生成器网络的设计几乎没有什么限制。如果我们想要pmodel在x空间上有完全的支持,我们需要z的维数至少和x的维数一样大,并且必须是可微的,但这是唯一的要求。特别要注意的是,任何可以用非线性ICA方法训练的模型都可以是一个GAN生成网络。变分自编码器的关系更为复杂;GAN框架可以训练VAE框架不能训练的一些模型,反之亦然,但是这两个框架也有很大的交集。最显著的区别是,如果依赖于标准的支持,VAEs不能在生成器的输入端有离散变量,而GANs不能在generato的输出端有离散变量
训练过程 训练过程由同时进行的SGD组成。在每个步骤中,将采样两个小批:数据集中的x值的小批和从潜在变量上的模型s先验中提取的z值的小批。同时两个梯度的步骤是:一个更新θ(D)来减少J (D)和一个更新θ(G)减少J (G)。在这两种情况下,都可以使用您选择的基于梯度的优化算法。Adam (Kingma and Ba, 2014)通常是个不错的选择。许多作者建议运行一个参与者的步骤比另一个多,但截至2016年年底,作者的观点是,在实践中效果最好的协议是同时梯度下降,每个参与者一个步骤