生成对抗网络GAN

本文介绍了生成对抗网络(GAN)的基本框架,它通过一个对抗过程来训练生成模型和判别模型。生成模型G试图模仿数据分布,而判别模型D负责区分真实数据和G生成的样本。这种框架可以使用反向传播进行训练,无需马尔科夫链或近似推理。GAN在图像生成和模型训练中展现出了潜力,但也存在同步训练的挑战和缺乏显式概率分布表示的问题。
摘要由CSDN通过智能技术生成

摘要:我们提出一个新的框架,通过一个对抗的过程中评估生成模型,我们同时训练两个模型:一个生成模型G捕获数据分布,一个判别模型D估计样本来自训练数据的概率,而不是G .G的训练过程是使D犯错的概率最大化。该框架对应于一个极大极小二人对策。在任意函数G和D的空间中,存在一个唯一解,G恢复训练数据分布,且D处处为12。在G和D由多层感知器定义的情况下,整个系统可以通过反向传播进行训练。在训练和样本生成过程中,不需要任何马尔科夫链或展开的近似推理网络。通过对生成的样本进行定性和定量评价,实验证明了该框架的潜力。

1.介绍

深度学习的前景是发现丰富的层次模型[2],它代表人工智能应用中遇到的各种数据的概率分布,如自然图像、包含语音的音频波形,以及自然语言语料中的符号。到目前为止,深度学习领域最显著的成功涉及到鉴别模型,通常是那些将高维、丰富的感官输入映射到类标签的模型[14,22]。这些惊人的成功主要是基于反向传播和dropout 算法,使用分段线性单位[19,9,10],它们有一个特别良好的梯度。由于在极大似然估计和相关策略中难以逼近许多棘手的概率计算,以及由于难以在生成环境中利用分段线性单元的好处,深层生成模型的影响较小。我们提出了一种新的生成模型估计方法来克服这些困难。

在提出的对抗式网框架中,生成模型与对手针锋相对:一种判别模型,它学会了确定样本是来自模型分布还是来自数据分布。生成模型可以被认为类似于一组伪造者,试图制造假币并在不被检测的情况下使用它,而鉴别模型类似于警察,试图检测假币。这个游戏中的竞争促使两队都改进自己的方法,直到赝品和真品无法区分。

该框架可以针对多种模型和优化算法产生特定的训练算法。 在本文中,我们探讨了特殊情况,即生成模型通过使随机噪声通过多层感知器来生成样本,而判别模型也是多层感知器。 我们将此特殊情况称为对抗网。 在这种情况下,我们可以仅使用非常成功的反向传播和dropout算法来训练这两个模型[17],而仅使用正向传播从生成模型中进行采样。 不需要近似推断或马尔可夫链。

2.相关工作

有潜变量的有向图形模型的另一种选择是有潜变量的无向图形模型,如受限玻尔兹曼机器(RBMs)[27,16],深层玻尔兹曼机器(DBMs)[26]及其众多变体。这些模型中的相互作用被表示为未归一化的势能函数的乘积,通过对所有随机变量状态的全局求和/积分来归一化。这个量(配分函数)和它的梯度,除了最平凡的实例,是很难处理的,尽管他们可以估计马尔科夫链蒙特卡洛(MCMC)的方法。混合对依赖MCMC的学习算法提出了一个重大问题[3,5]。

深度信念网络[16]是包含单一无向层和多个有向层的混合模型。虽然存在快速近似的分层训练准则,但DBN在无向模型和有向模型中都存在计算困难。

替代标准,不近似或限制的对数似然也被提出,如评分匹配[18]和噪声对比估计(NCE)[13]。这两个要求学习的概率密度被解析指定为一个归一化常数。请注意,在许多有趣的具有若干层潜在变量的生成模型(如DBNs和DBMs)中,甚至不可能推导出一个可处理的非规范化概率密度。一些模型,如去噪自动编码器[30]和收缩自动编码器的学习规则非常类似的分数匹配应用于RBMs。在NCE中,如在本工作中,一个有区别的训练标准被用来适应生成模型。然而,生成模型本身不是用来拟合一个单独的判别模型,而是用来从固定噪声分布的样本中判别生成的数据。因为NCE使用固定的噪声分布,即使在模型学习了观察变量的一个小子集的近似正确的分布之后,学习速度也会大大减慢。

