GAN(生成对抗网络)有一本实战书出版了,了解下?

article/2025/11/10 7:58:25

什么是GAN

GAN是一类由两个同时训练的模型组成的机器学习技术:一个是生成器,训练其生成伪数据;另一个是鉴别器,训练其从真实数据中识别伪数据。

生成(generative)一词预示着模型的总目标——生成新数据。GAN通过学习生成的数据取决于所选择的训练集,例如,如果我们想用GAN合成一幅看起来像达•芬奇作品的画作,就得用达•芬奇的作品作为训练集。

对抗(adversarial)一词则是指构成GAN框架的两个动态博弈、竞争的模型:生成器和鉴别器。生成器的目标是生成与训练集中的真实数据无法区分的伪数据——在刚才的示例中,这就意味着能够创作出和达•芬奇画作一样的绘画作品。鉴别器的目标是能辨别出哪些是来自训练集的真实数据,哪些是来自生成器的伪数据。也就是说,鉴别器充当着艺术品鉴定专家的角色,评估被认为是达•芬奇画作的作品的真实性。这两个网络不断地“斗智斗勇”,试图互相欺骗:生成器生成的伪数据越逼真,鉴别器辨别真伪的能力就要越强。

网络(network)一词表示最常用于生成器和鉴别器的一类机器学习模型:神经网络。依据GAN实现的复杂程度,这些网络包括从最简单的前馈神经网络(第3章)到卷积神经网络(第4章)以及更为复杂的变体(如第9章的U-Net)。

GAN是如何工作的

支撑GAN的数学理论是较为复杂的(我们将在后面几章中集中探讨,特别是第3章和第5章),幸运的是,我们有许多现实世界的示例可以做类比,这样能使GAN更容易理解。前面我们讨论了一个艺术品伪造者(生成器)试图愚弄艺术品鉴定专家(鉴别器)的示例。伪造者制作的假画越逼真,鉴定专家就必须具有越强的辨别真伪的能力。反过来也是成立的:鉴定专家越善于判断某幅画是否是真的,伪造者就越要改进造假技术,以免被当场识破。

还有一个比喻经常用来形容GAN(Ian Goodfellow经常喜欢用的示例),假币制造者(生成器)和试图逮捕他的侦探(鉴别器)——假钞看起来越真实,就需要越好的侦探才能辨别出它们,反之亦然。

用更专业的术语来说,生成器的目标是生成能最大程度有效捕捉训练集特征的样本,以至于生成出的样本与训练数据别无二致。生成器可以看作一个反向的对象识别模型——对象识别算法学习图像中的模式,以期能够识别图像的内容。生成器不是去识别这些模式,而是要学会从头开始学习创建它们,实际上,生成器的输入通常不过是一个随机数向量。

生成器通过从鉴别器的分类结果中接收反馈来不断学习。鉴别器的目标是判断一个特定的样本是真的(来自训练集)还是假的(由生成器生成)。因此,每当鉴别器“上当受骗”将假的图像错判为真实图像时,生成器就会知道自己做得很好;相反,每当鉴别器正确地将生成器生成的假图像辨别出来时,生成器就会收到需要继续改进的反馈。

鉴别器也会不断地改善,像其他分类器一样,它会从预测标签与真实标签(真或假)之间的偏差中学习。所以随着生成器能更好地生成更逼真的数据,鉴别器也能更好地辨别真假数据,两个网络都在同时不断地改进着。

表1.1总结了GAN的两个子网络的关键信息。

GAN(生成对抗网络)出版了一本实战书,了解下?

 

实战书是哪一本?

GAN(生成对抗网络)出版了一本实战书,了解下?

 

GAN实战

本书旨在引导对生成对抗网络(GAN)有兴趣的人从头开始学习。本书从最简单的例子开始,介绍一些最具创新性的GAN的实现和技术细节,进而对这些研究进展做出直观的解释,并完整地呈现所涉及的一切内容(不包括最基本的数学和原理),让最前沿的研究变得触手可及。

本书的最终目标是提供必要的知识和工具,让你不仅能全面了解对GAN迄今为止取得的成就,还能有能力自由选择开发新的应用。生成对抗这一模式充满潜力,等着像你这样怀有进取心、想在学术研究和实际应用中做出点成就的人去挖掘!欢迎你加入我们的GAN之旅。

适合人群

