重磅推荐
【产品特色】

【编辑推荐】

1.TensorLayer是一个基于TensorFlow的深度学习开发工具。其透明,灵活,高性能的特点,使得它得到了大量初学者乃至资深开发者的青睐。TensorLayer获得了ACM Multimedia颁发的2017年度*开源软件奖。

2.本书是在帝国理工学院计算机系终身教授郭毅可的领导下,由TensorLayer创始人领衔,TensorLayer主要开发团队倾力打造而成,作者全部来自一线人工智能研究员和工程师,为读者提供了一次非常美妙的AI之旅。

3.本书案例是作者们经过精心挑选后写作的,其中不乏诸如,价值上亿美金的超高分辨率复原、已实际应用在医学上的图像语义分割等黄金案例,值得初学者和研究者们学习参考。

4.本书作者额外提供了案例使用的模型,请到http://www.broadview.com.cn/book/5059下载使用。


【内容简介】
本书由TensorLayer创始人领衔,TensorLayer主要开发团队倾力打造而成。内容不仅覆盖了人工神经网络的基本知识,如多层感知器、卷积网络、递归网络及增强学习等,还着重讲解了深度学习的一些新的技术,如生成对抗网络、学习方法和实践经验,配有许多应用及产品的实例。读者可从零开始掌握深度学习技术,以及使用TensorLayer实现的各种应用。本书以通俗易懂的方式讲解深度学习技术,同时配有实现方法教学,面向深度学习初学者、进阶者,以及希望长期从事深度学习研究和产品开发的深度学习的大学生和工程师。
【作者简介】
董豪:目前就读于帝国理工学院,从事计算机视觉、医疗数据分析和深度学习理论研究,在ICCV、TNSRE、TIFS、ACM MM等*会议和期刊发表过论文,Neurocomputing、TIP等会议和期刊的审稿人。有创业经验,擅长把深度学习算法与实际问题结合,获得多项国家发明专利和实用新型专利,TensorLayer创始人。

郭毅可:英国帝国理工学院计算系终身教授,帝国理工数据科学研究所(Data Science Institute)所长,上海大学计算机学院院长,中国计算机协会大数据专委会创始会员。郭教授主持多项中国、欧盟和英国大型数据科学项目,累计总金额达1000亿人民币。郭教授的研究重点为机器学习、云计算、大数据和生物信息学。也是大数据会议KDD2018的主席。他是上海,北京,江苏省政府特聘专家,中国科学院网络信息中心、中国科学院深圳先进技术研究院客座研究员。郭教授从2015年起,发起和领导了TensorLayer项目作为帝国理工数据科学研究所的重要机器学习工具。




杨光:帝国理工医学院高级研究员,皇家布朗普顿医院医学图像分析师,伦敦大学圣乔治医学院荣誉讲师,伦敦大学学院(UCL)硕士、博士、IEEE会员、SPIE会员、ISMRM会员、BMVA会员,专注于医疗大数据以及医学图像的成像和分析,在各类期刊会议上发表论文近40篇,国际专利两项,Medical Physics杂志临时副主编,MIUA会议委员会委员,长期为专业杂志会议义务审稿50余篇。其研究方向获得英国EPSRC、CRUK、NIHR和British Heart Foundation (BHF)资助。近期致力于Medical AI方向的创新创业。



吴超:帝国理工数字科学研究所研究员,主要从事医疗和城市领域数据分析和建模的研究工作,研究工作获得EPSRC、Royal Society等多项研
究基金资助。




王剑虹:帝国理工硕士及利物浦大学本科毕业,主要研究语音识别分类问题;目前在UCL攻读研究型硕士,主要研究增强学习在游戏中的运用。




幺忠玮:帝国理工硕士,本科毕业于北京邮电大学,主要研究方向为计算机视觉,对生成模型和目标识别领域感兴趣。目前致力于将目标检测算法植入嵌入式系统实现即时检测。




张敬卿:帝国理工博士在读,研究型硕士,主要研究兴趣包括深度学习、数据挖掘、时间序列与文本挖掘、多模态问题与生成模型。本科毕业于清华大学计算机科学与技术系,曾获得中国国家奖学金。




