深度学习之生成对抗网络(1)博弈学习实例

  • 博弈学习实例

 在 生成对抗网络(Generative Adversarial Network,简称GAN)发明之前,变分自编码器被认为是理论完备,实现简单,使用神经网络训练起来很稳定,生成的图片逼近度也较高,但是人眼还是可以很轻易地分辨出真实图片与及其生成的图片。

 2014年,Unibersit eˊ\acute{e}eˊ de Montr eˊ\acute{e}eˊal大学Yoshua Bengio(2019年图灵奖获得者)的学生Ian Goodfellow提出了生成对抗网络GAN [1],从而开辟了深度学习最炙手可热的研究方向之一。从2014年到2019年,GAN的研究稳步推进,研究捷报频传,最新的GAN算法在图片生成上的效果甚至达到了肉眼南边的程度,着实令人振奋。由于GAN的发明,Ian Goodfellow荣获GAN之父称号,并获得了2017年麻省理工科技评论办法的35 Innovators Under 35奖项。下图展示了从2014年到2018年,GAN模型取得的图片生成效果,可以看到不管是图片大小,还是图片逼真度,都有了巨大的提升。

GAN模型2014~2018年的图片生成效果

 接下来,我们将从生活中博弈学习的实例出发,一步步引出GAN算法的设计思想和模型结构。

[1] I. Goodfellow, J. Pouget-Abadie, M. Mirza, B. Xu, D. Warde-Farley, S. Ozair, A. Courville 和 Y. Bengio, “Generative Adversarial Nets,” 出处 Advances in Neural Information Processing Systems 27, Z. Ghahramani, M. Welling, C. Cortes, N. D. Lawrence 和 K. Q. Weinberger, 编辑, Curran Associates, Inc., 2014, pp. 2672-2680.

博弈学习实例

 我们用一个漫画家的成长轨迹来形象介绍生成对抗网络。考虑一对双胞胎兄弟,分别称为老二G和老大D,G学会如何绘制漫画,D学习如何鉴赏画作。还在娃娃时代的两兄弟,尚且只学会了如何使用画笔和纸张,G绘制了一张不明所以的画作,如下图(a)所示,由于此时D鉴别能力不高,觉得G的作品还行,但是任务主题不够鲜明。在D的指引和鼓励下,G开始尝试学习如何绘制主体轮廓和简单使用简单的色彩搭配。

 一年后,G提升了绘画的基本功,D也通过分析名作和初学者G的作品,初步掌握了鉴别作品的能力。此时D觉得G的作品任务主体有了,如下图(b)所示,但是色彩的运用还不够成熟。数年后,G的绘画基本功已经很扎实了,可以轻松绘制出主题鲜明、颜色搭配合适和逼真度较高的画作,如下图(c)所示,但是D同样通过观察G和其它名作的差别,提升了画作鉴别能力,觉得G的画作技艺已经趋于成熟,但是对生活的观察尚且不够,作品没有传达神情且部分细节不够完美。又过了数年,G的绘画能力达到了炉火纯青的地步,绘制的作品细节完美、风格迥异、惟妙惟肖,宛如大师级水准,如图(d)所示,几遍此时的D鉴别功力也相当出色,也很难将G和其他大师级的作品区分开来。

画家的成长轨迹示意图

 上述画家的成长历程其实是一个生活中普遍存在的学习过程,通过双方的博弈学习,相互提高,最终达到一个平衡点。GAN网络借鉴了博弈学习的思想,分别设立了两个子网络:负责生成样本的生成器G和负责鉴别真伪的鉴别器D。类比到画家的例子,生成器G就是老二,鉴别器D就是老大。鉴别器D通过观察真实的样本和生成器G产生的样本之间的区别,学会如何鉴别真假,其中真实的样本为真,生成器G产生的样本为假。而生成器G同样也在学习,它希望产生的样本能够获得鉴别器D的认可,即在鉴别器D中鉴别为真,因此生成器G通过优化自身的参数,尝试使自己产生的样本在鉴别器D中判别为真。生成器G和鉴别器D相互博弈,共同提升,直至达到平衡点。此时生成器G生成的样本非常逼真,使得鉴别器D真假难分。

 在原始的GAN论文中,Ian Goodfellow使用了另一个形象的比喻来介绍GAN模型:生成器网络G的功能就是产生一系列非常逼真的假钞试图欺骗鉴别器D,而鉴别器D通过学习真钞和生成器G生成的假钞来掌握钞票的鉴别方法。这两个网络在相互博弈的过程中间同步提升,直到生成器G产生的假钞非常大逼真,连鉴别器D都难辨真假。

 这种博弈学习的思想使得GAN的网络结构和训练过程与之前的网络模型略有不同,下面我们来详细介绍GAN网络结构和算法原理。

