第一部分 基本概念与数学知识 3
第1章 机器学习简介 3
1.1 机器学习是什么 3
1.1.1 一个简单的例子 3
1.1.2 为什么需要机器学习 5
1.2 典型应用 7
1.2.1 语音识别 7
1.2.2 人脸检测 8
1.2.3 人机对弈 9
1.2.4 机器翻译 10
1.2.5 自动驾驶 11
1.3 发展历程 11
1.3.1 历史成就 11
1.3.2 当前进展 12
1.4 关于本书 13
参考文献 13
第2章 数学知识 15
2.1 微积分和线性代数 15
2.1.1 导数 15
2.1.2 向量与矩阵 17
2.1.3 偏导数与梯度 19
2.1.4 雅可比矩阵 20
2.1.5 Hessian矩阵 21
2.1.6 泰勒展开 22
2.1.7 行列式 22
2.1.8 特征值与特征向量 23
2.1.9 奇异值分解 24
2.1.10 二次型 24
2.1.11 向量与矩阵求导 24
2.2 最优化方法 25
2.2.1 梯度下降法 25
2.2.2 牛顿法 26
2.2.3 坐标下降法 27
2.2.4 拉格朗日乘数法 28
2.2.5 凸优化 28
2.2.6 拉格朗日对偶 32
2.2.7 KKT条件 34
2.2.8 拟牛顿法 35
2.2.9 面临的问题 36
2.3 概率论 37
2.3.1 随机事件与概率 37
2.3.2 条件概率 37
2.3.3 随机变量 38
2.3.4 数学期望与方差 39
2.3.5 随机向量 39
2.3.6 最大似然估计 40
参考文献 41
第3章 基本概念 42
3.1 算法分类 42
3.1.1 监督信号 42
3.1.2 分类问题与回归问题 43
3.1.3 判别模型与生成模型 45
3.1.4 强化学习 45
3.2 模型评价指标 46
3.2.1 精度与召回率 46
3.2.2 ROC曲线 46
3.2.3 混淆矩阵 48
3.2.4 交叉验证 48
3.3 模型选择 48
3.3.1 过拟合与欠拟合 48
3.3.2 偏差与方差分解 49
3.3.3 正则化 50
参考文献 52
第二部分 主要的机器学习算法与理论 55
第4章 贝叶斯分类器 55
4.1 贝叶斯决策 55
4.2 朴素贝叶斯分类器 56
4.2.1 离散型特征 56
4.2.2 连续型特征 57
4.3 正态贝叶斯分类器 57
4.3.1 训练算法 57
4.3.2 预测算法 58
4.4 实验程序 59
4.5 应用 61
参考文献 61
第5章 决策树 62
5.1 树形决策过程 62
5.2 分类与回归树 63
5.3 训练算法 64
5.3.1 递归分裂过程 64
5.3.2 寻找最佳分裂 64
5.3.3 叶子节点值的设定 67
5.3.4 属性缺失问题 67
5.3.5 剪枝算法 68
5.3.6 训练算法的流程 69
5.3.7 计算变量的重要性 70
5.4 实验程序 70
5.5 应用 71
参考文献 71
第6章 k近邻算法 72
6.1 基本概念 72
6.2 预测算法 72
6.3 距离定义 73
6.3.1 常用距离定义 74
6.3.2 距离度量学习 74
6.4 实验程序 75
6.5 应用 76
参考文献 76
第7章 数据降维 78
7.1 主成分分析 78
7.1.1 数据降维问题 78
7.1.2 计算投影矩阵 78
7.1.3 向量降维 81
7.1.4 向量重构 81
7.2 流形学习 81
7.2.1 局部线性嵌入 82
7.2.2 拉普拉斯特征映射 83
7.2.3 局部保持投影 86
7.2.4 等距映射 87
7.2.5 随机近邻嵌入 88
7.2.6 t分布随机近邻嵌入 89
7.3 实验程序 90
7.4 应用 91
参考文献 91
第8章 线性判别分析 92
8.1 用投影进行分类 92
8.2 投影矩阵 92
8.2.1 一维的情况 92
8.2.2 推广到高维 94
8.3 实验程序 96
8.4 应用 96
参考文献 97
第9章 人工神经网络 98
9.1 多层前馈型神经网络 98
9.1.1 神经元 98
9.1.2 网络结构 99
9.1.3 正向传播算法 100
9.2 反向传播算法 101
9.2.1 一个简单的例子 101
9.2.2 完整的算法 105
9.3 实验程序 109
9.4 理论解释 110
9.4.1 数学性质 110
9.4.2 与神经系统的关系 111
9.5 面临的问题 111
9.5.1 梯度消失 111
9.5.2 退化 111
9.5.3 局部极小值 111
9.5.4 鞍点 111
9.6 实现细节问题 112
9.6.1 输入值与输出值 112
9.6.2 网络规模 112
9.6.3 激活函数 112
9.6.4 损失函数 113
9.6.5 权重初始化 113
9.6.6 正则化 113
9.6.7 学习率的设定 114
9.6.8 动量项 114
9.7 应用 114
参考文献 115
第10章 支持向量机 118
10.1 线性分类器 118
10.1.1 线性分类器概述 118
10.1.2 分类间隔 118
10.2 线性可分的问题 119
10.2.1 原问题 119
10.2.2 对偶问题 120
10.3 线性不可分的问题 123
10.3.1 原问题 123
10.3.2 对偶问题 123
10.4 核映射与核函数 126
10.5 SMO算法 129
10.5.1 求解子问题 129
10.5.2 优化变量的选择 132
10.6 多分类问题 133
10.7 实验程序 134
10.8 libsvm简介 136
10.8.1 求解算法 137
10.8.2 库的使用 140
10.9 应用 142
参考文献 143
第11章 线性模型 145
11.1 logistic回归 145
11.1.1 第一种表述 145
11.1.2 第二种表述 147
11.1.3 L2正则化原问题 148
11.1.4 L2正则化对偶问题 151
11.1.5 L1正则化原问题 152
11.1.6 实验程序 154
11.2 线性支持向量机 156
11.2.1 L2正则化L1-loss SVC原问题 156
11.2.2 L2正则化L2-loss SVC原问题 156
11.2.3 L2正则化SVC对偶问题 157
11.2.4 L1正则化L2-loss SVC原问题 158
11.2.5 多类线性支持向量机 158
11.2.6 实验程序 160
11.3 liblinear简介 160
11.3.1 求解的问题 161
11.3.2 库的使用 161
11.4 softmax回归 162
11.5 应用 164
参考文献 165
第12章 随机森林 166
12.1 集成学习 166
12.1.1 随机抽样 166
12.1.2 Bagging算法 167
12.2 随机森林概述 167
12.3 训练算法 167
12.4 变量的重要性 168
12.5 实验程序 169
12.6 应用 169
参考文献 169
第13章 Boosting算法 171
13.1 AdaBoost算法 171
13.1.1 强分类器与弱分类器 171
13.1.2 训练算法 172
13.1.3 训练误差分析 174
13.2 广义加法模型 176
13.3 各种AdaBoost算法 177
13.3.1 离散型AdaBoost 177
13.3.2 实数型AdaBoost 179
13.3.3 LogitBoost 180
13.3.4 Gentle型AdaBoost 181
13.4 实现细节问题 182
13.4.1 弱分类器 182
13.4.2 弱分类器的数量 182
13.4.3 样本权重削减 183
13.5 实验程序 183
13.6 梯度提升算法 183
13.6.1 梯度提升框架 184
13.6.2 回归问题 185
13.6.3 分类问题 185
13.6.4 XGBoost 187
13.7 应用——目标检测 189
13.7.1 VJ框架的原理 190
13.7.2 模型训练 192
参考文献 193
第14章 深度学习概论 195
14.1 机器学习面临的挑战 195
14.1.1 人工特征 196
14.1.2 机器学习算法 197
14.2 深度学习技术 197
14.3 进展与典型应用 199
14.3.1 计算机视觉 200
14.3.2 语音识别 202
14.3.3 自然语言处理 202
14.3.4 计算机图形学 203
14.3.5 推荐系统 203
14.3.6 深度强化学习 204
14.4 自动编码器 204
14.4.1 自动编码器简介 204
14.4.2 去噪自动编码器 205
14.4.3 稀疏自动编码器 205
14.4.4 收缩自动编码器 206
14.4.5 多层编码器 206
14.5 受限玻尔兹曼机 206
14.5.1 玻尔兹曼分布 206
14.5.2 受限玻尔兹曼机结构 207
14.5.3 训练算法 209
14.5.4 深度玻尔兹曼机 210
14.5.5 深度置信网 210
参考文献 210
第15章 卷积神经网络 218
15.1 网络结构 218
15.1.1 卷积层 219
15.1.2 池化层 222
15.1.3 全连接层 222
15.2 训练算法 223
15.2.1 卷积层 223
15.2.2 池化层 226
15.2.3 随机梯度下降法 227
15.2.4 迁移学习 228
15.3 典型网络 228
15.3.1 LeNet-5网络 228
15.3.2 AlexNet网络 229
15.3.3 VGG网络 230
15.3.4 GoogLeNet网络 231
15.4 理论分析 232
15.4.1 反卷积运算 232
15.4.2 卷积层可视化 233
15.4.3 理论解释 235
15.5 挑战与改进措施 236
15.5.1 卷积层 236
15.5.2 池化层 236
15.5.3 激活函数 237
15.5.4 损失函数 237
15.5.5 网络结构 237
15.5.6 批量归一化 241
15.6 实现细节 242
15.6.1 卷积层 242
15.6.2 激活函数 244
15.6.3 内积层 244
15.6.4 损失层 245
15.6.5 求解器 248
15.7 应用——计算机视觉 251
15.7.1 人脸检测 251
15.7.2 通用目标检测 254
15.7.3 人脸关键点定位 262
15.7.4 人脸识别 263
15.7.5 图像分割 265
参考文献 266
第16章 循环神经网络 270
16.1 网络结构 270
16.1.1 循环层 270
16.1.2 输出层 271
16.1.3 一个简单的例子 272
16.1.4 深层网络 272
16.2 网络的训练 273
16.2.1 一个简单的例子 273
16.2.2 完整的算法 275
16.3 挑战与改进措施 277
16.3.1 梯度消失 277
16.3.2 长短期记忆模型 278
16.3.3 门控循环单元 279
16.3.4 双向网络 279
16.4 序列预测问题 280
16.4.1 序列标注问题 280
16.4.2 连接主义时序分类 281
16.4.3 序列到序列学习 285
16.5 应用——语音识别 287
16.5.1 语音识别问题 287
16.5.2 GMM-HMM框架 288
16.5.3 深度模型 288
16.6 应用——自然语言处理 291
16.6.1 中文分词 292
16.6.2 词性标注 293
16.6.3 命名实体识别 293
16.6.4 文本分类 294
16.6.5 自动摘要 296
16.6.6 机器翻译 296
参考文献 298
第17章 生成对抗网络 302
17.1 随机数据生成 302
17.2 生成对抗网络结构 303
17.2.1 生成模型 303
17.2.2 判别模型 304
17.3 模型的训练 304
17.3.1 目标函数 304
17.3.2 训练算法 305
17.3.3 理论分析 306
17.4 应用与改进 307
17.4.1 改进方案 308
17.4.2 典型应用 311
参考文献 313
第18章 聚类算法 314
18.1 问题定义 314
18.2 层次聚类 315
18.3 基于质心的算法 315
18.4 基于概率分布的算法 316
18.4.1 高斯混合模型 316
18.4.2 EM算法 317
18.5 基于密度的算法 322
18.5.1 DBSCAN算法 322
18.5.2 OPTICS算法 324
18.5.3 Mean Shift算法 326
18.6 基于图的算法 328
18.7 算法评价指标 331
18.7.1 内部指标 331
18.7.2 外部指标 331
18.8 实验程序 332
18.9 应用 332
参考文献 332
第19章 半监督学习 334
19.1 问题假设 334
19.1.1 连续性假设 334
19.1.2 聚类假设 334
19.1.3 流形假设 334
19.1.4 低密度分割假设 334
19.2 启发式算法 335
19.2.1 自训练 335
19.2.2 协同训练 335
19.3 生成模型 335
19.4 低密度分割 336
19.5 基于图的算法 336
19.6 半监督深度学习 337
参考文献 338
第20章 隐马尔可夫模型 340
20.1 马尔可夫模型 340
20.2 隐马尔可夫模型简介 343
20.2.1 模型结构 343
20.2.2 中文分词 345
20.3 估值问题 345
20.4 解码问题 347
20.5 训练算法 349
20.6 应用 352
参考文献 352
第21章 条件随机场 353
21.1 马尔可夫随机场 353
21.1.1 概率图模型 353
21.1.2 马尔可夫随机场 354
21.2 条件随机场概述 355
21.2.1 条件随机场简介 355
21.2.2 线性链条件随机场 355
21.3 推断算法 357
21.4 训练算法 359
21.5 应用 360
参考文献 360
第22章 强化学习 361
22.1 强化学习简介 361
22.1.1 问题定义 361
22.1.2 马尔可夫决策过程 362
22.2 基于动态规划的算法 366
22.2.1 策略迭代算法 366
22.2.2 价值迭代算法 368
22.3 蒙特卡洛算法 369
22.3.1 算法简介 369
22.3.2 状态价值函数估计 370
22.3.3 动作价值函数估计 371
22.3.4 蒙特卡洛控制 371
22.4 时序差分学习 372
22.4.1 Sarsa算法 372
22.4.2 Q学习 373
22.5 深度强化学习 374
22.5.1 深度Q网络 375
22.5.2 策略梯度算法 378
22.6 应用 381
参考文献 381
第三部分 工程实践问题 385
第23章 工程实践问题概述 385
23.1 实现细节问题 385
23.1.1 训练样本 385
23.1.2 特征预处理 386
23.1.3 模型选择 386
23.1.4 过拟合问题 386
23.2 安全性问题 387
23.2.1 对抗样本 387
23.2.2 形成原因分析 389
23.3 实现成本问题 390
23.3.1 训练样本量 390
23.3.2 计算与存储成本 390
23.4 深度模型优化 391
23.4.1 剪枝与编码 391
23.4.2 二值化网络 392
23.4.3 卷积核分离 396
参考文献 397