陈竑:北京大学光华管理学院在读,哈尔滨工业大学电子与信息工程学院毕业,深度学习爱好者。




林一鸣:帝国理工博士在读,主要研究深度学习在人脸分析方向的应用。




于思淼:帝国理工博士在读,浙江大学本科毕业,主要研究方向为深度学习、生成模型及其在计算机视觉方面的应用。




莫元汉:帝国理工博士在读,北京航空航天大学本科毕业,主要研究方向为深度学习、动力学及其在医疗图像分析方面的应用。




袁航:瑞士洛桑联邦理工(EPFL)硕士在读,本科就读于德国雅各布大学(Jacobs)计算机系,及在美国卡内基梅隆大学(CMU)计算机科学学院交换学习,主要从事计算神经科学与电脑人机接口研究。之前分别在帝国理工及马克斯普朗克智能系统研究院(Max Planck Institute for Intelligent Systems)进行研习,现在主要在EPFL G-lab研究脊髓修复对运动功能康复及血压控制等课题。

【目录】

1 深度学习简介1

1.1 人工智能、机器学习和深度学习. . . . . . . . . . . . . . . . . . . . . . . 1

1.1.1 引言. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.1.2 人工智能、机器学习和深度学习三者的关系. . . . . . . . . . . . 2

1.2 神经网络. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2.1 感知器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2.2 激活函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.2.3 损失函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.2.4 梯度下降和随机梯度下降. . . . . . . . . . . . . . . . . . . . . . 8

1.2.5 反向传播算法简述. . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.2.6 其他神经网络. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1.3 学习方法建议. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.3.1 网络资源. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.3.2 TensorFlow 官方深度学习教程. . . . . . . . . . . . . . . . . . . . 14

1.3.3 开源社区. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

1.4 TensorLayer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

1.4.1 深度学习框架概况. . . . . . . . . . . . . . . . . . . . . . . . . . 15

1.4.2 TensorLayer 概括. . . . . . . . . . . . . . . . . . . . . . . . . . . 16

1.4.3 实验环境配置. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2 多层感知器19

2.1 McCulloch-Pitts 神经元模型. . . . . . . . . . . . . . . . . . . . . . . . . . 19

2.1.1 人工神经网络到底能干什么?到底在干什么. . . . . . . . . . . . 21

2.1.2 什么是激活函数?什么是偏值. . . . . . . . . . . . . . . . . . . . 22

2.2 感知器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

2.2.1 什么是线性分类器. . . . . . . . . . . . . . . . . . . . . . . . . . 24

2.2.2 线性分类器有什么优缺点. . . . . . . . . . . . . . . . . . . . . . 26

2.2.3 感知器实例和异或问题(XOR 问题) . . . . . . . . . . . . . . . 26

2.3 多层感知器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

2.4 实现手写数字分类. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

2.5 过拟合. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

2.5.1 什么是过拟合. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

2.5.2 Dropout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

2.5.3 批规范化. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

2.5.4 L1、L2 和其他正则化方法. . . . . . . . . . . . . . . . . . . . . . 42

2.5.5 Lp 正则化的图形化解释. . . . . . . . . . . . . . . . . . . . . . . 44

2.6 再实现手写数字分类. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

2.6.1 数据迭代器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

2.6.2 通过all_drop 启动与关闭Dropout . . . . . . . . . . . . . . . . 47

2.6.3 通过参数共享实现训练测试切换. . . . . . . . . . . . . . . . . . 50

3 自编码器54

3.1 稀疏性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

3.2 稀疏自编码器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

3.3 实现手写数字特征提取. . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

3.4 降噪自编码器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

3.5 再实现手写数字特征提取. . . . . . . . . . . . . . . . . . . . . . . . . . . 68

3.6 堆栈式自编码器及其实现. . . . . . . . . . . . . . . . . . . . . . . . . . . 72

4 卷积神经网络80

4.1 卷积原理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

4.1.1 卷积操作. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

4.1.2 张量. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

4.1.3 卷积层. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

4.1.4 池化层. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

4.1.5 全连接层. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

4.2 经典任务. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

4.2.1 图像分类. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

4.2.2 目标检测. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

4.2.3 语义分割. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

4.2.4 实例分割. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

4.3 经典卷积网络. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

