2016年3月,AlphaGo的成功使得人工智能成为人们茶余饭后津津乐道的话题,而实现人工智能的主要方法——深度学习,也作为一个关键词开始出现在公众的视野并迅速被接纳。然而,深度学习并不算是一门比较新的技术或是一个比较新的词汇,它在2006年就出现了,在后来的一些大赛(如ILSVRC计算机视觉大赛)或实际应用上也取得了一定的效果。人工智能在不断地发展,深度学习技术已经在学术界和工业界产生了颠覆性的影响,而之所以在 AlphaGo 之前我们很少接触到深度学习,主要是因为在一些项目上深度学习获得的成功没有像AlphaGo那样举世瞩目而已。介绍使用TensorFlow实现深度学习,就是笔者写作本书的原因。
2015年年底面世的TensorFlow,是Google推出的一款开源的实现深度学习算法的框架。TensorFlow一经出现就获得了极大的关注——一个月内在GitHub上获得的star超过1万。得益于开源社区提供的众多支持,TensorFlow得到了飞速的发展。在写作本书时,TensorFlow的最新版本号为1.4,但是本书选择使用基于1.0.0-rc0版本的示例进行讲解,在这一版本上构建的代码应该能够很好地兼容后来或者最新的TensorFlow框架。
本书特色
1.内容丰富实用、主次分明,符合初学者的学习特点
本书内容涵盖了深度学习算法设计以及使用TensorFlow框架时将会用到的一些知识,从内容安排上非常注重这些知识的基础性和实用性。全书对于必须掌握的知识点没有含糊其辞,而是进行了细致的说明;仅需要大致了解的内容则点到即止。这样的安排不仅对初学阶段必备的知识有了着重的介绍,读者也能对比较深入的知识有一个大致的了解。
2.文字叙述生动有趣,全程伴随实例,用实例学习更高效
按照认知规律,本书将内容的介绍设计得环环相扣,连贯统一。在第一部分(第1~3章),主要介绍了一些关于深度学习与TensorFlow的基础认识。为了方便后续的编程实践,在这一部分还介绍了TensorFlow的安装以及简单的编程使用规则。在第二部分(第4~10章),主要介绍了关于深度神经网络的设计以及一些网络的TensorFlow实现,如果没有第一部分介绍的相关内容,在用TensorFlow实现这些网络时无疑是充满挑战的。第三部分(第11~14章)补充了TensorFlow的使用,这一部分可以看作是TensorFlow的高阶用法,熟练掌握这些用法可以使网络的设计事半功倍。
在介绍这些知识时,笔者绝不是板着面孔,用说明书式的语言来讲授,而是以非常生动有趣的语言进行通俗易懂的讲解,确保内容能够较完整地表达写作时最初的本意,在最大程度上帮助读者掌握TensorFlow的相关内容。
3.图文搭配合理,尽量避免学习枯燥无味
尽管笔者尽力让文字通俗易懂,但TensorFlow毕竟也是目前“高大上”的技术,所以在书中很多章节不失时机地插入了一些具有说明性的图片。在笔者看来,一张恰当的图片能够节省很多枯燥无味的文字并起到辅助我们理解文章内容的作用。
本书内容及体系结构
第一部分:探索深度学习之方法的开始
第一部分包括前3章内容。其中第1章是整书的开篇,放置这一章的目的主要是引导读者对人工智能的发展、机器学习与深度学习之间的关系以及人工神经网络的过去有一个初步的了解。此外,本章还涉及TensorFlow及深度学习框架的介绍。内容很多,但是却充满了联系。
第2章介绍了安装TensorFlow的一些方法。本章没有重要知识点,但使用TensorFlow框架进行深度学习算法设计或者搭建深度神经网络前将它安装在计算机上是必须的。对于安装过程,按照书中内容执行就好。
第3章介绍了一些基本的TensorFlow编程策略,可以把这一章的内容看作是TensorFlow的使用说明书,计算图、张量和会话是在使用TensorFlow 框架前必须要了解的框架本身的一些机制。这些内容不是非常的“进阶”但却非常的重要。
第二部分:TensorFlow实现深度网络
第二部分包括4~10章的内容。第4章介绍了深度前馈神经网络。该网络涵盖的范围比较广,在介绍网络的前向传播过程以及激活函数、损失函数等网络的基本组件时,都选择了比较简明的全连接形式的网络。
第5章介绍的是优化网络的方法。用一些优化方法优化网络是必须的。这一章的开始涉及了梯度下降、反向传播的理论;在后续,还针对网络会出现的过拟合现象介绍了一些相应的优化方法。可以说这一章中介绍的方法都是常用的。当然,也适当地给出了TensorFlow实现。
第6章给出了一个全连神经网络的经典实践案例,其主要内容是通过全连接形式的神经网络实现基于MNIST数据集的手写数字识别。在这个实践中用到了第4章和第5章所讲的绝大部分内容。尽管可以看作是一个入门案例,并且所占篇幅也不大,但是起到了总结所学内容的作用。
第7章介绍了卷积神经网络。卷积神经网络同样是一种前馈神经网络。不同于全连接的方式,卷积神经网络是稀疏连接的。在这一章介绍了卷积神经网络中卷积层和池化层的TensorFlow实现,并在之后以一个使用了Cifar-10数据集的简单循环神经网络作为本章中要实践的内容。作为一些补充,最后还添加了一些TensorFlow中关于图像处理的API的使用。可以说,本章的内容也是非常繁杂的。
第8章给出了经典卷积神经网络的TensorFlow实现。在第7章的基础上,这一章介绍了LeNet-5、AlexNet、VGGNet、InceptionNet-V3和ResNet 5个经典的卷积神经网络,这些卷积神经网络是按出现时间的先后顺序进行组织的,并且每一个卷积神经网络都提出了一些新的想法,章内会尽可能地分享这些想法。
第9章介绍了循环神经网络。循环神经网络已经不再属于前馈神经网络的范畴,其应用多见于自然语言处理领域(当然也不仅仅是该领域)。除了介绍循环神经网络本身,本章也适当地加入了一些其在自然语言处理领域应用的例子。
第10章是一些深度强化学习的内容,深度强化学习是现代通用人工智能的实现方法,本章使用较短的篇幅概述了深度强化学习的相关内容。
第三部分:TensorFlow的使用进阶
第三部分包括11~14章的内容。第11章介绍了使用TensorFlow进行数据读取的相关方法。网络需要数据的输入,为了方便这一过程,TensorFlow本身提供了一些API。本章主要讲述的就是这些API。
第12章介绍了TensorFlow模型持久化。将训练好的网络模型存储起来并在使用时加载存储好的模型可以节约很多的时间,因为模型的训练过程一般是比较耗时的。本章除了给出模型持久化的实例外,还适当地介绍了TensorFlow模型持久化的原理,内容比较全面。
第13章介绍了TensorFlow自带的TensorBoard可视化工具。网络模型中的一些标量数据、图片或者音频数据都可以通过TensorBoard工具可视化出来,甚至模型的计算图也可以,这大大方便了我们的调试过程。本章就介绍了如何使用这款方便的工具。
第14章介绍了TensorFlow加速计算。深度神经网络模型的训练过程中会产生大量的计算,TensorFlow支持使用多个GPU设备或者分布式的方式来并行加快计算的过程。本章先是介绍了并行计算的一些模式,然后重点放在了如何通过代码实现TensorFlow使用多个GPU设备或者分布式的方式加速计算。
本书读者对象
◎人工智能领域爱好者及相关开发人员 ◎计算机相关专业的学生
◎机器人、自动化行业的人员 ◎数据分析、数据挖掘人员