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

news2024/11/28 19:51:07

论文原文地址: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.coloradmin.cn/o/1961335.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【基础夯实】TCP/IP 协议是怎么控制数据收发

【基础夯实】TCP/IP 协议是怎么控制数据收发 网址输入到页面完整显示,对于此问题,粗略的解释可以分为以下几个步骤: 客户端通过 HTTP 协议对数据进行一次包装通过 DNS 服务器(本地无缓存)解析网址的 ip 地址通过 TCP…

layui 乱入前端

功能包含 本实例代码为部分傻瓜框架,插入引用layui。因为样式必须保证跟系统一致,所以大部分功能都是自定义的。代码仅供需要用layui框架,但原项目又不是layui搭建的提供解题思路。代码较为通用 自定义分页功能自定义筛选列功能行内编辑下拉、…

【React】详解如何获取 DOM 元素

文章目录 一、基础概念1. 什么是DOM?2. 为什么需要获取DOM? 二、使用 ref 获取DOM元素1. 基本概念2. 类组件中的 ref3. 函数组件中的 ref 三、 ref 的进阶用法1. 动态设置 ref2. ref 与函数组件的结合 四、处理特殊情况1. 多个 ref 的处理2. ref 与条件渲…

跟着丑萌气质狗学习WPF——Style样式

Style样式 1. 用法介绍2. 样式多样性3. 全局样式说明和资源字典的使用 1. 用法介绍 提前写好样式&#xff0c;让他作用于所有按钮 <Window x:Class"WPF_Study_Solution.window3"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmln…

typescript 解构时配置类型

以下三种写法&#xff0c;可以参考&#xff1a; const handleMenuClick ({item, key, keyPath}: {item: Object, key: string, keyPath:string}) > {} const handleMenuClick ({item, key, keyPath}: any) > {} interface SomeObj {item: Objectkey: stringkeyPath:st…

计算机系统操作系统简介

目录 1.计算机系统简介 1.1组成结构 1.2系统软件 1.3冯诺依曼计算机特点 1.4硬件构架 2.硬件的进一步认识 2.1存储器 2.2输入设备 2.3输出设备 2.4CPU组成 2.5线的概念引入 3.操作系统 3.1操作系统简介 3.2操作系统如何管理 3.3库函数和系统调用 1.计算机系统简介…

Linux 用户管理模式

目录 1. 概述 2. 管控级别 3. 用户组管理 4. 用户管理 4.1 创建用户 useradd 4.2 删除用户 userdel ​编辑4.3 查看用户所属组 id 4.4 修改用户所属组 usermod 5. 查看用户/用户组 5.1 查看系统用户 5.2 查看系统用户组 1. 概述 Linux 可以配置多个用户&#xff0c…

ppt中国风背景图片去哪找?附6个优质中国风PPT模板分享!

在这个全球化的时代&#xff0c;中国传统文化元素正在各个领域焕发出新的生机&#xff0c;不管是在时尚、建筑还是平面设计领域&#xff0c;中国风都以其独特的美学魅力吸引着世界的目光。在商业演示和学术报告中&#xff0c;PowerPoint(PPT)作为最常用的工具之一&#xff0c;同…

opencv arm 交叉编译

step1.opencv源码文件夹下新建build-arm目录 step2. cmake图像化配置 cmake-gui .. step3. 选择交叉编译 step4.检索交叉编译链路径 step5. 配置 配置install路径 配置编译、链接选项 添加人脸检测模块 config->generate step6. make编译 built-arm目录下&#xff1a; …

DC-DC转换器电感参数详解

我们对DC-DC转换器的要求以及电感参数中的电感值、公差和电阻进行了介绍。本文中&#xff0c;我们将对电感的其它参数进行详细讲解。 自谐频率&#xff08;SRF&#xff09; 每个电感线圈都有一些联带的分布电容&#xff0c;与电感值一起形成一个有自谐频率的并联谐振回路。对…