4.3.1 LeNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

4.3.2 AlexNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

4.3.3 VGGNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

4.3.4 GoogLeNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

4.3.5 ResNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

4.4 实现手写数字分类. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

4.5 数据增强与规范化. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

4.5.1 数据增强. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

4.5.2 批规范化. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

4.5.3 局部响应归一化. . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

4.6 实现CIFAR10 分类. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

4.6.1 方法1:tl.prepro 做数据增强. . . . . . . . . . . . . . . . . . . . . 108

4.6.2 方法2:TFRecord 做数据增强. . . . . . . . . . . . . . . . . . . . 114

4.7 反卷积神经网络. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

5 词的向量表达121

5.1 目的与原理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

5.2 Word2Vec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

5.2.1 简介. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

5.2.2 Continuous Bag-Of-Words(CBOW)模型. . . . . . . . . . . . . 124

5.2.3 Skip Gram(SG)模型. . . . . . . . . . . . . . . . . . . . . . . . 129

5.2.4 Hierarchical Softmax . . . . . . . . . . . . . . . . . . . . . . . . . . 132

5.2.5 Negative Sampling . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

5.3 实现Word2Vec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136

5.3.1 简介. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136

5.3.2 实现. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136

5.4 重载预训练矩阵. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144

6 递归神经网络148

6.1 为什么需要它. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

6.2 不同的RNNs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

6.2.1 简单递归网络. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

6.2.2 回音网络. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152

6.3 长短期记忆. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

6.3.1 LSTM 概括. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

6.3.2 LSTM 详解. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157

6.3.3 LSTM 变种. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

6.4 实现生成句子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

6.4.1 模型简介. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

6.4.2 数据迭代. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

6.4.3 损失函数和更新公式. . . . . . . . . . . . . . . . . . . . . . . . . 164

6.4.4 生成句子及Top K 采样. . . . . . . . . . . . . . . . . . . . . . . . 167

6.4.5 接下来还可以做什么. . . . . . . . . . . . . . . . . . . . . . . . . 169

7 深度增强学习171

7.1 增强学习. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172

7.1.1 概述. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172

7.1.2 基于价值的增强学习. . . . . . . . . . . . . . . . . . . . . . . . . 173

7.1.3 基于策略的增强学习. . . . . . . . . . . . . . . . . . . . . . . . . 176

7.1.4 基于模型的增强学习. . . . . . . . . . . . . . . . . . . . . . . . . 177

7.2 深度增强学习. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

7.2.1 深度Q 学习. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

7.2.2 深度策略网络. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181

7.3 更多参考资料. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

7.3.1 书籍. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

7.3.2 在线课程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

8 生成对抗网络188

8.1 何为生成对抗网络. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189

8.2 深度卷积对抗生成网络. . . . . . . . . . . . . . . . . . . . . . . . . . . . 190

8.3 实现人脸生成. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191

8.4 还能做什么. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

9 高级实现技巧202

9.1 与其他框架对接. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202

9.1.1 无参数层. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203

9.1.2 有参数层. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203

9.2 自定义层. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204

9.2.1 无参数层. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204

9.2.2 有参数层. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205

9.3 建立词汇表. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207

9.4 补零与序列长度. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209

9.5 动态递归神经网络. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210

9.6 实用小技巧. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

9.6.1 屏蔽显示. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

9.6.2 参数名字前缀. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212

9.6.3 获取特定参数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213

9.6.4 获取特定层输出. . . . . . . . . . . . . . . . . . . . . . . . . . . . 213

10 实例一:使用预训练卷积网络214

10.1 高维特征表达. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214

10.2 VGG 网络. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215

10.3 连接TF-Slim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221

11 实例二:图像语义分割及其医学图像应用225

11.1 图像语义分割概述. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225

11.1.1 传统图像分割算法简介. . . . . . . . . . . . . . . . . . . . . . . . 227

11.1.2 损失函数与评估指标. . . . . . . . . . . . . . . . . . . . . . . . . 229

11.2 医学图像分割概述. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230

11.3 全卷积神经网络和U-Net 网络结构. . . . . . . . . . . . . . . . . . . . . 232

11.4 医学图像应用:实现脑部肿瘤分割. . . . . . . . . . . . . . . . . . . . . 234

