通过神经网络架构设计的见解和实践可解决人工智能问题,理解深度学习中最先进网络的相关概念。利用 Python实现的 Theano技术能够很容易地计算导数并最小化所选择的目标函数。
本书主要内容
第 1章Theano基础,帮助读者学习了解 Theano的主要概念,编写可在不同硬件架构上编译的代码,并自动优化复杂的数学目标函数。
第 2章基于前馈神经网络的手写体数字分类,主要介绍一个已证明深度学习算法优越性的简单常见示例。最初问题是识别手写体数字。
第 3章单词的向量编码,神经网络的主要难点之一是将真实世界的数据连接到神经网络的输入端,特别是分类和离散数据。本章将介绍一个如何利用 Theano通过训练来构建嵌入空间的示例。
这种嵌入方式在机器翻译、机器人、图像字幕等方面非常有用,因为可以将真实世界的数据转换成可由神经网络处理的向量数组。
第 4章基于递归神经网络的文本生成,通过一个简单的示例实践介绍了神经网络的递归,以生成文本。
递归神经网络( RNN)是深度学习中的一个研究热点,能够实现序列预测、序列生成、机器翻译和对象关联等任务。自然语言处理( NLP)是推动机器学习新技术发展的第二个热门研究领域。
第 5章基于双向 LSTM 的情感分析,将嵌入技术和递归层应用于自然语言处理的一个新课题,即情感分析。本章实际上是对前几章内容的一种验证。
以此同时,还介绍了基于 Theano构建神经网络的另一种方法,即采用一种更高级的库— Keras。
第 6章基于空间变换网络的定位,将递归技术应用于图像,从而一次读取图像页面上的多个数字。在此,利用用于 Theano深度学习的内置模块库—Lasagne来重新构建手写体数字图像的分类网络及其递归模型。
Lasagne库有助于设计神经网络进行更快实验。在此情况下,将通过空间变换模块来提高分类质量,从而解决计算机视觉中的一个常见难题—对象定位问题。
第 7章基于残差网络的图像分类,以最佳精度对任何类型的图像进行分类。同时,为了更容易地构建更复杂网络,本章将通过一个已具有许多实现组件的基于 Theano框架的 Lasagne库来更快地实现 Theano下的神经网络。
第 8章基于编码—解码网络的翻译与解释,介绍了应用于文本处理的编码—解码技术,这些技术已大量应用于机器翻译和简单聊天机器人系统中。同时还可应用于图像处理,
原书前言
主要是实现场景分割和对象定位。最后,图像字幕技术是一种图像编码和文本解码相结合的混合技术。
本章进一步应用了非常流行的高级库 Keras,由此极大简化了 Theano下神经网络的开发。
第 9章基于注意力机制的相关输入或记忆选择,为解决更复杂的任务,机器学习界研究人员一直在寻找一种受自然启发的更高层次智能:推理、注意力和记忆。在本章,读者主要学习基于人工智能的记忆网络在 NLP中的应用:语言理解。
第 10章基于先进递归神经网络的时间序列预测,时间序列是机器学习中广泛应用的一个重要领域。本章将利用 RNN的先进技术,来获得最新成果。
第 11章强化环境学习,强化学习是机器学习的一个重要研究领域,主要是训练一个智能体在环境下的行为(如视频游戏),通过在环境中执行某些动作(按下控制器上的按键)和观察所发生的变化来得到一个最优量(最大化游戏得分)。
. 强化学习新范式为计算机和现实世界之间的算法设计和交互开辟了一条全新道路。
第 12章基于非监督式网络的特征学习,非监督式学习主要是无需标记训练数据的新训练算法。这些算法试图从数据中推断出称为因素的隐藏标签,并由其中一些因素生成新的合成数据。
非监督式训练在许多情况下非常有用,其中包括无标签,或人工标注数据成本太高,或数据集太小而使得特征过拟合数据等情况。对于最后一种情况,对未标记数据进行更多训练以获得更好的特征是监督式学习的基础。
第 13章基于 Theano的深度学习扩展,扩展了 Theano下深度学习的更多可能性。提出了为计算图创建新算子的方法,在 CPU或 GPU中,简化 Python程序,或减少 C语言中 Python的开销。另外,还介绍了 GPU并行编程的基本概念。最后,根据本书所介绍的第一项技术,开启通用人工智能领域,并逐步开发新技能,使得进一步提高完善。
为何选择 Theano?
Theano的研发时间和成本是非常可观的,要了解其中的原委,一个重要的原因是 Theano是目前最好的深度学习技术,远非仅是一个深度学习库。选择 Theano主要是以下 3个原因:
. 具有其他数值计算库或深度学习库的类似性能;
. 具有丰富的 Python系统;
. 根据给定模型,可由数据来评估任何函数约束,从而可以求解任何优化问题。
首先考虑技术本身的性能。在深度学习方面常用的库有 Theano(用于 Python)、 Torch(用于 Lua)、Tensorflow(用于 Python)和 Caffe(用于 C++和 Python封装)。目前已有很多基准可对深入学习技术进行比较。
2012年 Bastien等人提出( Theano:new features and speed improvements,FrédéricBastien, Pascal Lamblin,Razvan Pascanu,James Bergstra,Ian Goodfellow,Arnaud Bergeron,Nicolas Bouchard,David Warde-Farley,Yoshua Bengio,Nov 2012),Theano在运行速度方面取得了重大进展,但这是在执行不同的任务下比较的,并不能明确表明在其他技术中具有明显的优势。 2016年 Bahrampour等人( Comparative Study of Deep Learning Software Frameworks,Soheil Bahrampour,Naveen Ramakrishnan,Lukas Schott,Mohak Shah,mars 2016)研究得出了以下结论:
. 在基于 GPU的已训练完成卷积和完全连接网络的部署方面, Torch最适合,其次是 Theano;
. 在基于 GPU训练卷积网络和完全连接网络方面,对于小型网络 Theano是最快的,而对于较大网络 Torch是最快的;
. 在基于 GPU的递归网络(LSTM)训练和部署方面,Theano的性能最佳;
. 在基于 CPU的任何测试深度网络架构的训练和部署方面, Torch表现最好,其次是 Theano。
这些结论均已在开源 rnn-benchmarks(https://github.com/glample/rnn-benchmarks)中得到验证,其中在训练(前向 +后向)方面, Theano性能优于 Torch和 TensorFlow。另外,在具有大量隐层单元且批大小较小时, Theano 的性能完全碾压 Torch和 TensorFlow。而对于批大小和隐层个数较大时,性能差别较小,这是由于更多依赖于 CUDA的性能,这是对于所有框架通用的底层 NVIDIA图形库。最后,在最新的 soumith benchmarks(https://github.com/soumith/ convent-benchmarks)中, Theano的 fftconv在 CPU上执行性能最佳,而在 GPU上执行卷积运算最佳的是 cuda-convnet2,对于 fbfft执行最佳的是 CUDA扩展库,即底层标准库。这些结论表明,尽管测试结果是多方面的,但 Theano在执行速度方面起着主导作用。
其次,选择 Theano而不是 Torch的原因在于其不仅继承了 Python系统的优点,而且还拥有专为 Theano而开发的大量库,从而具有丰富的编程系统。本书将介绍其中的两个高级库—Lasagne和 Keras。在支持各种深度学习架构和计算库方面, Theano和 Torch都是最具扩展性的框架。最后,与其他深度学习库相比,Theano调试简单。
Theano成为计算机科研人员所使用的强大工具的第三个原因是因为其不是专用于深入学习的。虽然 Theano在深度学习方面所采用的方法与其他库相同,但其基本原理却完全不同:实际上, Theano是对目标架构上的计算图进行编译。这种编译步骤使得 Theano极具特性,应该将其定义为一种根据机器学习思想设计的数学表达式编译器。符号微分是 Theano为实现非标准深度学习架构所提供的最有用的功能之一。因此, Theano能够解决更大范围的数值问题,并可用于在给定现有数据集下最小化求解由可微损失函数或能量函数所表征的任何问题。
学习本书所需的准备工作
安装 Theano需要 conda或 pip,且在 Windows、Mac OS和 Linux操作系统下的安装过程均相同。
在 Mac OS和 Linux Ubuntu操作系统下已对书中代码进行了测试。在 Windows操作系统下可能会有所不同,如修改路径,这些问题都是 Windows操作系统开发人员很容易解决的。
假设这些示例代码可存储在计算机的一个共享文件夹内,可下载、解压和预处理非常大的数据库文件,而不能留在代码库中。这种做法有助于节省磁盘空间,而多个代码目录
原书前言
和用户可使用相同的数据库副本。该文件夹通常是用户共享的:
sudo mkdir /sharedfiles sudo chmod 777 /sharedfiles
本书读者对象
本书旨在以 Theano为支持技术,提供深度学习的全面概述。本书专门针对深度学习和人工智能的初学者,以及想要积累跨领域开发经验并熟悉 Theano及其支持库的计算机程序人员。本书有助于读者了解深度学习相关知识,并获取深度学习的相关实用信息。
学习本书需要一些 Python编程和计算机科学的基本技能,以及初等代数和微积分的知识。所有实验的基本技术都是 Theano,本书首先深入介绍了这一核心技术,然后介绍了一些库及其在现有模块上的重用。
本书向读者介绍了深度学习的各种方法,讨论了不同类型的网络及其应用,同时分析了由深度学习技术 Theano为所有实现提供支持的可能性。本书总结了一些性能最优的网络和最先进的成果,并帮助读者全面了解深度学习架构,逐步从简单网络扩展到复杂网络。
由于 Python已成为数据科学的主要编程语言,因此本书试图涵盖 Python程序员利用 Python和 Theano进行深度学习所需了解的所有内容。
本书还介绍了 Theano上的两个抽象框架 Lasagne和 Keras,可以简化更复杂网络的开发,且不影响理解基本概念。
约定惯例
在本书中,提供了区分不同类型信息的多种文本样式。下面是这些文本格式的一些示例及其含义的解释。
代码文本、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter句柄如下所示:“运算符是由 theano.Op泛型类派生的类定义。”
代码块如下:
import theano, numpy
class AXPBOp(theano.Op):
"""
This creates an Op that takes x to a*x+b.
"""
__props__ = ("a", "b")
任何命令行输入或输出如下:
gsutil mb -l europe-west1 gs://keras_sentiment_analysis
新术语和重要词汇用粗体显示。在屏幕上看到的单词(例如在菜单或对话框中)出现在以下文本中:“点击下一步按钮可切换到下一界面”。
提示和技巧会这样显示
读者反馈
欢迎读者反馈意见。让作者了解读者对本书的看法,喜欢什么或不喜欢什么。读者反馈对于作者开发真正让读者受益的主题非常重要。
若要给作者反馈意见,只需发送邮件到 feedback@packtpub.com,并在邮件标题中注明书名。
如果有读者擅长的主题或有兴趣参与撰写或出版的书,请查看 www.packtpub.com/ authors上的作者指南。
用户支持
既然读者购买了 Packt出版社出版的书,那么出版社将会帮助读者获得最大收益。
示例代码下载
读者可以在 http://www.packtpub.com上根据账户下载本书的示例代码。如果想要购买本书电子版,可以访问 http://www.packtpub.com/support并注册,将直接通过电子邮件发送给读者。
下载代码文件步骤如下:
1
)通过邮件地址和密码在网站上登录或注册。
2)鼠标指向顶部的
SUPPORT选项。
3)单击
Code Downloads & Errata。
4)在 Search框中输入书名。
5
)选择想要下载代码文件的书。
6
)在下拉菜单中选择购买本书的方式。
7)单击
Code Download。读者也可以通过单击 Packt出版社网站上本书网页的 Code Files按钮来下载代码文件。
通过在 Search框中输入书名来访问该页面。需要注意的是,应首先通过 Packt账户登录。下载完成后,请用以下软件最新版本来解压文件夹:
. WinRAR / 7-Zip for Windows。
. Zipeg / iZip / UnRarX for Mac。
. 7-Zip / PeaZip for Linux。本书的代码包还托管在 GitHub上,https://github.com/PacktPublishing/Hands-On-Deep-
原书前言
Learning-with-TensorFlow。另外在 https://github.com/PacktPublishing/上的大量图书和视频目录中还有其他代码包。请查阅!
勘误
尽管已尽力确保内容准确,但仍然难免会有错误。如果读者在书中发现了错误、文本或代码错误,如果能及时告知,将不胜感激。这样会帮助其他读者,并有助于在本书的后续版本中进行完善。如果读者发现任何错误,请访问 http://www.packtpub.com/submit-errata告知。首先选择书名,点击勘误提交表单链接,然后输入详细的勘误内容。一旦通过验证,将会接受读者的提交并将勘误表上传网站,或在该标题的勘误部分下添加到现有的勘误表中。
若要查看已提交的勘误表,请访问 https://www.packtpub.com/books/content/support,并在搜索栏中输入书名。相关信息将会显示在 Errata部分中。
版权保护
在互联网上受版权保护的资料,涉及的盗版问题是一个存在于所有媒体的严重问题。 Packt出版社非常重视保护版权和许可。如果读者在网上发现任何非法复制的作品,请立即提供地址和网址,以便追踪索赔。请通过 copyright@packtpub.com联系我们,并提供疑似盗版材料的链接。非常感谢您在保护作者和为您提供宝贵内容方面的帮助。
问题
如果读者对本书有任何问题,请通过 questions@packtpub.com联系我们,我们将竭尽全力为读者解决。
原书审阅人
Matthieu de Beaucorps是具有丰富工程背景的机器学习专家,自 2012年以来,一直从事深度神经网络研究,以提高在计算机视觉、语音识别和自然语音处理中的识别和推荐任务。
Pascal Lamblin是 MILA(蒙特利尔机器学习算法研究所)的软件分析师,他在获得巴黎中央理工学院工程学位后,在蒙特利尔大学 Yoshua Bengio的指导下进行研究工作,目前主要从事 Theano的开发研究。
www.PacktPub.com
电子书、折扣优惠等
下载本书相关的文件资料,请访问 www.PacktPub.com。
您是否知道 Packt出版社为每本出版发行的书都提供了电子书版本,其中包括 PDF和 ePub文件?您可以通过 www.PacktPub.com升级电子书版本,作为纸质版用户,还可以享受电子书的折扣。有关更多详细信息,请通过 customercare@packtpub.com与我们联系。
在 www.PacktPub.com,您还可以阅读免费技术文章,订阅一系列免费时事通信,并获得 Packt出版社纸制书和电子书的独家折扣和优惠。
使用 Mapt可获得最需要的软件技能。 Mapt可让读者充分访问所有 Packt出版社的图书和视频课程,以及行业领先的工具,帮助读者规划个人发展并推动读者的事业发展。
为什么订阅?
. 可以在 Packt出版社发行的每本书中全面搜索。
. 复制、粘贴、打印和标注内容。
. 可通过 web浏览器访问。