作者:元峰
链接:https://www.zhihu.com/question/56171002/answer/148593584
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

自2014年Ian Goodfellow提出生成对抗网络(GAN)的概念后,生成对抗网络变成为了学术界的一个火热的研究热点,Yann LeCun更是称之为”过去十年间机器学习领域最让人激动的点子”.生成对抗网络的简单介绍如下,训练一个生成器(Generator,简称G),从随机噪声或者潜在变量(Latent Variable)中生成逼真的的样本,同时训练一个鉴别器(Discriminator,简称D)来鉴别真实数据和生成数据,两者同时训练,直到达到一个纳什均衡,生成器生成的数据与真实样本无差别,鉴别器也无法正确的区分生成数据和真实数据.GAN的结构如图1所示.

<img src="https://pic1.zhimg.com/v2-61e1b1a6d1feb23a7d3c52966d11be08_b.png" data-rawwidth="759" data-rawheight="420" class="origin_image zh-lightbox-thumb" width="759" data-original="https://pic1.zhimg.com/v2-61e1b1a6d1feb23a7d3c52966d11be08_r.png">

图1. 生成对抗网络的基本架构

近两年来学术界相继提出了条件生成对抗网络(CGAN),信息生成对抗网络(InfoGAN)以及深度卷积生成对抗网络(DCGAN)等众多GAN的变种,下图2来自于去年一篇Image-to-Image Translation with Conditional Adversarial Nets论文,我们可以看到GAN已经被引入到了各种以往深度神经网络的任务中,例如从分割图像恢复原图像(左上角第一对),给黑白图片上色(右上角第一对),根据纹理图上色(右下角第一对),另外,GAN还可以做图像超分辨率,动态场景生成等,关于GAN的更多应用请见另一篇博客深度学习在计算机视觉领域的前沿进展.

<img src="https://pic4.zhimg.com/v2-94c48268909fce330c553eb2f5e214c3_b.png" data-rawwidth="1396" data-rawheight="524" class="origin_image zh-lightbox-thumb" width="1396" data-original="https://pic4.zhimg.com/v2-94c48268909fce330c553eb2f5e214c3_r.png">

图2.Image to image图像翻译

仔细想来,这些任务,其实都是传统的深度神经网络可以做的,例如自编码器(AutoEncodor)和卷积反卷积架构可以做到的,我们不禁要想,GAN相比传统的深度神经网络,它的优势在哪里?前段时间,我也一直比较迷惑,中文能查到的资料,就是Ian Goodfellow在生成对抗网络(GAN)论文最后总结的几点,如下:

优点

  • 模型只用到了反向传播,而不需要马尔科夫链
  • 训练时不需要对隐变量做推断
  • 理论上,只要是可微分函数都可以用于构建D和G,因为能够与深度神经网络结合做深度生成式模型
  • G的参数更新不是直接来自数据样本,而是使用来自D的反向传播(这也是与传统方法相比差别最大的一条吧)

缺点

  • 可解释性差,生成模型的分布 Pg(G)没有显式的表达
  • 比较难训练,D与G之间需要很好的同步,例如D更新k次而G更新一次

上面只是一个比较简单的解释,很幸运,我在Quora上查到了两个个类似问题,GAN与其他生成模型相比有什么优势,这个问题只有一个人回答,很幸运的是,他就是Ian Goodfellow,GAN的发明人,他在Quora上的签名就是”I invented generative adversarial networks”. 而另一个问题是GANs的优缺点是什么?, 良心大神Goodfellow也做了回答! 我把他的两个回答翻译如下:

分割线
—————————————————————————————————–

原问题1:What is the advantage of generative adversarial networks compared with other generative models?

