本书特为软件工程师和数据科学家编写,书中简明而全面地介绍了目前的神经网络、人工智能和深度学习技术。
这本书展示了基于Keras框架、以Python编码的20多种有效的神经网络。Keras是一个模块化的神经网络库,它能运行于谷歌的TensorFlow和Lisa实验室的Theano的后端之上。
本书循序渐进地介绍了简单线性回归、传统多层感知机,以及更复杂的深度卷积网络和生成对抗网络等监督学习算法。另外,本书还介绍了自动感知机和生成式网络等非监督学习算法,并详细阐述了回归网络和长短期记忆网络(LSTM)。本书后续章节将陆续介绍Keras的各种函数API,以及用户实例在现有的丰富的函数库没有涵盖的情况下,如何自定义Keras。本书还探讨了用前面提到的模块构造更大型、更复杂的系统。本书最后介绍了深度强化学习和如何应用其构建游戏AI。
练习的应用程序代码包括新闻分类、文本句法分析、情感分析、人工文本合成,以及语音标注。我们也探讨了图像处理技术,包括如何识别手写数字图像、图像的自动归类,以及基于相关图像注释的高级对象识别。我们还提供了一个面部凸点检测识别的实例。声音识别包括了对来自不同讲话者的离散语音识别。强化学习则被用来构建一个可以自主玩游戏的深度 Q 学习网络。
实验是本书的核心,通过多个变量改变输入的参数、网络模型、损失函数和优化算法,我们得以逐步改进神经网络的学习性能。我们还会比较不同CPU和GPU运行条件下的训练效率。
人工智能是一个非常广泛的研究领域,主要研究如何让机器表现出人类的认知能力,例如学习行为、和环境的主动交互、演绎推理、计算机视觉、语音识别、问题解决、知识展现、感知能力等(更多信息请参考《Artificial Intelligence: A Modern Approach》,作者S. Russell和P. Norvig,Prentice Hall,2003)。通俗来讲,人工智能就是任何让机器模仿人类的智能行为的技术。人工智能从计算机科学、数学和统计学等学科中获得了很大的启发。
机器学习是人工智能的一个分支,主要研究如何使机器在不必额外编程的情况下,学会执行特定任务(更多信息请参考《Pattern Recognition and Machine Learning》,作者C. M. Bishop,Springer,2006)。事实上,机器学习的核心思想在于可以通过创建算法让机器通过数据进行学习并预测数据。现在的机器学习有3个大的分类:第一种是监督学习,机器通过已知的输入和对应的预期输出进行样本训练,以对全新的未知数据进行有意义的预测;第二种是无监督学习,机器只能通过输入的数据,在没有外界监督的情况下自己发现有意义的结构;第三种是强化学习,机器作为同环境进行交互的代理,学习哪些行为能获得奖赏。
深度学习是利用人工神经网络进行机器学习的方法论里的一个特定子集,如图0.1所示。而人工神经网络的灵感来自于人类大脑神经元的结构(更多信息请参考文章《Learning Deep Architectures for AI》,作者Y. Bengio,Found. Trends,vol. 2,2009)。非正式地讲,deep这个词通常指的是人工神经网络中存在多个层次,但这种说法已随着时间的推移而改变。4年前,10层就是一个很高效的深度学习网络,而今天,至少几百层的网络才被认为是深度的。
图0.1
深度学习对机器学习来说是一次真正的海啸(更多信息请参考《Computational Linguistics and Deep Learning》,作者C.D.Manning,Computational Linguistics,vol. 41,2015),它虽然只有相对较少的巧妙的方法,却被成功地应用到非常多的不同的领域(图像、文本、视频、语音和视觉),显著改进了过去几十年的技术发展水平。深度学习的成功还因为现在有了更多的可用于训练的数据(如来自ImageNet的图像),以及可用于高效数值计算的相对低廉、可用的GPU。谷歌、微软、亚马逊、苹果、脸书,以及其他很多公司每天都在应用这种深度学习技术进行大量的数据分析。目前,此类专项工作不再局限于纯学术研究领域以及大型工业化公司,它已经成为软件产业里一个不可分割的部分,读者应该对此有所掌握。本书不要求特定的数学背景知识,但我们将假设读者是一个Python程序员。
第1章,神经网络基础,讲述神经网络的基础知识。
第2章,Keras安装和API,展示如何在AWS、Microsoft Azure、Google Cloud,以及你自己的机器上安装Keras,并提供对Keras API的概览。
第3章,深度学习之卷积网络,介绍卷积网络的概念。这是深度学习的一个重要创新,最初的构想是为了图像处理,但现在在文本、视频和语音等多领域都有成功的应用。
第4章,生成对抗网络和WaveNet,介绍了利用生成对抗网络来合成如同人类自己产生的数据。我们还会介绍WaveNet,这是一个可用于生成高质量人类语音以及乐器音的深度神经网络。
第5章,词嵌入,讨论词向量相关的一套深度学习方法,用于检测词汇和相似语义词汇组的关系。
第6章,循环神经网络RNN,讲述循环神经网络的技术和应用,这是一类优化过的用于处理文本等序列化数据的网络。
第7章,其他深度学习模型,简要介绍Keras API、回归网络,以及自动编码机等。
第8章,游戏中的AI,教你如何进行深度强化学习,以及如何用Keras构建基于奖赏反馈的街机游戏玩儿法的深度学习网络。
第9章,结束语,快速回顾本书内容,并向用户介绍Keras 2.0的新特性。
为了让您流畅地阅读各个章节,你需要准备以下软件:
TensorFlow 1.0.0或者更高版本;
Keras 2.0.2或者更高版本;
Matplotlib 1.5.3或者更高版本;
Scikit-learn 0.18.1或者更高版本;
NumPy 1.12.1或者更高版本。
推荐硬件清单如下:
32位或者64位架构;
2GHz以上CPU;
4GB RAM;
至少10GB硬盘空间。
如果您是有经验的机器学习数据科学家或者有过神经网络实践的人工智能程序员,您会发现这是一本很好的关于Keras深度学习的入门教材。
阅读本书需要一些Python的知识。