本书适合已经有一些机器学习和神经网络相关经验的读者阅读。下面列出了理想情况下读者应该提前知悉的内容。尽管本书尽力让内容显得通俗易懂,但你至少应该对下面70%的知识有信心。

  • 能够运行书中的Python程序,不需要精通Python,但至少应该有两年的Python工作经验(最好有全职的数据科学家或软件工程师工作背景)。
  • 了解面向对象的编程、如何使用对象以及如何找出它们的属性和方法;理解典型的Python对象(如Pandas DataFrame)和非典型对象(如Keras层)。
  • 了解机器学习理论的基础知识,如训练集和测试集的分割、过拟合、权重和超参数,以及监督学习、无监督学习和强化学习。熟悉准确率和均方误差等指标。
  • 了解基本的统计学和微积分的知识,如概率、密度函数、概率分布、微分和简单的优化。
  • 了解基本的线性代数知识,如矩阵、高维空间,还应该了解主成分分析的概念。
  • 了解深度学习的基础知识,如前馈网络、权重和偏置、激活函数、正则化、随机梯度下降和反向传播。
  • 需要基本熟悉或自学基于Python 的机器学习库——Keras。

以上要求不是危言耸听,而是为了确保你能充分利用本书所讲的内容。当然,不管怎样,你都可以学习,但是之前了解的内容越少,需要你在线检索学习的内容就越多。如果你感觉上面的要求不足为惧,那就开始学习吧!

《GAN实战》代码说明

本书有许多包含源代码的示例,放在有编号的列表中或者内嵌在普通文本中。这两种情况下源代码的格式都是以等宽字体样式显示的。有时也用加粗样式突出显示代码,表示与先前所示代码不同(有所更改),例如向现有代码行中添加新功能。

本书对大部分源代码做了格式化,以适应本书页面的排版。此外,若正文中有对代码的解释说明,则通常会删除源代码中的注释。为了突出重要概念,清单都给出了注释。本书示例的代码可以从异步社区本书详情页的“配套资源”处下载。

本书使用数据科学教育的标准用具——Jupyter Notebook,所以你应先掌握这个工具的用法。这对于中级Python学习者来说应该不难。访问GPU或者使其所有功能正常运行有时候会遇到困难,特别是在Windows系统,所以有些章节提供了谷歌Colaboratory(缩写为Colab)Notebook。这是谷歌的免费平台,并预先封装了必要的数据科学工具以及有限时长内免费的GPU。你可以直接在浏览器中运行这些代码,也可以将其他章节的代码上传到Colab——它们是兼容的。

在线资源

GAN是一个拥有良好(尽管是零散的)资源的活跃领域。有学术倾向的人可以在arXiv官方网站找到相关的最新论文。arXiv是康奈尔大学拥有和运营的学术论文电子预印本在线存储库。

本书作者都是 Medium 写作平台的活跃撰稿人(特别是以技术为核心的出版物 Towards Data ScienceHacker Noon),你可以在那里找到他们写的最新内容。

本书内容结构

本书力求在理论和实践之间取得平衡。全书分为如下三部分。

第一部分生成对抗网络(GAN)与生成模型导论 这部分介绍生成学习和GAN的基本概念,并实现几种GAN最典型的变体。

  • 第1章介绍了生成对抗网络(GAN),并在高层面上对其工作原理进行阐述。通过学习本章内容,你会了解到GAN是由两个独立的神经网络(生成器和鉴别器)组成的——它们通过动态竞争进行训练。掌握本章的知识可为理解本书其余部分的内容奠定基础。
  • 第2章讨论了自编码器,它在许多方面被视为GAN的前身。鉴于生成学习的新颖性,增加这一章内容有助于将GAN置于更广阔的背景下。本章给出了第一个代码教程,用于构建一个自编码器来生成手写数字——我们在后面几章的GAN教程中也会探索相同的任务。如果你已经熟悉自编码器的相关内容或想直接研究GAN,可以跳过这一章。
  • 第3章深入研究了GAN和对抗性学习背后的理论。本章解释了GAN和传统神经网络的主要区别,即讨论了它们的代价函数和训练过程上的差异。在本章结尾的代码教程中,我们将应用所学知识在Keras中实现GAN,并训练它生成手写数字。
  • 第4章介绍了卷积神经网络和批归一化。本章实现了一种先进的GAN结构,它使用卷积网络作为其生成器和鉴别器,并利用批归一化处理来稳定训练过程。

第二部分 GAN的前沿主题

