编辑推荐:
第1章 绪论 1
1.1 机器学习的发展历程 2
1.2 机器学习的基本术语 2
1.2.1 特征 3
1.2.2 样本 3
1.2.3 模型 3
1.2.4 回归、分类与聚类 4
1.2.5 泛化与过拟合 4
1.3 机器学习的基本分类 5
1.3.1 监督学习 5
1.3.2 无监督学习 5
1.3.3 半监督学习 5
1.3.4 深度学习 6
1.3.5 强化学习 8
1.3.6 机器学习与人工智能 8
1.4 机器学习的应用 9
1.4.1 图像识别与处理 9
1.4.2 语音识别与自然语言处理 10
1.4.3 环境感知与智能决策 11
1.4.4 融合物理信息的工程设计 12
1.5 机器学习应用的步骤 13
1.5.1 应用场景分析 14
1.5.2 数据处理 14
1.5.3 特征工程 14
1.5.4 算法模型训练与评估 15
1.5.5 应用服务 15
1.6 机器学习的评估方法 15
1.6.1 数据集划分方法 15
1.6.2 性能度量 16
1.7 如何学习机器学习 17
1.7.1 由浅入深 17
1.7.2 行成于思 17
第2章 Python语言 18
2.1 为什么选择Python 18
2.2 安装Python的环境 19
2.2.1 Windows下的安装 19
2.2.2 Linux下的安装 19
2.2.3 设置软件源 20
2.2.4 安装常用Python库 20
2.2.5 安装PyTorch 20
2.2.6 Conda使用技巧 21
2.3 Jupyter Notebook 21
2.3.1 Jupyter Notebook的主页面 22
2.3.2 Jupyter Notebook的快捷键 24
2.3.3 Magic关键字 25
2.4 Python基础 25
2.4.1 变量 26
2.4.2 运算符 27
2.4.3 内置函数 28
2.5 print()函数 29
2.6 数据结构 30
2.6.1 列表 31
2.6.2 元组 38
2.6.3 集合 40
2.6.4 字符串 42
2.6.5 字典 46
2.7 控制流语句 48
2.7.1 判断语句 48
2.7.2 循环语句 50
2.8 函数 55
2.8.1 函数的参数 55
2.8.2 返回语句 56
2.8.3 默认参数 58
2.8.4 任意数量的参数 58
2.8.5 全局变量和局部变量 59
2.8.6 lambda函数 60
2.9 类和对象 60
2.9.1 成员函数与变量 61
2.9.2 继承 64
2.10 小结 66
2.11 练习题 66
2.12 在线练习题 67
第3章 Python常用库 68
3.1 NumPy数值计算库 68
3.1.1 创建NumPy数组 69
3.1.2 访问数组元素 73
3.1.3 文件读写 77
3.1.4 线性代数函数 79
3.1.5 数据统计 80
3.1.6 数组的操作 83
3.2 Matplotlib绘图库 87
3.2.1 多子图绘制 88
3.2.2 图像处理 89
3.3 小结 89
3.4 练习题 89
3.5 在线练习题 90
第4章 k最近邻算法 91
4.1 k最近邻原理 91
4.1.1 特征距离计算 92
4.1.2 算法步骤 92
4.2 机器学习的思维模型 93
4.3 数据生成 93
4.4 程序实现 95
4.5 将kNN算法封装为类 97
4.6 基于sklearn的分类实现 98
4.7 小结 100
4.8 练习题 100
4.9 在线练习题 100
第5章 k均值聚类算法 101
5.1 无监督学习思想 101
5.2 k均值聚类原理 102
5.3 k均值聚类算法 103
5.4 算法操作过程演示 103
5.5 k均值聚类算法编程实现 105
5.6 使用sklearn进行聚类 109
5.7 评估聚类性能 110
5.7.1 调整兰德指数 110
5.7.2 轮廓系数 111
5.8 k均值图像压缩 112
5.9 小结 114
5.10 练习题 115
5.11 在线练习题 115
第6章 逻辑斯蒂回归 116
6.1 最小二乘法 116
6.1.1 数据生成 116
6.1.2 最小二乘法的数学原理 117
6.1.3 最小二乘法的程序实现 118
6.2 梯度下降法 119
6.2.1 梯度下降法的原理 119
6.2.2 梯度下降法的实现 121
6.2.3 迭代可视化 123
6.2.4 梯度下降法的优化 124
6.3 多元线性回归 125
6.3.1 导弹弹道预测算法 125
6.3.2 建模与编程求解 126
6.4 使用sklearn库进行拟合 127
6.5 逻辑斯蒂回归的原理 128
6.5.1 数学模型 129
6.5.2 算法流程 131
6.6 逻辑斯蒂回归的实现 131
6.6.1 逻辑斯蒂回归示例程序 132
6.6.2 使用sklearn解决逻辑斯蒂
回归问题 134
6.6.3 多类识别问题 136
6.7 小结 140
6.8 练习题 140
6.9 在线练习题 140
第7章 神经网络 141
7.1 感知机 141
7.1.1 感知机模型 142
7.1.2 感知机学习策略 143
7.1.3 感知机学习算法 143
7.1.4 示例程序 144
7.2 多层神经网络 147
7.2.1 神经元 147
7.2.2 神经网络架构 148
7.2.3 神经网络正向计算 148
7.2.4 神经网络矩阵表示 149
7.2.5 神经网络训练 151
7.2.6 激活函数 155
7.2.7 神经网络训练算法设计 157
7.2.8 示例程序 158
7.2.9 使用类的方法封装多层神经网络 161
7.3 softmax函数与交叉熵代价函数 165
7.3.1 softmax函数 165
7.3.2 交叉熵代价函数 167
7.4 小结 169
7.5 练习题 169
7.6 在线练习题 170
第8章 PyTorch 171
8.1 张量 171
8.1.1 Tensor的生成 171
8.1.2 Tensor的操作 173
8.1.3 Tensor的维度操作 173
8.1.4 Tensor的变形 175
8.1.5 inplace操作 175
8.2 自动求导 176
8.2.1 简单情况下的自动求导 177
8.2.2 复杂情况下的自动求导 178
8.2.3 多次自动求导 180
8.3 神经网络模型 180
8.3.1 逻辑斯蒂回归与神经网络 180
8.3.2 序列化模型 185
8.3.3 模块化网络定义 187
8.3.4 模型参数保存 189
8.4 神经网络的定义与训练 191
8.4.1 MNIST数据集 191
8.4.2 CIFAR-10数据集 192
8.4.3 多分类神经网络 192
8.4.4 参数初始化 198
8.4.5 模型优化求解 202
8.5 综合示例代码 212
8.6 小结 214
8.7 练习题 215
8.8 在线练习题 215
第9章 深度学习 216
9.1 卷积神经网络 216
9.1.1 卷积网络的基础 217
9.1.2 卷积计算与模块 220
9.1.3 数据预处理与批量归一化 223
9.1.4 网络正则化 229
9.1.5 学习率衰减 231
9.2 典型的深度神经网络 235
9.2.1 LeNet5 235
9.2.2 AlexNet 240
9.2.3 VGG 245
9.2.4 GoogLeNet 250
9.2.5 ResNet 254
9.2.6 DenseNet 260
9.3 小结 265
9.4 练习题 265
9.5 在线练习题 265
第10章 目标检测 266
10.1 目标检测的任务 266
10.2 目标检测的发展历程 267
10.3 目标检测评估方法 269
10.3.1 交并比 269
10.3.2 精度 270
10.3.3 平均精度 271
10.3.4 平均精度均值 271
10.4 目标检测的原理 271
10.4.1 YOLO-v1 271
10.4.2 YOLO-v2 280
10.4.3 YOLO-v3 280
10.4.4 YOLO-v4 281
10.4.5 YOLO-v5 281
10.5 YOLO-v4原理与实现 283
10.5.1 主干特征提取网络 283
10.5.2 特征金字塔 287
10.5.3 利用特征进行预测 289
10.5.4 预测结果的解码 290
10.5.5 在原始图像上进行绘制 295
10.6 YOLO-v4的技巧及损失函数分析 295
10.6.1 Mosaic数据增强 295
10.6.2 CIoU 299
10.6.3 损失函数 300
10.7 训练自己的YOLO-v4模型 307
10.7.1 数据集的准备 307
10.7.2 数据集处理 307
10.7.3 网络训练 308
10.7.4 训练结果预测 310
10.8 小结 310
10.9 练习题 310
10.10 在线练习题 310
第11章 深度强化学习 311
11.1 强化学习 311
11.1.1 强化学习的基本概念 312
11.1.2 马尔可夫决策过程 313
11.1.3 Q学习算法 315
11.1.4 示例程序 317
11.2 深度强化学习 320
11.3 倒立摆的控制示例 321
11.3.1 仿真环境 322
11.3.2 第三方库 322
11.3.3 经验回放内存 323
11.3.4 Q网络 324
11.3.5 输入数据截取 324
11.3.6 超参数和工具函数 325
11.3.7 网络训练 327
11.4 小结 329
11.5 练习题 330
11.6 在线练习题 330
参考文献 331
术语表 333
展开
序 言
深度学习作为当下人工智能方向的热点技术之一,推动了人工智能对产业应用的赋能。伴随着大数据、深度学习、智能芯片等技术的成熟,人工智能不仅在传统的图像、语音、自然语言领域得到了广泛而深入的应用,在物理、生物、化学等传统学科领域也深刻地改变着既有的技术模式。放眼世界,人工智能正成为国际竞争的新焦点。目前,人工智能相关领域的专业人员短缺,培养具备专业人工智能技能的人才是教育界面临的巨大挑战。
深度学习等机器学习方法有着较高的学习门槛,目前适合各学科的教材相对匮乏。国外此前出版的一些经典教材正面临着内容老化的问题,国内现有的大部分教材则侧重于介绍机器学习的理论,对读者在概率论、线性代数、计算机科学等方面的要求较高,读者学完相应的内容后依旧难以应用机器学习方法解决相关的难题。
本书最大的特点是,层层深入地通过实例来讲解机器学习的理论与算法,即以算法、代码、 应用为主进行讲解,同时辅以详尽的算法解释、图解及代码运行结果,力求让读者在看懂代码的基础上深入理解算法,进而熟练使用算法;既可让读者高效、全面地掌握机器学习的主流知识点和整体脉络,又可让读者在遇到具体问题时方便查阅相关内容。
另一个特点是,在语言精确性和条理性、理论全面性和实践指导方面,集专业性与通俗性为一体。全书内容丰富,不仅包含Python语言、Python第三方库、监督学习、无监督学习等机器学习内容,而且包含sklearn、PyTorch、深度学习、目标检测、深度强化学习等前沿机器学习技术,既可作为高年级本科生和硕士研究生的教材,又可作为相关领域科研和工程人员的工具书。
人工智能赋能多个行业,大部分行业需要了解并掌握机器学习技术。开卷有益,希望本书能够辅助读者更好地掌握机器学习的理论、方法和应用。相信阅读此书所获得的充实感会给读者留下美好的回忆。
丁贵广
清华大学软件学院
前 言
机器学习是人工智能领域的一个基础且重要的方向,它突破了传统手动设计处理算法所面临的通用性低、无学习能力等问题,通过设计学习模型让机器在大量数据中自动地挖掘出数据内在的规律,并对新数据进行预测或分类。最近十多年来,机器学习飞速发展,不仅在图像、视频、语音、自然语言等传统机器学习应用领域取得了进步,而且逐渐应用于航空航天、材料、化学、生物等诸多领域,为各学科开辟了新的数据处理与技术途径,并且产生了巨大的经济和社会效益。
全书共11章,综合介绍了Python编程、库函数等机器学习常用工具,由浅入深讲解了机器学习的核心思想与方法,给出了机器学习与航空航天等专业相结合的应用实例。为了让读者更好地掌握机器学习的相关知识,从Python编程、Python常用库开始介绍;理论部分的讲解从基本的最小二乘法开始,逐步深入介绍如何使用迭代求解法实现逻辑斯蒂回归、感知机、神经网络、深度神经网络;每个理论知识点之后给出算法和编程实现,目的是帮助读者加深对理论的理解。本书配套有完整的在线讲义、在线视频、作业和练习项目、MOOC等,并且每章都提供习题或练习等。对应的二维码如图0.1所示,读者可以直接访问在线教程,选择适合自己的资料。
(a)课程的配套视频 (b)课程的在线讲义 (c)作业和练习项目
图0.1 配套资源的二维码
本书面向没有深厚计算机、编程基础的学生,考虑到不少读者并不具备深厚的编程和算法基础,在讲解过程中,更注重算法、数据结构、面向对象思想的引入,以引导读者通过“迁移学习”,将基础知识、专业理论、领域问题等快速迁移到机器学习领域,进而快速掌握机器学习的核心思想、方法和工具等,并为将机器学习技术应用到各自的专业领域以解决实际应用问题打下坚实的理论、编程和实践基础。
本书的第1章由布树辉和李霓编写,第2、4章由李霓编写,第3章由马文科编写,第5章由李永波编写,第6章由唐小军和张伟伟编写,第7~11章由布树辉编写。全书由布树辉统稿。
感谢为本书出版做出贡献的所有人员。
感谢多年来选择修习编著者团队的“智能图像处理”“机器学习”“机器学习与人工智能”课程的学生,是你们的积极、热情和反馈激励了编著者不断地改进讲义。
感谢西北工业大学飞行器智能认知与控制实验室的胡劲松、韩鹏程、李随城、胡博妮、陈霖、何学敏、李坤、邹万勇、左奎军、赵勇、薛少诚、夏震宇、董逸飞、王禹、翁乐安、张玉、乔岳、程佳铭、朱永宁、李俊峰、彭雨菲、王煜熙、倪海鸿、张敏、李浩玮、张一竹、贾旋等同学不辞辛苦地补充和改进讲义与书稿。
感谢深圳朝闻道机器人的张宏磊、陈豪杰、安玉玺等补充和协助。
感谢支持和帮助编著者的同事、朋友、亲人,有了你们的支持,本书才得以完成。
机器学习是一门范围极广、内容庞杂的学科,由于技术发展日新月异,编著者水平与经验有限,书中难免有错误与理解不到位的地方,敬请读者批评指正!
展开