第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