在第一部分的基础上,这部分深入研究了GAN的基础理论,并实现了一系列高级的GAN架构。

  • 第5章讨论了许多训练GAN的理论和实践障碍以及克服这些障碍的方法。本章根据相关的学术论文和演讲全面概述了训练GAN的首选做法,还涵盖了用于评估GAN性能的选项以及需要担心这个问题的原因。
  • 第6章探索了渐进式增长生成对抗网络(PGGAN),一种生成器和鉴别器的前沿训练方法。PGGAN通过在训练过程中添加新的层获得了非常好的图像质量和分辨率。本章给出了真实的代码示例,并使用TensorFlow Hub(TFHub)从理论上和实践上来解释它的作用原理。
  • 第7章继续探索基于核心GAN模型的创新。你会了解到通过半监督学习仅使用一小部分带标签的训练样本就可提高分类准确率的巨大实际意义。使用本章实现了半监督生成对抗网络(SGAN),并解释了它是如何使用标签将鉴别器转换成一个健壮的多类分类器的。
  • 第8章展示了另一种在训练中使用标签的GAN架构。通过在训练生成器和鉴别器时使用标签或者其他条件信息,条件生成对抗网络(CGAN)解决了生成器的主要缺点之一——无法明确指定要合成的样本。本章最后实现了一个CGAN,用于直接查看目标数据的生成。
  • 第 9 章讨论了最有趣的 GAN 架构之一:循环一致性生成对抗网络(CycleGAN)。此技术可以将一幅图像转换成另一幅图像,例如将马的图像转换成斑马的图像。本章介绍了CycleGAN的架构并解释其主要组成和创新点,并在教程中用CycleGAN把苹果转换成了橙子(也可以将橙子转换成苹果)。

第三部分 何去何从

这一部分讨论了如何应用GAN和对抗学习以及在何处应用它们。

  • 第10章介绍了对抗样本。对抗样本是一种故意欺骗机器学习模型使其犯错的技术。本章从理论和实际层面讨论了它们的重要性,并探讨了它们和GAN的关系。
  • 第11章介绍了GAN的实际应用,探索了如何将前几章介绍的技术用于医学和时尚领域的实际用例:在医学领域,如何使用GAN来扩充小数据集以提高分类准确率;在时尚领域,GAN是如何推动个性化定制发展的。
  • 第12章总结了迄今为止GAN的主要收获,讨论了GAN的相关道德伦理考量,并介绍了一些新兴的GAN技术。

为什么要学GAN

自发明以来,GAN一直被学术界和工业界的专家们誉为“深度学习中最重要的创新之一”。Facebook的人工智能研究主管Yann LeCun甚至表示,GAN及其变体是“过去20年来深度学习中最酷的想法”。[2]

这种兴奋是合情合理的。机器学习领域的其他进展可能在科研人员中人尽皆知,但对于门外汉来说,可能疑惑多于兴奋,GAN激起了从研究人员到大众的极大兴趣——包括《纽约时报》、BBC、《科学美国人》以及许多其他知名媒体机构,甚至可能就是GAN的某项成果驱使你来购买这本书的呢。(对吧?)

最值得关注的可能是GAN创作超现实主义意象的能力。图1.4所示的人脸都不是真人的,都是假的,这展示了 GAN 合成足以和真实照片以假乱真图像的能力。这些人脸是用渐进式增长生成对抗网络生成的,相关内容参见第6章。

GAN(生成对抗网络)出版了一本实战书,了解下?

 

(来源:Progressive Growing of GAN for Improved Quality, Stability and Variation,by Tero Karras et al., 2017.)
图1.4 这些逼真但虚假的脸是由在高分辨率名人肖像照片集上训练过的渐进GAN生成的

GAN另一个引人瞩目的成就是图像到图像的转换(image-to-image translation)。与把句子从汉语翻译成西班牙语的方式类似,GAN可以将图像从一种风格转换为另一种风格。如图1.5所示,GAN可以把马的图像转换为斑马的图像,把一张照片变成莫奈的画作,而这几乎不需要任何监督,也不需要任何标签。使这一切成为可能GAN的变体是循环一致性生成对抗网络(CycleGAN),相关内容参见第9章。

更实用些的GAN应用同样令人着迷。在线零售的巨头亚马逊(Amazon)尝试利用GAN提供时尚建议:通过分析无数的搭配,系统能学会生成符合给定的任意风格的新产品。[3] 在医学研究中,GAN通过合成样本增强数据集,以提高诊断准确率。[4] 在掌握了训练GAN及其变体的细节之后,我们将在第11章详细地探讨这两个应用。

GAN(生成对抗网络)出版了一本实战书,了解下?

 

(来源:Unpaired Image-to-Image Translation Using Cycle-Consistent Adversarial Networks, by Jun-Yan Zhu et al., 2017.)
图1.5 通过使用名为CycleGAN的GAN变体,可以将莫奈的画作变成照片,或将图片中的斑马变成马;反之亦然

