第1章 基础分类模型 1
1.1 深度学习简介 2
1.2 目标问题:空间中的二分类 2
1.3 感知机模型 3
1.3.1 感知机函数 3
1.3.2 损失函数 4
1.3.3 感知机学习算法 6
1.4 算法实现 8
1.4.1 环境搭建 8
1.4.2 数据准备 9
1.4.3 实现感知机算法 11
1.5 小结 13
参考文献 13
第2章 第一个神经网络 14
2.1 目标问题:MNIST手写数字识别 15
2.1.1 数据集 15
2.1.2 图像数据和图向量 16
2.2 挑战:从二分类到多分类 16
2.3 Softmax方法 19
2.4 正确分类的独热编码 20
2.5 损失函数——交叉熵 21
2.6 信息熵和交叉熵 21
2.6.1 信息熵 21
2.6.2 交叉熵 22
2.7 第一个神经网络的学习算法 23
2.8 反向传播 26
2.9 抽象泄漏 27
2.10 算法实现 28
2.10.1 数据准备 28
2.10.2 实现第一个神经网络 33
2.10.3 实现MINIST手写数字识别 36
2.11 小结 37
参考文献 38
第3章 多层全连接神经网络 39
3.1 第一个挑战:异或问题 40
3.2 更深的神经网络——隐藏层 40
3.3 第二个挑战:参数拟合的两面性 42
3.4 过拟合与正则化 44
3.4.1 欠拟合与过拟合 44
3.4.2 正则化 44
3.4.3 正则化的效果 44
3.5 第三个挑战:非线性可分问题 45
3.6 激活函数 45
3.7 算法和结构 47
3.8 算法实现 50
3.8.1 数据准备 50
3.8.2 实现多层全连接神经网络 50
3.8.3 在数据集上验证模型 53
3.9 小结 54
参考文献 54
第4章 卷积神经网络(CNN) 55
4.1 挑战:参数量和训练成本 56
4.2 卷积神经网络的结构 56
4.2.1 卷积层 57
4.2.2 池化层 62
4.2.3 全连接层和Softmax处理 63
4.3 卷积神经网络学习算法 63
4.3.1 全连接层 63
4.3.2 池化层反向传播 64
4.3.3 卷积层反向传播 65
4.4 算法实现 68
4.4.1 数据准备 68
4.4.2 卷积神经网络模型的原始实现 69
4.5 小结 76
参考文献 78
第5章 卷积神经网络——算法提速和优化 79
5.1 第一个挑战:卷积神经网络的运算效率 80
5.2 提速改进 80
5.2.1 边缘填充提速 82
5.2.2 池化层提速 83
5.2.3 卷积层处理 85
5.3 反向传播算法实现 88
5.3.1 池化层反向传播 88
5.3.2 卷积层反向传播 89
5.4 第二个挑战:梯度下降的幅度和方向 91
5.5 递减学习率参数 92
5.6 学习策略的优化方法 92
5.6.1 动量方法 93
5.6.2 NAG方法 93
5.6.3 Adagrad方法 94
5.6.4 RMSprop方法 95
5.6.5 AdaDelta方法 96
5.6.6 Adam方法 97
5.6.7 各种优化方法的比较 98
5.7 总体模型结构 100
5.8 使用CNN实现MNIST手写数字识别验证 101
5.9 小结 102
参考文献 103
第6章 批量规范化(Batch Normalization) 104
6.1 挑战:深度神经网络不易训练 105
6.2 批量规范化方法的初衷 105
6.2.1 数据集偏移 106
6.2.2 输入分布偏移 106
6.2.3 内部偏移 107
6.3 批量规范化的算法 107
6.3.1 训练时的前向计算 107
6.3.2 规范化与标准化变量 108
6.3.3 推理预测时的前向计算 109
6.3.4 全连接层和卷积层的批量规范化处理 110
6.4 批量规范化的效果 111
6.4.1 梯度传递问题 111
6.4.2 饱和非线性激活问题 112
6.4.3 正则化效果 113
6.5 批量规范化为何有效 113
6.6 批量规范化的反向传播算法 114
6.7 算法实现 115
6.7.1 训练时的前向传播 116
6.7.2 反向传播 117
6.7.3 推理预测 118
6.8 调整学习率和总体结构 119
6.8.1 模型结构 119
6.8.2 卷积层批量规范化的实现 120
6.8.3 引入批量规范化后的递减学习率 121
6.9 在MNIST数据集上验证结果 122
6.10 小结 123
参考文献 123
第7章 循环神经网络(Vanilla RNN) 125
7.1 第一个挑战:序列特征的捕捉 126
7.2 循环神经网络的结构 126
7.2.1 单层RNN 126
7.2.2 双向RNN 128
7.2.3 多层RNN 129
7.3 RNN前向传播算法 130
7.4 RNN反向传播算法 131
7.4.1 误差的反向传播 131
7.4.2 激活函数的导函数和参数梯度 132
7.5 第二个挑战:循环神经网络的梯度传递问题 133
7.6 梯度裁剪 134
7.7 算法实现 135
7.8 目标问题:序列数据分析 139
7.8.1 数据准备 139
7.8.2 模型搭建 144
7.8.3 验证结果 145
7.9 小结 147
参考文献 147
第8章 长短时记忆网络(LSTM)——指数分析 149
8.1 目标问题:投资市场的指数分析 150
8.2 挑战:梯度弥散问题 150
8.3 长短时记忆网络的结构 150
8.4 LSTM前向传播算法 152
8.5 LSTM反向传播算法 153
8.5.1 误差反向传播 154
8.5.2 激活函数的导函数和参数梯度 155
8.6 算法实现 156
8.6.1 实现LSTM单时间步的前向计算 156
8.6.2 实现LSTM多层多时间步的前向计算 157
8.6.3 实现LSTM单时间步的反向传播 159
8.6.4 实现LSTM多层多时间步的反向传播 160
8.7 实现沪深300指数分析 161
8.7.1 数据准备 162
8.7.2 模型构建 166
8.7.3 分析结果 167
8.8 小结 168
参考文献 169
第9章 双向门控循环单元(BiGRU)——情感分析 170
9.1 目标问题:情感分析 171
9.2 第一个挑战:模型的运算效率 172
9.3 GRU模型的结构 172
9.4 GRU前向传播算法 173
9.5 GRU前向传播表达式的其他写法 174
9.6 GRU反向传播算法 175
9.7 GRU算法实现 177
9.7.1 单时间步的前向计算 177
9.7.2 实现单时间步的反向传播 178
9.8 用GRU模型进行情感分析 179
9.8.1 数据预处理 180
9.8.2 构建情感分析模型 181
9.9 首次验证 182
9.10 第二个挑战:序列模型的过拟合 183
9.11 Dropout正则化 183
9.11.1 Dropout前向传播算法 183
9.11.2 Dropout反向传播算法 184
9.11.3 Dropout Rate的选择 185
9.12 再次验证:GRU+Dropout 186
9.13 第三个挑战:捕捉逆序信息 187
9.14 双向门控循环单元(BiGRU) 187
9.15 第三次验证:BiGRU+Dropout 188
9.16 小结 189
参考文献 189
附录A 向量和矩阵运算 191
附录B 导数和微分 194
附录C 向量和矩阵导数 195
附录D 概率论和数理统计 201
索引 205