《神经网络与深度学习》
Neural Networks and Deep Learning
邱锡鹏
xpqiu@fudan.edu.cn
2019 年 5 月 5 日
2
2019 年 5 月 5 日
常用符号表
标量
d 维列向量
d 维行向量
d 维列向量
(d 维)全 0 向量
(d 维)全 1 向量
第 i 维为 1(或 x),其余为 0 的 one-hot 列向量
向量 x 的转置
大小为 k × d 的矩阵
第 i 列为 1(或 x),其余为 0 的矩阵
k × d 维的向量
对角矩阵,其对角线元素为 x
(n × n 的)单位阵
列向量,其元素为 A 的对角线元素
张量
集合
数据集D = {(x(i), y(i))|i = 1,··· , N}
所有实数的集合
定义符号
(变量 x 服从)均值为 µ,方差为 Σ 的正态(高斯)分布
期望
方差
指数函数,默认指以自然常数 e 为底的自然指数函数
对数函数,默认指以自然常数 e 为底的自然对数函数
指示函数。当 x 为真时,I(x) = 1;否则 I(x) = 0。
x
x ∈ Rd
[x1,··· , xd]
[x1,··· , xd]T or [x1;··· ; xd]
0 or 0d
1 or 1d
Ii or Ii(x)
xT
A ∈ Rk×d
Mi or Mi(x)
x ∈ Rkd
diag(x)
In or I
diag(A)
A
C or {···}
D
R
,
N (µ, Σ) or N (x|µ, Σ)
Ex∼p(x)[f(x)]
varx∼p(x)[f(x)]
exp(x)
log(x)
I(x)
邱锡鹏:《神经网络与深度学习》
https://nndl.github.io/
目录
前言
第一部分 入门篇
第 1 章 绪论
1.1 人工智能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.1 人工智能的发展历史 . . . . . . . . . . . . . . . . . . . .
1.1.2 人工智能的流派 . . . . . . . . . . . . . . . . . . . . . .
1.2 神经网络 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.1 人脑神经网络 . . . . . . . . . . . . . . . . . . . . . . . .
1.2.2 人工神经网络 . . . . . . . . . . . . . . . . . . . . . . . .
1.2.3 神经网络的发展历史 . . . . . . . . . . . . . . . . . . . .
1.3 机器学习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4 表示学习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4.1 局部表示和分布式表示 . . . . . . . . . . . . . . . . . . .
1.4.2 表示学习 . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5 深度学习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5.1 端到端学习 . . . . . . . . . . . . . . . . . . . . . . . . .
1.5.2 常用的深度学习框架 . . . . . . . . . . . . . . . . . . . .
1.6 本书的组织结构 . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.7 总结和深入阅读 . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
3
5
6
7
9
9
9
11
12
14
15
15
17
17
18
19
20
21
II
2019 年 5 月 5 日
目录
第 2 章 机器学习概述
2.1 基本概念 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 机器学习的三个基本要素 . . . . . . . . . . . . . . . . . . . . .
2.2.1 模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.2 学习准则 . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.3 优化算法 . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3 机器学习的简单示例:线性回归 . . . . . . . . . . . . . . . . . .
2.3.1 参数学习 . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4 偏差-方差分解 . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5 机器学习算法的类型 . . . . . . . . . . . . . . . . . . . . . . . .
2.6 数据的特征表示 . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.6.1 传统的特征学习 . . . . . . . . . . . . . . . . . . . . . .
2.6.2 深度学习方法 . . . . . . . . . . . . . . . . . . . . . . . .
2.7 评价指标 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.8 理论和定理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.8.1 PAC 学习理论 . . . . . . . . . . . . . . . . . . . . . . . .
2.8.2 没有免费午餐定理 . . . . . . . . . . . . . . . . . . . . .
2.8.3 丑小鸭定理 . . . . . . . . . . . . . . . . . . . . . . . . .
2.8.4 奥卡姆剃刀 . . . . . . . . . . . . . . . . . . . . . . . . .
2.8.5 归纳偏置 . . . . . . . . . . . . . . . . . . . . . . . . . .
2.9 总结和深入阅读 . . . . . . . . . . . . . . . . . . . . . . . . . . .
第 3 章 线性模型
3.1 线性判别函数和决策边界 . . . . . . . . . . . . . . . . . . . . .
3.1.1 两类分类 . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.2 多类分类 . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Logistic 回归 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.1 参数学习 . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3 Softmax 回归 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.1 参数学习 . . . . . . . . . . . . . . . . . . . . . . . . . .
25
26
28
28
29
33
36
37
41
44
45
47
48
48
51
51
52
53
53
53
54
57
58
58
60
61
62
63
64
邱锡鹏:《神经网络与深度学习》
https://nndl.github.io/
目录
2019 年 5 月 5 日
III
3.4 感知器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4.1 参数学习 . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4.2 感知器的收敛性 . . . . . . . . . . . . . . . . . . . . . .
3.4.3 参数平均感知器 . . . . . . . . . . . . . . . . . . . . . .
3.4.4 扩展到多类分类 . . . . . . . . . . . . . . . . . . . . . .
3.5 支持向量机 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5.1 参数学习 . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5.2 核函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5.3 软间隔 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6 损失函数对比 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.7 总结和深入阅读 . . . . . . . . . . . . . . . . . . . . . . . . . . .
第二部分 基础模型
第 4 章 前馈神经网络
4.1 神经元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.1
Sigmoid 型激活函数 . . . . . . . . . . . . . . . . . . . .
4.1.2 修正线性单元 . . . . . . . . . . . . . . . . . . . . . . . .
4.1.3
Swish 函数 . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.4 Maxout 单元 . . . . . . . . . . . . . . . . . . . . . . . .
4.2 网络结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.1 前馈网络 . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.2 反馈网络 . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.3 图网络 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3 前馈神经网络 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.1 通用近似定理 . . . . . . . . . . . . . . . . . . . . . . . .
4.3.2 应用到机器学习 . . . . . . . . . . . . . . . . . . . . . .
4.3.3 参数学习 . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4 反向传播算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.5 自动梯度计算 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
66
66
67
69
70
73
74
76
76
77
78
83
85
86
87
90
93
93
94
94
94
95
95
97
98
99
100
102
邱锡鹏:《神经网络与深度学习》
https://nndl.github.io/
IV
2019 年 5 月 5 日
4.5.1 数值微分 . . . . . . . . . . . . . . . . . . . . . . . . . .
4.5.2 符号微分 . . . . . . . . . . . . . . . . . . . . . . . . . .
4.5.3 自动微分 . . . . . . . . . . . . . . . . . . . . . . . . . .
4.6 优化问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.6.1 非凸优化问题 . . . . . . . . . . . . . . . . . . . . . . . .
4.6.2 梯度消失问题 . . . . . . . . . . . . . . . . . . . . . . . .
4.7 总结和深入阅读 . . . . . . . . . . . . . . . . . . . . . . . . . . .
第 5 章 卷积神经网络
5.1 卷积 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.1.1 互相关 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.1.2 卷积的变种 . . . . . . . . . . . . . . . . . . . . . . . . .
5.1.3 卷积的数学性质 . . . . . . . . . . . . . . . . . . . . . .
5.2 卷积神经网络 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2.1 用卷积来代替全连接 . . . . . . . . . . . . . . . . . . . .
5.2.2 卷积层 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2.3 汇聚层 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2.4 典型的卷积网络结构 . . . . . . . . . . . . . . . . . . . .
5.3 参数学习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3.1 误差项的计算 . . . . . . . . . . . . . . . . . . . . . . . .
5.4 几种典型的卷积神经网络 . . . . . . . . . . . . . . . . . . . . .
5.4.1 LeNet-5 . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.4.2 AlexNet . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.4.3
Inception 网络 . . . . . . . . . . . . . . . . . . . . . . .
5.4.4 残差网络 . . . . . . . . . . . . . . . . . . . . . . . . . .
5.5 其它卷积方式 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.5.1 转置卷积 . . . . . . . . . . . . . . . . . . . . . . . . . .
5.5.2 空洞卷积 . . . . . . . . . . . . . . . . . . . . . . . . . .
5.6 总结和深入阅读 . . . . . . . . . . . . . . . . . . . . . . . . . . .
目录
103
103
104
107
107
107
109
113
114
116
117
118
119
119
120
122
123
124
125
126
126
128
129
130
131
131
134
135
邱锡鹏:《神经网络与深度学习》
https://nndl.github.io/
目录
第 6 章 循环神经网络
2019 年 5 月 5 日
V
6.1 给网络增加记忆能力 . . . . . . . . . . . . . . . . . . . . . . . .
6.1.1 延时神经网络 . . . . . . . . . . . . . . . . . . . . . . . .
6.1.2 有外部输入的非线性自回归模型 . . . . . . . . . . . . .
6.1.3 循环神经网络 . . . . . . . . . . . . . . . . . . . . . . . .
6.2 简单循环网络 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2.1 循环神经网络的计算能力 . . . . . . . . . . . . . . . . .
6.3 应用到机器学习 . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3.1 序列到类别模式 . . . . . . . . . . . . . . . . . . . . . .
6.3.2 同步的序列到序列模式 . . . . . . . . . . . . . . . . . . .
6.3.3 异步的序列到序列模式 . . . . . . . . . . . . . . . . . . .
6.4 参数学习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.4.1 随时间反向传播算法 . . . . . . . . . . . . . . . . . . . .
6.4.2 实时循环学习算法 . . . . . . . . . . . . . . . . . . . . .
6.5 长期依赖问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.5.1 改进方案 . . . . . . . . . . . . . . . . . . . . . . . . . .
6.6 基于门控的循环神经网络 . . . . . . . . . . . . . . . . . . . . .
6.6.1 长短期记忆网络 . . . . . . . . . . . . . . . . . . . . . .
6.6.2 LSTM 网络的各种变体 . . . . . . . . . . . . . . . . . . .
6.6.3 门控循环单元网络 . . . . . . . . . . . . . . . . . . . . .
6.7 深层循环神经网络 . . . . . . . . . . . . . . . . . . . . . . . . .
6.7.1 堆叠循环神经网络 . . . . . . . . . . . . . . . . . . . . .
6.7.2 双向循环神经网络 . . . . . . . . . . . . . . . . . . . . .
6.8 扩展到图结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.8.1 递归神经网络 . . . . . . . . . . . . . . . . . . . . . . . .
6.8.2 图网络 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.9 总结和深入阅读 . . . . . . . . . . . . . . . . . . . . . . . . . . .
139
140
140
140
141
141
142
144
144
145
145
146
147
148
149
150
151
151
153
154
155
156
156
157
157
159
159
邱锡鹏:《神经网络与深度学习》
https://nndl.github.io/
VI
2019 年 5 月 5 日
第 7 章 网络优化与正则化
7.1 网络优化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.1.1 网络优化的难点 . . . . . . . . . . . . . . . . . . . . . .
7.2 优化算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2.1 小批量梯度下降 . . . . . . . . . . . . . . . . . . . . . .
7.2.2 学习率衰减 . . . . . . . . . . . . . . . . . . . . . . . . .
7.2.3 梯度方向优化 . . . . . . . . . . . . . . . . . . . . . . . .
7.2.4 优化算法小结 . . . . . . . . . . . . . . . . . . . . . . . .
7.3 参数初始化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.4 数据预处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.5 逐层归一化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.5.1 批量归一化 . . . . . . . . . . . . . . . . . . . . . . . . .
7.5.2 层归一化 . . . . . . . . . . . . . . . . . . . . . . . . . .
7.5.3 其它归一化方法 . . . . . . . . . . . . . . . . . . . . . .
7.6 超参数优化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.6.1 网格搜索 . . . . . . . . . . . . . . . . . . . . . . . . . .
7.6.2 随机搜索 . . . . . . . . . . . . . . . . . . . . . . . . . .
7.6.3 贝叶斯优化 . . . . . . . . . . . . . . . . . . . . . . . . .
7.6.4 动态资源分配 . . . . . . . . . . . . . . . . . . . . . . . .
7.7 网络正则化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.7.1
ℓ1 和 ℓ2 正则化 . . . . . . . . . . . . . . . . . . . . . . . .
7.7.2 权重衰减 . . . . . . . . . . . . . . . . . . . . . . . . . .
7.7.3 提前停止 . . . . . . . . . . . . . . . . . . . . . . . . . .
7.7.4 丢弃法 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.7.5 数据增强 . . . . . . . . . . . . . . . . . . . . . . . . . .
7.7.6 标签平滑 . . . . . . . . . . . . . . . . . . . . . . . . . .
7.8 总结和深入阅读 . . . . . . . . . . . . . . . . . . . . . . . . . . .
目录
165
165
165
167
167
169
171
174
175
178
180
180
182
183
184
185
185
185
186
188
188
189
190
190
192
193
193
邱锡鹏:《神经网络与深度学习》
https://nndl.github.io/