本书是对深度学习感兴趣的读者的入门图书,主要介绍深度学习算法和Python应用实践两部分。在深度学习算法部分,将从逻辑回归、浅层神经网络、深层神经网络、卷积神经网络、深度卷积网络、目标检测算法、循环序列模型等方面介绍深度学习的核心算法。在Python应用实践部分,将主要介绍Python基础语法,numpy基本用法,以及Python实现深度学习算法三部分。本书理论和实践结合,不仅让读者了解算法理论,更让读者学会如何利用计算机编程语言解决实际问题。 本书适合作为高等院校人工智能及相关专业的教材,也可作为从事人工智能领域的专业研究人员和工程技术人员的参考书。
本书旨在为对深度学习感兴趣并从事相关研究的本科生、研究生、工程师和研究人员提供必备的基础知识和Python实现方法。在内容编排方面,注重理论和实践的结合,基础知识和前沿技术的结合,并附有相关的应用及实战案例。希望读者通过阅读和学习这本书,感受到从事深度学习相关研究的乐趣。
近年来,深度学习已成为人工智能领域的研究热点之一。从人脸识别系统到无人自动驾驶汽车,从医疗影像诊断到语音识别,从自动机器翻译到网页内容智能推荐,都离不开深度学习的贡献。随着深度学习技术的飞速发展及其应用领域的不断拓展,越来越多的专家、学者开始关注深度学习的未来发展方向,并且投入深度学习的发展研究中,逐渐形成了特有的理论研究和学术发展方向。
深度学习技术的研究与应用,是我国深入开展人工智能领域研究、发展智能产业和智慧经济、实现智能制造、建设智能化社会的重要保证。本书旨在为对深度学习感兴趣并从事相关研究的本科生、研究生、工程师和研究人员提供必备的基础知识和Python实现方法。在内容编排方面,注重理论和实践的结合、基础知识和前沿技术的结合,并附有相关的应用及实战案例。希望读者通过阅读和学习本书,感受到从事深度学习相关研究的乐趣。
本书共分为8章。第1章主要讲解深度学习、神经网络及其发展历史,以及常用的深度学习框架及其编程环境的安装方法。第2章主要介绍机器学习相关的基础知识,包括机器学习算法的类型以及评价指标等。第3章讲述前馈神经网络模型、反向传播算法,以及自动梯度计算。第4章讲述卷积神经网络及其相关基础概念,包括图像卷积、填充和步幅、池化层等。第5章介绍一些现代卷积神经网络模型,有AlexNet、VGG、NiN、GoogLeNet、ResNet、DenseNet等。第6章阐述可以处理序列信息的循环神经网络模型及其实现。第7章阐明神经网络优化和正则化的方法,包括数据预处理、超参数优化、网络正则化等。第8章列举3个基于Python的实战演练案例,包括MNIST手写数字分类的实现、车辆识别和人脸识别。
读者可以扫描插图右侧的二维码观看彩色插图。
本书第1章由郭彤颖、薛亚栋编写,第2章由薛亚栋、刘冬莉编写,第3章由薛亚栋、王海忱编写,第4章由薛亚栋、张辉编写,第5~7章由郭彤颖、薛亚栋编写,第8章由薛亚栋、李娜编写。
由于深度学习技术一直处于不断发展之中,再加上时间仓促、编者水平有限,难以全面、完整地对当前的研究前沿和热点问题一一进行探讨。书中难免存在不足和疏漏之处,敬请读者给予批评指正。
作 者
2021年12月
??
??
??
Python语言简介
郭彤颖,女,博士,副教授,研究生导师。主要教学有计算机控制系统、计算机原理与应用、机器人控制等课程。近年来,主持和参加国家、省部级科研课题10余项,获省级优秀教学成果奖1项,沈阳市科技进步一等奖1项,辽宁省自然科学学术成果奖三等奖3项,沈阳市自然科学学术成果奖二等奖1项,校级各类教学成果奖3项。在国内外重要的学术期刊与会议上发表论文40余篇,SCI和EI收录20余篇,主编著作和教材5部,参编著作和教材8部。
第 1章 绪 论 1
1.1 深度学习简介 2
1.2 神经网络 3
1.2.1 人脑神经网络 3
1.2.2 人工神经网络 4
1.3 神经网络的发展历史 5
1.4 常用的深度学习框架 6
1.5 编程环境的安装 8
1.5.1 安装 Anaconda 8
1.5.2 安装CUDA 9
1.5.3 安装TensorFlow 14
1.5.4 安装常用编辑器 17
第2章 机器学习基础 18
2.1 基本概念 19
2.2 机器学习的三个基本要素 20
2.2.1 模型 20
2.2.2 学习准则 21
2.2.3 优化算法 24
2.3 机器学习的简单示例线性回归 27
2.4 偏差-方差分解 31
2.5 机器学习算法的类型 34
2.6 评价指标 35
2.7 线性模型 37
2.7.1 线性判别函数和决策边界 38
2.7.2 Logistic 回归 41
2.7.3 Softmax 回归 43
2.7.4 感知器 45
第3章 前馈神经网络 51
3.1 神经元 51
3.1.1 Sigmoid 型函数 52
3.1.2 ReLU 函数 55
3.1.3 Swish 函数 57
3.1.4 GELU 函数 57
3.1.5 Maxout 单元 58
3.2 网络结构 58
3.2.1 前馈网络 58
3.2.2 记忆网络 58
3.2.3 图网络 59
3.3 前馈神经网络 59
3.3.1 通用近似定理 61
3.3.2 应用到机器学习 61
3.3.3 参数学习 62
3.4 反向传播算法 63
3.5 自动梯度计算 66
3.5.1 数值微分 66
3.5.2 符号微分 67
3.5.3 自动微分 67
3.6 优化问题 70
3.6.1 非凸优化问题 71
3.6.2 梯度消失问题 71
第4章 卷积神经网络 73
4.1 从全连接层到卷积 73
4.1.1 不变性 74
4.1.2 限制多层感知机 75
4.1.3 卷积 76
4.1.4 回顾沃尔多在哪里 76
4.2 图像卷积 77
4.2.1 互相关运算 77
4.2.2 卷积层 79
4.2.3 图像中目标的边缘检测 79
4.2.4 学习卷积核 81
4.2.5 互相关运算和卷积运算 82
4.2.6 特征映射和感受野 82
4.3 填充和步幅 82
4.3.1 填充 83
4.3.2 步幅 84
4.4 多输入多输出通道 85
4.4.1 多输入通道 86
4.4.2 多输出通道 87
4.4.3 11 卷积层 88
4.5 池化层 89
4.5.1 最大池化层和平均池化层 89
4.5.2 填充和步幅 91
4.5.3 多个通道 92
4.6 卷积神经网络 93
4.6.1 LeNet 93
4.6.2 训练 LeNet 95
第5章 现代卷积神经网络 98
5.1 深度卷积神经网络 98
5.1.1 学习表征 99
5.1.2 AlexNet 101
5.1.3 读取数据集 104
5.1.4 训练AlexNet 104
5.2 使用块的网络 105
5.2.1 VGG 块 105
5.2.2 VGG 网络 106
5.2.3 训练VGG 108
5.3 网络中的网络 108
5.3.1 NiN 块 109
5.3.2 NiN 模型 110
5.3.3 训练NiN 111
5.4 含并行连结的网络 111
5.4.1 Inception块 112
5.4.2 GoogLeNet 模型 113
5.4.3 训练GoogLeNet 116
5.5 归一化算法 116
5.5.1 训练深层网络 116
5.5.2 批量归一化层 118
5.5.3 从零实现批量归一化层 118
5.5.4 使用批量归一化层的 LeNet 120
5.5.5 简明实现 122
5.5.6 争议 123
5.6 残差网络 123
5.6.1 函数类 124
5.6.2 残差块 124
5.6.3 ResNet模型 127
5.6.4 训练 ResNet 129
5.7 稠密连接网络 130
5.7.1 从ResNet到DenseNet 130
5.7.2 稠密块体 131
5.7.3 过渡层 132
5.7.4 DenseNet模型 133
5.7.5 训练DenseNet 134
第6章 循环神经网络 135
6.1 序列模型 135
6.1.1 统计工具 136
6.1.2 序列模型的训练 138
6.1.3 序列模型的预测 140
6.2 文本预处理 143
6.2.1 读取数据集 143
6.2.2 标记化 144
6.2.3 词汇 145
6.2.4 把所有的东西放在一起 146
6.3 语言模型和数据集 147
6.3.1 学习语言模型 148
6.3.2 马尔可夫模型与 n 元语法 149
6.3.3 自然语言统计 149
6.3.4 读取长序列数据 152
6.4 循环神经网络 156
6.4.1 无隐藏状态的神经网络 156
6.4.2 具有隐藏状态的循环神经网络 157
6.4.3 基于循环神经网络的字符级语言模型 158
6.4.4 困惑度 159
6.5 循环神经网络的从零开始实现 160
6.5.1 独热编码 161
6.5.2 初始化模型参数 161
6.5.3 循环神经网络模型 162
6.5.4 循环神经网络模型的预测 163
6.5.5 梯度裁剪 164
6.5.6 循环神经网络模型的训练 165
6.6 循环神经网络的简洁实现 168
6.6.1 定义模型 168
6.6.2 训练与预测 169
6.7 通过时间反向传播 170
6.7.1 循环神经网络的梯度分析 171
6.7.2 通过时间反向传播细节 173
第7章 网络优化与正则化 176
7.1 网络优化 176
7.2 优化算法 178
7.2.1 小批量梯度下降 178
7.2.2 学习率衰减 179
7.2.3 梯度方向优化 181
7.2.4 优化算法小结 184
7.3 参数初始化 185
7.4 数据预处理 186
7.5 逐层归一化 188
7.5.1 批量归一化 189
7.5.2 层归一化 190
7.5.3 其他归一化方法 191
7.6 超参数优化 192
7.6.1 网格搜索 192
7.6.2 随机搜索 193
7.6.3 贝叶斯优化 193
7.6.4 动态资源分配 194
7.7 网络正则化 195
7.7.1 和 正则化 195
7.7.2 权重衰减 196
7.7.3 提前停止 197
7.7.4 丢弃法 197
7.7.5 数据增强 199
7.7.6 标签平滑 199
7.8 总结 200
第8章 实战演练 201
8.1 TensorFlow的MNIST手写数字分类的实现 201
8.1.1 数据预处理 201
8.1.2 构建及训练模型 202
8.1.3 评估准确率 207
8.1.4 模型的应用与可视化 208
8.2 车辆识别 209
8.2.1 要解决的问题 210
8.2.2 YOLO 210
8.2.3 测试已经训练好的YOLO模型 220
8.3 人脸识别 223
8.3.1 简单的人脸验证 225
8.3.2 将人脸图像编码为128位的向量 225
8.3.3 加载训练好的模型 229
8.3.4 模型的应用 230
??
??
??
第 1章 绪 论 1
1.1 深度学习简介 2
1.2 神经网络 3
1.2.1 人脑神经网络 3
1.2.2 人工神经网络 4
1.3 神经网络的发展历史 5
1.4 常用的深度学习框架 6
1.5 编程环境的安装 8
1.5.1 安装 Anaconda 8
1.5.2 安装CUDA 9
1.5.3 安装TensorFlow 14
1.5.4 安装常用编辑器 17
第2章 机器学习基础 18
2.1 基本概念 19
2.2 机器学习的三个基本要素 20
2.2.1 模型 20
2.2.2 学习准则 21
2.2.3 优化算法 24
2.3 机器学习的简单示例线性回归 27
2.4 偏差-方差分解 31
2.5 机器学习算法的类型 34
2.6 评价指标 35
2.7 线性模型 37
2.7.1 线性判别函数和决策边界 38
2.7.2 Logistic 回归 41
2.7.3 Softmax 回归 43
2.7.4 感知器 45
第3章 前馈神经网络 51
3.1 神经元 51
3.1.1 Sigmoid 型函数 52
3.1.2 ReLU 函数 55
3.1.3 Swish 函数 57
3.1.4 GELU 函数 57
3.1.5 Maxout 单元 58
3.2 网络结构 58
3.2.1 前馈网络 58
3.2.2 记忆网络 58
3.2.3 图网络 59
3.3 前馈神经网络 59
3.3.1 通用近似定理 61
3.3.2 应用到机器学习 61
3.3.3 参数学习 62
3.4 反向传播算法 63
3.5 自动梯度计算 66
3.5.1 数值微分 66
3.5.2 符号微分 67
3.5.3 自动微分 67
3.6 优化问题 70
3.6.1 非凸优化问题 71
3.6.2 梯度消失问题 71
第4章 卷积神经网络 73
4.1 从全连接层到卷积 73
4.1.1 不变性 74
4.1.2 限制多层感知机 75
4.1.3 卷积 76
4.1.4 回顾沃尔多在哪里 76
4.2 图像卷积 77
4.2.1 互相关运算 77
4.2.2 卷积层 79
4.2.3 图像中目标的边缘检测 79
4.2.4 学习卷积核 81
4.2.5 互相关运算和卷积运算 82
4.2.6 特征映射和感受野 82
4.3 填充和步幅 82
4.3.1 填充 83
4.3.2 步幅 84
4.4 多输入多输出通道 85
4.4.1 多输入通道 86
4.4.2 多输出通道 87
4.4.3 11 卷积层 88
4.5 池化层 89
4.5.1 最大池化层和平均池化层 89
4.5.2 填充和步幅 91
4.5.3 多个通道 92
4.6 卷积神经网络 93
4.6.1 LeNet 93
4.6.2 训练 LeNet 95
第5章 现代卷积神经网络 98
5.1 深度卷积神经网络 98
5.1.1 学习表征 99
5.1.2 AlexNet 101
5.1.3 读取数据集 104
5.1.4 训练AlexNet 104
5.2 使用块的网络 105
5.2.1 VGG 块 105
5.2.2 VGG 网络 106
5.2.3 训练VGG 108
5.3 网络中的网络 108
5.3.1 NiN 块 109
5.3.2 NiN 模型 110
5.3.3 训练NiN 111
5.4 含并行连结的网络 111
5.4.1 Inception块 112
5.4.2 GoogLeNet 模型 113
5.4.3 训练GoogLeNet 116
5.5 归一化算法 116
5.5.1 训练深层网络 116
5.5.2 批量归一化层 118
5.5.3 从零实现批量归一化层 118
5.5.4 使用批量归一化层的 LeNet 120
5.5.5 简明实现 122
5.5.6 争议 123
5.6 残差网络 123
5.6.1 函数类 124
5.6.2 残差块 124
5.6.3 ResNet模型 127
5.6.4 训练 ResNet 129
5.7 稠密连接网络 130
5.7.1 从ResNet到DenseNet 130
5.7.2 稠密块体 131
5.7.3 过渡层 132
5.7.4 DenseNet模型 133
5.7.5 训练DenseNet 134
第6章 循环神经网络 135
6.1 序列模型 135
6.1.1 统计工具 136
6.1.2 序列模型的训练 138
6.1.3 序列模型的预测 140
6.2 文本预处理 143
6.2.1 读取数据集 143
6.2.2 标记化 144
6.2.3 词汇 145
6.2.4 把所有的东西放在一起 146
6.3 语言模型和数据集 147
6.3.1 学习语言模型 148
6.3.2 马尔可夫模型与 n 元语法 149
6.3.3 自然语言统计 149
6.3.4 读取长序列数据 152
6.4 循环神经网络 156
6.4.1 无隐藏状态的神经网络 156
6.4.2 具有隐藏状态的循环神经网络 157
6.4.3 基于循环神经网络的字符级语言模型 158
6.4.4 困惑度 159
6.5 循环神经网络的从零开始实现 160
6.5.1 独热编码 161
6.5.2 初始化模型参数 161
6.5.3 循环神经网络模型 162
6.5.4 循环神经网络模型的预测 163
6.5.5 梯度裁剪 164
6.5.6 循环神经网络模型的训练 165
6.6 循环神经网络的简洁实现 168
6.6.1 定义模型 168
6.6.2 训练与预测 169
6.7 通过时间反向传播 170
6.7.1 循环神经网络的梯度分析 171
6.7.2 通过时间反向传播细节 173
第7章 网络优化与正则化 176
7.1 网络优化 176
7.2 优化算法 178
7.2.1 小批量梯度下降 178
7.2.2 学习率衰减 179
7.2.3 梯度方向优化 181
7.2.4 优化算法小结 184
7.3 参数初始化 185
7.4 数据预处理 186
7.5 逐层归一化 188
7.5.1 批量归一化 189
7.5.2 层归一化 190
7.5.3 其他归一化方法 191
7.6 超参数优化 192
7.6.1 网格搜索 192
7.6.2 随机搜索 193
7.6.3 贝叶斯优化 193
7.6.4 动态资源分配 194
7.7 网络正则化 195
7.7.1 和 正则化 195
7.7.2 权重衰减 196
7.7.3 提前停止 197
7.7.4 丢弃法 197
7.7.5 数据增强 199
7.7.6 标签平滑 199
7.8 总结 200
第8章 实战演练 201
8.1 TensorFlow的MNIST手写数字分类的实现 201
8.1.1 数据预处理 201
8.1.2 构建及训练模型 202
8.1.3 评估准确率 207
8.1.4 模型的应用与可视化 208
8.2 车辆识别 209
8.2.1 要解决的问题 210
8.2.2 YOLO 210
8.2.3 测试已经训练好的YOLO模型 220
8.3 人脸识别 223
8.3.1 简单的人脸验证 225
8.3.2 将人脸图像编码为128位的向量 225
8.3.3 加载训练好的模型 229
8.3.4 模型的应用 230
??
??
??