编辑推荐

适读人群:从事机器学习、深度学习、人工智能等领域的工程技术人员以及高等院校相关专业本科生、研究生和教师

《基于Theano的深度学习:构建未来与当前的人工大脑》对基于Theano的深度学习进行了完整叙述,Theano是一个能够在CPU或GPU上便于优化数值表示和深度学习模型的Python库。

《基于Theano的深度学习:构建未来与当前的人工大脑》提供了一些实用代码示例,有助于初学者易于理解如何构建复杂神经网络,而对于有经验的数据分析师会更关注书中的相关内容,解决图像识别、自然语言处理和博弈决策领域的监督式学习和非监督式学习、生成模型和强化学习。

《基于Theano的深度学习:构建未来与当前的人工大脑》还讨论了从简单数字识别、图像分类、目标定位、图像分割到图像字幕的图像识别任务,自然语言处理示例包括文本生成、聊天机器人、机器翻译和机器问答系统。其中,后一个示例是处理貌似真实的随机数据生成并解决如Open-AI生态的博弈问题。

后,《基于Theano的深度学习:构建未来与当前的人工大脑》总结了针对每项任务的佳性能网络。早期的研究成果主要是基于神经层的深度堆栈,尤其是卷积层,而《基于Theano的深度学习:构建未来与当前的人工大脑》给出了提高这些架构效率的原理,以帮助读者构建新的个性化神经网络。

《基于Theano的深度学习:构建未来与当前的人工大脑》

阅读《基于Theano的深度学习:构建未来与当前的人工大脑》将会学到的内容:

?熟悉Theano和深度学习的概念;

?给出监督式、非监督式、生成或强化学习的示例;

?揭示设计高效深度学习网络的主要原则:卷积、残差连接和递归连接;

?Theano在实际计算机视觉数据集中的应用,如数字分类和图像分类;

?将Theano扩展到自然语言处理任务,如聊天机器人或机器翻译;

?人工智能驱动策略以使得机器人能够解决博弈问题或从环境中学习;

?基于生成模型生成真实的合成数据;

?熟悉应用于Theano上层的两个框架:Lasagne和Keras。

关注“科技电眼”微信号,回复“58878”可直接获取下载地址。

内容简介

《基于Theano的深度学习:构建未来与当前的人工大脑》主要介绍了深度学习的基本概念和常用网络以及Theano在深度学习中的应用。共13章,首先介绍了Theano的基础知识,包括张量、计算图、符号计算、张量算子、自动微分等概念,然后分别介绍了基于前馈神经网络的手写体数字分类、单词的向量编码、基于递归神经网络的文本生成、基于双向LSTM的情感分析、基于空间变换网络的定位、基于剩余网络的图像分类、基于编码—解码网络的翻译与解释、基于注意力机制的相关输入或记忆选择、基于先进递归神经网络的时间序列预测、强化环境学习和基于非监督式网络的特征学习等内容,后介绍了Theano在深度学习中的扩展可能性。

作者简介

ChristopherBourez于2005年毕业于巴黎综合理工大学和卡尚高等师范学院,获得数学、机器学习和计算机视觉(MVA)的硕士学位。

7年来,他创立了一家计算机视觉公司,在2007年推出了一种用于iPhone的视觉识别应用程序Pixee,与巴黎市的各大影院品牌和一些主要票务经销商合作:通过一张照片,用户可以获取有关活动、产品和购票方式等信息。

在应用Caffe、TensorFlow或Torch来完成计算机视觉任务的过程中,通过计算机科学的博客,帮助其他开发人员成功实现。其中一篇博客文章—“AtutorialontheCaffedeeplearningtechnology”(基于Caffe的深度学习技术教程),已成为继Caffe官方网站之后在网络上受欢迎的教程。

在Packt出版社的积极倡导下,将其撰写Caffe教程的成功经验移植到关于Theano技术的《基于Theano的深度学习:构建未来与当前的人工大脑》上。与此同时,还深入研究了有关深度学习的广泛问题,并在Theano及其应用方面积累了更多的实践经验。

目录

译者序

原书前言

基于Theano的深度学习:构建未来与当前的人工大脑》作者

原书致谢

第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

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 SemEval2013数据集//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的MNISTCNN模型//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

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

前言/序言

前言

通过神经网络架构设计的见解和实践可解决人工智能问题,理解深度学习中最先进网络的相关概念。利用Python实现的Theano技术能够很容易地计算导数并最小化所选择的目标函数。

基于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是目前最好的深度学习技术,远非仅是一个深度学习库。选择Theano主要是以下3个原因:

.具有其他数值计算库或深度学习库的类似性能;

.具有丰富的Python系统;

.根据给定模型,可由数据来评估任何函数约束,从而可以求解任何优化问题。

