基于Theano的深度学习:构建未来与当前的人工大脑
定 价:69 元
- 作者:(法)克里斯托弗?布雷斯
- 出版时间:2018/4/1
- ISBN:9787111588788
- 出 版 社:机械工业出版社
- 中图法分类:TP18
- 页码:
- 纸张:胶版纸
- 版次:1
- 开本:16开
本书主要介绍了深度学习的基本概念和常用网络以及Theano在深度学习中的应用。全书共13章,首先介绍了Theano的基础知识,包括张量、计算图、符号计算、张量算子、自动微分等概念,然后分别介绍了基于前馈神经网络的手写体数字分类、单词的向量编码、基于递归神经网络的文本生成、基于双向LSTM的情感分析、基于空间变换网络的定位、基于剩余网络的图像分类、基于编码解码网络的翻译与解释、基于注意力机制的相关输入或记忆选择、基于先进递归神经网络的时间序列预测、强化环境学习和基于非监督式网络的特征学习等内容,后介绍了Theano在深度学习中的扩展可能性。
本书特色
本书对基于Theano的深度学习进行了完整叙述,Theano是一个能够在CPU或GPU上便于优化数值表示和深度学习模型的Python库。
本书提供了一些实用代码示例,有助于初学者易于理解如何构建复杂神经网络,而对于有经验的数据分析师会更关注书中的相关内容,解决图像识别、自然语言处理和博弈决策领域的监督式学习和非监督式学习、生成模型和强化学习。
本书还讨论了从简单数字识别、图像分类、目标定位、图像分割到图像字幕的图像识别任务,自然语言处理示例包括文本生成、聊天机器人、机器翻译和机器问答系统。其中,后一个示例是处理貌似真实的随机数据生成并解决如Open-AI生态的博弈问题。
后,本书总结了针对每项任务的佳性能网络。早期的研究成果主要是基于神经层的深度堆栈,尤其是卷积层,而本书给出了提高这些架构效率的原理,以帮助读者构建新的个性化神经网络。
关于本书
阅读本书将会学到的内容:
熟悉Theano和深度学习的概念;
给出监督式、非监督式、生成或强化学习的示例;
揭示设计高效深度学习网络的主要原则:卷积、残差连接和递归连接;
Theano在实际计算机视觉数据集中的应用,如数字分类和图像分类;
将Theano扩展到自然语言处理任务,如聊天机器人或机器翻译;
人工智能驱动策略以使得机器人能够解决博弈问题或从环境中学习;
基于生成模型生成真实的合成数据;
熟悉应用于Theano上层的两个框架:Lasagne和Keras。
通过神经网络架构设计的见解和实践可解决人工智能问题,理解深度学习中最先进网络的相关概念。利用 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浏览器访问。
译者序
原书前言
本书作者
原书致谢
第1 章 Theano 基础 //1
1.1 张量所需 //1
1.2 安装和加载Theano //2
1.2.1 Conda 软件包和环境管理器 // 2
1.2.2 在CPU 上安装和运行Theano // 2
1.2.3 GPU 驱动和相关库 // 3
1.2.4 在GPU 上安装和运行Theano // 4
1.3 张量 //5
1.4 计算图和符号计算 //8
1.5 张量操作 //11
1.5.1 维度操作算子 // 13
1.5.2 元素操作算子 // 14
1.5.3 约简操作算子 // 16
1.5.4 线性代数算子 // 16
1.6 内存和变量 //18
1.7 函数和自动微分 //20
1.8 符号计算中的循环运算 //22
1.9 配置、分析和调试 //26
1.10 小结 //29
第2 章 基于前馈神经网络的手写体数
字分类 //30
2.1 MNIST 数据集 // 30
2.2 训练程序架构 // 32
2.3 分类损失函数 // 33
2.4 单层线性模型 // 34
2.5 成本函数和误差 // 35
2.6 反向传播算法和随机梯度下降 // 36
2.7 多层模型 // 37
2.8 卷积层和最大池化层 // 43
2.9 训练 // 47
2.10 退出 // 52
2.11 推理 // 52
2.12 优化和其他更新规则 // 52
2.13 延伸阅读 // 56
2.14 小结 // 57
第3 章 单词的向量编码 //58
3.1 编码和嵌入 // 58
3.2 数据集 // 60
3.3 连续词袋模型 // 62
3.4 模型训练 // 66
3.5 可视化学习嵌入 // 68
3.6 嵌入评价类比推理 // 70
3.7 嵌入评价量化分析 // 72
3.8 单词嵌入应用 // 72
3.9 权重绑定 // 73
基于Theano 的深度学习:
构建未来与当前的人工大脑
XIV
3.10 延伸阅读 // 73
3.11 小结 // 74
第4 章 基于递归神经网络的文本
生成 //75
4.1 RNN 所需 // 75
4.2 自然语言数据集 // 76
4.3 简单递归网络 // 79
4.3.1 LSTM 网络 // 81
4.3.2 门控递归网络 // 83
4.4 自然语言性能评测 // 84
4.5 训练损失比较 // 84
4.6 预测示例 // 86
4.7 RNN 的应用 // 87
4.8 延伸阅读 // 88
4.9 小结 // 89
第5 章 基于双向LSTM 的情感
分析 // 90
5.1 Keras 的安装和配置 // 90
5.1.1 Keras 编程 // 91
5.1.2 SemEval 2013 数据集 // 93
5.2 文本数据预处理 // 94
5.3 模型架构设计 // 96
5.3.1 单词的向量表征 // 96
5.3.2 基于双向LSTM 的语句表征 // 97
5.3.3 softmax 分类器的输出概率 // 98
5.4 模型编译与训练 // 99
5.5 模型评估 // 99
5.6 模型保存与加载 // 100
5.7 示例运行 // 100
5.8 延伸阅读 // 100
5.9 小结 // 101
第6 章 基于空间变换网络的
定位 // 102
6.1 基于Lasagne 的MNIST CNN 模型
// 102
6.2 定位网络 // 104
6.2.1 RNN 在图像中的应用 // 108
6.3 基于共定位的非监督式学习 // 112
6.4 基于区域的定位网络 // 112
6.5 延伸阅读 // 113
6.6 小结 // 114
第7 章 基于残差网络的图像
分类 // 115
7.1 自然图像数据集 // 115
7.1.1 批处理标准化 // 116
7.1.2 全局平均池化 // 117
7.2 残差连接 // 118
7.3 随机深度 // 123
7.4 密集连接 // 124
7.5 多GPU // 125
7.6 数据增强 // 126
7.7 延伸阅读 // 127
7.8 小结 // 127
第8 章 基于编码解码网络的翻译
与解释 // 128
8.1 序列序列网络在自然语言处理
中的应用 // 128
8.2 序列序列网络在语言翻译中的
应用 // 133
8.3 序列序列网络在聊天机器人中的
应用 // 134
8.4 序列序列网络的效率提高 // 134
8.5 图像反卷积 // 136
目 录
XV
8.6 多模态深度学习 // 140
8.7 延伸阅读 // 140
8.8 小结 // 142
第9 章 基于注意力机制的相关输入
或记忆选择 // 143
9.1 注意力可微机制 // 143
9.1.1 基于注意力机制的最佳
翻译 // 144
9.1.2 基于注意力机制的最佳图像
注释 // 145
9.2 神经图灵机中的信息存储和
检索 // 146
9.3 记忆网络 // 148
9.3.1 基于动态记忆网络的情景
记忆 // 149
9.4 延伸阅读 // 150
9.5 小结 // 151
第10 章 基于先进递归神经网络的时
间序列预测 // 152
10.1 RNN 的退出 // 152
10.2 RNN 的深度学习方法 // 153
10.3 层叠递归网络 // 154
10.4 深度转移递归网络 // 157
10.5 高速网络设计原理 // 157
10.6 递归高速网络 // 158
10.7 延伸阅读 // 159
10.8 小结 // 159
第11 章 强化环境学习 // 160
11.1 强化学习任务 // 160
11.2 仿真环境 // 161
11.3 Q 学习 // 164
11.4 深度Q 学习网络 // 166
11.5 训练稳定性 // 167
11.6 基于REINFORCE 算法的策略
梯度 // 169
11.7 延伸阅读 // 171
11.8 小结 // 172
第12 章 基于非监督式网络的特征
学习 // 173
12.1 生成模型 // 173
12.1.1 受限玻耳兹曼机 // 173
12.1.2 深度信念网络 // 177
12.1.3 生成性对抗网络 // 178
12.1.4 改进GAN // 182
12.2 半监督式学习 // 182
12.3 延伸阅读 // 183
12.4 小结 // 184
第13 章 基于Theano 的深度学习
扩展 // 185
13.1 CPU 中Python 实现的Theano
操作 // 185
13.2 GPU 中Python 实现的Theano
操作 // 188
13.3 CPU 中C 实现的Theano 操作 //
190
13.4 GPU 中C 实现的Theano 操作 //
193
13.5 通过共享内存的合并转置,NVIDIA
并行 // 196
13.5.1 模型转换 // 197
13.6 人工智能的未来发展 // 199
13.7 延伸阅读 // 201
13.8 小结 // 202