论文原文地址:https://arxiv.org/pdf/1406.2661
翻译:Generative Adversarial Nets 生成对抗网络
0. 摘要
提出了一种新的对抗过程估计生成模型的框架,其中我们同时训练两个模型:一个是捕获数据分布的生成模型G,另一个是估计样本来自训练数据而不是G的概率的判别模型D。G 的训练程序是最大化 D 犯错的概率。该框架对应于 minimax 双人游戏。在任意函数 G 和 D 的空间中,存在一个唯一的解,其中 G 恢复训练数据分布,D 在所有地方都等于1/2。在G和D由多层感知器定义的情况下,整个系统可以通过反向传播进行训练。在训练或生成样本期间,不需要任何马尔可夫链或展开的近似推理网络。实验通过对生成的样本进行定性和定量评估,证明了该框架的潜力。
1. 简介
深度学习的前景是发现丰富的分层模型 [2],这些模型表示人工智能应用中遇到的各种数据的概率分布,例如自然图像、包含语音的音频波形和自然语言语料库中的符号。到目前为止,深度学习中最引人注目的成功涉及判别模型,通常是那些将高维、丰富的感官输入映射到类标签的模型[14,22]。这些引人注目的成功主要是基于反向传播和丢弃算法,使用分段线性单元 [19, 9, 10],这些单元具有特别良好的梯度。由于难以对最大似然估计和相关策略中出现的许多棘手的概率计算进行近似,并且由于在生成环境中难以利用分段线性单元的优势,深度生成模型的影响较小。我们提出了一种新的生成模型估计程序,可以规避这些困难1。
在所提出的对抗性网络框架中,生成模型与对抗性模型进行对抗:一种判别模型,它学习确定样本是来自模型分布还是数据分布。生成模型可以被认为是类似于一个造假者团队,试图制造假币并在不被发现的情况下使用它,而判别模型则类似于警察,试图检测假币。这场比赛的竞争促使两支球队都改进他们的方法,直到假冒产品与正品无法鉴别出来。
该框架可以为多种模型和优化算法生成特定的训练算法。在本文中,我们探讨了生成模型通过将随机噪声传递多层感知器来生成样本的特殊情况,并且判别模型也是一个多层感知器。我们将这种特殊情况称为对抗性网络。在这种情况下,我们可以只使用非常成功的反向传播和丢弃算法[17]来训练这两个模型,而只使用前向传播来从生成模型中采样。不需要近似推理或马尔可夫链。
2. 相关工作
具有潜在变量的有向图形模型的替代方案是具有潜在变量的无向图形模型,例如受限玻尔兹曼机(RBM)[27,16],深度玻尔兹曼机(DBMs)[26]及其众多变体。此类模型中的交互作用表示为非归一化势函数的乘积,通过对随机变量的所有状态进行全局求和/积分进行归一化。这个量(分割函数)及其梯度对于除了最微不足道的实例之外的所有实例都是棘手的,尽管它们可以通过马尔可夫链蒙特卡洛 (MCMC) 方法估计。对于依赖MCMC的学习算法来说,混合是一个重大问题[3,5]。
深度置信网络(DBN)[16]是包含单个无向层和多个有向层的混合模型。虽然存在快速近似的逐层训练准则,但 DBN 会产生与无向和有向模型相关的计算困难。
此外,还提出了不近似或约束对数似然的替代标准,如分数匹配[18]和噪声对比估计(NCE)[13]。这两者都要求对学习的概率密度进行解析指定,直至达到归一化常数。请注意,在许多具有多层潜在变量(例如 DBN 和 DBM)的有趣的生成模型中,甚至无法导出易于处理的非归一化概率密度。一些模型,如去噪自动编码器[30]和收缩自编码器,其学习规则与应用于RBM的分数匹配非常相似。在 NCE 中,与这项工作一样,采用判别性训练标准来拟合生成模型。然而,生成模型本身不是拟合单独的判别模型,而是用于从固定噪声分布的样本中区分生成的数据。由于 NCE 使用固定的噪声分布,因此在模型学习了观察到的变量的一小部分近似正确的分布后,学习速度会急剧减慢。
最后,一些技术不涉及显式定义概率分布,而是训练生成机器从所需的分布中抽取样本。这种方法的优点是,这种机器可以设计为通过反向传播进行训练。该领域最近突出的工作包括生成随机网络(GSN)框架[5],该框架扩展了广义去噪自动编码器[4]:两者都可以看作是定义了一个参数化的马尔可夫链,即学习执行生成马尔可夫链一步的机器的参数。与GSN相比,对抗网络框架不需要马尔可夫链进行采样。由于对抗网络在生成过程中不需要反馈环路,因此它们能够更好地利用分段线性单元[19,9,10],这提高了反向传播的性能,但在反馈环路中使用时存在无界激活问题。通过反向传播来训练生成机的最新例子包括最近关于自动编码变分贝叶斯[20]和随机反向传播[24]的工作。
3 对抗网络
当模型都是多层感知器时,对抗建模框架的应用最简单。为了学习生成器在数据 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) 玩以下双人 minimax 游戏
在下一节中,我们将对对抗网络进行理论分析,基本上表明,当G和D被赋予足够的容量时,即在非参数限制中,训练准则允许人们恢复数据生成分布。请参阅图 1,了解该方法的不那么正式、更具教学意义的解释。在实践中,我们必须使用迭代的数值方法实现游戏。在训练的内循环中优化 D 以完成在计算上是令人望而却步的,并且在有限的数据集上会导致过拟合。取而代之的是,我们在优化 D 的 k 个步骤和优化 G 的一个步骤之间交替进行。这导致 D 保持在最优解附近,只要 G 变化足够慢。这种策略类似于SML/PCD [31, 29]训练从一个学习步骤到下一个学习步骤保持马尔可夫链的样本,以避免在马尔可夫链中作为学习内部循环的一部分燃烧。该过程在算法 1 中正式提出。
在实践中,等式 1 可能无法为 G 提供足够的梯度来很好地学习。在学习的早期,当 G 较差时,D 可以高置信度地拒绝样本,因为它们与训练数据明显不同。在本例中,log(1 − D(G(z))) 饱和。我们可以训练 G 以最大化对数 D(G(z)),而不是训练 G 以最小化 log(1 − D(G(z)))。这个目标函数导致 G 和 D 的动力学具有相同的固定点,但在学习早期提供了更强的梯度。
Figure 1:生成对抗网络通过同时更新判别分布(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进行更新后,D的梯度引导G(z)流向更有可能被归类为数据的区域。(d) 经过几个步骤的训练,如果 G 和 D 有足够的能力,他们将达到一个点,在这个点上,由于 pg = pdata,两者都无法提高。判别器无法区分两种分布,即 D(x) = 1 2
4. 理论结果
生成器 G 隐式地将概率分布 pg 定义为当 z ∼ pz 时获得的样本 G(z) 的分布。因此,如果有足够的容量和训练时间,我们希望算法 1 能够收敛到 pdata 的良好估计器。本节的结果是在非参数设置中完成的,例如,我们通过研究概率密度函数空间中的收敛性来表示具有无限容量的模型。
我们将在第 4.1 节中展示这个 minimax 博弈对 pg = pdata 具有全局最优值。然后,我们将在第 4.2 节中展示算法 1 优化了方程 1,从而获得了所需的结果。
4.1 Global Optimatlity of Pg = Pdata
我们首先考虑任何给定生成器 G 的最优判别器 D
命题 1.对于G固定,最优判别器D为:
证明。给定任何生成器 G,判别器 D 的训练标准是最大化数量 V (G, D)
对于 R 2 {0, 0} ∈任何 (a, b) 函数 y,→ log(y) + b log(1 − y) 的函数 y 在 [0, 1] 的 a+b 处达到最大值。鉴别器不需要在 Supp(pdata) ∪ Supp(pg) 之外定义,从而得出证明结论。
请注意,D 的训练目标可以解释为最大化估计条件概率 P(Y = y|x) 的对数似然,其中 Y 表示 x 是来自 pdata(y = 1)还是来自 pg(y = 0)。方程 1 中的极小最大值博弈现在可以重新表述为:
定理 1.当且仅当 pg = pdata 时,才达到虚拟训练准则 C(G) 的全局最小值。此时,C(G) 实现值 − log 4
证明。对于pg = pdata,D∗ G(x) = 1 2 ,(考虑方程2)。因此,通过在D∗ G(x) = 1 2处检查方程4,我们发现C(G) = log 1 2 + log 1 2 = − log 4。要看到这是 C(G) 的最佳可能值,仅在 pg = pdata 时达到,请注意
通过从 C(G) = V (D∗ G, G) 中减去这个表达式,我们得到:
其中 KL 是 Kullback-Leibler 背离。在前面的表达式中,我们认识到模型的分布和数据生成过程之间的 Jensen-Shannon 背离:
由于两个分布之间的 Jensen-Shannon 散度始终是非负的,并且仅在它们相等时为零,因此我们已经证明 C ∗ = − log(4) 是 C(G) 的全局最小值,唯一的解是 pg = pdata,即完美复制数据生成过程的生成模型。
4.2 算法 1 的收敛性
命题 2. 如果 G 和 D 有足够的容量,并且在算法 1 的每一步中,允许判别器达到给定 G 的最优值,并更新 pg 以改进标准。
然后 PG 收敛到 PDATA。
证明。考虑 V (G, D) = U(pg, D) 作为 pg 的函数,如上述标准所示。请注意,U(pg, D) 在 pg 中是凸的。凸函数上部的子导数包括函数在达到最大值的点处的导数。换句话说,如果 f(x) = supα∈A fα(x) 且 fα(x) 每α在 x 上凸起,则 ∂fβ(x) ∈ ∂f if β = arg supα∈A fα(x)。这相当于在给定相应的G时计算pg在最优D处的梯度下降更新。 supD U(pg, D)在pg中是凸的,具有唯一的全局最优,如Thm 1所示,因此,如果pg的更新足够小,pg会收敛到px,从而得出证明结论。
在实践中,对抗网络通过函数 G(z; θg) 表示有限的 pg 分布族,我们优化 θg 而不是 pg 本身。使用多层感知器定义 G 会在参数空间中引入多个临界点。然而,多层感知器在实践中的优异性能表明,尽管缺乏理论保证,但它们是一个合理的模型。
5 实验
我们训练了一系列数据集对抗网络,包括MNIST[23]、多伦多人脸数据库(TFD)[28]和CIFAR-10 [21]。生成器网络混合使用 校正(rectifier) 线性激活 [19, 9] 和 sigmoid 激活,而鉴别器网络使用 maxout [10] 激活。Dropout [17] 被应用于训练鉴别器网络。虽然我们的理论框架允许在生成的中间层使用压差和其他噪声,但我们只使用噪声作为生成网络最底层的输入。
我们通过将高斯Parzen窗口拟合到用G生成的样本并报告此分布下的对数似然来估计pg下测试集数据的概率。σ 参数的高斯量是通过在验证集上的交叉验证得到的。该程序在Breuleux等[8]中引入,并用于各种生成模型,这些模型的确切可能性难以处理[25,3,5]。结果见表1。这种估计可能性的方法具有一定的方差,在高维空间中表现不佳,但它是我们所知的最佳方法。可以抽样但不能估计可能性的生成模型的进步直接推动了对如何评估此类模型的进一步研究。
在图 2 和图 3 中,我们显示了训练后从生成器网络中抽取的样本。虽然我们没有声称这些样本比现有方法生成的样本更好,但我们认为这些样本至少与文献中更好的生成模型具有竞争力,并突出了对抗框架的潜力。
6. 优点和缺点
与以前的建模框架相比,这个新框架具有优点和缺点。缺点主要是没有明确表示 pg(x),并且在训练过程中 D 必须与 G 很好地同步(特别是,在不更新 D 的情况下,不能对 G 进行过多的训练,以避免“Helvetica 场景”,其中 G 将太多的 z 值折叠为相同的 x 值,以具有足够的多样性来建模 pdata), 就像玻尔兹曼机的负链必须在学习步骤之间保持最新一样。优点是永远不需要马尔可夫链,只使用反向支撑来获取梯度,在学习过程中不需要推理,并且可以将各种各样的函数合并到模型中。表 2 总结了生成对抗网络与其他生成建模方法的比较。
上述优点主要是计算方面的。对抗模型也可能从生成器网络中获得一些统计优势,因为生成器网络不直接使用数据示例进行更新,而仅在梯度流经判别器的情况下进行更新。这意味着输入的分量不会直接复制到生成器的参数中。对抗网络的另一个优点是它们可以表示非常尖锐的、甚至退化的分布,而基于马尔可夫链的方法要求分布有些模糊,以便链能够在模式之间混合。
7 结论和今后的工作
此框架允许许多简单的扩展:
- 将 c 作为输入添加到 G 和 D 中,可以得到条件生成模型 p(x | c)
- 学习的近似推理可以通过训练辅助网络来预测给定 x 的 z。这类似于由唤醒-睡眠算法[15]训练的推理网络,但其优点是在生成器网络完成训练后,推理网络可以针对固定的生成器网络进行训练.
- 通过训练一系列共享参数的条件模型,可以近似地模拟所有条件模型 p(xS | x6S),其中 S 是 x 索引的子集。从本质上讲,可以使用对抗网络来实现确定性MP-DBM的随机扩展[11]。
- 半监督学习:当标记数据有限时,来自判别器或推理网络的特征可以提高分类器的性能。
- 效率提高:通过划分更好的方法来协调 G 和 D,或者在训练期间确定更好的 z 样本分布,可以大大加快训练。
本文证明了对抗建模框架的可行性,表明这些研究方向可能被证明是有用的。
致谢
我们感谢 Patrice Marcotte、Olivier Delalleau、Kyunghyun Cho、Guillaume Alain 和 Jason Yosinski 进行的有益讨论。Yann Dauphin 与我们分享了他的 Parzen 窗口评估代码。我们要感谢 Pylearn2 [12] 和 Theano [7, 1] 的开发者,特别是 Fred’ eric Bastien,他专门为这个项目带来了 Theano 功能。Ar- ’ naud Bergeron 为 LATEX 排版提供了急需的支持。我们还要感谢 CIFAR 和加拿大研究主席的资助,以及 Compute Canada 和 Calcul Quebec 提供的计算资源。Ian Goodfellow 得到了 2013 年 Google 深度学习奖学金的支持。最后,我们要感谢 Les Trois Brasseurs 激发了我们的创造力。