本书的特色:区别于传统基于python的人工智能深度学习书籍只讲程序、案例、应用,而没有系统性说明如何构建公认的、性能优良的数据集。本书从原理上讲解机器学习,神经网络的应用场景,而这一点,也恰恰为我们国内人工智能领域急需突破的“瓶颈”,对人工智能研发人员具有很强的启发意义。
本书的亮点为第四章、第五章和第十一章。第四、五章论述了深度学习模型训练所用到的数据集如何构造的问题,第十一章论述如何评价所获得的训练模型的性能的问题,都是其他书中较少提及的关键内容。
本书与机器学习和深度学习相关,向读者讲述了如何建立一个数据集,并展示了如何使用该数据集训练一个成功的深度学习模型。此后,本书探讨了经典的机器学习算法,为探讨深度学习方法理论奠定基础。本书最后4章探讨了卷积神经网络,从案例研究出发,讲解如何从数据集到评估预测模型的方法。这些章节中的实验使用的都是本领域研究人员熟悉的标准数据集。同时,本书介绍了如何通过当前实践的标准来调整和评估机器学习模型的性能。
本书不仅为读者提供扎实的概念基础,还为读者设计自己的项目和解决方案提供了实用的指导,适用于探索机器学习和深度学习领域的新手和业余爱好者。本书也可以帮助读者为探索更高级的方法和算法提供知识储备。
简要目录
第1章 开篇 001
第2章 使用Python 008
第3章 使用NumPy 021
第4章 使用数据工作 038
第5章 构建数据集 060
第6章 经典机器学习 077
第7章 经典模型实验 091
第8章 神经网络介绍 120
第9章 训练神经网络 132
第10章 神经网络实验 154
第11章 评价模型 174
第12章 卷积神经网络介绍 197
第13章 基于Keras和MNIST的实验 214
第14章 基于CIFAR-10的实验 235
第15章 实例研究:音频数据分类 258
第16章 走向未来 282
详细目录
第1章 开篇 001
1.1 操作环境 001
1.1.1 NumPy 001
1.1.2 scikit学习 001
1.1.3 基于TensorFlow的Keras 001
1.2 安装工具包 002
1.3 线性代数基础 003
1.3.1 向量 003
1.3.2 矩阵 003
1.3.3 向量和矩阵相乘 004
1.4 统计和概率 005
1.4.1 描述性统计 005
1.4.2 概率分布 005
1.4.3 统计检验 006
1.5 图形处理单元 006
第2章 使用Python 008
2.1 Python解释器 008
2.2 语句与空格 008
2.3 变量与基本数据结构 009
2.3.1 数字表示 009
2.3.2 变量 010
2.3.3 字符串 010
2.3.4 列表 011
2.3.5 字典 013
2.4 控制结构 014
2.4.1 if-elif-else 语句 014
2.4.2 for循环 014
2.4.3 while循环 016
2.4.4 break与continue语句 016
2.4.5 with语句 017
2.4.6 使用try-except块处理错误 017
2.5 函数 018
2.6 模块 019
第3章 使用NumPy 021
3.1 为什么是NumPy? 021
3.1.1 数组对列表 021
3.1.2 测试数组与列表的速度 022
3.2 基本数组 024
3.2.1 使用np.array定义数组 024
3.2.2 用0和1定义数组 026
3.3 访问数组中的元素 027
3.3.1 数组索引 027
3.3.2 数组切片 028
3.3.3 省略号 030
3.4 算子和广播 031
3.5 数组的输入与输出 033
3.6 随机数 035
3.7 NumPy和图像 036
第4章 使用数据工作 038
4.1 分类与标签 038
4.2 特征与特征向量 039
4.2.1 特征的类型 039
4.2.2 特征选择与维数灾难 040
4.3 优秀数据集的特征 042
4.3.1 插值与外推 042
4.3.2 父分布 043
4.3.3 先验类概率 044
4.3.4 混淆 044
4.3.5 数据集规模 045
4.4 数据准备 045
4.4.1 特征缩放 046
4.4.2 特征缺失 049
4.5 训练、验证和测试数据 050
4.5.1 三个子集 050
4.5.2 数据集划区 050
4.5.3 k折交叉验证 054
4.6 看看你的数据 055
4.6.1 从数据中寻找问题 056
4.6.2 警示案例 058
第5章 构建数据集 060
5.1 鸢尾花(irises)数据集 060
5.2 乳腺癌数据集 062
5.3 MNIST数据集 063
5.4 CIFAR-10数据集 065
5.5 数据增强 067
5.5.1 为什么要增强训练数据? 067
5.5.2 增强训练数据的方法 068
5.5.3 鸢尾花数据集的增强 069
5.5.4 CIFAR-10数据集的增强 073
第6章 经典机器学习 077
6.1 最近质心 077
6.2 k-最近邻 080
6.3 朴素贝叶斯 081
6.4 决策树与随机森林 084
6.4.1 递归初步 085
6.4.2 构建决策树 086
6.4.3 随机森林 087
6.5 支持向量机 088
6.5.1 边距 088
6.5.2 支持向量 089
6.5.3 优化 089
6.5.4 核 090
第7章 经典模型实验 091
7.1 鸢尾花数据集实验 091
7.1.1 测试经典模型 091
7.1.2 实现最近质心分类器 094
7.2 乳腺癌数据集实验 095
7.2.1 两次初始测试运行 096
7.2.2 随机拆分的影响 098
7.2.3 加入k折验证 099
7.2.4 搜索超参数 103
7.3 MNIST数据集实验 107
7.3.1 测试经典模型 107
7.3.2 分析运行时间 112
7.3.3 PCA主元的实验 113
7.3.4 扰动我们的数据集 115
7.4 经典模型小结 116
7.4.1 最近质心 116
7.4.2 k-最近邻(k-NN) 116
7.4.3 朴素贝叶斯 116
7.4.4 决策树 117
7.4.5 随机森林 117
7.4.6 支持向量机 117
7.5 使用经典模型的时机 118
7.5.1 处理小数据集 118
7.5.2 处理计算要求不高的任务 118
7.5.3 可解释的模型 118
7.5.4 以向量作为输入的任务 118
第8章 神经网络介绍 120
8.1 神经网络剖析 120
8.1.1 神经元 121
8.1.2 激活函数 122
8.1.3 网络结构 124
8.1.4 输出层 125
8.1.5 权重和偏置的表示 126
8.2 一个简单神经网络的实现 127
8.2.1 建立数据集 127
8.2.2 实现神经网络 128
8.2.3 训练和测试神经网络 130
第9章 训练神经网络 132
9.1 高层次的概述 132
9.2 梯度下降 133
9.2.1 找出最小值 134
9.2.2 更新权重 134
9.3 随机梯度下降法 135
9.3.1 批次和小批次 135
9.3.2 凸函数与非凸函数 137
9.3.3 终止训练 138
9.3.4 更新学习率 138
9.3.5 动量 139
9.4 反向传播 139
9.4.1 反推第一步 140
9.4.2 反推第二步 142
9.5 损失函数 144
9.5.1 绝对损失和均方误差损失 145
9.5.2 交叉熵损失 145
9.6 权重初始化 146
9.7 过拟合与正则化 147
9.7.1 理解过拟合 148
9.7.2 理解正则化 149
9.7.3 L2正则化 150
9.7.4 丢弃 151
第10章 神经网络实验 154
10.1 我们的数据集 154
10.2 多层感知机分类器 154
10.3 架构和激活函数 155
10.3.1 代码 155
10.3.2 结果 158
10.4 批次大小 161
10.5 基础学习率 164
10.6 训练集大小 165
10.7 L2正则化 166
10.8 动量 168
10.9 权重初始化 169
10.10 特征排序 172
第11章 评价模型 174
11.1 定义与假设 174
11.2 为什么仅有准确性是不够的 175
11.3 2×2混淆矩阵 176
11.4 从2×2混淆矩阵中导出度量指标 178
11.4.1 从2×2表中导出度量指标 178
11.4.2 使用我们的指标来解释模型 180
11.5 更多高级度量指标 181
11.5.1 知情度与标记度 182
11.5.2 F1得分 182
11.5.3 Cohen系数κ 182
11.5.4 马修斯相关系数 183
11.5.5 实现我们的指标 183
11.6 接收者操作特征曲线 184
11.6.1 集成我们的模型 184
11.6.2 绘制我们的指标 186
11.6.3 探索ROC曲线 187
11.6.4 采用ROC分析对比模型 188
11.6.5 生成一条ROC曲线 190
11.6.6 精确度-召回率曲线 191
11.7 处理多个类 191
11.7.1 扩展混淆矩阵 192
11.7.2 计算加权准确率 194
11.7.3 多类马修斯相关系数 195
第12章 卷积神经网络介绍 197
12.1 为什么是卷积神经网络? 197
12.2 卷积 198
12.2.1 用核进行扫描 198
12.2.2 图像处理中的卷积 200
12.3 卷积神经网络的剖析 200
12.3.1 不同类型的层 201
12.3.2 通过CNN传递数据 202
12.4 卷积层 203
12.4.1 卷积层如何工作 203
12.4.2 使用卷积层 205
12.4.3 多卷积层 207
12.4.4 初始化卷积层 207
12.5 池化层 208
12.6 全连接层 209
12.7 全卷积层 209
12.8 运行情况分析 211
第13章 基于Keras和MNIST的实验 214
13.1 在Keras中构建CNN 214
13.1.1 加载MNIST数据 214
13.1.2 建立我们的模型 216
13.1.3 训练和评价模型 217
13.1.4 绘制误差 219
13.2 基础实验 220
13.2.1 架构实验 221
13.2.2 训练集尺寸、小批次和历时 223
13.2.3 优化器 225
13.3 全卷积网络 226
13.3.1 构建和训练模型 226
13.3.2 制作测试图像 228
13.3.3 测试模型 229
13.4 加扰动的MNIST数字 233
第14章 基于CIFAR-10的实验 235
14.1 CIFAR-10的复习 235
14.2 使用全部CIFAR-10数据集 236
14.2.1 构建模型 236
14.2.2 分析模型 239
14.3 动物还是车辆? 240
14.4 二元还是多分类? 244
14.5 迁移学习 247
14.6 微调模型 251
14.6.1 建立数据集 252
14.6.2 微调以适应模型 254
14.6.3 测试我们的模型 256
第15章 实例研究:音频数据分类 258
15.1 建立数据集 258
15.1.1 增强数据集 259
15.1.2 数据预处理 262
15.2 音频特征分类 264
15.2.1 使用经典模型 264
15.2.2 使用传统神经网络 266
15.2.3 使用卷积神经网络 267
15.3 频谱图 271
15.4 频谱图分类 273
15.4.1 初始化、正则化、批次归一化 275
15.4.2 检查混淆矩阵 276
15.5 集成 277
第16章 走向未来 282
16.1 携手卷积神经网络走向未来 282
16.2 强化学习与无监督学习 283
16.3 生成对抗式网络 283
16.4 循环神经网络 284
16.5 在线资源 284
16.6 会议 284
16.7 推荐书籍 285
16.8 再会,谢谢 285