深度学习之生成对抗网络(1)博弈学习实例相关推荐

  1. 深度学习之生成对抗网络(2)GAN原理

    深度学习之生成对抗网络(2)GAN原理 1. 网络结构 生成网络G(z)\text{G}(\boldsymbol z)G(z) 判别网络D(x)\text{D}(\boldsymbol x)D(x) ...

  2. 【深度学习】生成对抗网络(GAN)的tensorflow实现

    [深度学习]生成对抗网络(GAN)的tensorflow实现 一.GAN原理 二.GAN的应用 三.GAN的tensorflow实现 参考资料 GAN( Generative Adversarial ...

  3. 深度学习之生成对抗网络(5)纳什均衡

    深度学习之生成对抗网络(5)纳什均衡 1. 判别器状态 2. 生成器状态 3. 纳什均衡点  现在我们从理论层面进行分析,通过博弈学习的训练方式,生成器G和判别器D分别会达到什么平衡状态.具体地,我们 ...

  4. 2021-01-24过去十年十大AI研究热点,分别为深度神经网络、特征抽取、图像分类、目标检测、语义分割、表示学习、生成对抗网络、语义网络、协同过滤和机器翻译。

    专利申请量全球第一!清华人工智能发展报告:国内215所高校成立相关本科专业 发布时间:01-2415:20万象大会年度获奖创作者,东方财富网官方帐号 1月20日,清华大学人工智能研究院.清华-中国工程 ...

  5. 深度学习之生成对抗网络(8)WGAN-GP实战

    深度学习之生成对抗网络(8)WGAN-GP实战 代码修改 完整代码 WGAN WGAN_train 代码修改  WGAN-GP模型可以在原来GAN代码实现的基础上仅做少量修改.WGAN-GP模型的判别 ...

  6. 深度学习之生成对抗网络(7)WGAN原理

    深度学习之生成对抗网络(7)WGAN原理 1. JS散度的缺陷 2. EM距离 3. WGAN-GP  WGAN算法从理论层面分析了GAN训练不稳定的原因,并提出了有效的解决方法.那么是什么原因导致了 ...

  7. 深度学习之生成对抗网络(6)GAN训练难题

    深度学习之生成对抗网络(6)GAN训练难题 1. 超参数敏感 2. 模式崩塌  尽管从理论层面分析了GAN网络能够学习到数据的真实分布,但是在工程实现中,常常出现GAN网络训练困难的问题,主要体现在G ...

  8. 深度学习之生成对抗网络(4)GAN变种

    深度学习之生成对抗网络(4)GAN变种 1. DCGAN 2. InfoGAN 3. CycleGAN 4. WGAN 5. Equal GAN 6. Self-Attention GAN 7. Bi ...

  9. 【论文笔记】基于生成对抗网络的强化学习算法的研究

    目录 摘要 关键词 0 引言 1 相关理论 1.1 强化学习理论 1.2 生成对抗网络理论 1.3 基于生成对抗网络的强化学习算法 1.3.1 算法总体结构框架 2 实验与分析 3 总结 摘要 解决: ...

最新文章

  1. Linux系统巡检shell脚本
  2. 通过minify将项目中js和css文件的打包
  3. Linux系统基础优化
  4. 数据清理最终实现了自动化
  5. Broker模块划分
  6. Using APIs in Your Ethereum Smart Contract with Oraclize
  7. C#Socket通讯之超时检测
  8. 微服务架构-设计总结
  9. 【Tensorflow】图像的读取、解码、显示、处理、编码、保存
  10. 迈道科技生产安全风险调度管控系统
  11. 系统运维安全管理办法_7.系统运维安全管理规定
  12. R:基于每股权益的量化分析 —— PEG估值法
  13. ShareX:一款你值得拥有的截图识别工具
  14. 公司企业邮箱怎么注册开通?
  15. 某科技厅办公工作协同平台
  16. 纯CSS3实现旋转风车
  17. 环世界RimWorld for Mac(模拟建造游戏)
  18. VSTO开发PPT插件将PPT导出成图片
  19. VS2015 kb2919355 解决方法汇总
  20. 本地化差分隐私的简单入门内容

热门文章

  1. 关于div容器高度随着浏览器宽度按照宽高比自适应的问题(css解决方案)
  2. # 删除注册表项键值_强制删除:让你的电脑上不再有“顽固”程序
  3. x64版本的OpenGL库配置
  4. php 转义取消,php如何取消转义
  5. js 只准输入数字_基于TensorFlow.js的JavaScript机器学习
  6. GitOps:Kubernetes多集群环境下的高效CICD实践
  7. 8.基本数据结构-顺序表和链表
  8. 一个简单好用的java增量更新工具
  9. Spring Security认证过程
  10. json字符串转java对象数组