第1篇 深度学习入门篇 2
第0章 引言:从人工智能到深度学习 2
0.1 人工智能与机器学习 2
0.1.1 人工智能 3
【知识扩容】大数据带来的挑战 4
0.1.2 机器学习 4
【认知提升】细说图灵测试 5
【新观点】机器学习适合做什么 6
0.2 机器学习的模式 7
【知识扩容】人工智能学派之争 8
0.3 深度学习 9
【案例0-1】天气预报深度神经网络 9
【认知提升】说文解字“深度学习” 11
【应知应会】深度与学习 12
【最佳实践】减小损失函数的方法 12
0.4 温故知新 13
0.5 停下来,思考一下 14
第1章 深度学习入门基础 16
1.1 数学基础 16
1.1.1 矩阵论基础 17
【案例1-1】像指挥官一样对矩阵进行“排兵布阵” 18
1.1.2 概率论基础与重要结论 19
【应知应会】MATLAB中概率论基本命令 21
1.2 机器学习基础 21
1.2.1 监督学习 22
【应知应会】数据挖掘与机器学习 22
1.2.2 无监督学习 23
【案例1-2】“无监督学习”中的k-means聚类 24
1.3 神经网络基础 26
1.3.1 生物神经网络 26
【认知提升】探索初级视觉皮层的启示 26
1.3.2 人工神经网络与神经元模型 27
【知识扩容】Walter Pitts其人 27
1.4 最优化理论基础 28
1.4.1 最优化问题 29
1.4.2 多目标优化问题 30
1.4.3 群智能优化方法 31
【案例1-3】指挥“群智能团队”逐渐逼近问题最优解 32
1.5 温故知新 35
1.6 停下来,思考一下 36
第2章 神经网络原理与实现 38
2.1 线性问题与感知机 38
2.2 多层前馈神经网络与BP算法 41
2.2.1 多层前馈神经网络 41
【案例2-1】具有异或逻辑的感知机 42
2.2.2 多层前馈神经网络的训练 43
【案例2-2】训练前馈神经网络 47
【应知应会】梯度下降算法 47
2.3 其他神经网络 48
2.3.1 径向基函数网络 48
2.3.2 自组织映射网络 49
【案例2-3】用SOM网络聚类Iris数据 49
2.3.3 深度神经网络 50
2.4 温故知新 53
2.5 停下来,思考一下 53
第2篇 深度学习方法论解析篇 58
第3章 卷积神经网络(CNN) 58
3.1 卷积神经网络入门 58
3.1.1 生物机理 59
3.1.2 拓扑结构 61
【知识扩容】图像处理中的全连接网络与卷积网络 63
3.1.3 卷积神经网络的特点 63
3.2 卷积神经网络的关键技术 64
3.2.1 卷积 65
【案例3-1】利用图像的卷积操作对6×6的单通道图像进行瘦身 66
【知识扩容】多通道卷积 67
【案例3-2】构建基本CNN 68
【认知提升】不同角度看“卷积” 68
3.2.2 池化 69
【最佳实践】小技巧总结 71
【案例3-3】在Keras框架中实现MaxPooling 71
【知识扩容】VGG卷积神经网络 72
【案例3-4】揭开VGG和GoogLeNet的“庐山真面目” 73
【认知提升】GoogleNet的Inception结构 75
3.2.3 扁平化 75
【案例3-5】实现图像特征矩阵的扁平化操作 76
3.2.4 关键技术小结 76
【新观点】卷积神经网络发展方向 77
3.3 综合案例:三步教你构建手写字识别神经网络 78
【应知应会】Adam优化算法 79
【知识扩容】CNN在自然语言处理中的应用 81
3.4 温故知新 82
3.5 停下来,思考一下 82
第4章 生成式对抗网络(GAN) 84
4.1 生成式对抗网络基本原理 84
4.1.1 GAN的核心思想 84
【认知提升】GAN与博弈理论 85
4.1.2 GAN数学描述 86
【认知提升】“囚徒困境”博弈模型 86
4.1.3 GAN的网络结构与核心技术 87
4.1.4 GAN的改进模型 90
【案例4-1】ACGAN基于TensorFlow框架的实现(图像为64×64单通道数据) 91
【认知提升】博弈理论与多目标优化 98
4.2 GAN应用 99
4.2.1 数据缺失 100
4.2.2 多标签预测 101
4.2.3 根据环境生成相应数据 102
4.2.4 数据特征表示 103
4.2.5 图像检索 104
4.2.6 文本到图像翻译 104
4.2.7 医学方面 105
4.3 综合案例:动手构建生成式对抗网络 106
4.3.1 基于MATLAB的GAN 106
4.3.2 基于TensorFlow的GAN 108
4.4 温故知新 115
4.5 停下来,思考一下 115
第5章 循环神经网络(RNN) 117
5.1 循环神经网络基本原理 117
5.1.1 问题背景 118
【案例5-1】词性标注(我学习循环神经网络) 118
【应知应会】one-hot编码 119
【认知提升】神经网络的记忆问题 120
5.1.2 循环神经网络基本思想 120
【最佳实践】RNN的梯度爆炸和消失问题 123
5.2 LSTM网络基本原理 124
5.2.1 LSTM的关键技术 124
【知识扩容】递归神经网络(Recursive Neural Network,RNN) 128
5.2.2 LSTM的应用 128
【应知应会】自然语言处理 129
5.3 综合案例:基于LSTM的语音预测 130
5.3.1 加载数据 130
5.3.2 定义网络结构 130
5.3.3 网络训练及评估 131
【应知应会】深度学习代码一般结构 132
5.4 综合案例:基于循环神经网络的手写数字识别 132
5.4.1 数据准备及参数设置 132
5.4.2 网络构建 133
5.4.3 网络训练 134
5.5 综合案例:基于LSTM的自然语言处理 135
5.5.1 数据收集及编码 135
5.5.2 构建LSTM模型 136
5.5.3 模型训练 137
5.5 温故知新 137
5.6 停下来,思考一下 138
第3篇 深度学习实战篇 142
第6章 深度学习主流工具及框架 142
6.1 MATLAB基本语法与深度学习工具箱 142
6.1.1 MATLAB简介 142
6.1.2 MATLAB安装 143
6.1.3 MATLAB常用语法 146
6.1.4 基于MATLAB的深度学习工具箱 149
【案例6-1】基于MATLAB的AlexNet模型初探 151
【案例6-2】用安装好的深度学习工具箱中的卷积神经网络做mnist手写数字识别,来验证工具箱的有效性 152
6.2 Python基本语法、库与开发工具 153
6.2.1 Python简介 153
6.2.2 Python安装 153
6.2.3 Python常用语法 155
【应知应会】Python常见错误提示及原因 156
6.2.4 常用Python库 157
6.2.5 常用Python开发工具 161
【知识扩容】PyCharm常用快捷键 162
【案例6-3】Python送你圣诞帽 163
6.3 Caffe框架及环境搭建 165
6.3.1 Caffe简介 165
6.3.2 Caffe环境搭建 166
【案例6-4】手写体数字识别 167
6.4 TensorFlow框架及环境搭建 167
6.4.1 TensorFlow简介 167
6.4.2 TensorFlow与Keras框架的关系 168
6.4.3 Windows 10上TensorFlow的环境搭建 169
6.5 其他常用框架 177
6.5.1 微软CNTK 177
6.5.2 MXNet 178
6.5.3 Torch 178
6.5.4 Theano 179
6.6 温故知新 180
6.7 停下来,思考一下 180
第7章 AlexNet关键技术与实战 182
7.1 剖析AlexNet网络结构 182
【知识扩容】ImageNet与李飞飞 186
7.2 AlexNet关键技术 187
7.2.1 ReLU激活函数 187
7.2.2 标准化 187
【应知应会】激活函数的“饱和”与“不饱和” 188
【认知提升】马太效应、二八定律、长尾理论 188
7.2.3 Dropout 189
7.2.4 多GPU 190
【应知应会】CUDA 190
7.3 AlexNet与LeNet对比 191
7.4 CNN通用架构 191
7.5 综合案例:基于AlexNet的深度学习实战 192
7.5.1 静态图像分类 192
7.5.2 用AlexNet做特征提取(feature extraction) 194
7.5.3 用AlexNet做迁移学习 197
7.5.4 卷积神经网络的特征可视化 200
7.6 温故知新 209
7.7 停下来,思考一下 210
第8章 将手写体识别进行到底 211
8.1 手写体识别“江湖地位” 211
8.2 手写数字识别 212
8.2.1 手写数字的无监督学习 213
【应知应会】稀疏表示 213
【应知应会】无监督学习中的自动编码器 219
8.2.2 手写数字的全连接神经网络识别 219
【应知应会】softmax函数介绍 220
【认知提升】熵 220
8.2.3 手写数字的卷积神经网络识别 221
8.3 手写汉字识别 229
8.3.1 数据读取及预处理 229
【最佳实践】数据读取 231
8.3.2 卷积神经网络构建 231
8.3.3 网络模型训练及结果可视化 233
8.4 综合案例:手写数字旋转角度识别 234
8.4.1 数据载入 235
8.4.2 网络构建 235
8.4.3 网络训练 236
8.4.4 测试预测精度 236
8.4.5 残差展示 237
8.4.6 偏转角度矫正及可视化 237
8.5 温故知新 238
8.6 停下来,思考一下 239
第9章 基于深度学习的视频检测 240
9.1 人物监控视频问题研究意义及现状 240
9.1.1 研究意义 240
9.1.2 国内外研究现状 242
9.2 研究情况介绍 244
9.2.1 研究内容 244
9.2.2 研究目标及关键科学问题 244
【案例9-1】基于Python库的人脸识别 245
9.3 综合案例:基于深度学习的人脸视频检测 247
9.3.1 环境准备 247
9.3.2 数据处理 248
9.3.3 模型训练 250
9.3.4 监控代码 255
9.4 综合案例:基于深度学习的物体视频检测 256
9.4.1 AlexNet回顾 256
9.4.2 入门版 257
9.4.3 初级版 258
9.4.4 加强版 259
9.4.5 升级版 260
9.4.6 豪华版 261
【案例9-2】让手机当网络摄像头 262
9.5 温故知新 262
9.6 停下来,思考一下 263
第10章 基于深度学习的信息隐藏 264
10.1 数字图像隐写分析研究现状及意义 264
10.1.1 研究意义 267
10.1.2 研究现状 268
10.1.3 潜在的应用 268
10.2 数字图像隐写分析概述 270
【案例10-1】基于四叉树编码的空间域高保真可逆信息隐藏 271
10.3 基于ACGAN的无载体信息隐藏 272
10.3.1 生成式对抗网络回顾 272
【应知应会】零和博弈 272
10.3.2 基于ACGAN的信息隐藏关键技术 274
10.4 综合案例:ACGAN信息隐藏实战 276
10.4.1 方案概述 276
【认知提升】可逆信息隐藏 277
10.4.2 隐藏算法与提取算法的实现 278
10.4.3 性能分析 286
10.4.3 可靠性 287
10.4.4 安全性 287
10.5 温故知新 288
10.6 停下来,思考一下 288
第11章 基于深度学习的服装识别 289
11.1 服装识别问题描述 289
11.2 解决方案 291
11.2.1 方案目标 291
11.2.2 方案概述 291
【知识扩容】OCR技术 293
11.2.3 成本分析和可行性分析 294
11.2.4 实施方案 294
11.3 综合案例:基于卷积神经网络的服装识别实战 294
11.3.1 数据准备 294
11.3.2 网络结构设计 297
【案例11-1】Canny边缘检测算子 301
11.3.3 网络模型训练 302
11.3.4 训练结果及测试 303
11.4 温故知新 306
11.5 停下来,思考一下 306
致谢 308