本书是“高级人工智能人才培养丛书”中的一本,首先介绍了机器学习的相关概念和发展历史,并在此基础上提出了深度学习——它本质上是近几年来大数据技术催生的产物。本书共12章,其中,第1~7章为机器学习的内容,分别介绍了机器学习的简单模型、贝叶斯学习、决策树、支持向量机、集成学习和聚类;第8~12章为深度学习的内容,由感知机与神经网络开始,之后分别介绍了卷积神经网络、循环神经网络、生成对抗网络及强化学习。第2~12章均提供了相应的实验案例,不仅配有完整翔实的Python语言代码及相关注释,也给出了实验结果和实验分析,便于初学者上机操作并加强理解。本书注重易学性、系统性和实战性。
陶玉婷,2013年毕业于南京理工大学,获模式识别与智能系统专业的工学博士学位。曾于2010—2011年赴美国亚利桑那州立大学访学半年。现为金陵科技学院智能科学与技术专业骨干教师、CCF会员和JSAI会员。讲授人工智能数学基础、机器视觉与边缘计算应用等课程,发表教改论文2篇,主持人工智能课程教学试点项目1项。研究方向为图像处理、机器学习、数值计算,发表SCI论文6篇、EI论文4篇,申请软件著作权3项,并主持和参与校科研孵化基金项目、江苏省国际科技合作项目、江苏省自然科学重大项目、国家自然科学基金面上项目等多个科研项目。
第1章 引言 1
1.1 人工智能概述 1
1.1.1 人工智能产生的基础条件 1
1.1.2 人工智能的发展史 2
1.1.3 人工智能的几个重要分支 3
1.1.4 人工智能与机器学习和深度学习的关系 4
1.2 机器学习概述 5
1.2.1 机器学习的定义 5
1.2.2 机器学习的主要方法 5
1.2.3 机器学习的应用及其相关课程介绍 11
1.3 深度学习概述 12
1.3.1 深度学习产生的背景 12
1.3.2 深度学习的几种常用模型 13
1.3.3 深度学习的应用场合 16
1.3.4 深度学习开源工具 18
习题 19
参考文献 19
第2章 简单模型 21
2.1 KNN算法 21
2.1.1 算法原理 21
2.1.2 算法步骤 22
2.1.3 算法描述 22
2.1.4 算法评价 23
2.1.5 算法实例 23
2.2 线性回归 24
2.2.1 算法原理 25
2.2.2 模型求解 26
2.2.3 算法步骤 29
2.2.4 算法描述 29
2.2.5 算法评价 30
2.2.6 算法实例 30
2.3 逻辑回归 32
2.3.1 算法原理 32
2.3.2 模型求解 33
2.3.3 算法步骤 34
2.3.4 算法描述 34
2.3.5 算法评价 35
2.4 实验:逻辑回归算法 35
2.4.1 实验目的 35
2.4.2 实验要求 35
2.4.3 实验原理 35
2.4.4 实验步骤 36
2.4.5 实验结果 38
2.4.6 结果分析 39
习题 39
参考文献 40
第3章 贝叶斯学习 42
3.1 贝叶斯方法简述 42
3.2 贝叶斯基础理论 43
3.2.1 概率基础 43
3.2.2 贝叶斯方法 44
3.3 朴素贝叶斯 46
3.3.1 朴素贝叶斯法介绍 46
3.3.2 朴素贝叶斯法实例 47
3.3.3 朴素贝叶斯法优缺点 51
3.4 贝叶斯网络 51
3.4.1 贝叶斯网络介绍 51
3.4.2 贝叶斯网络实现 52
3.4.3 贝叶斯网络特性及应用 54
3.5 实验 54
3.5.1 实验目的 55
3.5.2 实验要求 55
3.5.3 实验原理 55
3.5.4 实验步骤 56
3.5.5 实验结果 57
习题 59
参考文献 60
第4章 决策树 62
4.1 决策树简述 62
4.1.1 树形结构 63
4.1.2 树的构建 63
4.2 划分属性选择 64
4.2.1 信息增益 64
4.2.2 增益率 66
4.2.3 基尼指数 67
4.3 剪枝处理 68
4.3.1 损失函数 69
4.3.2 先剪枝 70
4.3.3 后剪枝 70
4.4 决策树算法 72
4.4.1 ID3算法 73
4.4.2 C4.5算法 75
4.4.3 CART算法 77
4.5 实验:基于CART算法的鸢尾花决策树构建 78
4.5.1 实验目的 78
4.5.2 实验要求 78
4.5.3 实验原理 79
4.5.4 实验步骤 81
4.5.5 实验结果 82
习题 83
参考文献 83
第5章 支持向量机 84
5.1 最大间隔理论简介 84
5.2 两类问题的线性分类 85
5.2.1 线性可分的情况 85
5.2.2 最大间隔与支持向量 86
5.2.3 最大间隔的相关理论 87
5.2.4 线性不可分的情况 89
5.2.5 小结 91
5.3 非线性空间映射与核函数 91
5.3.1 非线性空间映射的概念和原理 91
5.3.2 核函数的选择与分析 92
5.3.3 核函数的选择依据 95
5.3.4 小结 95
5.4 多类问题的分类 95
5.4.1 一对一法 96
5.4.2 一对多法 96
5.4.3 其他方法 97
5.4.4 小结 98
5.5 实验 98
5.5.1 实验1:两类问题的线性可分问题 98
5.5.2 实验2:两类问题的非线性分类问题 100
5.5.3 实验3:UCI数据集中wine.data的多类分类问题 103
5.5.4 实验4:USPS手写阿拉伯数据库的识别 106
习题 108
参考文献 109
第6章 集成学习 111
6.1 集成学习简述 111
6.2 个体学习器与集成学习算法 112
6.2.1 个体学习器 113
6.2.2 集成学习算法 113
6.3 Bagging算法和随机森林算法 113
6.3.1 Bagging算法 113
6.3.2 随机森林 114
6.4 Boosting算法和AdaBoost算法 115
6.4.1 Boosting算法 115
6.4.2 AdaBoost算法 116
6.5 结合策略 123
6.5.1 平均法 123
6.5.2 投票法 123
6.5.3 学习法 124
6.6 实验:集成学习实例 126
6.6.1 一个简单的基于AdaBoost算法的二分类实现 126
6.6.2 基于决策树、Bagging和AdaBoost模型的糖尿病预测实验 129
习题 133
参考文献 133
第7章 聚类 136
7.1 聚类简述 136
7.1.1 基本概念 136
7.1.2 聚类类型 137
7.1.3 算法挑战 138
7.2 原型聚类 139
7.2.1 k均值聚类 139
7.2.2 k中心点聚类 141
7.3 密度聚类 144
7.3.1 基本术语 144
7.3.2 算法描述 146
7.4 层次聚类 147
7.4.1 层次聚类概述 149
7.4.2 BIRCH算法 151
7.4.3 CURE算法 155
7.5 实验:用k均值聚类实现篮球运动员聚类 158
7.5.1 实验目的 158
7.5.2 实验原理 158
7.5.3 实验步骤 159
7.5.4 实验结果及分析 160
习题 161
参考文献 161
第8章 感知机与神经网络 162
8.1 感知机 162
8.1.1 神经元模型 162
8.1.2 激活函数 163
8.1.3 感知机算法 165
8.2 神经网络原理 167
8.2.1 基本特征 167
8.2.2 前馈神经网络 168
8.3 反向传播神经网络 169
8.4 Hopfield神经网络 171
8.4.1 Hopfield神经网络简介 171
8.4.2 离散Hopfield神经网络 172
8.4.3 能量函数 173
8.5 实验:基于Python的感知机实验 173
8.5.1 实验目的 173
8.5.2 实验要求 174
8.5.3 实验原理 174
8.5.4 实验步骤 174
8.5.5 实验结果 175
习题 175
参考文献 175
第9章 卷积神经网络 177
9.1 卷积神经网络简述 177
9.1.1 发展历程 177
9.1.2 端到端的学习 178
9.2 网络部件 179
9.2.1 符号定义 179
9.2.2 卷积层 179
9.2.3 池化层 182
9.2.4 激活函数层 183
9.2.5 全连接层 184
9.2.6 目标函数 184
9.3 核心算法 186
9.3.1 随机梯度下降法 186
9.3.2 反向传播算法 190
9.4 激活函数和损失函数 195
9.4.1 激活函数 195
9.4.2 损失函数 196
9.5 经典CNN模型 198
9.5.1 LeNet 198
9.5.2 AlexNet 199
9.5.3 VGGNet 201
9.6 实验:应用CNN模型进行手写数字辨识 202
9.6.1 实验目的 202
9.6.2 实验要求 203
9.6.3 实验原理 203
9.6.4 实验步骤 205
9.6.5 实验结果 206
习题 206
参考文献 208
第10章 循环神经网络 209
10.1 RNN简介 209
10.1.1 RNN概述 209
10.1.2 RNN的工作原理 209
10.2 双向RNN 210
10.3 LSTM 211
10.3.1 LSTM遗忘门 212
10.3.2 LSTM输入门 213
10.3.3 LSTM输出门 214
10.3.4 前向传播的代码实现 214
10.3.5 反向传播的代码实现 215
10.4 GRU 216
10.5 RNN的实现 217
10.5.1 定义初始化类和初始化函数 217
10.5.2 定义激活函数 217
10.5.3 定义前向传播和反向传播 217
10.5.4 计算delta值和总的delat值 218
10.5.5 计算各个梯度的值和总梯度 218
10.5.6 定义梯度检查函数 219
10.5.7 构建测试函数并运行 219
10.6 实验:应用LSTM模型进行手写数字辨识 220
10.6.1 实验目的 220
10.6.2 实验要求 220
10.6.3 实验原理 220
10.6.4 实验步骤 220
10.6.5 实验结果 222
习题 223
参考文献 223
第11章 生成对抗网络 225
11.1 生成对抗网络简述 225
11.1.1 博弈 225
11.1.2 对抗 226
11.1.3 分类问题 226
11.2 生成对抗网络的基本原理、学习机制、应用、特点 227
11.2.1 生成对抗网络的基本原理 227
11.2.2 生成对抗网络的学习机制 227
11.2.3 生成对抗网络的应用 228
11.2.4 生成对抗网络的特点 229
11.3 生成对抗网络的变种网络 230
11.3.1 JointGAN 230
11.3.2 MD-GAN 230
11.3.3 MsCGAN 230
11.3.4 TGAN 231
11.3.5 HexaGAN 231
11.4 实验 231
11.4.1 基于SRGAN模型的人脸超分辨率实验 231
11.4.2 基于SRGAN的图像转换实验 237
习题 246
参考文献 246
第12章 强化学习 250
12.1 强化学习的引入 250
12.1.1 强化学习的概念 250
12.1.2 强化学习的特点 251
12.1.3 强化学习与监督学习 252
12.2 马尔可夫决策过程 253
12.2.1 策略与环境模型 253
12.2.2 值函数与Bellman公式 253
12.3 有模型学习——动态规划 255
12.3.1 策略迭代 256
12.3.2 值迭代 258
12.3.3 广义策略迭代 260
12.4 免模型学习——蒙特卡罗方法 260
12.4.1 蒙特卡罗方法 260
12.4.2 时序差分方法与SARSA算法 261
12.4.3 Q-Learning算法 263
12.4.4 DQN 264
12.5 实验 266
12.5.1 实验一:方块走迷宫 266
12.5.2 实验二:利用DQN实现“打砖块”游戏 271
习题 277
参考文献 278