GAN也被视为实现通用人工智能[5]的重要基石。它是一种能够匹敌人类认知能力的人工系统,能获取几乎任何领域的专业知识——从走路所需的运动技能到语言表达技能,甚至于写诗所需的创作技能。

然而,拥有生成新数据和新图像的能力使得GAN有时也会很危险。关于假新闻的传播及其危险性已经是老生常谈,GAN生成可信假视频的能力也令人不安。在2018年一篇关于GAN的文章的结尾处——这篇文章的标题很贴切“如何成为一个人工智能”——《纽约时报》记者 Cade Metz和Keith Collins谈到了令人担忧的前景:GAN可能被用来制造和传播易使人轻信的错误信息,比如虚假的世界各国领导人发表声明的视频片段。《麻省理工学院科技评论》旧金山分社社长Martin Giles也表达了他的担忧,他在2018年发表的《GAN之父:赋予机器想象力的人》一文中提到,在技术娴熟的黑客手中,GAN可能会以前所未有的规模被用来探索和利用系统漏洞。这些忧虑促使我们讨论GAN的应用在道德伦理上的考量(第12章)。

GAN可以为世界带来许多好处,但是任何技术创新都是一把双刃剑。对此,我们必须怀有一种哲学意识:“除掉”一种技术是不可能的,所以确保像你这样的人了解这项技术的迅速崛起及其巨大的潜力是很重要的。

本书也仅能触及应用GAN可实现功能的一些皮毛,但是,我们希望这本书能够为你提供必要的理论知识和实践技能,使你能够继续从各个方面探索自己最感兴趣的领域。

事不宜迟,让我们开始吧!


http://chatgpt.dhexx.cn/article/c939kxh6.shtml

相关文章

【BBC纪录片】无人驾驶汽车的黎明(观后总结)

【BBC纪录片】无人驾驶汽车的黎明(观后总结) 1 引言2 主要内容2.1 前景2.2 Level 1-52.3 影响 3 简评 基本信息 出处:BBC地平线纪录片 时间:2017年 英文名:Dawn of the Driverless Car 国内观看:网易公开课…

有什么软件可以测试你的英语,史上热门7款英语学习App测评,你还在盲目使用吗?...

如今英语学习App可谓是百花齐放,而我们的英语学习往往也需要这些软件的辅助。可是,英语软件那么多,到底哪款适合我?今天我就为大家带来史上热门的7款英语学习应用程序的测评,帮助你找到你的那一个真爱! 背单…

手把手教会你使用Markdown【从入门到精通一篇就够了】

手把手教会你使用Markdown【从入门到精通一篇就够了】 前言一、Markdown是什么二、Markdown优点三、Markdown的基本语法3.1 标题3.2 字体3.3 换行3.4 引用3.5 链接3.6 图片3.7 列表3.8 分割线3.9 删除线3.10 下划线3.11 代码块3.12 表格3.13 脚注3.14 特殊符号 四、Markdown的高…

BBC与开源硬件Micro:bit

这年头,做新闻的都开始做硬件了,并且风靡全世界~ 是的,你猜的没错,这里的BBC指的就是英国广播公司(British Broad-casting Corporation, BBC), 几乎所有人第一次知道这个信息都很震惊,就像当下朋友告诉你,…

bbc新闻app Android,英语基础不好也可以看BBC新闻背单词

原标题:英语基础不好也可以看BBC新闻背单词 估计大家刚刚开始学英文的时候也跟我一样单纯。很积极地上了BBC新闻的网站,想的是可以边看新闻,边学英文,结果一开始看就蒙了,一句话都没听懂,就放弃了&#xff…

第一课:什么是树莓派

第一课:什么是树莓派 第二课:基于树莓派的10个经典项目 第三课:购买您的第一个树莓派 第四课:如何安装树莓派系统 第五课:树莓派C语言编程手册 第六课:树莓派led控制 第七课:树莓派按键控制 第八…

AI一分钟 | 美媒称中国导弹阵地遭美国AI技术快速识别,人工智能主播将亮相BBC节目

一分钟AI: 商汤科技计划赴美IPO,并将在美设立研发中心 美媒称中国导弹阵地遭美国AI技术"快速识别" 美图发布全球首款人工智能绘画机器人Andy 自拍秒变插画 谷歌云平台落地香港,明年将建亚太区第六个数据中心 平安科技与北大汇…

【URLOS应用开发基础】10分钟制作一个nginx静态网站环境应用