最后,有些技术不需要明确地定义概率分布,而是训练生成机从期望分布中抽取样本。这种方法的优点是,这种机器可以被设计成通过反向传播进行训练。这一领域最近的突出工作包括生成随机网络(GSN)框架[5],它扩展了广义去噪自动编码器[4]:两者都可以被视为定义参数化马尔科夫链,即,一个学习执行生成马尔科夫链一步的机器的参数。与GSNs相比,对抗性网框架不需要马尔科夫链进行采样。由于对抗性网在生成过程中不需要反馈回路,因此它们能够更好地利用分段线性单元[19,9,10],这提高了反向传播的性能,但在使用反馈回路时存在无限激活的问题。通过向内反向传播来训练生成机的更近期的例子包括最近关于自编码变分贝叶斯[20]和随机反向传播[24]的研究。

3.对抗网络

当模型都是多层感知器时,对抗模型架构是最直接的应用。为了学习生成器P_{g}在数据x上的分布,我们对输入噪声变量P_{z}(z)定义了一个先验,然后用G(z;θg)表示到数据空间的映射;其中,其中G是由具有参数θg的多层感知器表示的微分函数。我们还定义了第二个多层感知器D(x;θd);输出单个标量。D(x)表示x来自data而不是pg的概率分布。我们训练D以最大程度地为训练样本和G样本分配正确标签的可能性。我们同时训练G使log(1 D(G(z))最小化。

换句话说,D和G使用价值函数V (G, D)进行以下两方极大极小对策。

在下一节中,我们将给出一个对抗性网络的理论分析,本质上表明,当G和D被给予足够的容量时,即在非参数极限下,训练准则允许恢复数据生成分布。参见图1,了解该方法的不那么正式的、更具教学意义的解释。在实践中,我们必须使用一种迭代的数值方法来实现这个博弈。在训练的内部循环中将D优化以完成是计算上的问题,并且在有限的数据集上会导致过度拟合。相反,我们在优化D的k步和优化G的1步之间交替进行。这样,只要G变化足够慢,D就会保持在其最优解附近。该策略类似于SML/PCD[31,29]的训练方式,即从一个学习步骤保持马尔可夫链上的样本,以避免燃烧马尔可夫链作为学习内部循环的一部分。该过程在算法1中正式给出。

在实践中,等式1可能无法为G提供足够的梯度来学习。 在学习的早期,当G较差时,D可以以高置信度拒绝样本,因为它们明显不同于训练数据。 在这种情况下,log(1 − D(G(z))饱和。 与其训练G以使log(1 − D(G(z)))最小,我们可以训练G以使log D(G(z))最大化。 这个目标函数导致G和D动力学的相同固定点,但在学习早期就提供了更强的梯度。

图1:通过同时更新判别分布(D,蓝色,虚线)来训练生成对抗网络,以便区分data的分布(黑色,虚线)px的样本与生成分布pg(G)的样本之间的区别(绿色实线)。下方的水平线是是z被采样的区域,在这种情况下是均匀的。上面的水平线是x的定义域的一部分。向上箭头显示映射x = G(z)如何将非均匀分布pg施加到转换后的样本上。 G在高密度区域收缩,在pg低密度区域膨胀。 (a)考虑一个接近收敛的对抗对:pg与pdata相似,D是部分准确的分类器。 (b)在算法的内部循环中,训练D来区分数据中的样本,收敛到D(x)= pdata(x)pdata(x)+ pg(x)。 (c)在更新G之后,D的梯度已引导G(z)流向更可能被归类为data的区域。(d)经过几个步骤的训练,如果G和D具有足够的capacity(能量,容量),则它们将达到不能提高的点,因为pg = pdata。鉴别符无法区分两个分布,即D(x)= 1 /2。

4.理论结果

生成器G隐式地将概率分布pg定义为当z ~pz时获得的样本G(z)的分布。 因此,如果给定足够的容量和训练时间,我们希望算法1收敛到一个好的pdata估计量。 本部分的结果是在非参数设置中完成的,例如 我们通过研究概率密度函数空间中的收敛性来表示具有无限容量的模型。

我们将在4.1节中说明这个极小极大对策对pg = pdata具有全局最优性。然后,我们将在4.2节中说明算法1优化了公式1,从而获得了预期的结果。

4.1 全局最优性pg = pdata

我们首先考虑任何固定生成器G,优化判别器D。

命题1.对于固定的G,优化判别器D为:

证明:对于任意生成器G,判别器D的训练准则是使V (G, D)最大化。

对于任意(a, b) ∈R^{2} \{0,0},函数y ->alog(y) +b log(1-y)在\frac{a}{a+b}处[0,1]内达到最大值。该判别器不需要在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)=\frac{1}{2},(考虑Eq. 2),因此,在D_{G}^{*}(x)=\frac{1}{2}时检查Eq. 4,我们发现C(G) = \log \frac{1}{2} + \log \frac{1}{2} = -log 4。要知道这是仅在pg = pdata时C(G)可能达到的最佳值,请观察

通过从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_{\alpha \in A }f_{\alpha }(x)并且f_{\alpha }(x)对每个\alpha中的x都是凸的,如果\beta =argsup_{\alpha \in A}f_{\alpha }(x)\alpha f_{\beta }(x)\in \alpha f。这相当于在给定对应G.sup_{D}\bigcup (P_{g},D)在pg中凸且有唯一全局最优值的情况下计算pg在最优D处的梯度下降更新,已在thm1中证明,因此在pg更新足够小的情况下,pg收敛于px,得出证明。

在实践中,对抗网络通过函数G(z;θg)表示有限的pg分布族;而我们优化的是θg而不是pg本身。用多层感知器定义G引入了参数空间中的多个临界点。然而,多层感知器在实际应用中的优异性能表明,尽管其缺乏理论保障,但仍是一种合理的模型。

5 实验

我们训练了一系列的数据集,包括MNIST[23],多伦多面部数据库(TFD)[28],和CIFAR-10[21]。生成网络采用整流器线性激活[19,9]和sigmoid 激活的混合,而判别网络采用最大输出[10]激活。将Dropout[17]应用于判别网络的训练中。虽然我们的理论框架允许在生成器的中间层使用dropout和其他噪音,我们使用噪音作为输入,只有最底部的一层生成器网络。

我们通过对G生成的样本拟合一个高斯Parzen窗口来估计测试集数据在pg下的概率,并报告该分布下的对数似然。Gaussians的参数σ是通过验证集上的交叉验证得到的。Breuleux等人[8]引入了这个过程,并用于各种精确似然性无法控制的生成模型[25,3,5]。结果见表1。这种估计可能性的方法方差较大,在高维空间中表现不佳,但它是我们所知的最好的方法。生成模型的进步,可以抽样但不能估计似然函数,直接激励进一步研究如何评估这类模型。

表1:基于Parzen窗口的对数似然估计。MNIST上报告的数字是样本在测试集上的平均对数似然值,以及样本间计算平均值的标准误差。在TFD上,我们计算了数据集各折线之间的标准误差,使用每个折线的验证集选择不同的折线。在TFD上,每一次交叉验证一次数据,计算每一次数据的对数似然均值。对于MNIST,我们将与数据集的实值(而不是二进制)版本的其他模型进行比较。

在图2和图3中,我们展示了经过训练后从生成器网络中抽取的样本。虽然我们并不认为这些样本比现有方法生成的样本更好,但我们认为这些样本至少可以与文献中更好的生成模型竞争,凸显了对抗性框架的潜力。

图2:模型样本的可视化。最右边一列显示的是相邻样本最近的训练样本,以证明模型没有记住训练集。样本是公平随机抽取的,而不是精选的。不同于大多数其他深层生成模型的可视化,这些图像显示了来自模型分布的实际样本,而不是条件意味着给定的隐藏单元样本。此外,这些样本是不相关的,因为采样过程不依赖马尔可夫链混合。a) MNIST b) TFD c) CIFAR-10(全连接模型)d) CIFAR-10(卷积鉴别器和反卷积发生器)

