描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111574576
内容简介
基础篇(1-3章):介绍深度学习的基本概念和Tensorflow的基本介绍。原理与实践篇(4-8章):大量的关于深度学习中BP、CNN以及RNN网络等概念的数学知识解析,加以更朴素的语言与类比,使得非数学专业的程序员还是能够比较容易看懂。扩展篇(9-13章):介绍新增的深度学习网络变种与较新的深度学习特性,并给出有趣的深度学习应用。读完本书,基本具备了搭建全套Tensorflow应用环境的能力,掌握深度学习算法和思路,以及进行一般性的文章分类、音频分类或视频分类的能力。
目 录
目 录?Contents
本书赞誉
序
前 言
基 础 篇
第1章 机器学习是什么 2
1.1 聚类 4
1.2 回归 5
1.3 分类 8
1.4 综合应用 10
1.5 小结 14
第2章 深度学习是什么 15
2.1 神经网络是什么 15
2.1.1 神经元 16
2.1.2 激励函数 19
2.1.3 神经网络 24
2.2 深度神经网络 25
2.3 深度学习为什么这么强 28
2.3.1 不用再提取特征 28
2.3.2 处理线性不可分 29
2.4 深度学习应用 30
2.4.1 围棋机器人——AlphaGo 30
2.4.2 被教坏的少女——Tai.ai 32
2.4.3 本田公司的大宝贝——
ASIMO 33
2.5 小结 37
第3章 TensorFlow框架特性与安装 38
3.1 简介 38
3.2 与其他框架的对比 39
3.3 其他特点 40
3.4 如何选择好的框架 44
3.5 安装TensorFlow 45
3.6 小结 46
原理与实践篇
第4章 前馈神经网络 50
4.1 网络结构 50
4.2 线性回归的训练 51
4.3 神经网络的训练 75
4.4 小结 79
第5章 手写板功能 81
5.1 MNIST介绍 81
5.2 使用TensorFlow完成实验 86
5.3 神经网络为什么那么强 92
5.3.1 处理线性不可分 93
5.3.2 挑战“与或非” 95
5.3.3 丰富的VC——强大的空间
划分能力 98
5.4 验证集、测试集与防止过拟合 99
5.5 小结 102
第6章 卷积神经网络 103
6.1 与全连接网络的对比 103
6.2 卷积是什么 104
6.3 卷积核 106
6.4 卷积层其他参数 108
6.5 池化层 109
6.6 典型CNN网络 110
6.7 图片识别 114
6.8 输出层激励函数——SOFTMAX 116
6.8.1 SOFTMAX 116
6.8.2 交叉熵 117
6.9 小试牛刀——卷积网络做图片分类 124
6.10 小结 138
第7章 综合问题 139
7.1 并行计算 139
7.2 随机梯度下降 142
7.3 梯度消失问题 144
7.4 归一化 147
7.5 参数初始化问题 149
7.6 正则化 151
7.7 其他超参数 155
7.8 不的模型 156
7.9 DropOut 157
7.10 小结 158
第8章 循环神经网络 159
8.1 隐马尔可夫模型 159
8.2 RNN和BPTT算法 163
8.2.1 结构 163
8.2.2 训练过程 163
8.2.3 艰难的误差传递 165
8.3 LSTM算法 167
8.4 应用场景 171
8.5 实践案例——自动文本生成 174
8.5.1 RNN工程代码解读 174
8.5.2 利用RNN学习莎士比亚剧本 183
8.5.3 利用RNN学习维基百科 184
8.6 实践案例——聊天机器人 185
8.7 小结 196
扩 展 篇
第9章 深度残差网络 198
9.1 应用场景 198
9.2 结构解释与数学推导 200
9.3 拓扑解释 205
9.4 Github示例 207
9.5 小结 207
第10章 受限玻尔兹曼机 209
10.1 结构 209
10.2 逻辑回归 210
10.3 似然度 212
10.4 似然度示例 214
10.5 损失函数 215
10.6 应用场景 216
10.7 小结 216
第11章 强化学习 217
11.1 模型核心 218
11.2 马尔可夫决策过程 219
11.2.1 用游戏开刀 221
11.2.2 准备工作 223
11.2.3 训练过程 224
11.2.4 问题 226
11.2.5 Q-Learning算法 228
11.3 深度学习中的Q-Learning——DQN 231
11.3.1 OpenAI Gym 234
11.3.2 Atari游戏 237
11.4 小结 238
第12章 对抗学习 239
12.1 目的 239
12.2 训练模式 240
12.2.1 二元极小极大博弈 240
12.2.2 训练 242
12.3 CGAN 244
12.4 DCGAN 247
12.5 小结 252
第13章 有趣的深度学习应用 254
13.1 人脸识别 254
13.2 作诗姬 259
13.3 梵高附体 264
13.3.1 网络结构 265
13.3.2 内容损失 268
13.3.3 风格损失 270
13.3.4 系数比例 271
13.3.5 代码分析 272
13.4 小结 279
附录A VMware Workstation的安装 280
附录B Ubuntu虚拟机的安装 284
附录C Python语言简介 290
附录D 安装Theano 296
附录E 安装Keras 297
附录F 安装CUDA 298
参考文献 303
本书赞誉
序
前 言
基 础 篇
第1章 机器学习是什么 2
1.1 聚类 4
1.2 回归 5
1.3 分类 8
1.4 综合应用 10
1.5 小结 14
第2章 深度学习是什么 15
2.1 神经网络是什么 15
2.1.1 神经元 16
2.1.2 激励函数 19
2.1.3 神经网络 24
2.2 深度神经网络 25
2.3 深度学习为什么这么强 28
2.3.1 不用再提取特征 28
2.3.2 处理线性不可分 29
2.4 深度学习应用 30
2.4.1 围棋机器人——AlphaGo 30
2.4.2 被教坏的少女——Tai.ai 32
2.4.3 本田公司的大宝贝——
ASIMO 33
2.5 小结 37
第3章 TensorFlow框架特性与安装 38
3.1 简介 38
3.2 与其他框架的对比 39
3.3 其他特点 40
3.4 如何选择好的框架 44
3.5 安装TensorFlow 45
3.6 小结 46
原理与实践篇
第4章 前馈神经网络 50
4.1 网络结构 50
4.2 线性回归的训练 51
4.3 神经网络的训练 75
4.4 小结 79
第5章 手写板功能 81
5.1 MNIST介绍 81
5.2 使用TensorFlow完成实验 86
5.3 神经网络为什么那么强 92
5.3.1 处理线性不可分 93
5.3.2 挑战“与或非” 95
5.3.3 丰富的VC——强大的空间
划分能力 98
5.4 验证集、测试集与防止过拟合 99
5.5 小结 102
第6章 卷积神经网络 103
6.1 与全连接网络的对比 103
6.2 卷积是什么 104
6.3 卷积核 106
6.4 卷积层其他参数 108
6.5 池化层 109
6.6 典型CNN网络 110
6.7 图片识别 114
6.8 输出层激励函数——SOFTMAX 116
6.8.1 SOFTMAX 116
6.8.2 交叉熵 117
6.9 小试牛刀——卷积网络做图片分类 124
6.10 小结 138
第7章 综合问题 139
7.1 并行计算 139
7.2 随机梯度下降 142
7.3 梯度消失问题 144
7.4 归一化 147
7.5 参数初始化问题 149
7.6 正则化 151
7.7 其他超参数 155
7.8 不的模型 156
7.9 DropOut 157
7.10 小结 158
第8章 循环神经网络 159
8.1 隐马尔可夫模型 159
8.2 RNN和BPTT算法 163
8.2.1 结构 163
8.2.2 训练过程 163
8.2.3 艰难的误差传递 165
8.3 LSTM算法 167
8.4 应用场景 171
8.5 实践案例——自动文本生成 174
8.5.1 RNN工程代码解读 174
8.5.2 利用RNN学习莎士比亚剧本 183
8.5.3 利用RNN学习维基百科 184
8.6 实践案例——聊天机器人 185
8.7 小结 196
扩 展 篇
第9章 深度残差网络 198
9.1 应用场景 198
9.2 结构解释与数学推导 200
9.3 拓扑解释 205
9.4 Github示例 207
9.5 小结 207
第10章 受限玻尔兹曼机 209
10.1 结构 209
10.2 逻辑回归 210
10.3 似然度 212
10.4 似然度示例 214
10.5 损失函数 215
10.6 应用场景 216
10.7 小结 216
第11章 强化学习 217
11.1 模型核心 218
11.2 马尔可夫决策过程 219
11.2.1 用游戏开刀 221
11.2.2 准备工作 223
11.2.3 训练过程 224
11.2.4 问题 226
11.2.5 Q-Learning算法 228
11.3 深度学习中的Q-Learning——DQN 231
11.3.1 OpenAI Gym 234
11.3.2 Atari游戏 237
11.4 小结 238
第12章 对抗学习 239
12.1 目的 239
12.2 训练模式 240
12.2.1 二元极小极大博弈 240
12.2.2 训练 242
12.3 CGAN 244
12.4 DCGAN 247
12.5 小结 252
第13章 有趣的深度学习应用 254
13.1 人脸识别 254
13.2 作诗姬 259
13.3 梵高附体 264
13.3.1 网络结构 265
13.3.2 内容损失 268
13.3.3 风格损失 270
13.3.4 系数比例 271
13.3.5 代码分析 272
13.4 小结 279
附录A VMware Workstation的安装 280
附录B Ubuntu虚拟机的安装 284
附录C Python语言简介 290
附录D 安装Theano 296
附录E 安装Keras 297
附录F 安装CUDA 298
参考文献 303
前 言
前 言?Preface为什么要写这本书近些年来,伴随着计算机计算能力的不断升级,很多原来只有在科幻电影里才有的桥段越来越多地出现在我们身边了,并给了我们更多的想象空间与期待。
在2016年,人工智能界令人瞩目的事情莫过于谷歌的AlphaGo以4:1的悬殊比分轻松击败韩国著名九段围棋大师李世石。之后化名“Master”的AlphaGo更是一路大开杀戒,分别在对弈网站“弈城”和“腾讯围棋”登录,先后打败了柯洁九段、朴廷桓九段、陈耀烨九段以及创造日本大满贯传奇的井山裕太和亚洲杯冠军李钦诚等世界一流高手,取得了50胜0负的战绩。当然了,“玩不起”的人类终觉得让AlphaGo在国际围棋网站排名上占一个坑来碾压人类是非常“不公平”的事情,终把人家给拉黑了。
人类这么做是不是有违AI(Artificial Intelligence,人工智能)研究的初衷暂且不讨论,毕竟我们的眼光还是应该更多地投向那些“更有趣”的领域。除此之外,还有很多非常有趣的人工智能项目也经常在网络视频中带给我们惊喜,比如谷歌的机械狗、谷歌的无人驾驶汽车等。
这种机械狗很有趣,除了能够彼此之间互相协调进行编队行进以外,还能像真的狗一样在被踢了一脚之后迅速调整重心,并在短暂的踉跄后站稳,然后继续先前作业,不过怎么踢都不会来咬你。
而谷歌的无人驾驶汽车也有着非常优异的能力,到2015年11月底为止,根据谷歌提交给机动车辆管理局的报告,谷歌的无人驾驶汽车在自动模式下已经完成了130多万英里的里程。
可以说,这些事情都在鼓舞着我们这些对未来世界充满渴望的人投入更多的精力去研究AI带来的新惊喜,而人工智能这一领域中为核心的内容之一就是深度学习。深度学习现在在全世界范围内都有着众多的专业工作者和业余爱好者在进行着研究,并且每个月都有不少新的落地产品问世。应该说,深度学习是目前世界上热门的研究领域之一,而且也是未来几十年热门的研究方向之一。
在中国,深度学习也有着众多的专业研究机构和业余爱好者,在我的周围就有数以千计的深度学习爱好者——这一点都不夸张,他们非常渴望了解深度学习的知识并加以应用。但是,深度学习由于其本身的复杂性,使得很多有着浓厚兴趣的爱好者望而却步,我认为主要的门槛来自于两个方面。
一方面,深度学习是非常典型的计算密集型的应用领域,家用PC机通常是无法有效胜任一个完整而可靠的深度学习应用的(作为初级实验或者“玩具”的除外)。不过现在随着CPU的计算速度逐步加快,以及GPU应用的不断普及,这方面的门槛在慢慢地降低。
另一方面,深度学习从其解决问题的根本理论方面需要比较深厚和扎实的数学基础,尤其是高等数学、线性代数、泛函分析及其延伸学科的基础,这就使得很多高等数学相关基础不好的朋友学习起来非常吃力。当然,这一方面目前可以走的捷径也不是没有,我们可以通过现成的框架(比如TensorFlow、Torch、Caffe或Theano等)来搭建环境,并用简单的代码或模型描述文件来组建一个相对完整的神经网络进行学习和分类应用。
除此之外,像Caffe还有一个叫做Model Zoo的共享社群——这是一个让大家把已经训练好的模型放在上面做共享的社群。在模型训练中,前面大量耗时的分析和建模工作以及训练后得到的宝贵的模型成果就可以浓缩并沉淀为一个可下载的模型描述文件,里面是网络的节点权重和拓扑结构信息。这种社群化的方式会让很多原本没有太好训练条件的朋友有了可以学习和借鉴的对象,也有了可以游乐和尝试的空间。这些模型需要在其各自的授权使用协议下合理使用,有的是允许进行商业应用和改动,而有的则不可以,这一点需要注意。在下载后,我们可以对其进行Fine Tuning,也就是进行细节调优或改进性训练,使得这些模型可以在自己需要的环境和条件下更好地工作。不过这个地方还是有一个门槛,对于很多数学能力欠佳的工程师来说,不容易迈过去,那就是训练和调优中的方向性问题。一旦出现召回率和准确率不再提高,或者性能等问题,往往会找不到改进的方向和方法,这是需要扎实的数学基础和深度学习领域的实践经验来解决的。
我们这本书的宗旨很简单,就是希望通过聊天和讲故事的方式,凭借高中以上水平的数学知识把大家一步一步地带入深度学习的领域。只要大家在阅读本书的时候保持一点点耐心,即便没有高等数学知识的朋友,通过努力也一样可以基本掌握深度学习的应用技巧。请不要犹豫,跟我来吧!
本书特色本书本着“平民”起点,从“零”开始的初衷,介绍深度学习的技术与技巧,逐层铺垫,把微积分、梯度等知识重点化整为零,把学习曲线程度地拉平,让读者有良好的代入感和亲近感。
本书用漫画插图来调节阅读气氛,并且在每个讲解的部分都有对比和实例说明,相信每位读者都能感受到非常好的阅读平滑感。
读者对象对深度学习有兴趣但数学基础弱的开发人员与架构师科研院所的研究人员对深度学习有兴趣的大学生、研究生其他深度学习爱好者,如产品经理、投资人、管理者等如何阅读本书本书基本独立成册,适用于零基础的初学者,但仍建议以本书姊妹篇《白话大数据与机器学习》为引导读物。本书共分三篇,共13章。
基础篇(第1~3章),介绍一些非常基础的概念铺垫,以便了解背景。
原理与实践篇(第4~8章),介绍老牌的深度学习网络的数学原理和工程实现原理。尤其是第4章,如果读者能基本读懂,后面的网络实现层面的问题基本都可以迎刃而解。
扩展篇(第9~13章),介绍一些网络的变种和一些较新的网络特性。
其实当你把这本书看完后,就会知道这种技术的底层原理虽然略显复杂,但是在框架逐步成熟以及开源项目日益增加的情况下,对于应用市场层面的技术人员来说,真正要做的工作已经不是书写复杂的算法了——这些都已经被很好地封装到内聚性极高的框架中,而且开放了友好的接口和足够多的参数给使用者做调整。这样一来,重要的工作反而是海量样本的低成本获取和丰富的计算资源的获取。因此从这个角度来看,我可以负责任地说,深度学习领域的门槛在一定程度上应该说比传统机器学习的还要低。当读完这本书时,你就会发现,深度学习真的不难。
勘误和支持由于笔者的水平有限,编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果你有更多的宝贵意见,欢迎扫描下方的二维码,关注奇点大数据微信公众号qddata和我们进行互动讨论。当然,在公众号的消息中你也可以找到书中的代码地址和QQ讨论群305232547的信息。本书提供的所有代码也将放在:https://github.com/azheng333/DeepLearningAndTensorFlow。
同时,你也可以通过邮箱[email protected]联系到我,期待能够得到大家的真挚反馈,在技术之路上互勉共进。
在此,感谢辽宁工程大学副教授(海归博士后)常戬博士、山东交通学院理学院讲师许文杰博士、许昌学院信息工程学院讲师姚丹丹博士在审校工作方面的支持与帮助,以及深圳华为技术有限公司的万娟女士在插画方面对本书的大力支持。
高扬
在2016年,人工智能界令人瞩目的事情莫过于谷歌的AlphaGo以4:1的悬殊比分轻松击败韩国著名九段围棋大师李世石。之后化名“Master”的AlphaGo更是一路大开杀戒,分别在对弈网站“弈城”和“腾讯围棋”登录,先后打败了柯洁九段、朴廷桓九段、陈耀烨九段以及创造日本大满贯传奇的井山裕太和亚洲杯冠军李钦诚等世界一流高手,取得了50胜0负的战绩。当然了,“玩不起”的人类终觉得让AlphaGo在国际围棋网站排名上占一个坑来碾压人类是非常“不公平”的事情,终把人家给拉黑了。
人类这么做是不是有违AI(Artificial Intelligence,人工智能)研究的初衷暂且不讨论,毕竟我们的眼光还是应该更多地投向那些“更有趣”的领域。除此之外,还有很多非常有趣的人工智能项目也经常在网络视频中带给我们惊喜,比如谷歌的机械狗、谷歌的无人驾驶汽车等。
这种机械狗很有趣,除了能够彼此之间互相协调进行编队行进以外,还能像真的狗一样在被踢了一脚之后迅速调整重心,并在短暂的踉跄后站稳,然后继续先前作业,不过怎么踢都不会来咬你。
而谷歌的无人驾驶汽车也有着非常优异的能力,到2015年11月底为止,根据谷歌提交给机动车辆管理局的报告,谷歌的无人驾驶汽车在自动模式下已经完成了130多万英里的里程。
可以说,这些事情都在鼓舞着我们这些对未来世界充满渴望的人投入更多的精力去研究AI带来的新惊喜,而人工智能这一领域中为核心的内容之一就是深度学习。深度学习现在在全世界范围内都有着众多的专业工作者和业余爱好者在进行着研究,并且每个月都有不少新的落地产品问世。应该说,深度学习是目前世界上热门的研究领域之一,而且也是未来几十年热门的研究方向之一。
在中国,深度学习也有着众多的专业研究机构和业余爱好者,在我的周围就有数以千计的深度学习爱好者——这一点都不夸张,他们非常渴望了解深度学习的知识并加以应用。但是,深度学习由于其本身的复杂性,使得很多有着浓厚兴趣的爱好者望而却步,我认为主要的门槛来自于两个方面。
一方面,深度学习是非常典型的计算密集型的应用领域,家用PC机通常是无法有效胜任一个完整而可靠的深度学习应用的(作为初级实验或者“玩具”的除外)。不过现在随着CPU的计算速度逐步加快,以及GPU应用的不断普及,这方面的门槛在慢慢地降低。
另一方面,深度学习从其解决问题的根本理论方面需要比较深厚和扎实的数学基础,尤其是高等数学、线性代数、泛函分析及其延伸学科的基础,这就使得很多高等数学相关基础不好的朋友学习起来非常吃力。当然,这一方面目前可以走的捷径也不是没有,我们可以通过现成的框架(比如TensorFlow、Torch、Caffe或Theano等)来搭建环境,并用简单的代码或模型描述文件来组建一个相对完整的神经网络进行学习和分类应用。
除此之外,像Caffe还有一个叫做Model Zoo的共享社群——这是一个让大家把已经训练好的模型放在上面做共享的社群。在模型训练中,前面大量耗时的分析和建模工作以及训练后得到的宝贵的模型成果就可以浓缩并沉淀为一个可下载的模型描述文件,里面是网络的节点权重和拓扑结构信息。这种社群化的方式会让很多原本没有太好训练条件的朋友有了可以学习和借鉴的对象,也有了可以游乐和尝试的空间。这些模型需要在其各自的授权使用协议下合理使用,有的是允许进行商业应用和改动,而有的则不可以,这一点需要注意。在下载后,我们可以对其进行Fine Tuning,也就是进行细节调优或改进性训练,使得这些模型可以在自己需要的环境和条件下更好地工作。不过这个地方还是有一个门槛,对于很多数学能力欠佳的工程师来说,不容易迈过去,那就是训练和调优中的方向性问题。一旦出现召回率和准确率不再提高,或者性能等问题,往往会找不到改进的方向和方法,这是需要扎实的数学基础和深度学习领域的实践经验来解决的。
我们这本书的宗旨很简单,就是希望通过聊天和讲故事的方式,凭借高中以上水平的数学知识把大家一步一步地带入深度学习的领域。只要大家在阅读本书的时候保持一点点耐心,即便没有高等数学知识的朋友,通过努力也一样可以基本掌握深度学习的应用技巧。请不要犹豫,跟我来吧!
本书特色本书本着“平民”起点,从“零”开始的初衷,介绍深度学习的技术与技巧,逐层铺垫,把微积分、梯度等知识重点化整为零,把学习曲线程度地拉平,让读者有良好的代入感和亲近感。
本书用漫画插图来调节阅读气氛,并且在每个讲解的部分都有对比和实例说明,相信每位读者都能感受到非常好的阅读平滑感。
读者对象对深度学习有兴趣但数学基础弱的开发人员与架构师科研院所的研究人员对深度学习有兴趣的大学生、研究生其他深度学习爱好者,如产品经理、投资人、管理者等如何阅读本书本书基本独立成册,适用于零基础的初学者,但仍建议以本书姊妹篇《白话大数据与机器学习》为引导读物。本书共分三篇,共13章。
基础篇(第1~3章),介绍一些非常基础的概念铺垫,以便了解背景。
原理与实践篇(第4~8章),介绍老牌的深度学习网络的数学原理和工程实现原理。尤其是第4章,如果读者能基本读懂,后面的网络实现层面的问题基本都可以迎刃而解。
扩展篇(第9~13章),介绍一些网络的变种和一些较新的网络特性。
其实当你把这本书看完后,就会知道这种技术的底层原理虽然略显复杂,但是在框架逐步成熟以及开源项目日益增加的情况下,对于应用市场层面的技术人员来说,真正要做的工作已经不是书写复杂的算法了——这些都已经被很好地封装到内聚性极高的框架中,而且开放了友好的接口和足够多的参数给使用者做调整。这样一来,重要的工作反而是海量样本的低成本获取和丰富的计算资源的获取。因此从这个角度来看,我可以负责任地说,深度学习领域的门槛在一定程度上应该说比传统机器学习的还要低。当读完这本书时,你就会发现,深度学习真的不难。
勘误和支持由于笔者的水平有限,编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果你有更多的宝贵意见,欢迎扫描下方的二维码,关注奇点大数据微信公众号qddata和我们进行互动讨论。当然,在公众号的消息中你也可以找到书中的代码地址和QQ讨论群305232547的信息。本书提供的所有代码也将放在:https://github.com/azheng333/DeepLearningAndTensorFlow。
同时,你也可以通过邮箱[email protected]联系到我,期待能够得到大家的真挚反馈,在技术之路上互勉共进。
在此,感谢辽宁工程大学副教授(海归博士后)常戬博士、山东交通学院理学院讲师许文杰博士、许昌学院信息工程学院讲师姚丹丹博士在审校工作方面的支持与帮助,以及深圳华为技术有限公司的万娟女士在插画方面对本书的大力支持。
高扬
评论
还没有评论。