本书是一本系统介绍深度学习技术及开源框架PyTorch的入门书。书中通过大量案例介绍了PyTorch的使用方法、神经网络的搭建、常用神经网络(如卷积神经网络、循环神经网络)的实现,以及实用的深度学习技术,包括迁移学习、对抗生成学习、深度强化学习、图神经网络等。读者通过阅读本书,可以学会构造一个图像识别器,生成逼真的图画,让机器理解单词与文本,让机器作曲,教会机器玩游戏,还可以实现一个简单的机器翻译系统。
第2版基于PyTorch 1.6.0,对全书代码进行了更新,同时增加了Transformer、BERT、图神经网络等热门深度学习技术的讲解,更具实用性和时效性。
1.基于PyTorch新版本,涵盖深度学习基础知识和前沿技术
2.由浅入深,通俗易懂,适合初学人士的深度学习入门书
3.实战案例丰富有趣,深度学习原理与具体的操作流程相结合
4.新增了Transformer、BERT、图神经网络等热门技术的讲解
5.配有源代码和导学视频,让学习更直观、更有效。另有付费视频课程。
集智俱乐部(Swarma Club)
成立于2003年,是一个从事学术研究、享受科学乐趣的探索者团体,也是国内致力于研究人工智能、复杂系统的科学社区之一,倡导以平等开放的态度、科学实证的精神,进行跨学科的研究与交流,力图搭建一个中国的“没有围墙的研究所”。目前已出版书籍有《科学的极致:漫谈人工智能》《走近2050:注意力、互联网与人工智能》《NetLogo多主体建模入门》,译作有《深度思考:人工智能的终点与人类创造力的起点》。
推荐序
前言
作者简介
第 1章 深度学习简介 1
1.1 深度学习与人工智能 1
1.2 深度学习的历史渊源 2
1.2.1 从感知机到人工神经网络 3
1.2.2 深度学习时代 4
1.2.3 巨头之间的角逐 5
1.3 深度学习的影响因素 6
1.3.1 大数据 6
1.3.2 深度网络架构 7
1.3.3 GPU 11
1.4 深度学习为什么如此成功 11
1.4.1 特征学习 11
1.4.2 迁移学习 12
1.5 小结 13
1.6 参考文献 14
第 2章 PyTorch简介 15
2.1 PyTorch安装 15
2.2 初识PyTorch 15
2.2.1 与Python完美融合 16
2.2.2 张量计算 16
2.2.3 动态计算图 20
2.3 PyTorch实例:预测房价 27
2.3.1 准备数据 27
2.3.2 设计模型 28
2.3.3 训练 29
2.3.4 预测 31
2.3.5 术语汇总 32
2.4 小结 33
第3章 单车预测器——你的第 一个神经网络 35
3.1 共享单车的烦恼 35
3.2 单车预测器1.0 37
3.2.1 人工神经网络简介 37
3.2.2 人工神经元 38
3.2.3 两个隐含神经元 40
3.2.4 训练与运行 42
3.2.5 失败的神经预测器 42
3.2.6 过拟合 48
3.3 单车预测器2.0 49
3.3.1 数据的预处理过程 49
3.3.2 构建神经网络 52
3.3.3 测试神经网络 55
3.4 剖析神经网络Neu 57
3.5 小结 61
3.6 Q&A 61
第4章 机器也懂感情——中文情绪分类器 63
4.1 神经网络分类器 64
4.1.1 如何用神经网络做分类 64
4.1.2 分类问题的损失函数 66
4.2 词袋模型分类器 67
4.2.1 词袋模型简介 68
4.2.2 搭建简单文本分类器 69
4.3 程序实现 70
4.3.1 数据处理 71
4.3.2 文本数据向量化 73
4.3.3 划分数据集 74
4.3.4 建立神经网络 75
4.4 运行结果 78
4.5 剖析神经网络 79
4.6 小结 83
4.7 Q&A 83
第5章 手写数字识别器——认识卷积神经网络 84
5.1 什么是卷积神经网络 85
5.1.1 手写数字识别任务的卷积神经网络及运算过程 86
5.1.2 卷积运算 87
5.1.3 池化运算 93
5.1.4 立体卷积核 94
5.1.5 超参数与参数 95
5.1.6 其他说明 96
5.2 手写数字识别器 97
5.2.1 数据准备 97
5.2.2 构建网络 100
5.2.3 运行模型 102
5.2.4 测试模型 104
5.3 剖析卷积神经网络 105
5.3.1 第 一层卷积核与特征图 105
5.3.2 第二层卷积核与特征图 106
5.3.3 卷积神经网络的健壮性实验 107
5.4 小结 109
5.5 Q&A 109
5.6 扩展阅读 109
第6章 手写数字加法机——迁移学习 110
6.1 什么是迁移学习 111
6.1.1 迁移学习的由来 111
6.1.2 迁移学习的分类 112
6.1.3 迁移学习的意义 112
6.1.4 如何用神经网络实现迁移学习 113
6.2 应用案例:迁移学习如何抗击贫困 115
6.2.1 背景介绍 115
6.2.2 方法探寻 116
6.2.3 迁移学习方法 116
6.3 蚂蚁还是蜜蜂:迁移大型卷积神经网络 117
6.3.1 任务描述与初步尝试 118
6.3.2 ResNet与模型迁移 119
6.3.3 代码实现 120
6.3.4 结果分析 123
6.3.5 更多的模型与数据 125
6.4 手写数字加法机 125
6.4.1 网络架构 125
6.4.2 代码实现 126
6.4.3 训练与测试 133
6.4.4 结果 135
6.4.5 大规模实验 135
6.5 小结 140
6.6 实践项目:迁移与效率 140
第7章 你自己的Prisma——图像风格迁移 142
7.1 什么是风格迁移 142
7.1.1 什么是风格 142
7.1.2 风格迁移的含义 143
7.2 风格迁移技术发展简史 144
7.3 神经网络风格迁移 146
7.3.1 神经网络风格迁移的优势 146
7.3.2 神经网络风格迁移的基本思想 147
7.3.3 卷积神经网络的选取 148
7.3.4 内容损失 149
7.3.5 风格损失 149
7.3.6 风格损失原理分析 150
7.3.7 损失函数与优化 153
7.4 神经网络风格迁移实战 153
7.4.1 准备工作 153
7.4.2 建立风格迁移网络 155
7.4.3 风格迁移训练 158
7.5 小结 161
7.6 扩展阅读 161
第8章 人工智能造假术——图像生成与对抗学习 162
8.1 反卷积与图像生成 165
8.1.1 卷积神经网络回顾 165
8.1.2 反卷积运算 167
8.1.3 反池化过程 169
8.1.4 反卷积与分数步伐 170
8.1.5 输出图像尺寸公式 171
8.1.6 批正则化技术 172
8.2 图像生成实验1——最小均方误差模型 173
8.2.1 模型思路 173
8.2.2 代码实现 174
8.2.3 运行结果 178
8.3 图像生成实验2——生成器—识别器模型 180
8.3.1 生成器—识别器模型的实现 180
8.3.2 对抗样本 183
8.4 图像生成实验3——GAN 186
8.4.1 GAN的总体架构 187
8.4.2 程序实现 188
8.4.3 结果展示 191
8.5 小结 193
8.6 Q&A 193
8.7 扩展阅读 194
第9章 词汇的星空——神经语言模型与Word2Vec 195
9.1 词向量技术介绍 195
9.1.1 初识词向量 195
9.1.2 传统编码方式 196
9.2 NPLM:神经概率语言模型 197
9.2.1 NPLM的基本思想 198
9.2.2 NPLM的运作过程详解 198
9.2.3 读取NPLM中的词向量 201
9.2.4 NPLM的编码实现 202
9.2.5 运行结果 205
9.2.6 NPLM的总结与局限 207
9.3 Word2Vec 207
9.3.1 CBOW模型和Skip-gram模型的结构 207
9.3.2 层次归一化指数函数 208
9.3.3 负采样 209
9.3.4 总结及分析 210
9.4 Word2Vec的应用 210
9.4.1 在自己的语料库上训练Word2Vec词向量 210
9.4.2 调用现成的词向量 212
9.4.3 女人 男人=皇后 国王 214
9.4.4 使用向量的空间位置进行词对词翻译 216
9.4.5 Word2Vec小结 217
9.5 小结 217
9.6 Q&A 218
第 10章 深度网络 LSTM作曲机——序列生成模型 220
10.1 序列生成问题 220
10.2 RNN与LSTM 221
10.2.1 RNN 221
10.2.2 LSTM 227
10.3 简单01序列的学习问题 231
10.3.1 RNN的序列学习 232
10.3.2 LSTM的序列学习 241
10.4 LSTM作曲机 244
10.4.1 MIDI文件 244
10.4.2 数据准备 245
10.4.3 模型结构 245
10.4.4 代码实现 246
10.5 小结 254
10.6 Q&A 255
10.7 扩展阅读 255
第 11章 神经机器翻译机——端到端机器翻译 256
11.1 机器翻译简介 257
11.1.1 基于规则的机器翻译技术 257
11.1.2 统计机器翻译 258
11.1.3 神经机器翻译 258
11.1.4 关于Zero-shot翻译 259
11.2 编码—解码模型 259
11.2.1 编码—解码模型总体架构 260
11.2.2 编码器 260
11.2.3 解码器 263
11.2.4 损失函数 267
11.2.5 编码—解码模型归纳 269
11.2.6 编码—解码模型的效果 269
11.3 注意力机制 270
11.3.1 神经机器翻译中的注意力 271
11.3.2 注意力网络 271
11.4 更多改进 275
11.4.1 GRU的结构 275
11.4.2 双向GRU的应用 275
11.5 神经机器翻译机的编码实现 276
11.5.1 神经网络的构建 280
11.5.2 神经网络的训练 283
11.5.3 测试神经机器翻译机 286
11.5.4 结果展示 287
11.6 更多改进 291
11.6.1 集束搜索算法 291
11.6.2 BLEU:对翻译结果的评估方法 293
11.6.3 对编码—解码模型的改进 294
11.7 广义的翻译 295
11.7.1 广义翻译机 295
11.7.2 广义翻译的应用场景 295
11.8 Q&A 297
第 12章 更强的机器翻译模型——Transformer 299
12.1 Transformer概述 299
12.1.1 编码—解码模型回顾 300
12.1.2 Transformer全景概览 300
12.1.3 神奇的自注意力 301
12.2 Atoken旅行记 304
12.2.1 奇怪的序号牌 304
12.2.2 分身之门 305
12.2.3 新朋友 306
12.3 Transformer部件详解 306
12.3.1 词嵌入与位置嵌入 306
12.3.2 自注意力模块计算详解 307
12.3.3 自注意力层的矩阵计算 309
12.3.4 残差连接与层归一化 310
12.3.5 逐点计算的前向网络层 311
12.3.6 解码器中的自注意力 311
12.3.7 解码器的输出层 312
12.4 动手训练一个Transformer翻译模型 313
12.4.1 翻译模型中输入单位的粒度 313
12.4.2 模型定义 313
12.4.3 模型训练 318
12.4.4 Transformer相关开源库 319
12.5 小结 319
第 13章 学习跨任务的语言知识——预训练语言模型 320
13.1 语言模型简要回顾 320
13.2 预训练Transformer详解 322
13.2.1 深入了解GPT 323
13.2.2 深入了解BERT 324
13.2.3 模型微调 326
13.2.4 模型表现 327
13.3 单句分类:BERT句子分类实战 328
13.4 后BERT时代 334
13.5 小结 334
第 14章 人体姿态识别——图网络模型 335
14.1 图网络及图论基础 335
14.1.1 图的基本概念 335
14.1.2 什么是图网络 337
14.1.3 图网络的基本任务和应用场景 338
14.2 图卷积网络 338
14.2.1 GCN的工作原理 338
14.2.2 打开GCN的黑箱 340
14.2.3 从社团划分任务来理解GCN 341
14.3 实战:使用GCN识别人体姿态 344
14.3.1 数据来源与预处理 345
14.3.2 代码实现 346
14.4 小结 350
第 15章 AI游戏高手——深度强化学习 351
15.1 强化学习简介 352
15.1.1 强化学习的要素 352
15.1.2 强化学习的应用场景 353
15.1.3 强化学习的分类 354
15.2 深度Q学习算法 355
15.2.1 Q学习算法 356
15.2.2 DQN算法 357
15.2.3 DQN在雅达利游戏上的表现 359
15.3 DQN玩Flappy Bird的PyTorch实现 361
15.3.1 Flappy Bird的PyGame实现 361
15.3.2 DQN的PyTorch实现 368
15.4 小结 377
15.5 通用人工智能还有多远 378
15.6 Q&A 379
15.7 扩展阅读 380