探索局域网传输新境界 | 闪电藤 v2.2.7

在这个数字化时代&#xff0c;文件的快速、安全传输是我们日常工作中不可或缺的一部分。今天&#xff0c;电脑天空向大家介绍一款革命性的局域网文件传输工具——闪电藤&#xff0c;它将彻底改变你的文件传输体验。 &#x1f3a8; 界面设计 —— 极简之美 闪电藤采用极简的设…

【自动化测试必学语言】python:语言基础

目录 Python 介绍 语言的分类 注释 单行注释 多行注释 变量 定义变量 使用变量 变量名的命名规范 数据类型 数字类型 非数字类型 type() 函数 input输入 print输出 格式化输出 快捷键(小操作) 运算符 算术运算符 比较运算符 Python 介绍 作者&#xff1a; 吉…

【Java】字符串String类(011)

目录 ♦️API和API帮助文档 ♦️创建String &#x1f38f;直接赋值类 &#x1f38f;new类 &#x1f421;空参类 构造方法&#xff1a; 举例代码&#xff1a; &#x1f421;有参类 构造方法&#xff1a; 举例代码&#xff1a; &#x1f421;字符数组类 构造方法&…

如何借助逻辑数据编织平台实现“数据优先堆栈( DFS )”

一、什么是面向“数据优先”的数据研发平台&#xff1f; 企业在数字化转型的浪潮中&#xff0c;愈发认知到数据作为核心战略资产的重要性。然而&#xff0c;要充分利用数据的价值并非易事。一方面&#xff0c;企业需要投入大量资源来建设和维护复杂的数据基础设施&#xff1b;另…

ref函数

Vue2 中的ref 首先我们回顾一下 Vue2 中的 ref。 ref 被用来给元素或子组件注册引用信息。引用信息将会注册在父组件的 $refs 对象上。如果在普通的 DOM 元素上使用&#xff0c;引用指向的就是 DOM 元素&#xff1b;如果用在子组件上&#xff0c;引用就指向组件实例&#xff1…

计算机基础(day1)

1.什么是内存泄漏&#xff1f;什么是内存溢出&#xff1f;二者有什么区别&#xff1f; 2.了解的操作系统有哪些&#xff1f; Windows&#xff0c;Unix&#xff0c;Linux&#xff0c;Mac 3. 什么是局域网&#xff0c;广域网&#xff1f; 4.10M 兆宽带是什么意思&#xff1f;理论…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 整数数组按个位数字排序(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆Coding ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线评测,专栏文章质量平均 93 分 最新华为OD机试目录…

使用大型语言模型进行文档解析

动机 多年来&#xff0c;正则表达式一直是我解析文档的首选工具&#xff0c;我相信对于许多技术人员和行业也是如此。尽管正则表达式在某些情况下非常强大&#xff0c;但它们常常在面对真实世界文档的复杂性和多样性时缺少灵活性。 另一方面&#xff0c;大型语言模型提供了一…

Mysql输出今年1月至当前月份日期序列

#今日2024-07-29SELECTDATE_FORMAT( DATE_ADD( NOW(), INTERVAL -(CAST( help_topic_id AS SIGNED INTEGER )) MONTH ), %Y-%m ) monthsFROMmysql.help_topicWHEREhelp_topic_id < TIMESTAMPDIFF(MONTH, CONCAT(DATE_FORMAT(CURDATE(), "%Y-01-01")),CONCAT(STR_…

《动手做科研 》| 03. 如何阅读人工智能研究论文

地址链接:《动手做科研》03. 如何阅读人工智能研究论文 导读: 在刚迈入科研时&#xff0c;人人都说读论文很重要&#xff0c;但是很少有人能完整地教你应该如何读论文。论文不仅揭示了行业的最新进展和趋势&#xff0c;而且为我们提供了改进技术和解决复杂问题的思路。然而&…