深度学习实战
出版时间:2018
内容简介
深度学习为人工智能带来了巨大突破,也成为机器学习领域一颗闪耀的新星。虽然相关学习资料丰富,但大部分内容较为庞杂且难以理解,并对初学者的相关理论知识与实践能力有较高的要求,这使得大部分想进入这一领域的初学者望而却步。本书去繁化简地对深度学习的理论知识进行了梳理,并对算法实现做出了浅显易懂的讲解,适合初学者进行学习。结合本书的内容,读者可以快速对深度学习进行实践。通过启发式的自学模式,可以使读者由浅入深地学习并掌握常用的深度学习模型,为进一步使用开源的深度学习平台与工具提供理论与实践基础。 本书可作为高等院校计算机专业的本科生或研究生教材,也可供对深度学习感兴趣的研究人员和工程技术人员阅读参考。
目 录
第1章 深度学习的发展介绍 1
1.1 如何阅读本书 3
1.2 深度学习沉浮史 3
1.2.1 模拟生物大脑的疯狂远古时代 4
1.2.2 联结主义近代 5
1.2.3 百花齐放,层次结构主导,模型巨大的当代 6
1.3 Python简易教程 7
1.3.1 Anaconda搭建 7
1.3.2 IPython Notebook使用 7
1.3.3 Python基本用法 8
1.3.4 NumPy 15
1.3.5 Matplotlib 23
1.4 参考文献 25
第2章机器学习快速入门 27
2.1 学习算法 28
2.1.1 学习任务 29
2.1.2 性能度量 30
2.1.3 学习经验 32
2.2 代价函数 33
2.2.1 均方误差函数 33
2.2.2 极大似然估计 34
2.3 梯度下降法 36
2.3.1 批量梯度下降法 38
2.3.2 随机梯度下降法 39
2.4 过拟合与欠拟合 40
2.4.1 没免费午餐理论 42
2.4.2 正则化 43
2.5 超参数与验证集 44
2.6 Softmax编码实战 46
2.6.1 编码说明 49
2.6.2 熟练使用CIFAR-10 数据集 50
2.6.3 显式循环计算损失函数及其梯度 53
2.6.4 向量化表达式计算损失函数及其梯度 56
2.6.5 最小批量梯度下降算法训练Softmax分类器 57
2.6.6 使用验证数据选择超参数 61
2.7 参考代码 68
2.8 参考文献 70
第3章前馈神经网络 72
3.1 神经元 73
3.1.1 Sigmoid神经元 74
3.1.2 Tanh神经元 75
3.1.3 ReLU神经元 76
3.2 前馈神经网络 80
3.2.1 输出层单元 80
3.2.2 隐藏层单元 80
3.2.3 网络结构设计 81
3.3 BP算法 82
3.4 深度学习编码实战上 86
3.4.1 实现仿射传播 88
3.4.2 实现ReLU传播 91
3.4.3 组合单层神经元 93
3.4.4 实现浅层神经网络 96
3.4.5 实现深层全连接网络 101
3.5 参考代码 109
3.6 参考文献 113
第4章深度学习正则化 115
4.1 参数范数惩罚 116
4.1.1 L2参数正则化 118
4.1.2 L1正则化 119
4.2 参数绑定与参数共享 120
4.3 噪声注入与数据扩充 120
4.4 稀疏表征 122
4.5 早停 123
4.6 Dropout 126
4.6.1 个体与集成 126
4.6.2 Dropout 127
4.7 深度学习编码实战中 129
4.7.1 Dropout传播 131
4.7.2 组合Dropout传播层 134
4.7.3 Dropout神经网络 136
4.7.4 解耦训练器trainer 138
4.7.5 解耦更新器updater 143
4.7.6 正则化实验 145
4.8 参考代码 148
4.9 参考文献 150
第5章深度学习优化 152
5.1 神经网络优化困难 153
5.1.1 局部最优 153
5.1.2 鞍点 154
5.1.3 梯度悬崖 154
5.1.4 梯度消失或梯度爆炸 155
5.1.5 梯度不精确 156
5.1.6 优化理论的局限性 156
5.2 随机梯度下降 156
5.3 动量学习法 158
5.4 AdaGrad和RMSProp 159
5.5 Adam 160
5.6 参数初始化策略 161
5.7 批量归一化 163
5.7.1 BN算法详解 163
5.7.2 BN传播详解 165
5.8 深度学习编码实战下 166
5.8.1 Momentum 167
5.8.2 RMSProp 171
5.8.3 Adam 172
5.8.4 更新规则比较 174
5.8.5 BN前向传播 176
5.8.6 BN反向传播 180
5.8.7 使用BN的全连接网络 182
5.8.8 BN算法与权重标准差比较 188
5.9 参考代码 191
5.10 参考文献 195
第6章卷积神经网络 196
6.1 卷积操作 197
6.2 卷积的意义 198
6.2.1 稀疏连接 199
6.2.2 参数共享 200
6.3 池化操作 201
6.4 设计卷积神经网络 204
6.4.1 跨步卷积 204
6.4.2 零填充 205
6.4.3 非共享卷积 206
6.4.4 平铺卷积 207
6.5 卷积网络编码练习 208
6.5.1 卷积前向传播 209
6.5.2 卷积反向传播 212
6.5.3 最大池化前向传播 215
6.5.4 最大池化反向传播 218
6.5.5 向量化执行 220
6.5.6 组合完整卷积层 223
6.5.7 浅层卷积网络 224
6.5.8 空间批量归一化 229
6.6 参考代码 233
6.7 参考文献 237
第7章循环神经网络 238
7.1 循环神经网络 239
7.1.1 循环神经元展开 239
7.1.2 循环网络训练 240
7.2 循环神经网络设计 242
7.2.1 双向循环网络结构 242
7.2.2 编码-解码网络结构 243
7.2.3 深度循环网络结构 244
7.3 门控循环神经网络 245
7.3.1 LSTM 246
7.3.2 门控循环单元 249
7.4 RNN编程练习 250
7.4.1 RNN单步传播 252
7.4.2 RNN时序传播 255
7.4.3 词嵌入 258
7.4.4 RNN输出层 261
7.4.5 时序Softmax损失 262
7.4.6 RNN图片说明任务 264
7.5 LSTM编程练习 269
7.5.1 LSTM单步传播 269
7.5.2 LSTM时序传播 273
7.5.3 LSTM实现图片说明任务 276
7.6 参考代码 278
7.6.1 RNN参考代码 278
7.6.2 LSTM参考代码 282
7.7 参考文献 285
第8章 TensorFlow快速入门 287
8.1 TensorFlow介绍 288
8.2 TensorFlow1.0安装指南 289
8.2.1 双版本切换Anaconda 289
8.2.2 安装CUDA 8.0 291
8.2.3 安装cuDNN 292
8.2.4 安装TensorFlow 293
8.2.5 验证安装 294
8.3 TensorFlow基础 295
8.3.1 Tensor 295
8.3.2 TensorFlow核心API教程 296
8.3.3 tf.train API 299
8.3.4 tf.contrib.learn 301
8.4 TensorFlow构造CNN 305
8.4.1 构建Softmax模型 305
8.4.2 使用TensorFlow训练模型 307
8.4.3 使用TensorFlow评估模型 308
8.4.4 使用TensorFlow构建卷积神经网络 308
8.5 TensorBoard快速入门 311
8.5.1 TensorBoard可视化学习 312
8.5.2 计算图可视化 316