本书共22章,分为三个部分。部分(第1~5章)为Python及应用数学基础部分,介绍Python和TensorFlow的基石Numpy,深度学习框架的鼻祖Theano,以及机器学习、深度学习算法应用数学基础等内容。第二部分(第6~20章)为深度学习理论与应用部分,介绍机器学习的经典理论和算法,深度学习理论及方法,TensorFlow基于CPU、GPU版本的安装及使用、TensorFlow基础、TensorFlow的一些新API,深度学习中神经网络方面的模型及TensorFlow实战案例,TensorFlow的高级封装,TensorFlow综合实战案例等内容。第三部分(第21~22章)为扩展部分,介绍强化学习、生成式对抗网络等内容。
适读人群 :?对深度学习感兴趣的大学生、研究生、在职人员等?科研院所的研究人员?其他深度学习爱好者,如产品经理、投资人等
(1)4位作者在大数据和人工智能领域有多年积累,经验丰富;
(2)从Python和数学基础,到机器学习和TensorFlow理论,再到深度学习的应用和扩展,为深度学习提供全栈式内容解决方案;
(3)包含大量实战案例和综合性项目案例;
(4)图形化的表达方式,降低读者学习门槛。
为什么写这本书
人工智能新时代学什么?我们知道,Python是人工智能的首选语言,深度学习是人工智能的核心,而TensorFlow是深度学习框架中的No.1。所以我们在本书中将这三者有机结合,希望借此把这些目前应用最广、最有前景的工具和算法分享给大家。
人工智能新时代如何学?市面上介绍这些工具和深度学习理论的书籍已有很多,而且不乏经典大作,如讲机器学习理论和算法的有周志华老师的《机器学习》;介绍深度学习理论和算法的有伊恩·古德费洛等编著的《深度学习》;介绍TensorFlow实战的有黄文坚、唐源编著的《TensorFlow实战》、山姆·亚伯拉罕等编著的《面向机器智能的TensorFlow实践》等。这些都是非常经典的大作,如果你对机器学习、深度学习、人工智能感兴趣的话,这些书均值得一读。
本书在某些方面或许无法和它们相比,但我觉得也会有不少让你感到满意,甚至惊喜的地方。本书的特点具体包括以下几个方面。
1.内容选择:提供全栈式的解决方案
深度学习涉及范围比较广,既有对基础、原理的一些要求,也有对代码实现的要求。如何在较短时间内快速提高深度学习的水平?如何尽快把所学运用到实践中?这方面虽然没有捷径可言,但却有方法可循。本书基于这些考量,希望能给你提供一站式解决方案。具体内容包括:机器学习与深度学习的三大基石(线性代数、概率与信息论及数值分析);机器学习与深度学习的基本理论和原理;机器学习与深度学习的常用开发工具(Python、TensorFlow、Keras等),此外还有TensorFlow的高级封装及多个综合性实战项目等。
2.层次安排:找准易撕口、快速实现由点到面的突破
我们打开塑料袋时,一般从易撕口开始,这样即使再牢固的袋子也很容易打开。面对深度学习这个“牢固袋子”,我们也可采用类似方法,找准易撕口。如果没有,就创造一个易撕口,通过这个易撕口,实现点到面的快速扩展。本书在介绍很多抽象、深奥的算法时采用了这种方法。我们知道BP算法、循环神经网络是深度学习中的两块硬骨头,所以在介绍BP算法时,先介绍单个神经如何实现BP算法这个易撕口,再延伸到一般情况;在介绍循环神经网络时,我们也以一个简单实例为易撕口,再延伸到一般情况。希望通过这种方式,能帮助你把难题化易、把大事化小、把不可能转换为可能。
3.表达形式:让图说话,一张好图胜过千言万语
在机器学习、深度学习中有很多抽象的概念、复杂的算法、深奥的理论,如Numpy的广播机制、神经网络中的共享参数、动量优化法、梯度消失或爆炸等,这些内容如果只用文字来描述,可能很难达到茅塞顿开的效果,但如果用一些图形来展现,再加上适当的文字说明,往往能取得非常好的效果,正所谓一张好图胜过千言万语。
除了以上谈到的三个方面,为了帮助大家更好理解、更快掌握机器学习、深度学习这些人工智能的核心内容,本书还包含了其他方法。我们希望通过这些方法或方式带给你不一样的理解和体验,使抽象数学不抽象、深度学习不深奥、复杂算法不复杂,这或许就是我们写这本书的主要目的。
至于人工智能(AI)的重要性,想必不用多说了。如果说2016年前属于摆事实论证的阶段,那么2016年后已进入事实胜于雄辩的阶段了,而2018年后应该属于撸起袖子加油干的阶段。目前各行各业都忙于AI+,给人“忽如一夜春风来,千树万树梨花开”的感觉!
本书特色
要说特色的话,就是上面谈到的几点,概括来说就是:把理论原理与代码实现相结合;找准切入点,从简单到一般,把复杂问题简单化;图文并茂使抽象问题直观化;实例说明使抽象问题具体化。希望通过阅读本书,能给你带来新的视角、新的理解。
读者对象
对机器学习、深度学习感兴趣的广大在校学生、在职人员。
对Python、TensorFlow感兴趣,并希望进一步提升的在校学生、在职人员。
如何阅读本书
本书共22章,按照“基础→应用→扩展”的顺序展开,分为三个部分。
第一部分(第1~5章)为Python和应用数学基础部分:第1章介绍Python和TensorFlow的基石Numpy;第2章介绍深度学习框架的鼻祖Theano;第3~5章介绍机器学习、深度学习算法应用数学基础,包括线性代数、概率与信息论、概率图等内容。
第二部分(第6~20章)为深度学习理论与应用部分:第6章为机器学习基础,也是深度学习基础,其中包含很多机器学习的经典理论和算法;第7章为深度学习理论及方法;第8~10章介绍TensorFlow基于CPU、GPU版本的安装及使用,TensorFlow基础,TensorFlow的一些新API,如Dataset API、Estimator API等(基于TensorFlow1.6版本);第11~15章为深度学习中神经网络方面的模型及TensorFlow实战案例;第16章介绍TensorFlow的高级封装,如Keras、Estimator、TFLearn等内容;第17~20章为TensorFlow综合实战案例,包括图像识别、自然语言处理等内容。
第三部分(第21~22章)为扩展部分:介绍强化学习、生成式对抗网络等内容。
勘误和支持
书中代码和数据的下载地址为http://www.feiguyunai.com。由于笔者水平有限,加之编写时间仓促,书中难免出现错误或不准确的地方,恳请读者批评指正。
吴茂贵,
BI和大数据专家,就职于中国外汇交易中心,在BI、数据挖掘与分析、数据仓库、机器学习等领域有超过20年的工作经验,在Spark机器学习、TensorFlow深度学习领域大量的实践经验。
王冬,
任职于博世(中国)投资有限公司,负责Bosch企业BI及工业4.0相关大数据和数据挖掘项目。对机器学习、人工智能有多年实践经验。
李涛,
参与过多个人工智能项目,如研究开发服务机器人、无人售后店等项目。熟悉python、caffe、TensorFlow等,对深度学习、尤其对计算机视觉方面有较深理解。
杨本法,
高级算法工程师,在机器学习、文本挖掘、可视化等领域有多年实践经验。熟悉Hadoop、Spark生态圈的相关技术,对Python有丰富的实战经验。
前言
第一部分 Python及应用数学基础
第1章 NumPy常用操作 2
1.1 生成ndarray的几种方式 3
1.2 存取元素 5
1.3 矩阵操作 6
1.4 数据合并与展平 7
1.5 通用函数 9
1.6 广播机制 11
1.7 小结 12
第2章 Theano基础 13
2.1 安装 14
2.2 符号变量 15
2.3 符号计算图模型 17
2.4 函数 18
2.5 条件与循环 21
2.6 共享变量 23
2.7 小结 24
第3章 线性代数 25
3.1 标量、向量、矩阵和张量 25
3.2 矩阵和向量运算 28
3.3 特殊矩阵与向量 29
3.4 线性相关性及向量空间 31
3.5 范数 32
3.6 特征值分解 33
3.7 奇异值分解 34
3.8 迹运算 35
3.9 实例:用Python实现主成分分析 36
3.10 小结 39
第4章 概率与信息论 40
4.1 为何要学概率、信息论 40
4.2 样本空间与随机变量 41
4.3 概率分布 42
4.3.1 离散型随机变量 42
4.3.2 连续型随机变量 45
4.4 边缘概率 47
4.5 条件概率 47
4.6 条件概率的链式法则 48
4.7 独立性及条件独立性 48
4.8 期望、方差及协方差 49
4.9 贝叶斯定理 52
4.10 信息论 53
4.11 小结 56
第5章 概率图模型 57
5.1 为何要引入概率图 57
5.2 使用图描述模型结构 58
5.3 贝叶斯网络 59
5.3.1 隐马尔可夫模型简介 60
5.3.2 隐马尔可夫模型三要素 60
5.3.3 隐马尔可夫模型三个基本问题 61
5.3.4 隐马尔可夫模型简单实例 62
5.4 马尔可夫网络 64
5.4.1 马尔可夫随机场 64
5.4.2 条件随机场 65
5.4.3 实例:用Tensorflow实现条件随机场 66
5.5 小结 70
第二部分 深度学习理论与应用
第6章 机器学习基础 72
6.1 监督学习 72
6.1.1 线性模型 73
6.1.2 SVM 77
6.1.3 贝叶斯分类器 79
6.1.4 集成学习 81
6.2 无监督学习 84
6.2.1 主成分分析 84
6.2.2 k-means聚类 84
6.3 梯度下降与优化 85
6.3.1 梯度下降简介 86
6.3.2 梯度下降与数据集大小 87
6.3.3 传统梯度优化的不足 89
6.3.4 动量算法 90
6.3.5 自适应算法 92
6.3.6 有约束最优化 95
6.4 前馈神经网络 96
6.4.1 神经元结构 97
6.4.2 感知机的局限 98
6.4.3 多层神经网络 99
6.4.4 实例:用TensorFlow实现XOR 101
6.4.5 反向传播算法 103
6.5 实例:用Keras构建深度学习架构 109
6.6 小结 109
第7章 深度学习挑战与策略 110
7.1 正则化 110
7.1.1 正则化参数 111
7.1.2 增加数据量 115
7.1.3 梯度裁剪 116
7.1.4 提前终止 116
7.1.5 共享参数 117
7.1.6 Dropout 117
7.2 预处理 119
7.2.1 初始化 120
7.2.2 归一化 120
7.3 批量化 121
7.3.1 随机梯度下降法 121
7.3.2 批标准化 122
7.4 并行化 124
7.4.1 TensorFlow利用GPU加速 124
7.4.2 深度学习并行模式 125
7.5 选择合适的激活函数 127
7.6 选择合适代价函数 128
7.7 选择合适的优化算法 129
7.8 小结 130
第8章 安装TensorFlow 131
8.1 TensorFlow CPU版的安装 131
8.2 TensorFlow GPU版的安装 132
8.3 配置Jupyter Notebook 136
8.4 实例:CPU与GPU性能比较 137
8.5 实例:单GPU与多GPU性能比较 138
8.6 小结 140
第9章 TensorFlow基础 141
9.1 TensorFlow系统架构 141
9.2 数据流图 143
9.3 TensorFlow基本概念 144
9.3.1 张量 144
9.3.2 算子 145
9.3.3 计算图 146
9.3.4 会话 146
9.3.5 常量 148
9.3.6 变量 149
9.3.7 占位符 153
9.3.8 实例:比较constant、variable和placeholder 154
9.4 TensorFlow实现数据流图 156
9.5 可视化数据流图 156
9.6 TensorFlow分布式 158
9.7 小结 160
第10章 TensorFlow图像处理 162
10.1 加载图像 162
10.2 图像格式 163
10.3 把图像转换为TFRecord文件 164
10.4 读取TFRecord文件 165
10.5 图像处理实例 166
10.6 全新的数据读取方式—Dataset API 170
10.6.1 Dataset API 架构 170
10.6.2 构建Dataset 171
10.6.3 创建迭代器 174
10.6.4 从迭代器中获取数据 174
10.6.5 读入输入数据 175
10.6.6 预处理数据 175
10.6.7 批处理数据集元素 176
10.6.8 使用高级API 176
10.7 小结 177
第11章 TensorFlow神经元函数 178
11.1 激活函数 178
11.1.1 sigmoid函数 179
11.1.2 tanh函数 179
11.1.3 relu函数 180
11.1.4 softplus函数 181
11.1.5 dropout函数 181
11.2 代价函数 181
11.2.1 sigmoid_cross_entropy_with_logits函数 182
11.2.2 softmax_cross_entropy_with_logits函数 183
11.2.3 sparse_softmax_cross_entropy_with_logits函数 184
11.2.4 weighted_cross_entropy_with_logits函数 184
11.3 小结 185
第12章 TensorFlow自编码器 186
12.1 自编码简介 186
12.2 降噪自编码 188
12.3 实例:TensorFlow实现自编码 188
12.4 实例:用自编码预测信用卡欺诈 191
12.5 小结 197
第13章 TensorFlow实现Word2Vec 198
13.1 词向量及其表达 198
13.2 Word2Vec原理 199
13.2.1 CBOW模型 200
13.2.2 Skim-gram模型 200
13.3 实例:TensorFlow实现Word2Vec 201
13.4 小结 206
第14章 TensorFlow卷积神经网络 207
14.1 卷积神经网络简介 207
14.2 卷积层 208
14.2.1 卷积核 209
14.2.2 步幅 211
14.2.3 填充 212
14.2.4 多通道上的卷积 213
14.2.5 激活函数 214
14.2.6 卷积函数 215
14.3 池化层 216
14.4 归一化层 217
14.5 TensorFlow实现简单卷积神经网络 218
14.6 TensorFlow实现进阶卷积神经网络 219
14.7 几种经典卷积神经网络 223
14.8 小结 224
第15章 TensorFlow循环神经网络 226
15.1 循环神经网络简介 226
15.2 前向传播与随时间反向传播 228
15.3 梯度消失或爆炸 231
15.4 LSTM算法 232
15.5 RNN其他变种 235
15.6 RNN应用场景 236
15.7 实例:用LSTM实现分类 237
15.8 小结 241
第16章 TensorFlow高层封装 242
16.1 TensorFlow高层封装简介 242
16.2 Estimator简介 243
16.3 实例:使用Estimator预定义模型 245
16.4 实例:使用Estimator自定义模型 247
16.5 Keras简介 252
16.6 实例:Keras实现序列式模型 253
16.7 TFLearn简介 255
16.7.1 利用TFLearn解决线性回归问题 256
16.7.2 利用TFLearn进行深度学习 256
16.8 小结 257
第17章 情感分析 258
17.1 深度学习与自然语言处理 258
17.2 词向量简介 259
17.3 循环神经网络 260
17.4 迁移学习简介 261
17.5 实例:TensorFlow实现情感分析 262
17.5.1 导入数据 262
17.5.2 定义辅助函数 267
17.5.3 构建RNN模型 267
17.5.4 调优超参数 269
17.5.5 训练模型 270
17.6 小结 272
第18章 利用TensorFlow预测乳腺癌 273
18.1 数据说明 273
18.2 数据预处理 274
18.3 探索数据 276
18.4 构建神经网络 279
18.5 训练并评估模型 281
18.6 小结 283
第19章 聊天机器人 284
19.1 聊天机器人原理 284
19.2 带注意力的框架 286
19.3 用TensorFlow实现聊天机器人 289
19.3.1 接口参数说明 290
19.3.2 训练模型 293
19.4 小结 302
第20章 人脸识别 303
20.1 人脸识别简介 303
20.2 项目概况 306
20.3 实施步骤 307
20.3.1 数据准备 307
20.3.2 预处理数据 307
20.3.3 训练模型 309
20.3.4 测试模型 313
20.4 小结 316
第三部分 扩展篇
第21章 强化学习基础 318
21.1 强化学习简介 318
21.2 强化学习常用算法 320
21.2.1 Q-Learning算法 320
21.2.2 Sarsa算法 322
21.2.3 DQN算法 322
21.3 小结 324
第22章 生成式对抗网络 325
22.1 GAN简介 325
22.2 GAN的改进版本 327
22.3 小结 329