PyTorch机器学习从入门到实战

更多详情

内容简介: 近年来,基于深度学习的人工智能掀起了一股学习的热潮。本书是使用PyTorch深度学习框架的入门图书,从深度学习原理入手,由浅入深,阐述深度学习中神经网络、深度神经网络、卷积神经网络、自编码器、循环神经网络等内容,同时穿插学习PyTorch框架的各个知识点和基于知识点的实例。最后,综合运用PyTorch和深度学习知识来解决实践中的具体问题,比如图像识别、文本分类和命令词识别等。可以说,本书是深度学习和PyTorch的入门教程,同时也引领读者进入机遇和挑战共存的人工智能领域。

目录: 序
前言
第1章 深度学习介绍 1
1.1 人工智能、机器学习与深度学习 2
1.2 深度学习工具介绍 5
1.3 PyTorch介绍 7
1.4 你能从本书中学到什么 9
第2章 PyTorch安装和快速上手 11
2.1 PyTorch安装 12
2.1.1 Anaconda安装 12
2.1.2 PyTorch安装 19
2.2 Jupyter Notebook使用 19
2.3 NumPy基础知识 22
2.3.1 基本概念 23
2.3.2 创建数组 24
2.3.3 基本运算 26
2.3.4 索引、切片和迭代 27
2.3.5 数组赋值 32
2.3.6 更改数组的形状 33
2.3.7 组合、拆分数组 34
2.3.8 广播 35
2.4 PyTorch基础知识 37
2.4.1 Tensor简介 37
2.4.2 Variable简介 38
2.4.3 CUDA简介 38
2.4.4 模型的保存与加载 39
2.4.5 第一个PyTorch程序 40
第3章 神经网络 43
3.1 神经元与神经网络 44
3.2 激活函数 46
3.2.1 Sigmoid 47
3.2.2 Tanh 48
3.2.3 Hard Tanh 49
3.2.4 ReLU 50
3.2.5 ReLU的扩展 51
3.2.6 Softmax 54
3.2.7 LogSoftmax 55
3.3 前向算法 55
3.4 损失函数 57
3.4.1 损失函数的概念 57
3.4.2 回归问题 57
3.4.3 分类问题 58
3.4.4 PyTorch中常用的损失函数 59
3.5 反向传播算法 62
3.6 数据的准备 65
3.7 PyTorch实例:单层神经网络实现 66
第4章 深度神经网络及训练 70
4.1 深度神经网络 72
4.1.1 神经网络为何难以训练 72
4.1.2 改进策略 74
4.2 梯度下降 75
4.2.1 随机梯度下降 75
4.2.2 Mini-Batch梯度下降 75
4.3 优化器 77
4.3.1 SGD 77
4.3.2 Momentum 77
4.3.3 AdaGrad 78
4.3.4 RMSProp 79
4.3.5 Adam 80
4.3.6 选择正确的优化算法 81
4.3.7 优化器的使用实例 82
4.4 正则化 85
4.4.1 参数规范惩罚 85
4.4.2 Batch Normalization 86
4.4.3 Dropout 87
4.5 PyTorch实例:深度神经网络实现 89
第5章 卷积神经网络 93
5.1 计算机视觉 95
5.1.1 人类视觉和计算机视觉 95
5.1.2 特征提取 95
5.1.3 数据集 97
5.2 卷积神经网络 100
5.2.1 卷积层 102
5.2.2 池化层 104
5.2.3 经典卷积神经网络 105
5.3 MNIST数据集上卷积神经网络的实现 110
第6章 嵌入与表征学习 114
6.1 PCA 115
6.1.1 PCA原理 115
6.1.2 PCA的PyTorch实现 116
6.2 自编码器 117
6.2.1 自编码器原理 118
6.2.2 PyTorch实例:自编码器实现 118
6.2.3 PyTorch实例:基于自编码器的图形去噪 122
6.3 词嵌入 125
6.3.1 词嵌入原理 125
6.3.2 PyTorch实例:基于词向量的语言模型实现 128
第7章 序列预测模型 132
7.1 序列数据处理 133
7.2 循环神经网络 134
7.3 LSTM和GRU 138
7.4 LSTM在自然语言处理中的应用 142
7.4.1 词性标注 142
7.4.2 情感分析 144
7.5 序列到序列网络 145
7.5.1 序列到序列网络原理 145
7.5.2 注意力机制 146
7.6 PyTorch实例:基于GRU和Attention 的机器翻译 147
7.6.1 公共模块 147
7.6.2 数据处理 147
7.6.3 模型定义 151
7.6.4 训练模块定义 155
7.6.5 训练和模型保存 161
7.6.6 评估过程 162
第8章 PyTorch项目实战 165
8.1 图像识别和迁移学习——猫狗大战 166
8.1.1 迁移学习介绍 166
8.1.2 计算机视觉工具包 166
8.1.3 猫狗大战的PyTorch实现 167
8.2 文本分类 172
8.2.1 文本分类的介绍 173
8.2.2 计算机文本工具包 174
8.2.3 基于CNN的文本分类的PyTorch实现 174
8.3 语音识别系统介绍 182
8.3.1 语音识别介绍 182
8.3.2 命令词识别的PyTorch实现 183


