
本书将人工智能的基础知识进行了系统化的介绍,从传统的机器学习的基础知识、经典算法到深度学习的网络模型、应用领域都进行了相应的介绍。 本书共分10个项目。项目1~项目7主要内容有认识人工智能、Python基础、机器学习基础、特征工程及应用、经典算法的实现、神经网络的构建和训练、手写数字识别;项目8~项目10主要内容是综合案例的实施,包括人脸识别、商品情感分析、车牌识别。本书将知识点进行拆解细化,用可视化的形式帮助读者理解抽象的知识点,并配有丰富的代码,在反复实践中理解、升华,理论与实践相结合,助力读者锻炼编程思维和提升编程能力。
Python是一门计算机程序语言,因具有简单易学、简洁清晰的特点,迅速成为受大量用户欢迎的、用途广泛的程序设计语言之一。Python有大量的工具库,现在主流的深度学习框架都支持Python。目前,在人工智能科学领域应用中,各种库、各种相关联的框架都是以Python为主要语言开发出来的。 本书的基本定位是,将Python作为人工智能技术应用的程序设计语言,介绍Python语言程序设计的基础知识及其在人工智能领域的应用。全书以Python为实现工具,介绍程序设计的基本思想方法和人工智能技术的相关基础及应用,培养读者利用Python语言解决人工智能技术中实际问题的开发能力。 本书采用项目案例的方式,介绍Python语言基础与人工智能技术基础应用,配以丰富的编程实例,将各项目知识点有机地融合贯穿,增强了可操作性和可读性。编程内容既包含与Python语法规则相关的内容,又包含许多人工智能应用实际问题的程序设计,从而增强读者的学习兴趣,提高读者分析问题和解决问题的能力。 本书的内容与学时安排如下。 本书的内容与学时安排 序 号 内 容 建议学时 1 项目1 认识人工智能 2 2 项目2 Python基础 8 3 项目3 机器学习基础 6 4 项目4 特征工程及应用 4 5 项目5 经典算法的实现 8 6 项目6 神经网络的构建和训练 6 7 项目7 手写数字识别 6 8 项目8 人脸识别 6 9 项目9 商品情感分析 4 10 项目10 车牌识别 6 总计 56 本书所有代码均在Python 3中测试通过,书中代码运行的框架为Pytorch,集成开发环境为Pycharm。本书有如下特点:特别注重完善内容的体系结构,以Python语言为工具,以人工智能技术为着力点,充分考虑应用型本科、高职、高专学生的特点,在理论体系完整的情况下,力求深入浅出、层层推进,淡化烦琐的理论推导,注重编程设计与实现,提升读者的获得感和成就感,培养读者的工程实践能力。 本书由郭新、任红卫担任主编,由黄健安、许健才担任副主编。其中,项目1由许健才编写,项目2、项目3、项目6、项目7、项目9、项目10由郭新编写,项目4、项目5由任红卫编写,项目8由黄健安编写,全书由郭新统稿。此外,参与编写工作的还有罗程方、徐伟、邓爱文、陈伟欣等。 为了方便教师教学,本书配有电子教学课件及相关资源,请有此需要的教师登录华信教育资源网(www.hxedu.com.cn)免费注册后进行下载,如有问题可在网站留言板留言或与电子工业出版社联系(E-mail:hxedu@phei.com.cn)。 教材建设是一项系统工程,需要在实践中不断加以完善及改进,同时由于时间仓促、编者水平有限,书中难免存在疏漏和不足之处,敬请同行专家和广大读者给予批评和指正。 编 者
项目1 认识人工智能 1 1.1 人工智能简介 2 1.1.1 为什么要学人工智能 2 1.1.2 人工智能的定义 2 1.1.3 人工智能的技术目标 3 1.1.4 人工智能的三次浪潮 3 1.1.5 人工智能的不完美性 5 1.2 人工智能、机器学习和深度学习 5 1.3 人工智能的技术架构 6 1.4 人工智能的应用场景 6 1.5 人工智能的主要方向 8 1.6 人工智能的主要算法 8 1.6.1 机器学习 8 1.6.2 深度学习 9 1.7 人工智能相关的基础学习库与工具 10 1.8 深度学习框架与平台 11 1.9 人工智能简单要素 12 1.9.1 训练和测试 12 1.9.2 基于人工智能的编程和基于规则的编程 12 课后习题 14 项目2 Python基础 17 2.1 Python安装 18 2.2 Python基本知识 21 2.2.1 基本运算 21 2.2.2 变量 22 2.2.3 表达式和语句 22 2.2.4 类型 23 2.2.5 数字类型 23 2.2.6 字符串 23 2.2.7 注释 25 2.3 模块 25 2.4 数据结构 25 2.4.1 列表 26 2.4.2 元组 27 2.5 字典 27 2.5.1 创建字典 28 2.5.2 常见操作 28 2.6 集合 28 2.6.1 基本操作 28 2.6.2 其他操作 29 2.7 条件语句和循环语句 30 2.7.1 条件语句 30 2.7.2 循环语句 30 2.8 函数 31 2.8.1 规则 31 2.8.2 语法 31 2.8.3 Lambda函数 32 2.9 Python面向对象的编程 32 2.9.1 对象 32 2.9.2 继承 34 2.9.3 组合 34 2.10 可视化 35 2.10.1 绘制图形 35 2.10.2 显示图像 36 2.11 Python案例 37 课后习题 39 项目3 机器学习基础 41 3.1 最小二乘法 42 3.2 激活函数 44 3.2.1 Sign函数 45 3.2.2 Sigmoid函数 45 3.2.3 Tanh函数 46 3.2.4 ReLU函数 47 3.3 损失函数 48 3.3.1 0-1损失函数 48 3.3.2 平方损失函数 48 3.3.3 对数损失函数 48 3.3.4 交叉熵损失函数 49 3.3.5 对比损失函数 49 3.4 梯度下降算法 49 3.5 前向传播算法和反向传播算法 50 3.5.1 前向传播算法 50 3.5.2 反向传播算法 51 3.6 学习率 52 3.7 正则化 53 3.7.1 正则化 53 3.7.2 正则化 53 3.8 欧氏距离和余弦相似度 54 3.8.1 欧氏距离 54 3.8.2 余弦相似度 54 3.8.3 基于角度间隔的方法 55 课后习题 55 项目4 特征工程及应用 57 4.1 特征工程的含义 58 4.1.1 数据和数据处理 58 4.1.2 特征工程 58 4.1.3 特征工程的重要性 59 4.1.4 特征的种类 60 4.2 归一化和标准化 60 4.2.1 归一化 61 4.2.2 标准化 62 4.3 模型存储和模型加载 63 4.3.1 模型存储 63 4.3.2 模型加载 63 4.4 特征选择和降维 63 4.4.1 特征值和特征向量 63 4.4.2 奇异值和奇异值分解 64 4.5 特征选择和特征转换 65 4.5.1 PCA的含义 65 4.5.2 PCA降维过程的代码实现方法 68 4.5.3 LDA的含义 72 4.5.4 LDA降维过程的代码实现方法 72 4.6 Python参数搜索 76 课后习题 77 项目5 经典算法的实现 78 5.1 KNN算法 80 5.1.1 分类任务 80 5.1.2 回归任务 81 5.2 支持向量机 82 5.2.1 支持向量机的基本原理 83 5.2.2 参数优化 84 5.2.3 核函数 84 5.2.4 使用Scikit-Learn构建支持向量机 85 5.3 逻辑回归 85 5.3.1 确定假设函数 85 5.3.2 构造损失函数 86 5.3.3 最小化损失函数 86 5.3.4 正则化 86 5.3.5 代码实现 87 5.4 线性回归 87 5.4.1 一元线性回归 87 5.4.2 损失函数 88 5.4.3 优化方法 88 5.5 朴素贝叶斯 88 5.5.1 朴素贝叶斯算法的流程 89 5.5.2 代码实现 89 5.6 决策树 90 5.6.1 ID3-最大信息增益 91 5.6.2 C4.5-最大信息增益比 91 5.6.3 CART-最大基尼系数 92 5.6.4 代码实现 92 5.7 随机森林 93 5.7.1 随机森林算法的一般流程 94 5.7.2 代码实现 94 5.8 梯度提升决策树 95 5.8.1 梯度提升决策树算法的一般流程 95 5.8.2 梯度提升和梯度下降的区别 95 5.8.3 梯度提升决策树算法的实现 96 5.8.4 代码实现 96 5.9 分类算法的评价指标 97 5.9.1 混淆矩阵 97 5.9.2 精确率 98 5.9.3 召回率 98 5.9.4 ROC 98 5.10 回归算法的评价指标 99 5.10.1 偏差和方差 99 5.10.2 均方误差 100 5.10.3 平均绝对误差 100 5.10.4 R-squared 100 课后习题 101 项目6 神经网络的构建和训练 102 6.1 神经元 103 6.2 感知机的定义 103 6.3 简单逻辑电路 104 6.3.1 与门 104 6.3.2 或门 104 6.3.3 非门 105 6.4 感知机的实现 105 6.5 感知机的局限性 106 6.6 多层感知机 107 6.6.1 异或问题表示 107 6.6.2 异或问题实现 108 6.7 感知机的训练 109 课后习题 111 项目7 手写数字识别 112 7.1 卷积神经网络与图像处理 113 7.1.1 卷积神经网络 113 7.1.2 卷积神经网络的实现 117 7.2 深度神经网络 127 7.2.1 LeNet 128 7.2.2 AlexNet 128 7.2.3 VGGNet 129 7.2.4 ResNet 130 7.3 手写数字识别案例 131 7.3.1 数据集解压 131 7.3.2 加载数据集并识别 131 课后习题 133 项目8 人脸识别 135 8.1 人脸识别的流程 136 8.2 人脸检测 137 8.2.1 人脸检测的方法 137 8.2.2 评价指标 140 8.2.3 人脸检测部分代码 141 8.3 人脸对齐 141 8.3.1 人脸对齐的方法 141 8.3.2 评价指标 142 8.3.3 代码实现 142 8.4 人脸表征 143 8.4.1 人脸表征的方法 144 8.4.2 评价指标 144 8.5 人脸属性识别 145 项目9 商品情感分析 147 9.1 自然语言处理 148 9.2 情感分析 148 9.2.1 数据准备 149 9.2.2 数据预处理 149 9.2.3 商品情感识别 150 项目10 车牌识别 152 10.1 图像识别与预处理 153 10.1.1 图像识别的流程 153 10.1.2 图像预处理 153 10.1.3 数字图像的预处理 155 10.2 车牌检测与识别 156 10.2.1 车牌检测的流程 156 10.2.2 车牌识别的流程 159