生成对抗网络入门指南(第2版)
上QQ阅读APP看书,第一时间看更新

前言

生成对抗网络(GAN)毫无疑问是2018年最热门的人工智能技术,被美国《麻省理工科技评论》评选为2018年“全球十大突破性技术”。从2014年至今,与GAN有关的论文数量急速上升。网络上有人整理了近年来的GAN模型,截至2018年2月已经有超过350个不同形态的变种,并且数量仍然在持续增加中。在图像生成模型的质量上,生成对抗网络技术可以说实现了飞跃,很多衍生模型已经在一定程度上解决了特定场景中的图像生成问题。此外,诸如文本到图像的生成、图像到图像的生成等应用研究也让工业界与学术界非常兴奋,为人工智能行业带来了非常多的可能性。

让GAN走入大众视野的是2018年10月举办的一场拍卖会,由法国艺术创作团队Obvious使用GAN算法生成的画作以43万美元的高价被拍走,价格甚至远超同场拍卖的毕加索作品。AI技术越来越接近人们的生活,如果说AlphaGo只是陪你玩游戏的大师,那这次让大家轰动的作品拍卖似乎在挑战人类对于艺术的创作与审美。

在之后的两年中,GAN从一个尚待完善的新兴技术逐步发展成熟。而在几年前,大部分相关文章关注的还是针对手写数据集进行生成,最近随着谷歌、英伟达等大厂的入局,我们看到了诸如BigGAN和StyleGAN这样几乎逼真的人脸生成效果,甚至StyleGAN可以准确地控制生成人脸的状态。这些振奋人心的结果也让相关从业者和技术爱好者渴望了解这些技术背后的原理。

目前网络上关于生成对抗网络的介绍林林总总,越来越多的人对它的出现感到好奇,想知道计算机是如何通过博弈的方法来进行自我优化的。我也曾在知乎上写过一篇介绍性文章,但写完之后总觉得不够尽兴,希望有机会把这个领域相对完整的知识体系呈现在初学者面前,并帮助那些对人工智能技术感兴趣的朋友,让他们尽量少绕弯路,从而了解这个前沿的新兴领域。

本书面向机器学习从业人员、高校相关专业学生以及具备一定基础的人工智能领域爱好者,包含了生成对抗网络的理论知识与项目实践。通过本书的学习,读者能够理解生成对抗网络的技术原理,并通过书中的代码实例了解技术细节。本书尽量避免出现需要高性能计算设备才可以运行的项目,以便读者可以在感受到生成对抗网络的魅力之后,有机会在自己的设备上尝试运行一些项目。只有通过不断实践,才能真正理解生成对抗网络,并将其应用到自己的学习与工作中。

本书主要内容

本书共12章。第1章为入门章节,为读者介绍人工智能领域目前的发展状况,以及生成对抗网络的基本概念和它在整个研究领域中的状况。第1章不会涉及机器学习与深度学习的理论与实践细节,但在之后的生成对抗网络学习中会用到相关概念,因此希望读者可以自己去补全这些基础知识。

第2章是编程基础章节,是对机器学习与深度学习编程语言、框架以及工具应用的介绍,涉及的内容包括Python语言及第三方工具、TensorFlow框架以及Keras框架。如果你已经具备了深度学习领域的编程基础,可以选择性地跳过本章部分内容。

第3章讨论生成对抗网络的整体框架,将按照基础概念、理论推导、可视化理解以及具体工程实践的顺序来带领大家认识GAN。最后的代码部分使用TensorFlow实现,由于不会涉及大量的运算,读者可以按照书中的示例直接在笔记本电脑上运行代码,以加深对知识的理解。

第4~6章会在原始GAN的基础上介绍各种不同结构,但都是具有标志性特点的GAN。正因为有这样的多样性,才使得该领域一直充满活力。

第4章介绍基于深度卷积神经网络的生成对抗网络(DCGAN),这是一种在图像生成领域非常流行的框架结构,由于对于卷积层的使用以及一些其他的优化,该模型在图像生成的时候具有更高的质量。本书会使用Keras框架的代码来搭建面向手写数据集的DCGAN整体框架以及训练代码。在Keras的帮助下,我们可以比较简便地完成整个模型,这也是深度学习框架给大家带来的便利。由于使用了卷积层,所以在笔记本电脑上运行需要花费一些时间,如果读者希望快速得出结果,可以使用第2章介绍的云平台进行GPU运算。最终,这一章还会给出DCGAN的一些创新性应用,这也为之后GAN在多媒体领域的应用打下了基础。