前言: 人工智能的发展日新月异,大学等研究机构和互联网巨头投入大量的经费和人力到这场没有硝烟的战争中,谁能在这场天王山之战占据有利地位,谁就能在未来的竞争中一马当先。2016年3月,Google研发的AlphaGo与围棋世界冠军、职业九段棋手李世石进行了惊心动魄的围棋人机大战,并以4:1的比分赢得胜利。2017年3月,第二代的AlphaGo与柯洁在乌镇围棋峰会上的比赛中以3:0获胜。2017年10月,Google推出了最强版的AlphaGo——AlphaGo Zero,经过3天的自我训练就打败了第一版的AlphaGo,经过40天的自我训练打败了第二代的AlphaGo。2018年5月,Google在I/O大会上推出打电话的AI——Duplex,模仿真人的语气打电话,通过多轮对话,帮助用户完成餐馆预订和美发沙龙预约等。Google母公司董事长宣称,Duplex部分通过了图灵测试。(图灵测试被认为是考验机器是否拥有智能的测试:如果一个机器能在与人交流“沟通”的过程中不被识别出“机器身份”,那么这个机器就具有智能。)这个系统虽然离真正的人工智能尚远,但是这种人机交互技术对很多产业产生了深远的影响。这些影响深远的技术背后就是深度学习。
各大巨头尽力建立以深度学习框架为核心的AI生态系统。2017年年初,深度学习框架PyTorch横空出世。这个Facebook推出的框架是一个支持强大GPU加速的张量计算,构建基于Autograd系统的深度学习研究平台。其一面世,就以简洁优雅的接口、能够快速实现的代码和直观灵活且简单的网络结构给业界留下了深刻的印象。作为一个在2017年才诞生的深度学习框架,PyTorch相关学习文档和资料缺乏,而笔者在研究和实践的过程中进行了大量的深度学习模型构建和使用,对PyTorch简洁且灵活的编程风格深有体会,因此决定编写一本用PyTorch进行机器学习和深度学习入门的图书。
本书主要针对的是对深度学习有一定了解、希望用PyTorch进行机器学习和深度学习研究的初学者。阅读本书不需要太多的数学基础,但需要有一定的编程基础,特别是要求有Python编程经验。希望读者学完本书后,能够对深度学习有大致的了解,基本掌握PyTorch的使用方法,知道如何根据基于PyTorch的深度神经网络模型来解决实际问题,并能够利用各种模型调参的方法进行模型优化。本书仅仅是一本入门的图书,要对深度学习进行深入研究的学习者,还要更加深入阅读相关专业书籍和学术论文。
本书从机器学习原理入手,延伸到神经网络,直至深度学习,由浅入深地阐述深度学习中的各个分支,即深度神经网络、卷积神经网络、自编码器、循环神经网络等,同时穿插PyTorch框架的知识点和基于知识点的实例。最后,综合运用PyTorch和深度学习理论来解决实践中的具体问题,比如文本分类和关键词识别等。可以说,本书是深度学习和PyTorch的入门教程,引导读者进入机遇和挑战共存的人工智能领域。
本书的代码开源在GitHub上,具体地址是https://github.com/xiaobaoonline/pytorch-in-action。代码以章节划分文件夹,每个函数的作用和细节在代码中均有注释,以便帮助理解。本书的代码在PyTorch0.3上运行,由于Python2即将过时,因此本书代码只支持Python3。大部分代码既支持CPU又支持GPU,但第8章有部分代码只支持GPU,读者在运行代码的过程中要注意相关提示。
由于编者水平有限,书中难免出现不太准确的地方,恳请读者批评指正。大家可以在https://github.com/xiaobaoonline/pytorch-in-action/issues处提出意见和反馈,让我们在机器学习之路上共同进步。
在本书写作的过程中,得到不少人的鼓励和支持。首先要感谢校宝在线(杭州)科技股份公司(证券代码:870705)上下的鼎力支持,特别是公司董事长兼CEO张以弛先生的大力支持,让我们在工作之余有足够的时间投入本书写作中。然后,感谢家人的鼓励和支持,没有他们,这本书的写作将不可能完成。除此之外,在写作和编码的过程中,还参考了很多书籍和资料,在此表示感谢。
 