11.4.1 数据与数据增强. . . . . . . . . . . . . . . . . . . . . . . . . . . . 235

11.4.2 U-Net 网络. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238

11.4.3 损失函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239

11.4.4 开始训练. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241

12 实例三:由文本生成图像244

12.1 条件生成对抗网络之GAN-CLS . . . . . . . . . . . . . . . . . . . . . . . 245

12.2 实现句子生成花朵图片. . . . . . . . . . . . . . . . . . . . . . . . . . . . 246

13 实例四:超高分辨率复原260

13.1 什么是超高分辨率复原. . . . . . . . . . . . . . . . . . . . . . . . . . . . 260

13.2 网络结构. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261

13.3 联合损失函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264

13.4 训练网络. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269

13.5 使用测试. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277

14 实例五:文本反垃圾280

14.1 任务场景. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280

14.2 网络结构. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281

14.3 词的向量表示. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282

14.4 Dynamic RNN 分类器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283

14.5 训练网络. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284

14.5.1 训练词向量. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284

14.5.2 文本的表示. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290

14.5.3 训练分类器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291

14.5.4 模型导出. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296

14.6 TensorFlow Serving 部署. . . . . . . . . . . . . . . . . . . . . . . . . . . . 299

14.7 客户端调用. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301

14.8 其他常用方法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306

中英对照表及其缩写309

参考文献316



【前言】
深度学习已经成为了当今人工智能发展的主要助力,国务院印发的《新一代人工智能发展规划》中表示,2020年我国人工智能核心产业规模超过1500亿元,带动相关产业规模超过1万亿元;2030年人工智能核心产业规模超过1万亿元,带动相关产业规模超过10万亿元。

为此产业界急需大量实用性人才,而深度学习是一门理论与工程相结合的科学,本书将以通俗易懂的方式讲解深度学习技术,并辅以实践教学。本书同时面向深度学习初学者、进阶者及工程师,内容涵盖了全连接网络、自编码器、卷积神经网络、递归神经网络、深度增强学习、生成对抗网络等,并附有多个进阶实例教程。与传统深度学习书籍相比,本书有以下特点。


本书注重实践,科研人员和工程师都希望有一个深度学习开发工具可以同时满足学术界和产业界的需求,可让*的人工智能算法很快地从实验室投入到产品中。为此我们开发了深度学习框架—— TensorLayer。读者可以从零基础开始学习掌握目前*的深度学习技术。更多关于TensorLayer的设计思路请见第1章。帝国理工数据科学院(Data Science Institute)是TensorLayer的发起单位和主要开发单位,郭毅可教授是该项目领导。


本书对深度学习的*方法进行了更多的阐述,特别是生成对抗网络方面,该研究方向已在无监督学习方面取得重大突破,并已经开始在产业界产生非常大的影响。本书还介绍及使用了多种新的反卷积方法,如子像素卷积和缩放卷积。


研究深度学习需要做大量的实验,本书在讲解技术的同时传授了很多实验经验。除神经网络外,本书还讲解了数据预处理、数据后加工、训练、服务架设等任务,这些都是搭建整个学习系统和产品的基本工作流。


本书编著方式与其他同类书籍不同,是由TensorLayer中文社区众包完成的,由董豪统稿。本书代码除第3章和第14章实例五外都由董豪提供,本书第1章由莫元汉、董豪和郭毅可执笔;第2章教学部分由杨光执笔,实现讲解部分由董豪执笔;第3章由幺忠玮执笔;第4章由林一鸣执笔;第5章由王剑虹执笔;第6章由袁航执笔;第7章由于思淼执笔;第8章与第12章实例三由张敬卿执笔;第9章、第10章实例一和第13章实例四由董豪执笔;第11章实例二讲解部分由杨光执笔,实现部分由董豪执笔;第14章实例五由陈竑执笔。本书图片整理由出版社、吴超、赵婧楠和种道涵完成,封面设计由出版社和王盼完成。