首先考虑技术本身的性能。在深度学习方面常用的库有Theano(用于Python)、Torch(用于Lua)、Tensorflow(用于Python)和Caffe(用于C++和Python封装)。目前已有很多基准可对深入学习技术进行比较。

2012年Bastien等人提出(Theano:newfeaturesandspeedimprovements,FrédéricBastien,PascalLamblin,RazvanPascanu,JamesBergstra,IanGoodfellow,ArnaudBergeron,NicolasBouchard,DavidWarde-Farley,YoshuaBengio,Nov2012),Theano在运行速度方面取得了重大进展,但这是在执行不同的任务下比较的,并不能明确表明在其他技术中具有明显的优势。2016年Bahrampour等人(ComparativeStudyofDeepLearningSoftwareFrameworks,SoheilBahrampour,NaveenRamakrishnan,LukasSchott,MohakShah,mars2016)研究得出了以下结论:

.在基于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图形库。最后,在最新的soumithbenchmarks(https://github.com/soumith/convent-benchmarks)中,Theano的fftconv在CPU上执行性能最佳,而在GPU上执行卷积运算最佳的是cuda-convnet2,对于fbfft执行最佳的是CUDA扩展库,即底层标准库。这些结论表明,尽管测试结果是多方面的,但Theano在执行速度方面起着主导作用。

其次,选择Theano而不是Torch的原因在于其不仅继承了Python系统的优点,而且还拥有专为Theano而开发的大量库,从而具有丰富的编程系统。《基于Theano的深度学习:构建未来与当前的人工大脑》将介绍其中的两个高级库—Lasagne和Keras。在支持各种深度学习架构和计算库方面,Theano和Torch都是最具扩展性的框架。最后,与其他深度学习库相比,Theano调试简单。

Theano成为计算机科研人员所使用的强大工具的第三个原因是因为其不是专用于深入学习的。虽然Theano在深度学习方面所采用的方法与其他库相同,但其基本原理却完全不同:实际上,Theano是对目标架构上的计算图进行编译。这种编译步骤使得Theano极具特性,应该将其定义为一种根据机器学习思想设计的数学表达式编译器。符号微分是Theano为实现非标准深度学习架构所提供的最有用的功能之一。因此,Theano能够解决更大范围的数值问题,并可用于在给定现有数据集下最小化求解由可微损失函数或能量函数所表征的任何问题。

学习《基于Theano的深度学习:构建未来与当前的人工大脑》所需的准备工作

安装Theano需要conda或pip,且在Windows、MacOS和Linux操作系统下的安装过程均相同。

在MacOS和LinuxUbuntu操作系统下已对书中代码进行了测试。在Windows操作系统下可能会有所不同,如修改路径,这些问题都是Windows操作系统开发人员很容易解决的。

假设这些示例代码可存储在计算机的一个共享文件夹内,可下载、解压和预处理非常大的数据库文件,而不能留在代码库中。这种做法有助于节省磁盘空间,而多个代码目录

原书前言

和用户可使用相同的数据库副本。该文件夹通常是用户共享的:

sudomkdir/sharedfilessudochmod777/sharedfiles

基于Theano的深度学习:构建未来与当前的人工大脑》读者对象

基于Theano的深度学习:构建未来与当前的人工大脑》旨在以Theano为支持技术,提供深度学习的全面概述。《基于Theano的深度学习:构建未来与当前的人工大脑》专门针对深度学习和人工智能的初学者,以及想要积累跨领域开发经验并熟悉Theano及其支持库的计算机程序人员。《基于Theano的深度学习:构建未来与当前的人工大脑》有助于读者了解深度学习相关知识,并获取深度学习的相关实用信息。

学习《基于Theano的深度学习:构建未来与当前的人工大脑》需要一些Python编程和计算机科学的基本技能,以及初等代数和微积分的知识。所有实验的基本技术都是Theano,《基于Theano的深度学习:构建未来与当前的人工大脑》首先深入介绍了这一核心技术,然后介绍了一些库及其在现有模块上的重用。

基于Theano的深度学习:构建未来与当前的人工大脑》向读者介绍了深度学习的各种方法,讨论了不同类型的网络及其应用,同时分析了由深度学习技术Theano为所有实现提供支持的可能性。《基于Theano的深度学习:构建未来与当前的人工大脑》总结了一些性能最优的网络和最先进的成果,并帮助读者全面了解深度学习架构,逐步从简单网络扩展到复杂网络。

由于Python已成为数据科学的主要编程语言,因此《基于Theano的深度学习:构建未来与当前的人工大脑》试图涵盖Python程序员利用Python和Theano进行深度学习所需了解的所有内容。

基于Theano的深度学习:构建未来与当前的人工大脑》还介绍了Theano上的两个抽象框架Lasagne和Keras,可以简化更复杂网络的开发,且不影响理解基本概念。

约定惯例

在《基于Theano的深度学习:构建未来与当前的人工大脑》中,提供了区分不同类型信息的多种文本样式。下面是这些文本格式的一些示例及其含义的解释。

代码文本、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟URL、用户输入和Twitter句柄如下所示:“运算符是由theano.Op泛型类派生的类定义。”

代码块如下:

importtheano,numpy

classAXPBOp(theano.Op):

"""

ThiscreatesanOpthattakesxtoa*x+b.

"""

__props__=("a","b")

任何命令行输入或输出如下:

gsutilmb-leurope-west1gs://keras_sentiment_analysis

新术语和重要词汇用粗体显示。在屏幕上看到的单词(例如在菜单或对话框中)出现在以下文本中:“点击下一步按钮可切换到下一界面”。

提示和技巧会这样显示

读者反馈

欢迎读者反馈意见。让作者了解读者对《基于Theano的深度学习:构建未来与当前的人工大脑》的看法,喜欢什么或不喜欢什么。读者反馈对于作者开发真正让读者受益的主题非常重要。

若要给作者反馈意见,只需发送邮件到feedback@packtpub.com,并在邮件标题中注明书名。

如果有读者擅长的主题或有兴趣参与撰写或出版的书,请查看www.packtpub.com/authors上的作者指南。

用户支持

既然读者购买了Packt出版社出版的书,那么出版社将会帮助读者获得最大收益。

示例代码下载

读者可以在http://www.packtpub.com上根据账户下载《基于Theano的深度学习:构建未来与当前的人工大脑》的示例代码。如果想要购买《基于Theano的深度学习:构建未来与当前的人工大脑》电子版,可以访问http://www.packtpub.com/support并注册,将直接通过电子邮件发送给读者。

下载代码文件步骤如下:

1)通过邮件地址和密码在网站上登录或注册。

