深度学习是一门注重应用的学科。了解深度学习背后的数学原理的人,可以在应用深度学习解决实际问题时游刃有余。本书通过Python代码示例来讲解深度学习背后的关键数学知识,包括概率论、统计学、线性代数、微分等,并进一步解释神经网络、反向传播、梯度下降等深度学习领域关键知识背后的原理。
本书适合有一定深度学习基础、了解Pyho如编程语言的读者阅读,也可作为拓展深度学习理论的参考书。
1.做中学,从代码来理解深度学习的数学
从本质上讲,这是一本数学书。但是,本书将使用代码来说明概念,而不是证明和练习。深度学习是一门应用学科,作者认为做中学,你才能理解它。因此,本书将使用代码来弥合纯数学知识和动手实践之间的差距。
2.循序渐进,从基础到进阶,从入门到精通
本书各章内容相辅相成,基础章节后面紧跟进阶的数学主题,最后讲解深度学习算法,涉及前面章节中涵盖的所有内容。一般而言,读者可以从前向后通读本书,对于熟悉的主题,则可以跳过。
罗纳德·T.纽塞尔(Ronald T. Kneusel),拥有超过 20年的机器学习行业经验,著有多本AI领域图书。 本书适合有一定深度学习基础、了解Python编程语言的读者阅读,也可作为用于拓展深度学习理论的参考书。
第 1 章 搭建舞台 1
1.1 组件安装 2
1.1.1 Linux 2
1.1.2 macOS 3
1.1.3 Windows 3
1.2 NumPy 4
1.2.1 定义数组 4
1.2.2 数据类型 4
1.2.3 二维数组 5
1.2.4 全 0 数组和全 1 数组 6
1.2.5 高级索引 6
1.2.6 读写磁盘 8
1.3 SciPy 8
1.4 matplotlib 9
1.5 scikit-learn 11
1.6 小结 12
第 2 章 概率论 13
2.1 基础概念 13
2.1.1 样本空间和事件 14
2.1.2 随机变量 14
2.1.3 人类不擅于处理概率问题 15
2.2 概率法则 16
2.2.1 事件的概率 16
2.2.2 加法法则 18
2.2.3 乘法法则 19
2.2.4 加法法则的修正版 20
2.2.5 生日难题 20
2.2.6 条件概率 23
2.2.7 全概率公式 24
2.3 联合概率和边缘概率 25
2.3.1 联合概率表 25
2.3.2 概率的链式法则 29
2.4 小结 30
第 3 章 概率论进阶 31
3.1 概率分布 31
3.1.1 直方图与概率 32
3.1.2 离散型概率分布 34
3.1.3 连续型概率分布 39
3.1.4 中心极限定理 42
3.1.5 大数法则 45
3.2 贝叶斯定理 45
3.2.1 回到判断女性是否患有乳腺癌的例子 46
3.2.2 更新先验 47
3.2.3 机器学习中的贝叶斯定理 48
3.3 小结 50
第 4 章 统计学 51
4.1 数据类型 51
4.1.1 定类数据 52
4.1.2 定序数据 52
4.1.3 定距数据 52
4.1.4 定比数据 52
4.1.5 在深度学习中使用定类数据 53
4.2 描述性统计量 54
4.2.1 均值和中位数 54
4.2.2 用于衡量变化的统计量 57
4.3 分位数和箱形图 60
4.4 缺失数据 64
4.5 相关性 66
4.5.1 皮尔森相关性 67
4.5.2 斯皮尔曼相关性 70
4.6 假设检验 71
4.6.1 假设 72
4.6.2 t 检验 73
4.6.3 曼-惠特尼 U 检验 77
4.7 小结 79
第 5 章 线性代数 80
5.1 标量、向量、矩阵和张量 80
5.1.1 标量 81
5.1.2 向量 81
5.1.3 矩阵 82
5.1.4 张量 82
5.2 用张量进行代数运算 84
5.2.1 数组运算 85
5.2.2 向量运算 86
5.2.3 矩阵乘法 93
5.2.4 克罗内克积 97
5.3 小结 98
第 6 章 线性代数进阶 99
6.1 方阵 99
6.1.1 为什么需要方阵 100
6.1.2 转置、迹和幂 101
6.1.3 特殊方阵 103
6.1.4 三角矩阵 104
6.1.5 行列式 104
6.1.6 逆运算 107
6.1.7 对称矩阵、正交矩阵和酉矩阵 108
6.1.8 对称矩阵的正定性 109
6.2 特征向量和特征值 110
6.3 向量范数和距离度量 113
6.3.1 L 范数和距离度量 113
6.3.2 协方差矩阵 114
6.3.3 马氏距离 116
6.3.4 K-L 散度 118
6.4 主成分分析 120
6.5 奇异值分解和伪逆 122
6.5.1 SVD 实战 123
6.5.2 SVD 的两个应用 124
6.6 小结 126
第 7 章 微分 127
7.1 斜率 127
7.2 导数 129
7.2.1 导数的正式定义 129
7.2.2 基本法则 130
7.2.3 三角函数的求导法则 133
7.2.4 指数函数和自然对数的求导法则 135
7.3 函数的极小值和极大值 137
7.4 偏导数 140
7.4.1 混合偏导数 142
7.4.2 偏导数的链式法则 142
7.5 梯度 143
7.5.1 梯度的计算 144
7.5.2 可视化梯度 146
7.6 小结 148
第 8 章 矩阵微分 149
8.1 一些公式 149
8.1.1 关于标量的向量函数 150
8.1.2 关于向量的标量函数 151
8.1.3 关于向量的向量函数 152
8.1.4 关于标量的矩阵函数 152
8.1.5 关于矩阵的标量函数 153
8.2 一些性质 154
8.2.1 关于向量的标量函数 154
8.2.2 关于标量的向量函数 156
8.2.3 关于向量的向量函数 156
8.2.4 关于矩阵的标量函数 157
8.3 雅可比矩阵和黑塞矩阵 158
8.3.1 雅可比矩阵 159
8.3.2 黑塞矩阵 163
8.4 矩阵微分的一些实例 168
8.4.1 元素级运算求导 168
8.4.2 激活函数的导数 169
8.5 小结 171
第 9 章 神经网络中的数据流 172
9.1 数据的表示 172
9.1.1 在传统神经网络中表示数据 173
9.1.2 在深度卷积网络中表示数据 173
9.2 传统神经网络中的数据流 175
9.3 卷积神经网络中的数据流 178
9.3.1 卷积 179
9.3.2 卷积层 183
9.3.3 池化层 185
9.3.4 全连接层 186
9.3.5 综合应用 186
9.4 小结 189
第 10 章 反向传播 190
10.1 什么是反向传播 190
10.2 手把手进行反向传播 191
10.2.1 计算偏导数 192
10.2.2 用 Python 进行实现 194
10.2.3 训练和测试模型 197
10.3 全连接网络的反向传播 199
10.3.1 误差的反向传播 199
10.3.2 关于权重和偏置求偏导数 201
10.3.3 Python 实现代码 203
10.3.4 测试 Python 实现代码 206
10.4 计算图 208
10.5 小结 210
第 11 章 梯度下降 211
11.1 基本原理 211
11.1.1 一维函数的梯度下降 212
11.1.2 二维函数的梯度下降 214
11.2 随机梯度下降 219
11.3 动量机制 221
11.3.1 什么是动量 221
11.3.2 一维情况下的动量机制 222
11.3.3 二维情况下的动量机制 223
11.3.4 在训练模型时引入动量 225
11.3.5 涅斯捷洛夫动量 229
11.4 自适应梯度下降 231
11.4.1 RMSprop 231
11.4.2 Adagrad 232
11.4.3 Adam 233
11.4.4 关于优化器的一些思考 234
11.5 小结 235
附录 学无止境 236
概率与统计 236
线性代数 237
微积分 237
深度学习 237