导入篇
第 1章 机器学习入门. . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1 人工智能(AI)与机器学习. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 机器学习. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.1 机器学习模型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.2 学习的方法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.3 监督学习与回归和分类. . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.4 训练步与预测步. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.5 损失函数与梯度下降法. . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3 机器学习模型初步. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4 本书中采用的机器学习模型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.5 机器学习与深度学习中数学的必要性. . . . . . . . . . . . . . . . . . . . . 15
1.6 本书的结构. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
理论篇
第 2章 微分与积分 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.1 函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.1.1 什么是函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.1.2 函数图像. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.2 复合函数与反函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.2.1 复合函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.2.2 反函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.3 微分与极限. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.3.1 微分的定义. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.3.2 微分与函数值的近似. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.3.3 切线方程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
专栏 切线方程与训练步和预测步. . . . . . . . . . . . . . . . . . . . . . . 31
2.4 极大值与极小值. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.5 多项式的微分. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.5.1 x^n 的微分. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.5.2 微分的线性属性以及多项式的微分. . . . . . . . . . . . . . . . . 34
2.5.3 x^r 的微分 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
专栏 组合与二项式定理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.6 乘积的微分. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.7 复合函数的微分. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.7.1 复合函数的微分. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.7.2 反函数的微分. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.8 商的微分. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.9 积分. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
专栏 积分符号的含义. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
第3章 向量与矩阵 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.1 向量入门. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.1.1 向量. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.1.2 向量的表示方法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.1.3 向量的分量. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.1.4 向高维拓展. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.1.5 向量的分量表示法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.2 向量的和、差与数乘. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.2.1 向量的和. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.2.2 向量的差. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.2.3 向量的数乘. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.3 长度(模)与距离. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.3.1 向量的长度(模). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.3.2 Σ 符号的意义 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.3.3 向量间的距离. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.4三角函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.4.1 三角比. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.4.2 三角函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.4.3 三角函数的图像. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.4.4 用三角函数表示直角三角形的边. . . . . . . . . . . . . . . . . . . 58
3.5 内积. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.5.1 基于数值定义内积. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.5.2 分量形式的内积公式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.6 余弦相似度. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
3.6.1 二维向量之间的角度. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
3.6.2 余弦相似度. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
专栏 余弦相似度的应用举例. . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.7 矩阵与矩阵运算. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.7.1 输出节点的内积形式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.7.2 输出节点的矩阵积形式. . . . . . . . . . . . . . . . . . . . . . . . . . . 64
第4章 多元函数的微分. . . . . . . . . . . . . . . . . . . . . . . . . 67
4.1 多元函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.2 偏微分. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4.3 全微分. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.4 全微分与复合函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
4.5 梯度下降法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
专栏 梯度下降法与局部最优解. . . . . . . . . . . . . . . . . . . . . . . . . 82
第5章 指数函数与对数函数 . . . . . . . . . . . . . . . . . . . . . 83
5.1 指数函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
5.1.1 连乘的定义与法则. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
5.1.2 连乘的拓展. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
5.1.3 向函数拓展. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
5.2 对数函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
专栏 对数函数包含的意义 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
5.3 对数函数的微分. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
专栏 用 Python 计算自然常数. . . . . . . . . . . . . . . . . . . . . . . . . . . 95
5.4 指数函数的微分. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
专栏 以自然常数 e 为底的指数函数的写法 . . . . . . . . . . . . . . . 97
5.5 Sigmoid 函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
5.6 Softmax 函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
专栏 Sigmoid 函数与 Softmax 函数的关系 . . . . . . . . . . . . . . . 103
第6章 概率与统计 . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
6.1 概率函数与概率分布. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
6.2 概率密度函数与概率分布函数. . . . . . . . . . . . . . . . . . . . . . . . . . 107
专栏 正态分布函数与 Sigmoid 函数 . . . . . . . . . . . . . . . . . . . . 109
6.3 似然函数与最大似然估计. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
专栏 为何似然函数的极值不是极小而是极大 . . . . . . . . . . . . 113
实践篇
第7章 线性回归模型 . . . . . . . . . . . . . . . . . . . . . . . . . 116
7.1 损失函数的偏微分与梯度下降法. . . . . . . . . . . . . . . . . . . . . . . . 116
7.2 例题的问题设定. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
7.3 训练数据的记法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
7.4 梯度下降法的思路. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
7.5 预测模型的构造. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
7.6 损失函数的构造. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
7.7 计算损失函数的微分. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
7.8 梯度下降法的应用. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
7.9 编程实践. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
专栏 使用 NumPy 编程的技术 . . . . . . . . . . . . . . . . . . . . . . . . . 130
7.10 多元回归模型的扩展. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
专栏 学习率·循环迭代次数的调整方法 . . . . . . . . . . . . . . . . 138
第8章 逻辑回归模型(二分类) . . . . . . . . . . . . . . . . . . 140
8.1 例题的问题设定. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
8.2 回归模型与分类模型的区别. . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
8.3 预测模型的分析. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
专栏 用概率表达预测值大有深意 . . . . . . . . . . . . . . . . . . . . . . 147
8.4 损失函数(交叉熵函数). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
8.5 计算损失函数的微分. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
8.6 梯度下降法的应用. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
8.7 编程实践. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
专栏 scikit-learn 与模块的比较. . . . . . . . . . . . . . . . . . . . . . . . . 163
专栏 球迷国王的烦恼与交叉熵 . . . . . . . . . . . . . . . . . . . . . . . . 163
第9章 逻辑回归模型(多分类) . . . . . . . . . . . . . . . . . . 166
9.1 例题的问题设定. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
9.2 模型的基础概念. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
9.3 权重矩阵. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
9.4 Softmax 函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
9.5 损失函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
9.6 计算损失函数的微分. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
9.7 梯度下降法的应用. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
9.8 编程实践. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
专栏 NumPy 中的矩阵计算. . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
第 10章 深度学习模型 . . . . . . . . . . . . . . . . . . . . . . . . . 189
10.1 例题的问题设定. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
10.2 模型结构与预测函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
10.3 损失函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
10.4 计算损失函数的微分. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
10.5 误差逆传播. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
10.6 梯度下降法的应用. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
10.7 编程实践(1). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
10.8 编程实践(2). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
10.9 编程实践(3). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
10.10 编程实践(4). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
发展篇
第 11章 面向实践的深度学习 . . . . . . . . . . . . . . . . . . . . 218
11.1 使用框架. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
11.2 CNN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
11.3 RNN 与 LSTM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
11.4 数值微分. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
11.5 高级训练法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
11.6 避免过拟合. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
11.7 学习的单位. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
11.8 矩阵的初始化. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
11.9 更上一层楼. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
附录 Jupyter Notebook 的安装方法 . . . . . . . . . . . 234
A.1 在 Windows 环境中安装 Jupyter Notebook. . . . . . . . . . . . . . . . 234
A.2 在 macOS 环境中安装 Jupyter Notebook . . . . . . . . . . . . . . . . . 238