第5章首先介绍目前GAN结构存在的问题,并由这个问题出发引出业界著名的模型WGAN。WGAN的理论推导看起来有些复杂,但是最终得出的优化方法却简单得令人吃惊。本章的实践部分是在DCGAN的Keras代码基础上修改完成的,最终读者会发现只需要几处代码调整就可以完成一个理论上更优的模型设计。这也从另一个侧面反映了理论研究的重要性,只有真正懂得事物背后的道理,才能给出最优秀的方案。本章最后会给出对WGAN本身算法的改进——WGAN-GP。WGAN-GP在业界属于比较优秀的方案,官方也给出了开源代码,而且大量的论文会用它作为比较对象。

第6章涉及一些不同结构的GAN,包括监督式学习、半监督式学习与无监督式学习。在这一章中我们也可以看到GAN的各种可能性,比如在有标签的条件式生成对抗网络(cGAN)的帮助下,我们可以根据设定好的标签来进行具体分类图片的生成,而通过无标签生成的InfoGAN可以让隐含编码(latent code)中的每一项都具有实际意义,并通过调节输入的参数对生成内容进行定制。

第7章与第8章的核心思想建立在前文cGAN研究的基础上,但是方法和网络都进一步做了改进。第7章为文本到图像的生成,用户只需输入一句话就可以得到想要的图像。而第8章则是用户根据自己提供的图像最终呈现出一幅理想的画面,其中涉及知名的算法Pix2Pix以及CycleGAN等。这些项目的源码大多是开源的,感兴趣的读者可以根据官网或书中提供的方法对这些模型应用进行试验。

第9章主要介绍GAN在离散数据上的生成,通过引入策略梯度下降的方法解决了GAN在离散数据上不可导的问题,其中介绍了著名的方法SeqGAN。同时,也会介绍在自然语言生成的场景下如何应用与优化基于GAN的离散数据生成技术。

第10章在离散数据生成的基础上进一步深入,首先会介绍离散决策常用的算法——强化学习,并阐明GAN与强化学习之间存在的相互关系。除此之外,也涉及强化学习的衍生方法,包括模仿学习与逆向强化学习,并探讨了它们与GAN的结合。

第11章首先介绍评估生成模型的一系列标准以及现有的一些难点问题,随后展示了近年来GAN的一系列突破性研究,尤其是图像生成质量和多样性方面的提升,重点介绍了目前最强大的两个GAN模型——BigGAN与StyleGAN。

第12章为读者更具体地介绍GAN的应用,从多媒体领域讲到艺术与设计领域,展示GAN在这些行业的发展中提供了怎样的帮助。由于GAN还是一项非常“年轻”的技术,因此也希望通过这一章来启发读者,在实际工作与科研过程中进一步思考还有哪些更好的应用场景,也许它就会成为你使用人工智能技术改变的下一个行业。

相较于第1版,本书新增的章节为第9~11章,重点介绍了最近GAN技术发展的新技术与应用。而且,本书修订了第2章的基础知识介绍部分,从TensorFlow 1.0全面升级到了TensowFlow 2.4。在此基础上,其他章节中的所有代码也都支持TensorFlow 2.4版本。除此之外,部分内容也已根据技术发展进行了微调。

致谢

首先要感谢学术界数不清的优秀科研人员耕耘在科学技术的前沿,正是他们产出的高质量研究成果以及论文推动着时代的发展,带来了这个全新的人工智能时代。本书也是站在巨人的肩膀上,大量参考了相关的文献材料,没有这些研究者就没有这本书的诞生。也要感谢互联网上愿意分享的优秀技术博主和开发者,我从他们的分享中学到了太多太多。感谢开源平台GitHub聚集了数不清的开发者,开源精神让开发变得更加便捷,也让知识传播更加高效。

感谢机械工业出版社的朱捷先生对我的支持,他在我写作的过程中提供了非常多的思路与帮助,也正是由于他对我的认可和鼓励,才促成了我完成本书。此外也感谢所有为本书的出版付出过努力的工作者。

最后感谢我的父母以及教导我的老师,是他们的栽培成就了现在的我,在这里再一次感恩他们对我的付出。

与我联系

读者可以通过知乎(https://www.zhihu.com/people/shidanqing)与我取得联系,我很乐意收到您的私信,并与您进行相关技术的交流。敬请各位读者与行业专家对本书不足的地方予以批评和指正。