【论文共读】【翻译】【GAN】Generative Adversarial Nets

论文原文地址: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 结论和今后的工作

此框架允许许多简单的扩展:

  1. 将 c 作为输入添加到 G 和 D 中,可以得到条件生成模型 p(x | c)
  2. 学习的近似推理可以通过训练辅助网络来预测给定 x 的 z。这类似于由唤醒-睡眠算法[15]训练的推理网络,但其优点是在生成器网络完成训练后,推理网络可以针对固定的生成器网络进行训练.
  3. 通过训练一系列共享参数的条件模型,可以近似地模拟所有条件模型 p(xS | x6S),其中 S 是 x 索引的子集。从本质上讲,可以使用对抗网络来实现确定性MP-DBM的随机扩展[11]。
  4. 半监督学习:当标记数据有限时,来自判别器或推理网络的特征可以提高分类器的性能。
  5. 效率提高:通过划分更好的方法来协调 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 激发了我们的创造力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/386681.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

燃气安全无小事,一双专业劳保鞋让你步步安心!

燃气作为我们日常生活中不可或缺的能源之一,为我们的生活提供了极大便利,其安全性往往被忽视在忙碌的日常生活背后。然而,燃气事故一旦发生,后果往往不堪设想,轻则财产损失,重则危及生命。因此,…

dockerfile部署镜像 ->push仓库 ->虚拟机安装建木 ->自动部署化 (详细步骤)

目录 创建私服仓库 vi /etc/docker/daemon.json vim deploy.sh判断脚本内容 创建 建木 后端部署 命名空间 设置密码用户名 创建git仓库 gitignore文件内容 图形项目操作 git maven docker镜像 点击流程日志 vim /etc/docker/daemon.json 执行部署脚本 ip 开发…

Linux网络——深入理解传入层协议TCP

目录 一、前导知识 1.1 TCP协议段格式 1.2 TCP全双工本质 二、三次握手 2.1 标记位 2.2 三次握手 2.3 捎带应答 2.4 标记位 RST 三、四次挥手 3.1 标记位 FIN 四、确认应答(ACK)机制 五、超时重传机制 六 TCP 流量控制 6.1 16位窗口大小 6.2 标记位 PSH 6.3 标记…

Jackson常用注解详解

Hi 👋, Im shy 有人见尘埃,有人见星辰 Jackson常用注解详解 文章目录 Jackson常用注解详解0. 引入依赖1. JsonProperty2. JsonIgnore3. JsonFormat4. JsonInclude5. JsonCreator6. JsonValue7. JsonIgnoreProperties结论 Jackson是Java生态系统中广泛…

Redis学习[1] ——基本概念和数据类型

Redis学习[1] ——基本概念和数据类型 一、Redis基础概念 1.1 Redis是什么,有什么特点? Redis是一个基于**内存的数据库,因此读写速度非常快**,常用作缓存、消息队列、分布式锁和键值存储数据库。支持多种数据结构:…

大数据与人工智能:数据隐私与安全的挑战_ai 和 数据隐私

前言 1.背景介绍 随着人工智能(AI)和大数据技术的不断发展,我们的生活、工作和社会都在不断变化。这些技术为我们提供了许多好处,但同时也带来了一系列挑战,其中数据隐私和安全是最为关键的之一。数据隐私和安全问题的出现,主要…

分布式锁的三种实现方式:Redis、基于数据库和Zookeeper

分布式锁的实现 操作共享资源:例如操作数据库中的唯一用户数据、订单系统、优惠券系统、积分系统等,这些系统需要修改用户数据,而多个系统可能同时修改同一份数据,这时就需要使用分布式锁来控制访问,防止数据不一致。…

angular入门基础教程(九)依赖注入(DI)

依赖注入 Angular 中的依赖注入(DI)是框架最强大的特性之一。可以将依赖注入视为 Angular 在运行时为你的应用 提供所需资源的能力。依赖项可以是服务或其他资源。 使用服务的一种方式是作为与数据和 API 交互的方式。为了使服务可重用,应该…

实战:ZooKeeper 操作命令和集群部署