生成对抗网络相比其他生成模型的优点?
Ian Goodfellow回答:
—————————————————————————————————–
相比其他所有模型,我认为

  • 从实际结果来看,GAN看起来能产生更好的生成样本
  • GAN框架可以训练任何生成网络(理论上,然而在实践中,很难使用增强学习去训练有离散输出的生成器),大多数其他架构需要生成器有一些特定的函数形式,就像输出层必须是高斯化的. 另外所有其他框架需要生成器整个都是非零权值(put non-zero mass everywhere),然而,GANs可以学习到一个只在靠近真实数据的地方(神经网络层)产生样本点的模型( GANs can learn models that generate points only on a thin manifold that goes near the data.)
  • 没有必要遵循任何种类的因子分解去设计模型,所有的生成器和鉴别器都可以正常工作
  • 相比PixelRNN, GAN生成采样的运行时间更短,GANs一次产生一个样本,然而PixelRNNs需要一个像素一个像素的去产生样本;
  • 相比VAE, GANs没有变分下界,如果鉴别器训练良好,那么生成器可以完美的学习到训练样本的分布.换句话说,GANs是渐进一致的,但是VAE是有偏差的
  • 相比深度玻尔兹曼机, GANs没有变分下界,也没有棘手的配分函数,样本是一次生成的,而不是重复的应用马尔科夫链来生成的
  • 相比GSNs, GANs产生的样本是一次生成的,而不是重复的应用马尔科夫链来生成的;
  • 相比NICE和Real NVE,GANs没有对潜在变量(生成器的输入值)的大小进行限制;
    说实话, 我认为其他的方法也都是很了不起的,他们相比GANs也有相应的优势.
    —————————————————————————————————–

原问题2: What are the pros and cons of using generative adversarial networks (a type of neural network)?

生成对抗网络(一种神经网络)的优缺点是什么?
It is known that facebook has developed a means of generating realistic-looking images via a neural network. They used “GAN” aka “generative adversarial networks”. Could this be applied generation of other things, such as audio waveform via RNN? Why or why not?
facebook基于神经网络开发了一种可以生成现实图片的方法,他们使用GAN,又叫做生成对抗网络,它能应用到其他事物的生成吗,例如通过RNN生成音频波形,可以吗?为什么?
Ian Goodfellow回答:
—————————————————————————————————–
优势

  • GANs是一种以半监督方式训练分类器的方法,可以参考我们的NIPS paper和相应代码.在你没有很多带标签的训练集的时候,你可以不做任何修改的直接使用我们的代码,通常这是因为你没有太多标记样本.我最近也成功的使用这份代码与谷歌大脑部门在深度学习的隐私方面合写了一篇论文
  • GANs可以比完全明显的信念网络(NADE,PixelRNN,WaveNet等)更快的产生样本,因为它不需要在采样序列生成不同的数据.
  • GANs不需要蒙特卡洛估计来训练网络,人们经常抱怨GANs训练不稳定,很难训练,但是他们比训练依赖于蒙特卡洛估计和对数配分函数的玻尔兹曼机简单多了.因为蒙特卡洛方法在高维空间中效果不好,玻尔兹曼机从来没有拓展到像ImgeNet任务中.GANs起码在ImageNet上训练后可以学习去画一些以假乱真的狗
  • 相比于变分自编码器, GANs没有引入任何决定性偏置( deterministic bias),变分方法引入决定性偏置,因为他们优化对数似然的下界,而不是似然度本身,这看起来导致了VAEs生成的实例比GANs更模糊.
  • 相比非线性ICA(NICE, Real NVE等,),GANs不要求生成器输入的潜在变量有任何特定的维度或者要求生成器是可逆的.
  • 相比玻尔兹曼机和GSNs,GANs生成实例的过程只需要模型运行一次,而不是以马尔科夫链的形式迭代很多次.

劣势

  • 训练GAN需要达到纳什均衡,有时候可以用梯度下降法做到,有时候做不到.我们还没有找到很好的达到纳什均衡的方法,所以训练GAN相比VAE或者PixelRNN是不稳定的,但我认为在实践中它还是比训练玻尔兹曼机稳定的多.
  • 它很难去学习生成离散的数据,就像文本
  • 相比玻尔兹曼机,GANs很难根据一个像素值去猜测另外一个像素值,GANs天生就是做一件事的,那就是一次产生所有像素, 你可以用BiGAN来修正这个特性,它能让你像使用玻尔兹曼机一样去使用Gibbs采样来猜测缺失值,
    我在伯克利大学的课堂上前二十分钟讲到了这个问题.课程链接,油管视频,请自带梯子~
    —————————————————————————————————–
    以上是Ian Goodfellow的原答案的翻译,如有翻译不妥的地方,请指正!
    最近在一篇GAN生成图片的论文中看到,作者提出使用GAN与普通的卷积反卷积相比,GAN能获得更好的泛化结果. 这里不知道是不是把鉴别器D当做一个监控器,当D的精度接近50%了,就停止训练,防止生成器过拟合.
    GAN还有什么其他有点,希望知友们提出,然后我会加在文章中.谢谢~

