资源预览内容
第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
亲,该文档总共8页全部预览完了,如果喜欢就下载吧!
资源描述
文读懂生成对抗网络GANs(附学习资源)原文标题:Anlntuitive Introduction to GenerativeAdversarial Networks作者 KeshavDhandhania、ArashDelijani 翻译:申利彬校对:和中华本文约4000字,建议阅读10分 钟。本文以图像生成问题引出GAN模型,并介绍了 GAN模型的 数学原理和训练过程,最后提供了丰富的GAN学习资料。 本文讨论生成对抗网络,简称GANs。在生成任务或更广泛 的无监督学习中,GANs是为数不多在此领域表现较好的机 器学习技术之。特别是他们在图像生成相关任务上拥有出 色表现。深度学习领域先驱Yann LeCun,称赞GAN是机器 学习近十年来最好的想法。最重要的是,GAN相关核心概念 很容易理解(事实上,读完本文后你就可以对它有个清晰的 认识)。我们将GANs应用在图像生成任务中,并以此来解释GANs, 下面是本文的概要: 简单回顾深度学习图像生成问题生成任务中的关键问题生 成对抗网络挑战进步阅读总结 简单回顾深度学习(前馈)神经网络示意图,棕色为输入层,黄色为隐藏层, 红色为输出层 我们先简单介绍下深度学习。上图是神经 网络示意图,它是由神经元组成,神经元之间通过边相互连 接,而且神经元按层排列,中间为隐藏层,输入层和输出层 分别在左右两侧。神经元之间的连接边都有权重,每一个神 经元都会根据与其连接的神经元的输入值加权求和,然后带 入非线性激活函数中计算,这类激活函数有Sigmoid和ReLU。例如,第一层隐藏层神经元对来自输入层神经元的值 进行加权求和,然后再应用ReLU函数。激活函数引入了非 线性,它使神经网络可以模拟复杂的现象(多个线性层等价 于一个线性层)。 给一个特定的输入,我们依次计算每个神 经元输出的值(也称为神经元的活性)。从左到右,我们利 用前层计算好的值来逐层计算,最后得到输出层的值。然后 根据输出层的值和期望值(目标值)定义一个损失函数,例 如,均方误差损失函数。其中,x是输入,h (x)是输出,y 是目标值,总和包含数据集中所有数据点。 在每步中,我 们的目标是以合适的数值优化每条边的权重,从而尽可能降 低损失函数的大小。我们计算出梯度值,然后利用梯度具体 优化每一个权重。当我们计算出损失函数值,就可以用反向 传播算法计算梯度。反向传播算法的主要结果是:利用链式 求导法则和后一层参数的梯度值来计算这层的梯度。然后, 我们通过与各个梯度成比例的量(即梯度下降)来更新每个 权重。 如果你想要进一步了解神经网络和反向传播算法的 细节,我推荐你阅读 Nikhil Buduma 写的简单学习深度学习(Deep Learning in aNuts h ell )nikhilbuduma./2014/12/29/deep-learning-in-a-nutshell/ 图像生成问题 图像生成问题上,我们希望机器学习模型可以生成图像。为 了训练模型,我们得到了一个图像数据集(比如从网络下载 的 1,000,000 图片)。在测试的时候,模型可以生成图像 这些图像看起来像属于训练集,但实际上并不是训练集中的 图像。也就是说,我们想生成新的图像(与单纯地记忆相反), 但仍然希望它能捕获训练数据集中的模式,从而使新的图像 感觉与训练数据集相似。 图像生成问题:没有输入,所需的输出是一个图像 需要注 意的一点是:在测试或预测阶段,这个问题没有输入。每次 “运行模型”时,我们希望它生成(输出)一个新的图像。这 可以说输入将从一个容易抽样的分布(例如均匀分布或高斯 分布)中随机抽样而来。 生成任务中的关键问题 生成任务中的关键问题是:什么是一个好的损失函数?假如 你有两机器学习模型生成的图片,我们如何决定哪一个更 好,好多少呢? 在以前的方法中,这个问题最常见的解决 方案是计算输出图像和训练集中最邻近图像的距离,其中使 用一些预定义的距离度量标准来计算距离。例如,在语言翻 译任务中,我们通常有一个源语句和一个小的(约 5 个)目 标句子集,也就是由不同翻译人员提供的译文。当模型生成 一个译文,我们把译文与提供的目标句子比较,然后根据它 距离哪个目标句子最近,分配一个相应的分数(特别是,我 们是用BLEU分数,它是根据两个句子之间有多少个n-grams 匹配的距离度量标准)。但这是一种单句子翻译方法,当目 标是一个较大的文本时,同样的方法会使损失函数的质量严 重恶化。例如,我们的任务可能是生成给定文章的段落摘要, 那么这种恶化源于少量的样本无法代表在所有可能的正确 答案中观察到的变化围。生成对抗网络GAN针对上面问题的回答是:用另外一个神经网络-记分 神经网络(称为判别器Discriminator),它将评估生成神经 网络输出的图像的真实性。这两个神经网络具有相反的目标(对抗),生成网络的目标是生成一个看起来真实的假图像, 判别网络的目标是区分假图像和真实图像。 这将生成任务 的设置类似于强化学习的双人游戏(如象棋,Atari games or 围棋),在强化学习中我们有一个从零开始通过自我对抗不 断改进的机器学习模型 。象棋或者围棋这些游戏的对抗双 方总是对称的(尽管并非总是如此),但对于 GAN 的设置, 两个网络的目标和角色是不相同的。一个网络产生假的样 本,而另一个网络区分真的和假的样本。生成对抗网络的示意图,生成器网络标记为G,判别器网络 标记为D如上图所示,是生成对抗网络示意图。生成网络G 和判别网络D在进行一场双方极大极小博弈。首先,为了更 好地理解这种对抗机制,需要注意到判别网络(D)的输入 可以是从训练集中抽样出的样本,也可以是生成网络(G) 的输出,不过一般是50%来自训练集,剩余50%来自G。为 了从 G 中生成样本,我们从高斯分布中提取潜在的向量并输 入生成网络(G)。如果我们想生成200*200的灰度图像,那 么生成网络(G)的输出应该是200*200的向量。下面给出 目标函数,它是判别网络(D)做预测的标准对数似然函数。 生成网络(G)是最小化目标函数,也就是减小对数似然函 数或是说“迷惑”判别网络(D)。也就是说,无论何时从生成 网络(G)输出中抽取样本作为判别网络(D)的输入,都希 望判别网络识别为真样本。判别网络(D)是要最大化目标 函数,也就是要增大对数似然函数或者说是把真实样本和生 成样本区分开。换句话说,如果生成网络G)在“迷惑”判别 网络(D)上效果很好,也就会通过增大公式第二项中D(G(z) 来最小化目标函数。另外,如果判别网络(D)能很好地工 作,那么在从训练数据中选择样本的情况下,会通过第一项(因为D(x)很大)增大目标函数,也会通过第二项减小它(因 为D(x)很小)。如同平常的训练过程一样,使用随机初始化和反向传播,此 外,我们需要单独交替迭代更新生成器和判别器。下面是在 特定问题上应用GANs的端到端的工作流程描述:1. 决定GAN网络架构:G的架构是什么? D的架构是什么?2. 训练:一定数量的交替更新更新D (固定G):一半样本是真的,另一半是假的更新G (固 定D):生成所有样本(注意,即使D保持不变,梯度流还 是会经过D)3. 人工检查一些假样本,如果质量很高(或者质量没有提升) 则停止,否则重复2。当G和D都是前馈神经网络时,我 们得到的结果如下(在MNIST数据集中训练)来自Goodfellow et. Al,从训练集开始,最右边一列(黄色 框)图像与其紧邻左边一列的图像最接近。其它所有图像都 是生成的样本 关于G和D我们可以使用更复杂的架构,例 如使用跳格卷积(strided convolutional)和adam优化器来 代替随机梯度下降。另外,还有其它一些方面的改进,例如 优化架构,使用超参数和优化器(具体可参考论文)。改进 后,我们得到了如下的结果:卧室图片,来自 Alec Radford et. Al 挑战训练GANs最关键的挑战是有可能不收敛,有时这个问题也 被称为模式崩溃(mode collapse)。举个例子,来简单解释 这个问题。假设任务是生成数字图像,就像MNIST数据集中 的一样。可能出现的问题(实践中确实出现)是生成器G开 始生成数字6,而不能生成其它数字。一旦D适应G的当前 行为,为了最大限度地提高分类的准确性,它开始把所有的 数字6归为假,所有其它数字都是真实的(假设它不能分辨 假的6和真实的6)。然后G又适应了 D的当前行为,开始 只生成数字8而不生成其它数字。然后D又适应,开始把数 字8归为假,其它的都是真。接着G又开始只生成3,如此 循环下去。基本上,生成器G仅生成与训练数据集的一个小 的子集相似的图像,而一旦识别器D开始把这个小的子集与 其余的区分开,生成器G又转换到另外的子集,它们将一直 简单的来回震荡。虽然这个问题没有被完全解决,但还是有 一些方法可以避免这个问题。这些方法涉及小批量特征(minibatch features。和多次更新D的反向传播。我们不再 讨论这些方法的细节,如果要了解更多信息,请查看下一节 中的建议阅读材料。进一步阅读如果你想更深一步了解GANs,我建议你阅读ICCV 2017 tutorials on GANs(https:/sites.google./view/iccv-2017-gans/home),那里 有很多最新的教程,并且它们对GANs的不同方面各有侧重。 我还想说一点关于条件GANs (Conditional GANs。的概念, 条件GANs,是在输入的条件下产生输出。例如,任务可能 是输出与输入描述相匹配的图像。所以,当你输入狗时,输 出的应该是狗的图像。 下面是一些最近研究的成果(附论 文)。文本到图像合成(Text to Image synthesis)成果,作者Reedet. al超分辨率图像(Image Super-resolution)成果,作者 Ledig et. Al图像到图像转换(Image to Image tr anslation)成果,作者 Isola et. Al 生成高分辨率名人相(Gene rating high resolution celebritylike images),作者 Karras et. Al 最后也是最重要 的,如果你想阅读更多关于GANs资料,请查看这个按照 GANs的应用分类的论文列表: https:/github./zhangqianhui/AdversarialNetsPapers 100+GAN的变种论文清单: https:/deephunt.in/the-gan-zoo-79597dc8c347 总结 通过这篇文章,希望你可以理解深度学习领域中的一种新技 术生成对抗网络。它们是无监督机器学习中少数成功的技 术,并且这种技术正在快速革新我们执行生成任务的能力。 过去的几年中,我们发现了一些让人印象深刻的成果。GANs 应用在语言任务中,提高语言任务的稳定性和训练的方便 性,等等,也是研究的热点GANs在工业中也被广泛应用, 从交互式图像编辑、三维形状估计、药物发现、半监督学习 到机器人技术。最后,我希望这篇文章是你对抗机器学习之 旅的开始。原文:blog.kaggle./2018/01/18/an-intuitive-introduction-to-gene rative-adversarial-networks/ 申利彬,研究生在读,主要研究方向大数据机器学习。目前 在学习深度学习在NLP上的应用,希望在THU数据派平台 与爱好大数据的朋友一起学习进步。翻译组招募信息工作 容:需要一颗细致的心,将选取好的外文文章翻译成流畅的 中文。如果你是数据科学/统计学/计算机类的留学生,或在 海外从事相关工作,或对自己外语水平有信心的朋友欢迎加 入翻译小组。你能得到:定期
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号