ZooKeeper 操作命令 ZooKeeper的操作命令主要用于对ZooKeeper服务中的节点进行创建、查看、修改和删除等操作。以下是一些常用的ZooKeeper操作命令及其说明: 一、启动与连接 启动ZooKeeper服务器: ./zkServer.sh start这个命令用于启动ZooKeeper服务器…

SSM学习9:SpringBoot简介、创建项目、配置文件、多环节配置

简介 SpringBoot式用来简化Spring应用的初始搭建以及开发过程的一个框架 项目搭建 File -> New -> Project 选中pom.xml文件,设置为maven项目 项目启动成功 可以访问BasicController中的路径 配置文件 在resources目录下 application.properties 默…

Linux——管理本地用户和组(详细介绍了Linux中用户和组的概念及用法)

目录 一、用户和组概念 (一)、用户的概念 (二)、组的概念 补充组 主要组 二、获取超级用户访问权限 (一)、su 命令和su -命令 ( 二)、sudo命令 三、管理本地用户账户 &…

WPF---Prism视图传参

Prism视图传参方式。 实际应用场景 点击tabitem中的列表数据,同步更新到ListStatic Region对应的界面。目前用两种方式实现了传参数据同步。 第一,事件聚合器(EventAggregator) 1. 定义事件 创建一个事件类,用于传…

微信小程序配置访问服务器失败所发现的问题及解决方案

目录 事前现象问题1:问题现象:问题分析: 问题2:问题现象:问题分析:解决方案: 事后现象 事前现象 问题1: 问题现象: 在本地调试时,一切顺利,但一…

JAVA开源的html转pdf、png转pdf项目

总览 Open HTML to PDF是一个纯Java库,用于使用CSS 2.1(以及更高版本的标准)对合理子集的格式良好的XML/XHTML(甚至一些HTML5)进行布局和格式化,输出为PDF或图像。 使用该库生成漂亮的PDF文档。但请注意,您不能将现代HTML5+直接应用于该引擎并期望获得出色的结果。您必…

妈吖,看过这个大厂的oracle主键自增,我的信心暴增!信创,国产数据库也能行。

创作不易 只因热爱!! 热衷分享,一起成长! “你的鼓励就是我努力付出的动力” 1.数据库oracle自增主键字段思维导图 在Oracle数据库中,可以通过创建序列(SEQUENCE)来实现自增功能。但也可以不在数据库中实现,而是通过程…

Docker中使用自定义网络方式实现Redis集群部署与测试流程

场景 Docker中Docker网络-理解Docker0与自定义网络的使用示例: Docker中Docker网络-理解Docker0与自定义网络的使用示例-CSDN博客 参考上面的流程实现自定义网络的实现。 下面记录其应用实例,使用Docker的自定义网络实现redis集群部署。 注&#xf…

vue3数据结构的渲染01

处理数据: //现有原始数据showCertificateUrl “url01;url02” 使用以下代码将两条通过分号";"分割的url进行处理 const parseUrls () > {urls.value [];// 每次重新赋值前一定要清空之前的旧数据!if (!showCertificateUrl.value) {retu…

数模打怪(八)之图论模型

一、作图 图的数学语言描述: G( V(G), E(G) ),G(graph):图,V(vertex):顶点集,E(edge):边集 1、在线作图 https://csac…

自闭症儿童能否上学:家长的选择与困惑

在自闭症儿童的成长旅程中,上学这一关键议题常常使家长陷入异常艰难的抉择和无尽的困惑之中。对于自闭症儿童究竟能否上学,家长们不得不面对众多纷繁复杂且至关重要的考量因素。 一方面,家长们怀揣着美好的期望,渴望孩子能够融入正…

C# 使用pythonnet 迁入 python 初始化错误解决办法

pythonnet 从 3.0 版本开始,必须设置Runtime.PythonDLL属性或环境变量 例如: string pathToVirtualEnv ".\\envs\\pythonnetTest"; Runtime.PythonDLL Path.Combine(pathToVirtualEnv, "python39.dll"); PythonEngine.PythonHom…