URLOS开发者功能已上线有一段时间了,目前通过部分开发者的使用体验来看,不得不说URLOS在服务器软件开发效率方面确实有着得天独厚的优势,凭借docker容器技术与其良好的应用生态环境,URLOS必将迅速成为软件开发者的新宠儿。 本篇内…

虚拟创业云|BBC幼儿英语启蒙动画视频《Yakka Dee》第一二三季全60集1080P英文字幕

BBC幼儿英语启蒙Yakka Dee亚克迪第一二三季全60集1080P英文字幕,需要的学习英语的童鞋们可以了解一下这个资源,是BBC推出的幼儿语言启蒙节目,每集五分钟,重点讲一个单词,鼓励小朋友开口说英文,YakkaDee是一…

虚拟创业云|BBC幼儿英语启蒙动画What’s the Big Idea雨果带你看世界英文版和中文版

虚拟创业云|BBC幼儿英语启蒙动画What’s the Big Idea雨果带你看世界英文版和中文版 BBC儿童频道第一部关于学龄前哲学的动画节目。 自2012年在BBC首播,已播出1季52集,每集5分钟,适合3-8岁的小朋友观看。 对的,您没看错!把“学龄前”和“哲学”这两个词放在一起本身就是…

一万字带你详解C语言字符函数、字符串函数、内存函数

文章目录 🍳 前言一、求字符串长度💦 strlen 二、长度不受限制的字符串函数💦 strcpy💦 strcat💦 strcmp 三、长度受限制的字符串函数💦 strncpy💦 strncat💦 strncmp 四、字符串查找…

一线工程师告诉你嵌入式真实现状与发展前景

个人说明:本人并不是年薪百万的技术大牛,但总算是一名合格的嵌入式工程师,现在某企业担任嵌入式软件工程师开发一职,以下观点可能会带有片面或者分析不全,但却是一名一线企业嵌入式软件开发者真实感受和所得&#xff0…

他又赚了一万美金

有一些学员真的挺能干的,收了一万刀,感到欣慰,毕竟在国外lead这条路,有很多人被骗,也有很多人赚钱。 但是大部分人跟着某一些所谓的大佬,最后自己却不动手操作。 ​ 从一开始怕跟我学习,到最后选…

有人竟然用Python在股市赚到了第一桶金!!!

Python的热度一直高居不下!除了数据分析,还有运维、自动化测试、后端开发、机器学习...Python的用武之地真的太多了! 而量化更是Python的一种高级应用! 什么是量化? 我们利用计算机技术,通过建模分析、优化…

chatgpt赋能python:如何在Python中二次运行同一个命令语句

如何在Python中二次运行同一个命令语句 如果您是一个熟练的Python开发者,一定会遇到必须二次运行同一个命令语句的情况。在本文中,我们将探讨Python中的几种方法来实现这一目标。 方法1:使用Python Shell Python Shell是Python解释器的一个…

数学第一单元计算机思维导图,四年级下册第一单元思维导图数学

250212002102410 这个大数的认识吧……是四年级上册第一单元,主要讲了亿以内、亿以上、计算器、算盘等.......还可以用思维导图来画,更清楚,有什么问题随时来问我 人民教育出版社四年级上册语文第一单元思维导图怎么画 按照阅读和写作两大块来制作。 比如在阅读方面 思维导图…

chatgpt赋能python:Python中如何一行输入多个数据

Python中如何一行输入多个数据 在Python中,我们有时需要一次性输入多个数据,作为程序的输入。常见的情况包括输入一组数字、输入多个字符串等。在本文中,我们将介绍多种方法来实现一行输入多个数据。 方法一:使用input函数 Pyt…

chatgpt赋能python:Python教程:如何创建一个list

Python教程:如何创建一个list Python是一种高级编程语言,用于开发桌面应用程序,网络应用程序以及游戏。List是Python中的一种基本数据类型,它是由一组有序的元素组成的。本篇文章将介绍如何使用Python创建一个list。 什么是list…

chatgpt赋能python:Python字符串:如何定义一个空字符串

Python字符串:如何定义一个空字符串 在Python中,字符串是一种常见的数据类型,通常用于存储文本信息。定义一个空字符串在Python中非常简单,本文将介绍如何定义一个空字符串以及在Python中使用字符串的一些常见操作。 定义一个空…

chatgpt赋能python:Python如何Input一个字典:详细教程

Python 如何 Input 一个字典:详细教程 在 Python 中,字典是一种非常有用的数据结构。它可以存储键值对,让我们能够通过键访问值。Python 中没有固定的语法来创建字典,因此本文将教你如何输入一个字典。 什么是字典? …