图3:全连接模型z空间坐标间线性插值得到的数字。

 深度定向图形模型深度非定向图形模型生成自动编码器对抗模型
训练训练期间需要推理训练期间需要推理。MCMC需要近似配分函数梯度。强制混合和重建生成器之间的权衡使判别器与生成器同步。Helvetica。
推论学会了近似推理变分推理MCMC-based推理学会了近似推理
采样没有困难需要马尔可夫链需要马尔可夫链没有困难
评价p (x)棘手的,可近似为AIS棘手的,可近似的
AIS
未明确表示的,可近似表Parzen密度估计不明确表示的,可以用Parzen密度估计近似表示
模型设计几乎所有的模型都有极大的难度需要仔细设计以确保多重属性理论上允许任何可微函数理论上允许任何可微函数

                                                                           表2:生成网络建模的挑战:对涉及建模的每个主要操作采用不同方法进行深层生成网络建模所遇到的困难的总结。

6.优点和缺点

与以前的模型框架相比,这个新框架有优点也有缺点。缺点主要是没有显式表示的pg (x),D与G必须同步训练(特别是G不能在不更新D的情况下训练太多,为了避免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样本分布,可以大大加速培训。

本文证明了对抗性建模框架的可行性,表明这些研究方向可以证明是有用的。原文链接

 

 

 

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
生成对抗网络(Generative Adversarial Networks, GANs)是由Ian Goodfellow等人在2014年提出的深度学习模型架构[^4]。GAN由两个主要组成部分组成:生成器(Generator)和判别器(Discriminator)。它们通过一种零和博弈的方式相互作用。 **生成器**:尝试学习从随机噪声(通常是高斯分布)中生成与训练数据相似的新样本。它的目标是尽可能地欺骗判别器,使其误认为生成的数据是真实的。 **判别器**:负责区分真实数据和生成的数据。它试图准确地判断输入是来自训练数据还是生成器。 GAN的工作流程如下: 1. **训练过程**:生成器接收随机噪声作为输入并生成假样本,判别器则对这些样本进行分类,判断是真样本还是假样本。生成器根据判别器的反馈更新参数以提高生成能力,判别器也相应地调整其参数以提高识别能力。 2. **对抗迭代**:这两个模型交替优化,直到达到平衡状态,即生成器可以生成足够逼真的样本,使得判别器无法准确区分开来。 **示例代码**(简化版): ```python import torch.nn as nn # 假设我们有简单的生成器和判别器结构 class Generator(nn.Module): def __init__(self): super(Generator, self).__init__() # ... def forward(self, noise): # 生成器的前向传播 pass class Discriminator(nn.Module): def __init__(self): super(Discriminator, self).__init__() # ... def forward(self, input): # 判别器的前向传播 pass # 初始化并训练GAN generator = Generator() discriminator = Discriminator() for _ in range(num_epochs): fake_data = generator(noise) real_labels = torch.ones(batch_size) fake_labels = torch.zeros(batch_size) discriminator.zero_grad() d_loss_real = discriminator(real_data).mean() d_loss_fake = discriminator(fake_data.detach()).mean() d_loss = (d_loss_real + d_loss_fake).backward() discriminator_optimizer.step() generator.zero_grad() g_loss = discriminator(generator(noise)).mean().backward() generator_optimizer.step() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值