虽然本书的作者都是一线科研人员和技术人员,但是不妥和错误之处在所难免,真诚地希望有关专家和读者给予批评指正,以便再版时修改。*后,在计算机技术发展非常快的今天,书籍里的知识更新速度有限,建议读者多参与社区讨论交流。本书代码例子使用TensorFlow1.2和TensorLayer1.5.3,Python3在Ubuntu下测试。由于TensorFlow和TensorLayer在不断地更新,若出现兼容性问题,请到各章节给定的网址链接中获取*的代码。


本书作者
2017年12月



【书摘与插画】
1.1 人工智能、机器学习和深度学习
1.1.1 引言
“人工智能”(Arttificial Intelligence,AI),这个术语起源于1956 年的达特矛斯夏季人工智能研究计划(Dartmouth Summer Research Project on Artificial Intelligence)。会议上的先驱们希望借助当时计算机强大的运算能力来创造一个具有人类智能的复杂机器。
这样的机器并不是用来处理一些特定的计算任务,比如财会的账务软件,流体力学的模拟程序等,而是应该具有通用性,它可以处理更加复杂的任务,比如理解语言,对人类语言中的概念进行自我学习,并具有一定的推理能力,就像我们在电影中看到的那些机器人一样。这就是所谓的“通用人工智能”或“强人工智能”(General AI)。
虽然无数的科学家都在不遗余力地朝着通用人工智能的方向努力,但遗憾的是,我们现在还不能创造出一台具有类似人类智能的机器。我们现在可以做的只是在某些特定任务上达到或者超过人类的水平,比如说人脸识别、垃圾邮件的分类等。我们认为这样的系统具有一定的智能,但并不是之前所说的通用人工智能,而是“弱人工智能”(Narrow AI)。
1.1.2 人工智能、机器学习和深度学习三者的关系
弱人工智能的实现得益于当下机器学习的蓬勃发展,机器学习作为一种数据驱动(Data-Driven)的学习理论,需要大量的数据和强大的计算资源来让机器更好、更快地“理解”数据中的模式,以达到预测的目的。但是我们也应该知道,机器学习只是实现人工智能的众多途径中的一种,与之相对应的还有规则驱动模型(Rule-Based)。近十年来,随着移动互联网和高性能计算硬件(如GPU)的发展,使得机器学习的这两个先决条件(数据和计算资源)得到了满足,机器学习这个领域也再度活跃起来。深度学习(多层神经网络)作为机器学习的一个子学科更是一个以数据为核心的方法。早期由于数据量的限制,人们发现多层(深度)神经网络的训练难以收敛,或者只能收敛到局部次优解,这样训练出来的网络的性能还不如浅层神经网络,这个严重的问题直接导致了深度学习方法的上一次衰败。然而近十年随着数据以爆炸式的规模积累以及计算能力的突飞猛进,人们发现在大量数据训练下的深度神经网络可以表现得很好,而且计算能力的进步也让训练时间可以接受。总的来说,深度学习、机器学习和人工智能可以用一个蕴含关系来表达,即人工智能包含机器学习,机器学习包含深度学习。
计算机视觉可能是当前机器学习应用*成功的领域,过去的方法需要大量的人工来提取特征。比如,人们需要手工编写分类器、边缘检测器,以便让程序能识别物体从哪里开始,到哪里结束。通过用上面这些人工提取的特征对算法进行训练,机器学习的算法终于可以用来识别图像是不是一只猫,而且效果还不错。但是,这样训练出来的模型对含有噪声的数据并不能很好地处理,比如动物的某一部位块被遮挡了,或者照片是在不同的光照环境下采集的。这些都会大大影响算法性能,导致识别的准确率下降。
这也是为什么在之前几年,机器学习算法虽然有着显著的进步但是还不足以接近人的能力。因为,人工提取的特征太僵化,许多环境的因素没有考虑。但是,随着深度学习的崛起,这样瓶颈已经不复存在了。
一般我们会通过三个方面来描述一个机器学习模型,它们是“模型”、“策略”和“算法”。模型讨论了在数据学习的过程中,用来表达数据的参数将以何种形式进行工作。有了模型,接下来需要考虑的问题是我们以何种标准来寻找模型的*参数。*后是算法,机器学习(深度学习)的模型是基于数据进行学习的,有了学习的模型和标准后,就需要考虑通过怎样的数值方法来求解*模型。在下一节中我们会从这三个方面来介绍深度学习的基础。


返回顶部