2)鼠标指向顶部的SUPPORT选项。

3)单击CodeDownloads&Errata。

4)在Search框中输入书名。

5)选择想要下载代码文件的书。

6)在下拉菜单中选择购买《基于Theano的深度学习:构建未来与当前的人工大脑》的方式。

7)单击CodeDownload。读者也可以通过单击Packt出版社网站上《基于Theano的深度学习:构建未来与当前的人工大脑》网页的CodeFiles按钮来下载代码文件。

通过在Search框中输入书名来访问该页面。需要注意的是,应首先通过Packt账户登录。下载完成后,请用以下软件最新版本来解压文件夹:

.WinRAR/7-ZipforWindows。

.Zipeg/iZip/UnRarXforMac。

.7-Zip/PeaZipforLinux。《基于Theano的深度学习:构建未来与当前的人工大脑》的代码包还托管在GitHub上,https://github.com/PacktPublishing/Hands-On-Deep-

原书前言

Learning-with-TensorFlow。另外在https://github.com/PacktPublishing/上的大量图书和视频目录中还有其他代码包。请查阅!

勘误

尽管已尽力确保内容准确,但仍然难免会有错误。如果读者在书中发现了错误、文本或代码错误,如果能及时告知,将不胜感激。这样会帮助其他读者,并有助于在《基于Theano的深度学习:构建未来与当前的人工大脑》的后续版本中进行完善。如果读者发现任何错误,请访问http://www.packtpub.com/submit-errata告知。首先选择书名,点击勘误提交表单链接,然后输入详细的勘误内容。一旦通过验证,将会接受读者的提交并将勘误表上传网站,或在该标题的勘误部分下添加到现有的勘误表中。

若要查看已提交的勘误表,请访问https://www.packtpub.com/books/content/support,并在搜索栏中输入书名。相关信息将会显示在Errata部分中。

版权保护

在互联网上受版权保护的资料,涉及的盗版问题是一个存在于所有媒体的严重问题。Packt出版社非常重视保护版权和许可。如果读者在网上发现任何非法复制的作品,请立即提供地址和网址,以便追踪索赔。请通过copyright@packtpub.com联系我们,并提供疑似盗版材料的链接。非常感谢您在保护作者和为您提供宝贵内容方面的帮助。

问题

如果读者对《基于Theano的深度学习:构建未来与当前的人工大脑》有任何问题,请通过questions@packtpub.com联系我们,我们将竭尽全力为读者解决。

原书审阅人

MatthieudeBeaucorps是具有丰富工程背景的机器学习专家,自2012年以来,一直从事深度神经网络研究,以提高在计算机视觉、语音识别和自然语音处理中的识别和推荐任务。

PascalLamblin是MILA(蒙特利尔机器学习算法研究所)的软件分析师,他在获得巴黎中央理工学院工程学位后,在蒙特利尔大学YoshuaBengio的指导下进行研究工作,目前主要从事Theano的开发研究。


其他推荐