1 机器学习与深度学习的概念 1
1.1 什么是机器学习 1
1.1.1 机器学习的形式 2
1.1.2 机器学习的几个组成部分 8
1.2 深度学习的逆袭 9
1.3 深层模型在视觉领域的应用 13
1.4 本书的主要内容 15
1.5 总结 17
2 数学与机器学习基础 18
2.1 线性代数基础 18
2.2 对称矩阵的性质 22
2.2.1 特征值与特征向量 22
2.2.2 对称矩阵的特征值和特征向量 23
2.2.3 对称矩阵的对角化 24
2.3 概率论 25
2.3.1 概率与分布 25
2.3.2 最大似然估计 28
2.4 信息论基础 31
2.5 KL散度 33
2.6 凸函数及其性质 37
2.7 机器学习基本概念 39
2.8 机器学习的目标函数 42
2.9 总结 44
3 CNN的基石:全连接层 45
3.1 线性部分 45
3.2 非线性部分 48
3.3 神经网络的模样 50
3.4 反向传播法 55
3.4.1 反向传播法的计算方法 55
3.4.2 反向传播法在计算上的抽象 58
3.4.3 反向传播法在批量数据上的推广 59
3.4.4 具体的例子 63
3.5 参数初始化 65
3.6 总结 68
4 CNN的基石:卷积层 69
4.1 卷积操作 69
4.1.1 卷积是什么 69
4.1.2 卷积层效果展示 73
4.1.3 卷积层汇总了什么 76
4.1.4 卷积的另一种解释 77
4.2 卷积层的反向传播 79
4.2.1 实力派解法 80
4.2.2 “偶像派”解法 84
4.3 ReLU 88
4.3.1 梯度消失问题 89
4.3.2 ReLU的理论支撑 92
4.3.3 ReLU的线性性质 93
4.3.4 ReLU的不足 93
4.4 总结 94
4.5 参考文献 94
5 Caffe入门 95
5.1 使用Caffe进行深度学习训练 96
5.1.1 数据预处理 96
5.1.2 网络结构与模型训练的配置 100
5.1.3 训练与再训练 108
5.1.4 训练日志分析 110
5.1.5 预测检验与分析 112
5.1.6 性能测试 115
5.2 模型配置文件介绍 117
5.3 Caffe的整体结构 122
5.3.1 SyncedMemory 124
5.3.2 Blob 125
5.3.3 Layer 125
5.3.4 Net 126
5.3.5 Solver 126
5.3.6 多GPU训练 127
5.3.7 IO 127
5.4 Caffe的Layer 128
5.4.1 Layer的创建——LayerRegistry 128
5.4.2 Layer的初始化 130
5.4.3 Layer的前向计算 132
5.5 Caffe的Net组装流程 133
5.6 Caffe的Solver计算流程 139
5.6.1 优化流程 140
5.6.2 多卡优化算法 142
5.7 Caffe的Data Layer 145
5.7.1 Datum结构 145
5.7.2 DataReader Thread 147
5.7.3 BasePrefetchingDataLayer Thread 148
5.7.4 Data Layer 149
5.8 Caffe的Data Transformer 150
5.8.1 C++中的Data Transformer 150
5.8.2 Python中的Data Transformer 153
5.9 模型层扩展实践——Center Loss Layer 156
5.9.1 Center Loss的原理 156
5.9.2 Center Loss实现 160
5.9.3 实验分析与总结 164
5.10 总结 165
5.11 参考文献 165
6 深层网络的数值问题 166
6.1 ReLU和参数初始化 166
6.1.1 第一个ReLU数值实验 167
6.1.2 第二个ReLU数值实验 169
6.1.3 第三个实验——Sigmoid 171
6.2 Xavier初始化 172
6.3 MSRA初始化 178
6.3.1 前向推导 178
6.3.2 后向推导 181
6.4 ZCA 182
6.5 与数值溢出的战斗 186
6.5.1 Softmax Layer 186
6.5.2 Sigmoid Cross Entropy Loss 189
6.6 总结 192
6.7 参考文献 192
7 网络结构 193
7.1 关于网络结构,我们更关心什么 193
7.2 网络结构的演化 195
7.2.1 VGG:模型哲学 195
7.2.2 GoogLeNet:丰富模型层的内部结构 196
7.2.3 ResNet:从乘法模型到加法模型 197
7.2.4 全连接层的没落 198
7.3 Batch Normalization 199
7.3.1 Normalization 199
7.3.2 使用BN层的实验 200
7.3.3 BN的实现 201
7.4 对Dropout的思考 204
7.5 从迁移学习的角度观察网络功能 206
7.6 ResNet的深入分析 210
7.6.1 DSN解决梯度消失问题 211
7.6.2 ResNet网络的展开结构 212
7.6.3 FractalNet 214
7.6.4 DenseNet 215
7.7 总结 217
7.8 参考文献 217
8 优化与训练 219
8.1 梯度下降是一门手艺活儿 219
8.1.1 什么是梯度下降法 219
8.1.2 优雅的步长 220
8.2 路遥知马力:动量 225
8.3 SGD的变种算法 232
8.3.1 非凸函数 232
8.3.2 经典算法的弯道表现 233
8.3.3 Adagrad 234
8.3.4 Rmsprop 235
8.3.5 AdaDelta 236
8.3.6 Adam 237
8.3.7 爬坡赛 240
8.3.8 总结 242
8.4 L1正则的效果 243
8.4.1 MNIST的L1正则实验 244
8.4.2 次梯度下降法 246
8.5 寻找模型的弱点 251
8.5.1 泛化性实验 252
8.5.2 精确性实验 255
8.6 模型优化路径的可视化 255
8.7 模型的过拟合 260
8.7.1 过拟合方案 261
8.7.2 SGD与过拟合 263
8.7.3 对于深层模型泛化的猜想 264
8.8 总结 265
8.9 参考文献 265
9 应用:图像的语意分割 267
9.1 FCN 268
9.2 CRF通俗非严谨的入门 272
9.2.1 有向图与无向图模型 272
9.2.2 Log-Linear Model 278
9.2.3 条件随机场 280
9.3 Dense CRF 281
9.3.1 Dense CRF是如何被演化出来的 281
9.3.2 Dense CRF的公式形式 284
9.4 Mean Field对Dense CRF模型的化简 285
9.5 Dense CRF的推断计算公式 288
9.5.1 Variational Inference推导 289
9.5.2 进一步化简 291
9.6 完整的模型:CRF as RNN 292
9.7 总结 294
9.8 参考文献 294
10 应用:图像生成 295
10.1 VAE 295
10.1.1 生成式模型 295
10.1.2 Variational Lower bound 296
10.1.3 Reparameterization Trick 298
10.1.4 Encoder和Decoder的计算公式 299
10.1.5 实现 300
10.1.6 MNIST生成模型可视化 301
10.2 GAN 303
10.2.1 GAN的概念 303
10.2.2 GAN的训练分析 305
10.2.3 GAN实战 309
10.3 Info-GAN 314
10.3.1 互信息 315
10.3.2 InfoGAN模型 317
10.4 Wasserstein GAN 320
10.4.1 分布的重叠度 321
10.4.2 两种目标函数存在的问题 323
10.4.3 Wasserstein距离 325
10.4.4 Wasserstein距离的优势 329
10.4.5 Wasserstein GAN的实现 331
10.5 总结 333
10.6 参考文献 334