生成式对抗网络
友情提示:
<生成式对抗网络>论文笔记 & 代码解析可参考如下网址
http://blog.csdn.net/wspba/article/details/54582391
摘要
//整体的评说,已经把思路全说了
//总的来说,Goodfellow 等人提出来的 GAN 是通过对抗过程估计生成模型的新框架。在这种框架下,我们需要同时训练两个模型,即一个能捕获数据分布的生成模型 G 和一个能估计数据来源于真实样本概率的判别模型 D。生成器 G 的训练过程是最大化判别器犯错误的概率,即判别器误以为数据是真实样本而不是生成器生成的假样本。因此,这一框架就对应于两个参与者的极小极大博弈(minimax game)。在所有可能的函数 G 和 D 中,我们可以求出唯一均衡解,即 G 可以生成与训练样本相同的分布,而 D 判断的概率处处为 1/2,这一过程的推导与证明将在后文详细解释。
我们提出了一个通过对抗过程估计生成模型的新框架,在新框架中我们同时训练两个模型:一个用来捕获数据分布的生成模型G,和一个用来估计样本来自训练数据而不是G的概率的判别模型D,G的训练过程是最大化D产生错误的概率。这个框架相当于一个极小化极大的双方博弈。在任意函数G和D的空间中存在唯一的解,其中G恢复训练数据分布,并且D处处都等于1/2。在G和D由多层感知器定义的情况下,整个系统可以用反向传播进行训练。在训练或生成样本期间不需要任何马尔科夫链或展开的近似推理网络。 实验通过对生成的样品进行定性和定量评估来展示这个框架的潜力。
1.引言
深度学习的任务是寻找丰富的层次模型,能够在人工智能领域里用来表达各种数据的概率分布,例如自然图像,包含语音的音频波形和自然语言语料库中的符号等。到目前为止,在深度学习领域,目前为止最成功的的模型之一就是判别式模型,通常它们将高维丰富的感知器输入映射到类标签上。这些显著的成功主要是基于反向传播和丢弃算法来实现的,特别是具有特别良好梯度的分段线性单元。由于在最大似然估计和相关策略中出现的许多难以解决的概率计算的困难,以及很难利用在生成上下文中时使用分段线性单元的好处,深度生成模型的影响很小。我们提出一个新的生成模型估计程序,来分步处理这些难题。
//介绍D与G
在提到的对抗网络框架中,生成模型对抗着一个对手:一个学习去判别一个样本是来自模型分布还是数据分布的判别模型。生成模型可以被认为是一个伪造团队,试图产生假币并在不被发现的情况下使用它,而判别模型类似于警察,试图检测假币。在这个游戏中的竞争驱使两个团队改进他们的方法,直到真假难分为止。
这个框架可以针对多种模型和优化算法提供特定的训练算法。在这篇文章中,我们探讨了生成模型通过将随机噪声传输到多层感知机来生成样本的特例,同时判别模型也是通过多层感知机实现的。我们称这个特例为对抗网络。在这种情况下,我们可以仅使用非常成熟的反向传播和丢弃算法训练两个模型,生成模型在生成样本时只使用前向传播算法。并且不需要近似推理和马尔可夫链作为前题。
2.相关工作
//感觉重要性不是很强,第一遍读先略过;原论文中有个公式,之后要研究一下
含隐变量的有向图模型可以由含隐变量的无向图模型替代,例如受限制波兹曼机(RBMs),深度波兹曼机(DBMs)和它们很多的变种。这些模型之间的相互影响可以被表达为非标准化的势函数的乘积,再通过随机变量的所有状态的全局整合来标准化。这个数量(配分函数)和它的梯度的估算是很棘手的,尽管他们能够依靠马尔可夫链和蒙特卡罗(MCMC)算法来估计,同时依靠MCMC的学习算法的混合也会引发一个严重的问题。
深度信念网络(DBNs)是一个包含一个无向层和若干有向层的混合模型。当使用一个快速近似的逐层训练法则时,DBNs 会引发无向模型和有向模型相关的计算难题。
不受对数似然函数估计或约束的替代准则已经被提出来了,例如分数匹配和噪音压缩评估(NCE)。这些都需要先验概率密度来分析指定一个规范化的常量。应该注意的是许多有趣的带有一些隐层变量的生成模型(如DBNs和DBMs),它们甚至不需要一些难以处理的非标准化的概率密度先验知识。一些模型如自动编码降噪机和压缩编码的学习准则与分数匹配在RBMs上的应用非常相似。在NCE中,as in this work,使用一个判别训练准则来拟合一个生成模型。然而,生成模型常常被用来判别从一个固定噪音分布中抽样生成的数据,而不是拟合一个独立的判别模型。由于NCE使用一个固定的噪音分布,仅仅是从观测变量的一个小子集中学习到一个大致正确的分布后,模型的学习便急剧减慢。
最后,一些技术并没有用来明确定义概率分布,而是用来训练一个生成器来从期望的分布中拟合出样本。这个方法优势在于这些生成器能够被设计使用反向传播算法训练。这个领域最近比较突出的工作包含生成随机网络(GSN)框架,它扩展了广义的除噪自动编码器:两者都可以看作是定义了一个参数化的马尔可夫链,即一个通过执行生成马尔科夫链的一个步骤来学习生成器参数的算法。同GSNs相比,对抗网络框架不需要使用马尔可夫链来采样。由于对抗网络在生成阶段不需要循环反馈信息,它们能够更好的利用分段线性单元,这可以提高反向传播的效率,但当使用循环反馈时却存在不受控激活的问题。大部分利用反向传播算法来训练生成器的例子包括变分贝叶斯自动编码和随机反向传播。
3.对抗网络
当模型都为多层感知机时,对抗性建模框架可以最直接地应用。为了学习到生成器在数据 x 上的分布 P_g,我们先定义一个先验的输入噪声变量 P_z(z),然后根据 G(z;θ_g) 将其映射到数据空间中,其中 G 为多层感知机所表征的可微函数。我们同样需要定义第二个多层感知机 D(s;θ_d),它的输出为单个标量。D(x) 表示 x 来源于真实数据而不是 P_g 的概率。我们训练 D 以最大化正确分配真实样本和生成样本的概率,因此我们就可以通过最小化 log(1-D(G(z))) 而同时训练 G。也就是说判别器 D 和生成器对价值函数 V(G,D) 进行了极小极大化博弈:
当模型都是多层感知器时,对抗模型框架是最直接应用的。为了学习生成器关于数据x上的分布Pg, 我们定义输入噪声的先验变量Pz(z),然后使用G(z;θg)来代表数据空间的映射,这里G是一个由含有参数θg 的多层感知机表示的可微函数。我们再定义了一个多层感知机D(x;θd)用来输出一个单独的标量。D(x) 代表x来自于真实数据分布而不是Pg的概率。我们训练D来最大化分配正确标签给来自于训练样例和由G生成的样例的概率。我们同时训练G来最小化log(1−D(G(z))):
//公式需要好好分析
换句话说,D和G的训练是关于值函数V(G,D)的极小化极大的二人博弈问题:
公式1
在下一节中,我们提出了对抗网络的理论分析,基本上表明基于训练准则可以恢复数据生成分布,因为G和D被给予足够的容量,即在非参数极限。如图1展示了该方法的一个非正式却更加直观的解释。实际上,我们必须使用迭代数值方法来实现这个过程。在训练的内部循环中优化D到完成的计算是禁止的,并且有限的数据集将导致过拟合。相反,我们在优化D的k个步骤和优化G的一个步骤之间交替。只要G变化足够慢,就可以保证D保持在其最佳解附近。该过程如算法1所示。
实际上,方程1可能无法为G提供足够的梯度来学习。训练初期,当G的生成效果很差时,D会以高置信度来拒绝生成样本,因为它们与训练数据明显不同。在这种情况下,log(1−D(G(z)))饱和。因此我们选择最大化logD(G(z))而不是最小化log(1−D(G(z))) 来训练G,该目标函数使G和D的动力学稳定点相同,并且在训练初期,该目标函数可以提供更强大的梯度。(?梯度)
图1:训练对抗式生成网络时,同时更新判别分布(D,蓝色虚线)使D能区分数据生成分布Px(黑色虚线)中的样本和生成分布Pg (G,绿色实线) 中的样本。下面的水平线为均匀采样z的区域,上面的水平线为x的部分区域。朝上的箭头显示映射x=G(z)如何将非均匀分布Pg作用在转换后的样本上。G在Pg高密度区域收缩,且在Pg的低密度区域扩散。(a)考虑一个接近收敛的对抗的模型对:Pg与Pdata相似,且D是个部分准确的分类器。(b)算法的内循环中,训练D来判别数据中的样本,收敛到:D∗(x)=Pdata(x) /(Pdata(x)+Pg(x))。(c)在G的1次更新后,D的梯度引导G(z)流向更可能分类为数据的区域。(d)训练若干步后,如果G和D性能足够,它们接近某个稳定点并都无法继续提高性能,因为此时Pg=Pdata。判别器将无法区分训练数据分布和生成数据分布,即D(x)=1/2。
如上图所示,生成对抗网络会训练并更新判别分布(即 D,蓝色的虚线),更新判别器后就能将数据真实分布(黑点组成的线)从生成分布 P_g(G)(绿色实线)中判别出来。下方的水平线代表采样域 Z,其中等距线表示 Z 中的样本为均匀分布,上方的水平线代表真实数据 X 中的一部分。向上的箭头表示映射 x=G(z) 如何对噪声样本(均匀采样)施加一个不均匀的分布 P_g。(a)考虑在收敛点附近的对抗训练:P_g 和 P_data 已经十分相似,D 是一个局部准确的分类器。(b)在算法内部循环中训练 D 以从数据中判别出真实样本,该循环最终会收敛到 D(x)=p_data(x)/(p_data(x)+p_g(x))。(c)随后固定判别器并训练生成器,在更新 G 之后,D 的梯度会引导 G(z)流向更可能被 D 分类为真实数据的方向。(d)经过若干次训练后,如果 G 和 D 有足够的复杂度,那么它们就会到达一个均衡点。这个时候 p_g=p_data,即生成器的概率密度函数等于真实数据的概率密度函数,也即生成的数据和真实数据是一样的。在均衡点上 D 和 G 都不能得到进一步提升,并且判别器无法判断数据到底是来自真实样本还是伪造的数据,即 D(x)= 1/2。
上图表明的是GAN的生成网络如何一步步从均匀分布学习到正太分布的。
黑色的点状线代表真实的数据分布,绿色的线代表生成模型G模拟的分布,蓝色的线代表判别模型D。
a图表示初始状态
b图表示,保持G不动,优化D,直到判别模型的准确率最高
c图表示保持D不动,优化G,直到混淆程度最高
d图表示,多次迭代后,终于使得G生成的数据分布能够完全与真实的数据分布一致,而D再也鉴别不出是原始数据还是由生成模型所产生的数据,从而认为G就是真实的。
(解释:
------ the discriminative distribution (D, blue, dashed line) 蓝色的虚线 表示判别式的分布 ;
------ the data generating distribution (black, dotted line) pxpx 黑色的点线 表示 数据产生的分布 ;
------ the generative distribution pg(G)pg(G) 绿色的实线 。
------ the lower horizontal line is the domain from which z is sampled . 底部的水平线 是采样 z 的 domain
------ the horizontal line above is part of the domain of x . 上部的水平线 是 x domain 的部分 。
------ the upward arrows show the mapping x = G(z) imposes the non-uniform distribution pgpg on transformed samples. 向上的箭头展示了 mapping x = G(z),这个映射是非均匀分布 到 转换的samples。
(a)考虑一个接近收敛的 对抗 pair。pgpg 和 pdatapdata 相似;D 是一个有一定准确性的 classifier。
(b)在算法 D 的内部循环被训练用来 从数据中判断出 samples,收敛到 D∗(x)=pdata(x)pdata(x)+pg(x)D∗(x)=pdata(x)pdata(x)+pg(x) 。
(c)在更新 G 之后,D 的梯度已经引导 G(z) to flow to regions that are more likely to be classified as data.
(d)在几次训练之后,如果 G 和 D 有足够的能力,他们会达到一个平衡,使得两者都已经无法进一步的提升自我,即:pg=pdatapg=pdata 。这个时候,discriminator 已经无法判别两个分布的区别,也就是说,此时的 D(x) = 1/2 。
)
4.理论结果
理论完美的生成器
该算法的目标是令生成器生成与真实数据几乎没有区别的样本,即一个造假一流的 A,就是我们想要的生成模型。数学上,即将随机变量生成为某一种概率分布,也可以说概率密度函数为相等的:P_G(x)=P_data(x)。这正是数学上证明生成器高效性的策略:即定义一个最优化问题,其中最优生成器 G 满足 P_G(x)=P_data(x)。如果我们知道求解的 G 最后会满足该关系,那么我们就可以合理地期望神经网络通过典型的 SGD 训练就能得到最优的 G。
最优化问题
正如最开始我们了解的警察与造假者案例,定义最优化问题的方法就可以由以下两部分组成。首先我们需要定义一个判别器 D 以判别样本是不是从 P_data(x) 分布中取出来的,因此有:
其中 E 指代取期望。这一项是根据「正类」(即辨别出 x 属于真实数据 data)的对数损失函数而构建的。最大化这一项相当于令判别器 D 在 x 服从于 data 的概率密度时能准确地预测 D(x)=1,即:
另外一项是企图欺骗判别器的生成器 G。该项根据「负类」的对数损失函数而构建,即:
因为 x<1 的对数为负,那么如果最大化该项的值,则需要令均值 D(G(z))≈0,因此 G 并没有欺骗 D。为了结合这两个概念,判别器的目标为最大化:
给定生成器 G,其代表了判别器 D 正确地识别了真实和伪造数据点。给定一个生成器 G,上式所得出来的最优判别器可以表示为
(下文用 D_G*表示)。定义价值函数为:
然后我们可以将最优化问题表述为:
现在 G 的目标已经相反了,当 D=D_G*时,最优的 G 为最小化前面的等式。在论文中,作者更喜欢求解最优化价值函的 G 和 D 以求解极小极大博弈:
对于 D 而言要尽量使公式最大化(识别能力强),而对于 G 又想使之最小(生成的数据接近实际数据)。整个训练是一个迭代过程。其实极小极大化博弈可以分开理解,即在给定 G 的情况下先最大化 V(D,G) 而取 D,然后固定 D,并最小化 V(D,G) 而得到 G。其中,给定 G,最大化 V(D,G) 评估了 P_G 和 P_data 之间的差异或距离。
最后,我们可以将最优化问题表达为:
上文给出了 GAN 概念和优化过程的形式化表达。通过这些表达,我们可以理解整个生成对抗网络的基本过程与优化方法。当然,有了这些概念我们完全可以直接在 GitHub 上找一段 GAN 代码稍加修改并很好地运行它。但如果我们希望更加透彻地理解 GAN,更加全面地理解实现代码,那么我们还需要知道很多推导过程。比如什么时候 D 能令价值函数 V(D,G) 取最大值、G 能令 V(D,G) 取最小值,而 D 和 G 该用什么样的神经网络(或函数),它们的损失函数又需要用什么等等。总之,还有很多理论细节与推导过程需要我们进一步挖掘。
原翻译:当z∼Pz时,获得样本G(z),生成器G隐式的定义概率分布Pg为G(z)获得的样本的分布。因此,如果模型容量和训练时间足够大时,我们希望算法1收敛为Pdata的良好估计量。本节的结果是在非参数设置下完成的,例如,我们通过研究概率密度函数空间中的收敛来表示具有无限容量的模型。
我们将在4.1节中显示,这个极小极大问题的全局最优解为Pg=Pdata。我们将在4.2节中展示使用算法1来优化等式1,从而获得期望的结果。
//minibatch见https://blog.csdn.net/tealex/article/details/78804360
算法1.生成对抗网络的minibatch随机梯度下降训练。判别器的训练步数,k是一个超参数。在我们的试验中使用k=1,使消耗最小。
重述训练过程
下面是推导的最后一步,我们会重述整个参数优化过程,并简要介绍实际训练中涉及的各个过程。
1.参数优化过程
若我们需要寻找最优的生成器,那么给定一个判别器 D,我们可以将 maxV(G,D) 看作训练生成器的损失函数 L(G)。既然设定了损失函数,那么我们就能使用 SGD、Adam 等优化算法更新生成器 G 的参数,梯度下降的参数优化过程如下:
其中求 L(G) 对θ_G 的偏导数涉及到求 max{V(G,D)} 的偏导数,这种对 max 函数求微分的方式是存在且可用的。
现在给定一个初始 G_0,我们需要找到令 V(G_0,D) 最大的 D_0*,因此判别器更新的过程也就可以看作损失函数为-V(G,D) 的训练过程。并且由前面的推导可知,V(G,D) 实际上与分布 P_data(x) 和 P_G(x) 之间的 JS 散度只差了一个常数项。因此这样一个循环对抗的过程就能表述为:
给定 G_0,最大化 V(G_0,D) 以求得 D_0*,即 max[JSD(P_data(x)||P_G0(x)];
固定 D_0*,计算θ_G1 ← θ_G0 −η(dV(G,D_0*) /dθ_G) 以求得更新后的 G_1;
固定 G_1,最大化 V(G_1,D_0*) 以求得 D_1*,即 max[JSD(P_data(x)||P_G1(x)];
固定 D_1*,计算θ_G2 ← θ_G1 −η(dV(G,D_0*) /dθ_G) 以求得更新后的 G_2;
。。。
2.实际训练过程
根据前面价值函数 V(G,D) 的定义,我们需要求两个数学期望,即 E[log(D(x))] 和 E[log(1-D(G(z)))],其中 x 服从真实数据分布,z 服从初始化分布。但在实践中,我们是没有办法利用积分求这两个数学期望的,所以一般我们能从无穷的真实数据和无穷的生成器中做采样以逼近真实的数学期望。
若现在给定生成器 G,并希望计算 maxV(G,D) 以求得判别器 D,那么我们首先需要从 P_data(x) 采样 m 个样本 {x^1,x^2,…,x^m},从生成器 P_G(x) 采样 m 个样本
。因此最大化价值函数 V(G,D) 就可以使用以下表达式近似替代:
若我们需要计算上述的极大化过程,可以采用等价形式的训练方法。若我们有一个二元分类器 D(参数为 θ_d),当然该分类器可以是深度神经网络,那么极大化过程的输出就为该分类器 D(x)。现在我们从 P_data(x) 抽取样本作为正样本,从 P_G(x) 抽取样本作为负样本,同时将逼近负 V(G,D) 的函数作为损失函数,因此我们就将其表述为一个标准的二元分类器的训练过程:
在实践中,我们必须使用迭代和数值计算的方法实现极小极大化博弈过程。在训练的内部循环中完整地优化 D 在计算上是不允许的,并且有限的数据集也会导致过拟合。因此我们可以在 k 个优化 D 的步骤和一个优化 G 的步骤间交替进行。那么我们只需慢慢地更新 G,D 就会一直处于最优解的附近,这种策略类似于 SML/PCD 训练的方式。
综上,我们可以描述整个训练过程,对于每一次迭代:
从真实数据分布 P_data 抽取 m 个样本
从先验分布 P_prior(z) 抽取 m 个噪声样本
将噪声样本投入 G 而生成数据
,通过最大化 V 的近似而更新判别器参数θ_d,即极大化
,且判别器参数的更新迭代式为
以上是学习判别器 D 的过程。因为学习 D 的过程是计算 JS 散度的过程,并且我们希望能最大化价值函数,所以该步骤会重复 k 次。
从先验分布 P_prior(z) 中抽取另外 m 个噪声样本 {z^1,...,z^m}
通过极小化 V^tilde 而更新生成器参数θ_g,即极大化
,且生成器参数的更新迭代式为
以上是学习生成器参数的过程,这一过程在一次迭代中只会进行一次,因此可以避免更新太多而令 JS 散度上升。
4.1全局最优:Pg=Pdata
首先任意给定生成器G,考虑最优判别器D。
命题1.固定G,最优判别器D为:
公式2
证明.给定任意生成器G,判别器D的训练标准为最大化目标函数V(G,D)数量
//这里的推导存在的问题
下面,我们必须证明该最优化问题有唯一解 G*,并且该唯一解满足 P_G=P_data。不过在开始推导最优判别器和最优生成器之前,我们需要了解 Scott Rome 对原论文推导的观点,他认为原论文忽略了可逆条件,因此最优解的推导不够完美。
在 GAN 原论文中,有一个思想和其它很多方法都不同,即生成器 G 不需要满足可逆条件。Scott Rome 认为这一点非常重要,因为实践中 G 就是不可逆的。而很多证明笔记都忽略了这一点,他们在证明时错误地使用了积分换元公式,而积分换元却又恰好基于 G 的可逆条件。Scott 认为证明只能基于以下等式的成立性:
该等式来源于测度论中的 Radon-Nikodym 定理,它展示在原论文的命题 1 中,并且表达为以下等式:
我们看到该讲义使用了积分换元公式,但进行积分换元就必须计算 G^(-1),而 G 的逆却并没有假定为存在。并且在神经网络的实践中,它也并不存在。可能这个方法在机器学习和统计学文献中太常见了,因此我们忽略了它。
公式3
对于任意的(a,b)∈R^2∖{0,0},函数y→alog(y)+blog(1−y)在[0,1]中的a/(a+b) 处达到最大值。无需在Supp(Pdata)∪Supp(Pg)外定义判别器,证毕。
注意到,判别器D的训练目标可以看作为条件概率P(Y=y|x)的最大似然估计,当y=1时,x来自于Pdata;当y=0时,x来自Pg。公式1中的极小化极大问题可以变形为:
公式4
定理1.当且仅当Pg=Pdata时,C(G)达到全局最小。此时,C(G)的值为−log4。
证明.Pg=Pdata时,D∗G(x)=1/2(公式2)。再根据公式4可得,当D∗G(x)=1/2时,C(G)=log1/2+log1/2=−log4。为了看仅当Pg=Pdata时C(G)是否是最优的,观测:
然后从C(G)=V(D∗G,G)减去上式,可得:
公式5
其中KL为Kullback–Leibler散度。我们在之前的表达式中识别出了模型分布和数据生成过程之间的Jensen–Shannon散度:
公式6
由于两个分布之间的Jensen–Shannon散度总是非负的,并且当两个分布相等时,值为0。因此C∗=−log(4)为C(G)的全局极小值,并且唯一解为Pg=Pdata,即生成模型能够完美的复制数据的生成过程。
4.2算法1的收敛性
现在,该论文的主要部分已经得到了证明:即 P_G=P_data 为 maxV(G,D) 的最优点。此外,原论文还有额外的证明表示:给定足够的训练数据和正确的环境,训练过程将收敛到最优 G。
命题2.如果G和D有足够的性能,对于算法1中的每一步,给定G时,判别器能够达到其最优,并且通过更新Pg来提高这个判别准则,则Pg收敛于Pdata。(指最后能得到想要的结果)
实际上,对抗网络通过函数G(z;θg)表示一个有限的Pg分布族,我们优化θg而不是Pg本身。使用多层感知器来定义G引入参数空间中的多个关键点。然而,多层感知器在实践中的优异表现表明,尽管缺乏理论保证,它们仍是一个合理的可用模型。
5.实验
我们在一系列包括MNIST、多伦多面孔数据库(TFD)和CIFAR-10的数据集上来训练对抗网络。生成器网络使用的激活函数包括修正线性激活(ReLU)和sigmoid 激活,而判别器网络使用maxout激活。Dropout被用于训练判别器网络。虽然我们的理论框架可以在生成器的中间层使用dropout和其他噪声,但是这里仅在生成器网络的最底层使用噪声输入。
我们通过对G生成的样本应用高斯Parzen窗口并计算此分布下的对数似然,来估计测试集数据的概率。高斯的σ参数通过对验证集的交叉验证获得。Breuleux等人引入该过程且用于不同的精确似然难以处理的生成模型上。结果显示在表1中。该方法估计似然的方差较大且在高维空间中表现不好,但据我们所知却是目前最有效的办法。生成模型的优点是可采样而不直接估计似然,从而促进了对如何评估该模型的进一步研究。
表1:基于Parzen窗口的对数似然估计。MNIST上报告的数字是测试集上的平均对数似然以及在样本上平均计算的标准误差。在TFD上,我们计算数据集的不同折之间的标准误差,在每个折的验证集上选择不同的σ。在TFD上,在每一个折上对σ进行交叉验证并计算平均对数似然函数。对于MNIST,我们与真实值(而不是二进制)版本的数据集的其他模型进行比较。
训练后的生成样本如下图2、图3所示。虽然未声明该方法生成的样本优于其它方法生成的样本,但我们相信这些样本至少和文献中更好的生成模型相比依然具有竞争力,也突出了对抗框架的潜力。
图2:来自模型的样本可视化。最右边的列示出了相邻样本的最近训练示例,以便证明该模型没有记住训练集。样本是完全随机抽取,而并非精心挑选的。与其他大多数深度生成模型的可视化不同,这些图像显示来自模型分布的实际样本,not conditional means given samples of hidden units.此外,这些样本是不相关的,因为,采样过程并不依赖马尔科夫链混合。a) MNIST;b) TFD;c) CIFAR-10(全连接模型);d) CIFAR-10(卷积判别器和“解卷积”生成器)
图3:通过在完整模型的z空间的坐标之间进行线性内插获得的数字。
6.优点和缺点
这个新框架相比以前的建模框架有其优缺点。缺点主要是Pg(x)的隐式表示,而且在训练期间,D和G必须很好地同步(特别地,不更新D时G不必过度训练,为避免“Helvetica情景”。否则,x值相同时 G丢失过多z值 以至于模型Pdata多样性不足,正如玻尔兹曼机的负向链在学习步骤间的必须持续不断地更新。其优点是无需马尔科夫链,仅用反向传播来获得梯度,学习间无需推理,且模型中可融入多种函数。表2总结了生成对抗网络与其他生成建模方法的比较。
表2:生成建模中的挑战:对涉及模型的每个主要操作的深度生成建模的不同方法遇到的困难的总结。
7.结论与未来工作
该框架允许许多直接的扩展:
1.条件生成模型p(x∣c)可以通过将c作为G和D的输入来获得。
2.给定x,可以通过训练一个辅助网络来学习近似推理以预测z。这和wake-sleep算法训练出的推理网络类似,但是它具有一个优势,就是在生成器网络训练完成后,这个推理网络可以针对固定的生成器网络进行训练。
3.能够用来近似模拟所有的条件概率p(xS∣xS̸),其中S是通过训练共享参数的条件模型簇的关于x索引的一个子集。本质上,可以使用生成对抗网络来随机拓展确定的MP-DBM。
4.半监督学习:当标签数据有限时,判别网络或推理网络的特征会提高分类器效果。
5.效率改善:为协调G和D设计更好的方法或训练期间确定更好的分布来采样z,能够极大的加速训练。
本文已经展示了对抗建模框架的可行性,表明这些研究方向是有用的。
//如今衍生的不同的GAN:https://www.cnblogs.com/shouhuxianjian/p/7795115.html