我不能创造的事物,我就还没有完全理解它。−理查德·費曼

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

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

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

13.1 博弈学习实例

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

一年后,G 提升了绘画的基本功,D 也通过分析名作和初学者 G 的作品,初步掌握了鉴别作品的能力。此时 D 觉得 G 的作品人物主体有了,如图 13.2(b),但是色彩的运用还不够成熟。数年后,G 的绘画基本功已经很扎实了,可以轻松绘制出主体鲜明、颜色搭配合适和逼真度较高的画作,如图13.2©,但是 D 同样通过观察 G 和其它名作的差别,提升了画作鉴别能力,觉得 G 的画作技艺已经趋于成熟,但是对生活的观察尚且不够,作品没有传达神情且部分细节不够完美。又过了数年,G 的绘画功力达到了炉火纯青的地步,绘制的作品细节完美、风格迥异、惟妙惟肖,宛如大师级水准,如图 13.2(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 的网络结构和算法原理。

13.2 GAN 原理

现在我们来正式介绍生成对抗网络的网络结构和训练方法。

13.2.1 网络结构

生成对抗网络包含了两个子网络:生成网络(Generator,简称 G)和判别网络(Discriminator,简称 D),其中生成网络 G 负责学习样本的真实分布,判别网络 D 负责将生成网络采样的样本与真实样本区分开来。

生成网络G(

TensorFlow 2.0深度学习算法实战---第13章 生成对抗网络相关推荐

  1. TensorFlow 2.0深度学习算法实战 第七章 反向传播算法

    第七章 反向传播算法 7.1 导数与梯度 7.2 导数常见性质 7.2.1 基本函数的导数 7.2.2 常用导数性质 7.2.3 导数求解实战 7.3 激活函数导数 7.3.1 Sigmoid 函数导 ...

  2. 资源|2019 年 11 月最新《TensorFlow 2.0 深度学习算法实战》中文版教材免费开源(附随书代码+pdf)...

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送 2019 年 10 月,谷歌正式宣布,开源机器学习库 TensorFlow 2.0 现在 ...

  3. 400页《TensorFlow 2.0 深度学习算法实战》中文版教材免费下载(附随书代码+pdf)...

    Tensorflow自谷歌提出以来就成为最受欢迎的深度学习框架之一,到目前为止也已经被下载超过 4000 万次.其中TensorFlow2.0更是修复之前非常多的不人性的特性,备大家欢迎. 今天给大家 ...

  4. TensorFlow 2.0深度学习算法实战 第一章 人工智能绪论

    第一章 人工智能绪论 1.1 人工智能 1.1.1 人工智能 1.1.2 机器学习 1.1.3 神经网络与深度学习 1.2 神经网络发展简史 1.2.1 浅层神经网络 1.2.2 深度学习 1.3 深 ...

  5. 《TensorFlow 2.0深度学习算法实战教材》学习笔记(七、Kears高层接口)

    Keras 是一个主要由Python 语言开发的开源神经网络计算库.Keras 库分为前端和后端,其中后端可以基于现有的深度学习框架实现,如Theano,CNTK,TensorFlow,前端接口即Ke ...

  6. 《TensorFlow 2.0深度学习算法实战教材》学习笔记(一、人工智能绪论)

    人工智能绪论 人工智能,机器学习,神经网络,深度学习之间关系 机器学习分类 机器学习可以分为有监督学习(Supervised Learning).无监督学习(Unsupervised Learning ...

  7. 《TensorFlow 2.0深度学习算法实战教材》学习笔记(八、过拟合)

    机器学习的主要目的是从训练集上学习到数据的真实模型,从而能够在未见过的测试集上面也能够表现良好,我们把这种能力叫做泛化能力. 提到了模型的表达能力,也称之为模型的容量(Capacity).当模型的表达 ...

  8. 《TensorFlow 2.0深度学习算法实战教材》学习笔记(四、TensorFlow 进阶)

    合并与分割 合并 张量的合并可以使用拼接(Concatenate)和堆叠(Stack)操作实现,拼接并不会产生新的维度,而堆叠会创建新维度.选择使用拼接还是堆叠操作来合并张量,取决于具体的场景是否需要 ...

  9. 《TensorFlow 2.0深度学习算法实战教材》学习笔记(三、TensorFlow 基础)

    数据类型 TensorFlow 中的基本数据类型,它包含了数值型.字符串型和布尔型. 数值类型 数值类型的张量是TensorFlow 的主要数据载体,分为: 标量(Scalar) 单个的实数,如1.2 ...

最新文章

  1. 给同一个按钮添加单双击事件
  2. 漫话:如何给女朋友解释为什么 Java 中1000==1000为 false,而100==100为 true?
  3. Android内部存储改变读取权限
  4. 使用 Pandas, Jinja 和 WeasyPrint,轻松创建一个 PDF 报表
  5. 在Panel上绘图的实现
  6. Physical Standby Database (11g)-ADG
  7. matlab slovenia,QUAD-MxFE Platform
  8. 【渝粤教育】21秋期末考试工程项目管理10324k2
  9. ELK下Kibana和Elasticsearch之间相互TLS身份验证
  10. 21世纪IT人才需要具有的5个鲜明特点
  11. 买什么手提电脑好_玉米种子买什么品种好?
  12. 1月16日英语计算机统考,高考英语听力首次机考16日开考
  13. Android安卓开发-Helloworld
  14. 小米盒子3增强版 android,小米盒子3增强版拆机评测 怎么样?好不好?
  15. 瞬变抑制二极管的选型
  16. 【AutoHotkey】笔记本键盘没有Home键和End键的解决方案
  17. idea git暂存操作
  18. 异地多活(异地双活)实践经验
  19. UG NX 12 创建有界平面
  20. 交互设计超全学习清单:3本书,2个播客,6门视频课程,8个优秀网站

热门文章

  1. 极地漩涡袭美中西部致多人死 芝加哥六成航班取消
  2. Linux面试题完整修订附加答案
  3. 解决管理问题的基本思维方式
  4. android平板能玩吃鸡吗,吃鸡不卡的安卓平板
  5. Au入门系列之十:母带处理
  6. python d3d_GitHub - shenxiangzhuang/PythonDataAnalysis at c5498c038bbddd512d3d7801b5f91c4603e70ba2
  7. nodejs入门之数据爬虫
  8. 三、C++反作弊对抗实战 (实战篇 —— 3.如何获取游戏中角色人物角色的名称坐标、血量、武器信息(非CE扫描))
  9. python数据分析岗位_python拉勾数据职位分析
  10. 5-35V输入升压8-100V各种升压解决方案 大功率300W