编  者
2018年7月

媒体评论: 校宝在线董事长&CEO  张以弛
微软加速器(上海)CTO  俞  榕
SegmentFault 合伙人&CTO  祁  宁
南京理工大学信息管理系教授,博士生导师  章成志
联合
推荐
深入讲解深度学习理论体系,布道PyTorch实践方法和技巧
“百年大计,教育为本。” 校宝是较早用AI赋能教育的公司,现把我们积累的有关深度学习和PyTorch的经验分享给大家。PyTorch框架结构简洁优雅,便于调试,是入门深度学习的不二选择。读者学会了深度学习入门知识以后,在实际案例中进行实操锻炼,综合运用各种算法和优化策略以完成性能的提升,体会到深度学习的强大魅力。
校宝在线董事长&CEO  张以弛
这本书是几位作者在深度学习领域的研究和学习所得。从线性回归模型入手,过渡到神经网络,接着介绍深度神经网络、卷积神经网络和循环神经网络。既包含相关基础知识和原理,也包含PyTorch框架中对应的函数,还有相关算法的实例,思路清晰,语言平实,实战样例丰富,是一本使用PyTorch框架进行机器学习的不可多得的入门和实践图书。
微软加速器(上海)CTO  俞 榕
深度学习是当前开发者社区中广受关注的技术,是一门难以入门的新技术,结合了大量的数学知识,令初学者望而却步。本书着眼于 PyTorch 这一“年轻”的深度学习框架,由浅入深,先从工程实践入手,再引入相关概念和基础知识,体现了几位作者的深厚功底和对如何学习这门技术的独到理解。读者通过本书不仅可以掌握 PyTorch 框架,还可以了解深度学习,非常值得一读。
SegmentFault 合伙人&CTO  祁 宁
PyTorch入门书籍在市面上已有一些,但很少在理论基础和工程实践上加以详细的引导。我在本书中发现一些亮点:一是理论上注重由浅入深,层层深入,让人不会感到理论的枯燥和突兀; 二是代码上注重基础知识介绍,比如Numpy知识和广播特性等,如果能对这些基础知识了如指掌,对PyTorch的学习和开发就容易多了。            
南京理工大学信息管理系教授,博士生导师  章成志