近年来,深度学习在视觉、语音、自然语言处理与理解等存在大量数据处理的难题中取得了空前的成功,进而引起了公司、高校和政府对该领域的研究兴趣,从而更加加速了该领域的发展。本书精选了深度学习当中一些高级内容。在本书中,这些高级理论通过介绍背景原理、挖掘概念背后的直观表述、使用Keras实现公式和算法并对实验结果进行检验的方式来进行讲述。
纵观今日,人工智能( Artificial Intelligence, AI)仍不是一个易于理解的领域。深度学习作为AI的子领域,面临着相同的境遇。尽管深度学习还不是一个成熟的领域,但很多现实世界的应用,例如基于视觉的检测和识别、产品推荐、语音识别与合成、节能、药品开发、金融和市场营销,已经成功使用了深度学习算法。此外,更多的相关应用还会源源不断地被挖掘并实现。本书的目的就是尝试解释相关高级概念,并给出实现示例,让专家在其领域内识别出所需的应用目标。
尚未完全成熟的领域是一把双刃剑。一方面,它为探索和利用提供了诸多机会。深度学习中尚存大量未解决的问题。这些问题可转变为率先进入市场的机会,如产品开发、发布或认可。然而,另一方面,某些关键任务环境中很难信任一个尚未完全理解的领域。当被问及时,我们可以肯定地说,仅有极少数的机器学习工程师愿意去乘坐一架由深度学习系统所控制的自动驾驶飞机。要达到这种信任级别,还有很多工作需要去做。《Keras高级深度学习》中所讨论的高级概念,很有可能为达到这种信任级别而扮演了重要的角色。
深度学习的每一本书都不可能完全覆盖整个领域,《Keras高级深度学习》也是如此。在给定的时间和空间内,我们会接触到一些有趣的领域,例如检测、分割和识别、视觉理解、概率推理、自然语言处理和理解、语音合成以及自动机器学习。然而,本书相信,对这些精选领域的认知将有助于读者从事其他未涵盖的领域。
作为将要阅读《Keras高级深度学习》的读者,需谨记,您选择了一个令人兴奋的领域,并可以对社会产生重大的影响。我们很有幸,能从事一份早晨起来便迫不及待想为之奋斗的工作。
本书适用的读者
《Keras高级深度学习》面向希望深入了解深度学习高级主题的机器学习工程师和学生。书中所探讨的内容都通过 Keras代码进行了补充说明。本书适合那些想了解如何将理论通过 Keras转化成为可实际运行代码的读者。除了理解理论外,代码实现通常是将机器学习应用于实际问题的艰巨任务之一。
本书所覆盖的内容
第1章,Keras高级深度学习入门,介绍了深度学习的相关概念,例如优化、正则化、损失函数、基本层和网络,以及这些概念在Keras中的实现。本章同时介绍了深度学习和Keras中的Sequential API。
第2章,深度神经网络,讨论了Keras函数式API的应用,并使用函数式API在Keras中进行了检验,实现了两种广泛使用的深度网络架构——ResNet和 DenseNet。
第3章,自编码器,涵盖了自编码器的通用网络架构,该架构用于发现输入数据的潜在表示。在Keras中讨论并实现了自编码器的两个示例应用,即去噪和色彩迁移。
第4章,生成对抗网络,讨论了深度学习最新的重大进展之一。生成对抗网络(GAN)用于生成以假乱真的新数据。本章介绍了GAN的原理,并在Keras中检验和实现了GAN的两个示例——DCGAN和 CGAN。
第5章,改进的 GAN方法,介绍了对基本GAN进行改进的算法。该算法解决了GAN训练方面的困难,并提高了所合成数据的感知质量。
第6章,分离表示GAN,讨论了如何控制GAN所生成的合成数据的属性。如果潜表示可被分离,则属性可控制。在Keras中介绍并实现了两种解表征的技术,即InfoGAN和StackedGAN。
第7章,跨域 GAN,覆盖了GAN的一个实际应用,它可将图像从一个域转换到另一个域,该过程称为跨域转换。
第8章,变分自编码器,讨论了深度学习近期的另一个重大进展。与GAN类似,变分自编码器(VAE)是一个用于产生合成数据的生成模型。但与GAN不同的是, VAE专注于可解码的连续潜空间,该空间适用于变分推断。在Keras中涵盖并实现了VAE及其变种算法——CVAE和β-VAE。
第9章,深度强化学习,介绍了强化学习和Q-Learning的原理,提出了在离散动作空间实施Q-Learning的两种技术——Q-Table更新和深度Q网络(DQN)。在Keras中使用Python和DAN对所实现的Q-Learning方法在OpenAI Gym环境下进行了演示。
第10章,策略梯度方法,介绍了如何使用神经网络对强化学习中的决策策略进行学习。在Keras和OpenAI Gym环境下实现了四种方法,分别是REINFORCE、基线REIN-FORCE、Actor-Critic和优势Actor-Critic。本章中的示例演示了在连续动作空间中的策略梯度方法。
如何充分利用本书
.深度学习和Python:读者应具备深度学习及其在Python中进行实现的基础知识。如果有使用过Keras实现深度学习算法的经验更好,但非必须。第1章介绍了深度学习的概念及其在Keras中的实现。
.数学:《Keras高级深度学习》中讨论的内容假设读者熟悉大学级别的微积分、线性代数、统计和概率论。
.GPU:《Keras高级深度学习》中绝大多数Keras实现都需要GPU。没有GPU,将会花费大量时间(数小时至数天),因此,很多代码示例的执行将不切实际。本书中的示例尽可能控制所使用数据的大小,以尽量减少使用高性能计算机的可能。推荐读者至少使用NVIDIA GTX 1060的显卡辅助计算。
.编辑器:《Keras高级深度学习》中的示例代码使用了Ubuntu Linux 16.04 LTS、Ubuntu Linux 17.04和macOS High Sierra中的vim进行编辑。任何支持 Python的编辑器都可行。
.TensorFlow: Keras需要一个后端。《Keras高级深度学习》中的所有示例代码采用以TensorFlow为后端的Keras完成。请确保GPU驱动和TensorFlow都正确安装。
.GitHub:为能通过示例和相关实验进行学习,请使用git pull或fork命令从GitHub代码库中获取《Keras高级深度学习》的代码集。获取成功后,可进行检验、运行、更改并再次运行。可通过调整示例代码的方式去完成所有创造性的实验。这也是领会章节中所展示理论知识的唯一方法。如果您能为本书的GitHub代码库加星点赞,我们将十分感激。
下载代码文件
《Keras高级深度学习》的代码集存放在 GitHub,可通过以下网址进行访问:
https://github.com/PacktPublishing/Advanced-Deep-Learning-with-Keras
下载彩色图片
我们也提供《Keras高级深度学习》所涉及的截屏和流程图的彩色图片PDF文件。可从以下网址下载:
http://www.packtpub.com/sites/default/.les/downloads/9781788629416_ColorImages.pdf
目前业界与学界流行的热词是 ABCDIV(A—人工智能、B—区块链、C—云计算、D—数据科学与大数据、I—物联网、V—虚拟现实),而人工智能则包含了机器学习与深度学习。三位深度学习之父 Yoshua Bengio、Yann LeCun、Geoffrey Hinton因他们在神经计算领域的突出贡献获得了 2019年度计算机科学界的最高奖——图灵奖。今天,深度学习已经成为人工智能技术领域最重要的技术之一。在最近数年中,计算机视觉、语音识别、自然语言处理和机器人技术取得的巨大进展都离不开深度学习。
Keras的命名来自古希腊语,含义为将梦境化为现实的“牛角之门”。出自《荷马史诗·奥德赛》第19卷佩涅洛佩与奥德修斯的对话—无法挽留的梦幻拥有两座门,一座门由牛角制成,一座门由象牙制成。象牙之门内光彩夺目,却仅是无法实现的梦境;唯有走进牛角之门,才能由梦境看见真实。Keras是一款用Python编写的AIML(人工智能与机器学习)深度学习函数库及API,它能够以开源平台TensorFlow、CNTK、Theano等作为后端运行。Keras的特点是支持敏捷开发及快速AIML实验环境搭建。它允许简单而快速的原型设计,可在CPU和GPU上无缝运行,能够以最小的时延把您的想法转换为实验结果。它允许实践者以尽可能少的限制将各模块组装在一起形成需要的网络结构,诸如神经网络层数、损失函数、优化器、初始化方法、激活函数、正则化方法等都可以结合起来构造成为新的集成模型,从而轻松地创建可以提高表现力的新模块。
《Keras高级深度学习》内容涵盖了AIML前沿技术介绍;使用Keras实现高级深度学习模块的集成;多层感知器(MLP)、卷积神经网络(CNN)、循环神经网络(RNN)等模块的构建与组合;自编码器和变分自编码器(VAE);生成对抗网络(GAN)及其AI实现技术;分离表示GAN和跨域 GAN;深度强化学习的方法及其实现;使用 OpenAI Gym产生符合行业标准的应用;深度 Q-Learning和策略梯度方法等。
《Keras高级深度学习》适合于本科院校作为培训教材,对研究生课题及其实现也有极大的帮助;对自学及实战者也是不可多得的辅助参考。本书的翻译出版得益于机械工业出版社刘星宁老师的推荐与鼓励,在此特致感谢。译者的几位在读研究生在全书的初稿形成、图表编辑等诸多方面给予了帮助,在此一并致谢。
由于译者水平有限、加之AIML领域新兴概念繁多,难免误译或词不达意,敬请读者赐教与原谅。
译 者