生成对抗网络(GAN)相比传统训练方法有什么优势?(一)相关推荐

  1. 条件生成对抗神经网络,生成对抗网络gan原理

    关于GAN生成式对抗网络中判别器的输出的问题 . ...摘要生成式对抗网络GAN(Generativeadversarialnetworks)目前已经成为人工智能学界一个热门的研究方向.GAN的基本思 ...

  2. 换脸方法大汇总:生成对抗网络GAN、扩散模型等

    1.One-Shot Face Video Re-enactment using Hybrid Latent Spaces of StyleGAN2 StyleGAN的高保真人像生成,已逐渐克服了单样 ...

  3. 生成对抗网络(GAN)简单梳理

    作者:xg123321123 - 时光杂货店 出处:http://blog.csdn.net/xg123321123/article/details/78034859 声明:版权所有,转载请联系作者并 ...

  4. 【机器学习】生成对抗网络 GAN

    文章目录 GAN能干什么? GAN的设计初衷 GAN 的基本原理(大白话) 生成对抗网络(GAN)由2个重要的部分构成 训练过程 GAN的总结 GAN的提出:"Generative Adve ...

  5. 生成对抗网络(GAN)资料打包

    进入正文 全文 摘要 生成式对抗网络,即所谓的GAN是近些年来最火的无监督学习方法之一,模型由Goodfellow等人在2014年首次提出,将博弈论中非零和博弈思想与生成模型结合在一起,巧妙避开了传统 ...

  6. 必读!TOP10生成对抗网络GAN论文(附链接)

    来源:新智元 本文约2200字,建议阅读7分钟. 本文所选论文提供了一个易读的对GAN的介绍,帮助你理解GAN技术的基础. [ 导读 ]生成对抗网络 (GAN) 是深度学习中最有趣.最受欢迎的应用之一 ...

  7. 【GAN优化】长文综述解读如何定量评价生成对抗网络(GAN)

    欢迎大家来到<GAN优化>专栏,这里将讨论GAN优化相关的内容,本次将和大家一起讨论GAN的评价指标. 作者&编辑 | 小米粥 编辑 | 言有三 在判别模型中,训练完成的模型要在测 ...

  8. [论文阅读] (06) 万字详解什么是生成对抗网络GAN?经典论文及案例普及

    <娜璋带你读论文>系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢.由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学 ...

  9. 生成对抗网络gan原理_必读!TOP10生成对抗网络GAN论文(附链接)

    来源:新智元 本文约2200字,建议阅读7分钟. 本文所选论文提供了一个易读的对GAN的介绍,帮助你理解GAN技术的基础. [ 导读 ]生成对抗网络 (GAN) 是深度学习中最有趣.最受欢迎的应用之一 ...

最新文章

  1. 基于深度学习的安卓恶意应用检测----------android manfest.xml + run time opcode, use 深度置信网络(DBN)...
  2. opencv python cv2.threshold()函数报错 TypeError: Expected cv::UMat for argument 'mat'
  3. NIPS 2018 论文解读集锦(11月28日更新)
  4. python中return返回值为函数名_Python函数返回值
  5. ExtJS 2.0官方实例目录
  6. Ubuntu环境搭建
  7. android 生命周期管理,Android Activity生命周期和堆栈管理的详解_Android_脚本之家...
  8. mysql join越多性能_mysqljoin的原理和优化
  9. 句句真研—每日长难句打卡Day17
  10. redis数据库的基础
  11. 项目设计之----命令模式的利用
  12. 毕业设计 基于单片机的智能蓝牙密码锁设计与实现
  13. 图片存储方案介绍---七牛云存储
  14. windows server2008r2 下载
  15. 10个在工作中常用的表格函数
  16. html5客户端页面,iphoneX 适配客户端H5页面的方法教程
  17. unity更优秀的跳跃手感(简单物理小知识)
  18. JavaScript交互式网页设计 • 【第3章 JavaScript浏览器对象模型】
  19. WPF学习教程链接总汇
  20. android内存显示修改,涨姿势:修改这个系统选项Android手机再也不用清内存!速度飞起...

热门文章

  1. 协同过滤的itemCF,userCF区别适用场景
  2. 分数运算C++代码实现
  3. java中自然排序和比较器排序
  4. matlab实现评价图像增强效果的参数——信背比(SBR)
  5. [云炬创业管理笔记]第二章成为创业者测试6
  6. 组会PPT20200910《大工HPT放电结果错误剖析》
  7. [云炬创业基础笔记] 第四章测试5
  8. USTC English Club Note20171015
  9. 云炬随笔20211016(2)
  10. 假期宣言2018-01-10