深度学习:生成敌对网络GAN的直观介绍

在这篇文章中,我会谈论生成敌对网络(简称GAN)。GAN是极少数机器学习技术之一,它为生成任务或更广泛的无监督学习提供了良好的性能。特别是,他们为各种图像生成相关任务提供了出色的表现。深度学习的先驱之一Yann LeCun称其为“过去10年机器学习的最佳创意”。最重要的是,与GAN相关的核心概念理念很容易理解(事实上,在阅读本文时,你应该对它们有一个好的概念)。

在本文中,我们将通过将GAN应用于生成图像的任务来解释GAN。以下是这篇文章的概要

深度学习简要回顾

图像生成问题

生成任务中的关键问题

生成敌对网络

挑战

进一步阅读

结论

深度学习简要回顾


草图(前馈)神经网络,输入层呈棕色,隐藏层呈黄色,输出层呈红色。

我们首先简要介绍一下深度学习。上面,我们有一个神经网络的草图。神经网络由多个神经元组成,这些神经元使用边缘相互连接。神经元被组织成 - 我们在中间有隐藏层,在左边和右边分别有输入层和输出层。每个边都是加权的,并且每个神经元执行来自与其连接的神经元的值的加权和值,然后应用非线性激活,如S形或ReLU。例如,第一个隐藏层中的神经元计算输入层神经元的加权和,然后应用ReLU函数。激活函数引入了允许神经网络对复杂现象进行建模的非线性(多个线性层相当于单个线性层)。

给定一个特定的输入,我们依次计算每个神经元输出的值(也称为神经元活动)。我们使用先前的图层中的已计算值逐层计算值,从左到右进行计算。这给了我们输出层的值。然后我们根据输出层中的值和期望的输出(目标值)定义成本。例如,可能的成本函数是均方误差成本函数。


其中,X是输入,H(X)是输出,Y是目标。总和在我们数据集中的各个数据点上。

在每一步中,我们的目标是将每个边权重调整为适当的数量,以便尽可能地降低成本函数。我们计算一个渐变,它告诉我们每个重量是多少。一旦我们计算成本,我们使用反向传播算法计算梯度。反向传播算法的主要结果是我们可以利用微分的链式规则来计算一个层的梯度,给定它上面层中权重的梯度。因此,我们计算这些梯度向后,即从输出层到输入层。然后,我们更新每个权重的量与各个梯度成比例(即梯度下降)。

如果您想更详细地阅读关于神经网络和反向传播算法,我推荐阅读Nikhil Buduma关于深度学习的简介

图像生成问题

在图像生成问题中,我们希望机器学习模型生成图像。为了训练,我们获得了一个图像数据集(例如从网上下载的1,000,000个图像)。在测试过程中,模型应该生成看起来像属于训练数据集的图像,但实际上并不在训练数据集中。也就是说,我们希望生成图像(与简单记忆相反),但我们仍然希望它捕捉训练数据集中的模式,以使新图像看起来像看起来与训练数据集中的图像相似。


图像生成问题:没有输入,并且所期望的输出是图像。

有一件事要注意:在测试或预测阶段,这个问题没有任何输入。每次我们运行模型时,我们都希望它生成(输出)一个新的图像。这可以通过说输入将从易于从样本(例如均匀分布或高斯分布)采样的分布中随机抽样来实现。

生成任务中的关键问题

在生成任务中的关键问题是 - 什么是良好的成本函数?假设您有两个由机器学习模型输出的图像。我们如何确定哪一个更好,多少?

在以前的方法这个问题最常见的解决方案是,在训练数据集的输出及其最近的邻国之间的距离,其中使用某个预定义的距离度量来计算距离。例如,在语言翻译任务中,我们通常有一个源句子和一小部分(约5个)目标句子,即由不同的人工翻译人员提供的翻译。当模型生成翻译时,我们将翻译与每个提供的目标进行比较,并根据它最接近的目标为其指定分数(特别是,我们使用BLEU分数,这是根据多少两个句子之间的n-gram匹配)。这种作品适用于单句翻译,但当目标文字较大时,同样的方法会导致成本函数的质量显着恶化。例如,我们的任务可能是生成给定文章的段落长度摘要。所有可能的正确答案

生成敌对网络

GAN对上述问题的回答是,使用另一个神经网络!这个记分器神经网络(称为鉴别器)将评分由发生器神经网络输出的图像的逼真程度。这两个神经网络有相反的目标(因此,这个词是敌对的)。生成器网络的目标是生成看起来真实的假图像,鉴别器网络的目标是分辨真假图像。

这使得生成任务的设置类似于强化学习中的2人游戏(例如国际象棋,Atari游戏或Go),其中我们有机器学习模式,通过与自己对抗,从头开始不断改进。这里的区别在于,像国际象棋或Go这样的游戏中,两个玩家的角色是对称的(尽管并非总是)。对于GAN设置,两个网络的目标和角色是不同的,一个产生假样本,另一个区分真假。


生成敌对网络草图,生成器网络标记为G,鉴别器网络标记为D.

上面,我们有一个生成敌对网络的图表。发生器网络G和鉴别器网络D正在玩2个玩家的极小极大游戏。首先,为了更好地理解设置,请注意,D的输入可以从训练数据或由G生成的输出中进行采样:从一半时间到另一半时间的一半时间。为了从G生成样本,我们从高斯分布中采样潜在向量,然后将它传递给G.如果我们生成200 x 200灰度图像,那么G的输出是200 x 200矩阵。目标函数由以下函数给出,它基本上是由D做出的预测的标准对数似然性:


生成器网络G正在最小化目标,即减少对数似然或试图混淆D.它希望D从其输出中抽取样本时,将其从G接收的输入识别为正确。鉴别器网络D正在最大化目标,即增加对数似然性,或试图区分生成的样本与真实样本。换句话说,如果G在混淆D方面做得很好,那么它会通过在第二项中增加D(G(z))来最小化目标。如果D很好地工作,那么在从训练数据中选择样本的情况下,它们通过第一项添加到目标函数(因为D(x)将更大)并且通过第二项减少它(因为D( x)会很小)。

培训按照惯例进行,使用随机初始化和反向传播,另外我们交替地更新鉴别器和发生器,并保持另一个固定。以下描述了将GAN应用于特定问题的端到端工作流程

决定GAN架构:G的架构是什么?D的架构是什么?

火车:交替更新D和G以获得固定次数的更新

更新D(冻结G):一半的样本是真实的,一半是假的。

更新G(冻结D):生成所有样本(注意即使D被冻结,梯度流过D

手动检查一些假样本。如果质量足够高(或质量没有改善),则停止。否则重复步骤2。

当G和D都是前馈神经网络时,我们得到的结果如下(在MNIST数据集上训练)。


GOODFELLOW等人的结果。人。最右边的列(在黄色框中)是从训练数据集到其左侧图像的最接近的图像。所有其他图像都是生成的样本。

使用更复杂的G和D架构(带有逐步卷积,adam优化器而不是随机梯度下降)以及体系结构,超参数和优化器中的其他一些改进(详见文章),我们得到以下结果:


ALEC RADFORD等人的结果。人。图像是'卧室'。

挑战

训练GANs中最关键的挑战与非收敛的可能性有关。有时候这个问题也被称为模式崩溃。为了简单解释这个问题,让我们考虑一个例子。假设任务是生成诸如MNIST数据集中的数字的图像。可能出现的一个可能的问题(并且在实践中出现)是G可能开始产生数字6的图像而没有其他数字。一旦D适应G的当前行为,为了最大化分类准确性,它将开始将所有数字6分类为假,并且将所有其他数字作为真实(假设它不能区分真假6与真假6)。然后,G适应D的当前行为并开始仅生成数字8而不生成其他数字。然后D适应,并开始将所有8个分类为假的和其他一切为真实的。然后G移动到3,等等。基本上,G仅产生与训练数据的(非常)小子集相似的图像,并且一旦D开始从其余的子集中识别该子集,则G切换到其他子集。他们只是摆动。虽然这个问题没有完全解决,但有一些解决方案。我们在这里不会详细讨论它们,但其中一个涉及minibatch功能和/或通过D的许多更新反向传播。要了解更多信息,请参阅下一节中的建议读物。

进一步阅读

如果您想更深入地了解GAN,我建议查看有关GAN的ICCV 2017教程。有多个教程,每个教程都侧重于GAN的不同方面,并且它们相当新近。

我还想提一下有条件的GAN的概念。有条件的GAN是输出受输入条件限制的GAN。例如,该任务可能是输出一个匹配输入描述的图像。所以如果输入是“狗”,那么输出应该是狗的图像。

以下是最近的一些研究结果(以及这些论文的链接)。


REED等人的“TEXT TO IMAGE SYNTHESIS”的结果。人


LEDIG等人的图像超分辨率结果 人


IMAGE TO IMAGE翻译的结果由ISOLA ET。人


通过KARRAS等人生成高分辨率的“名人像”图像。人

最后但并非最不重要的是,如果您想更多地阅读GAN,请查看按申请分类的GAN论文列表以及100多个不同的GAN变体列表。

结论

我希望在这篇文章中,你已经理解了深度学习中的一种新技术,称为生成对抗网络(Generative Adversarial Networks)。它们是无监督机器学习中少有的成功技术之一,它正在迅速革新我们执行生成任务的能力。在过去的几年中,我们遇到了一些令人印象深刻的结果。在该领域中有许多积极的研究将GAN应用于语言任务,提高其稳定性和便于培训等等。它们已经在工业中应用于各种应用,从交互式图像编辑,3D形状估计,药物发现,半监督学习到机器人学。我希望这只是你进入对抗机器学习的开始。



大数据部落 ——中国专业的第三方数据服务提供商,提供定制化的一站式数据挖掘和统计分析咨询服务
统计分析和数据挖掘咨询服务 : y0.cn/teradat (咨询服务请联系 官网客服
点击这里给我发消息 QQ:3025393450

【服务场景】        
 
             
科研项目;
        
             
公司项目外包 ;线上线下一对一培训 ;学术研究。
【大数据部落】提供定制化的一站式数据挖掘和统计分析咨询服务
 
分享最新的大数据资讯,每天学习一点数据分析,让我们一起做有态度的数据人 【大数据部落】大数据部落提供定制化的一站式数据挖掘和统计分析咨询服务
微信客服号:lico_9e
QQ交流群:186388004  
欢迎关注微信公众号,了解更多数据干货资讯!

 



大数据部落 ——中国专业的第三方数据服务提供商,提供定制化的一站式数据挖掘和统计分析咨询服务
统计分析和数据挖掘咨询服务 : y0.cn/teradat (咨询服务请联系 官网客服
点击这里给我发消息 QQ:3025393450

【服务场景】        
 
             
科研项目;
        
             
公司项目外包 ;线上线下一对一培训 ;学术研究。
【大数据部落】提供定制化的一站式数据挖掘和统计分析咨询服务
 
分享最新的大数据资讯,每天学习一点数据分析,让我们一起做有态度的数据人 【大数据部落】大数据部落提供定制化的一站式数据挖掘和统计分析咨询服务
微信客服号:lico_9e
QQ交流群:186388004  
欢迎关注微信公众号,了解更多数据干货资讯!

 

猜你喜欢

转载自blog.csdn.net/qq_19600291/article/details/79827366