内容推荐 本书从人工智能、机器学习和深度学习三者的关系开始,以深度学习在计算机视觉、自然语言处理和推荐系统的应用实践为主线,逐步剖析模型原理和代码实现。书中的内容深入浅出,通过原理与代码结合、产业实践和作业结合的方式,帮助读者更好地掌握深度学习的理论知识和深度学习开源框架的使用方法。为了让更多的读者从中受益,快速应对复杂多变的AI应用,书中还 介绍了各种模型资源和辅助工具,旨在帮助读者在人工智能的战场上和“AI大师”一样无往不利。 人工智能是一门跨学科的技术,本书既可作为深度学习的入门读物,又可作为人工智能或相关学科本科生和研究生的教材,还可供AI爱好者和从业者使用。 目录 第1章 零基础入门深度学习 1.1 机器学习和深度学习综述 1.1.1 人工智能、机器学习、深度学习的关系 1.1.2 机器学习 1.1.3 深度学习 1.2 使用Python和NumPy构建神经网络模型 1.2.1 波士顿房价预测任务 1.2.2 构建波士顿房价预测任务的神经网络模型 1.3 飞桨开源深度学习平台介绍 1.3.1 深度学习框架 1.3.2 飞桨产业级深度学习开源开放平台 1.4 使用飞桨重写房价预测模型 1.4.1 飞桨设计之“道” 1.4.2 使用飞桨实现波士顿房价预测任务 1.5 NumPy介绍 1.5.1 概述 1.5.2 基础数据类型: ndarray数组 1.5.3 随机数np.random 1.5.4 线性代数 1.5.5 NumPy保存和导入文件 1.5.6 NumPy应用举例 1.5.7 飞桨的张量表示 第2章 一个示例带你吃透深度学习 2.1 使用飞桨完成手写数字识别模型 2.1.1 手写数字识别任务 2.1.2 构建手写数字识别的神经网络模型 2.1.3 模型代码结构一致,大大降低了用户的编码难度 2.1.4 采用“横纵式”教学法,适合深度学习初学者 2.2 通过极简方案快速构建手写数字识别模型 2.3 手写数字识别的数据处理 2.3.1 概述 2.3.2 数据读取并划分数据集 2.3.3 训练样本乱序并生成批次数据 2.3.4 校验数据有效性 2.3.5 封装数据读取与处理函数 2.3.6 异步数据读取 2.4 手写数字识别的网络结构 2.4.1 概述 2.4.2 经典的全连接神经网络 2.4.3 卷积神经网络 2.5 手写数字识别的损失函数 2.5.1 概述 2.5.2 分类任务的损失函数 2.6 手写数字识别的优化算法 2.6.1 概述 2.6.2 设置学习率 2.6.3 学习率的主流优化算法 2.7 手写数字识别的资源配置 2.7.1 概述 2.7.2 单GPU训练 2.7.3 分布式训练 2.8 手写数字识别的训练调试与优化 2.8.1 概述 2.8.2 计算模型的分类准确率 2.8.3 检查模型训练过程,识别潜在训练问题 2.8.4 加入校验或测试,更好地评价模型效果 2.8.5 加入正则化项,避免模型过拟合 2.8.6 可视化分析 2.9 手写数字识别的模型加载及恢复训练 2.9.1 概述 2.9.2 恢复训练 2.10 手写数字识别的动转静部署 2.10.1 概述 2.10.2 动态图转静态图训练 2.10.3 动态图转静态图模型保存 第3章 计算机视觉 3.1 卷积神经网络基础 3.1.1 概述 3.1.2 卷积神经网络 3.2 卷积神经网络的几种常用操作 3.2.1 概述 3.2.2 池化 3.2.3 ReLU激活函数 3.2.4 批归一化 3.2.5 暂退法 3.3 图像分类 3.3.1 概述 3.3.2 LeNet 3.3.3 AlexNet 3.3.4 VGG 3.3.5 GoogLeNet 3.3.6 ResNet 3.3.7 使用飞桨高层API直接调用图像分类网络 第4章 目标检测YOLOv3 4.1 目标检测基础概念 4.1.1 概述 4.1.2 目标检测发展历程 4.1.3 目标检测基础概念 4.2 目标检测数据处理 4.3 目标检测的经典算法YOLOv3 4.3.1 YOLOv3设计思想 4.3.2 产生候选区域 4.3.3 对候选区域进行标注 4.3.4 图像特征提取 4.3.5 计算预测框位置和类别 4.3.6 定义损失函数 4.3.7 多尺度检测 4.3.8 网络训练 4.3.9 模型预测 4.3.10 模型效果可视化 4.4 AI识虫比赛 4.4.1 AI识虫比赛介绍 4.4.2 实现参考 4.4.3 更多思路参考 第5章 自然语言处理 5.1 自然语言处理综述 5.1.1 概述 5.1.2 自然语言处理的发展历程 5.1.3 自然语言处理技术面临的挑战 5.1.4 自然语言处理的常见任务 5.1.5 使用深度学习解决自然语言处理任务的套路 5.2 词嵌入 5.2.1 概述 5.2.2 把词转换为向量 5.2.3 让向量具有语义信息 5.2.4 CBOW和Skipgram的算法实现 5.3 使用飞桨实现Skipgram 5.3.1 数据处理 5.3.2 网络定义 5.3.3 网络训练 5.3.4 词嵌入的有趣使用 第6章 情感分析 6.1 自然语言情感分析 6.1.1 概述 6.1.2 使用深度神经网络完成情感分析任务 6.2 循环神经网络(RNN)和长短时记忆网络(LSTM) 6.2.1 RNN和 LSTM 网络的设计思考 6.2.2 RNN网络结构 6.2.3 LSTM网络结构 6.3 使用LSTM完成情感分析任务 6.3.1 概述 6.3.2 使用飞桨实现基于LSTM的情感分析模型 第7章 推荐系统 7.1 推荐系统介绍 7.1.1 推荐系统产生的背景 7.1.2 推荐系统的基本概念 7.1.3 思考有哪些信息可以用于推荐 7.1.4 使用飞桨探索电影推荐 7.2 数据处理与读取 7.2.1 数据处理流程 7.2.2 构建数据读取器 序言 前言 随着“十四五”规划和2035年远景目标纲要的发布, 笔者欣喜地发现,在中国,人工智能(Artificial Intelligence,AI)已经进入欣欣向荣的时期。据不完全统 计,仅百度大脑就开放了330多项AI能力,日调用量超过1 万亿次。在刚刚过去的2022年冬奥会上,一系列AI“黑科 技”的应用,如防疫机器人、送餐机器人、炒菜机器人、 AI手语主播等,让世界人民看到了中国科技发展的突飞猛 进,作为一名在AI领域深耕多年的产品人,我倍感骄傲和 自豪。 AI与产业结合的场景越来越深入、越来越专业。在工 业制造、城市管理、应急管理、医疗、农业等领域,AI技 术正遍地开花结果,如数字人客服、安全生产监测、质量检 测、智能信控、车路协同、飞机识别、森林草原火灾监测、 新冠病灶分割等。AI+X在各行各业的落地,大大加快了产 业数字化进程,提升了企业核心竞争力。 这些日新月异的变化,其核心基础是AI人才的培养。 希望通过本书的出版,为中国AI人才建设贡献一些绵薄之 力。书中阐述的很多观点和实践,都源于我多年来的教学经 验和项目实践累积,是入门深度学习必须要掌握的基本功。 感谢读者朋友们选择本书作为开启深度学习实践的教材,期 待阅读本书后,大家可以领悟并掌握深度学习的“套路”, 并举一反三,轻松驾驭学业和工作中与深度学习相关的任务 。 “乘风破浪会有时,直挂云帆济沧海”,我很期待,下 一代AI的领航人能在中国诞生,能在本书的读者中产生。 怀揣AI梦,一起向未来。 我总结了本书的几个特色,希望能帮助读者捋顺这本 书的脉络,更好地掌握书中的理论知识和实践方法。 特色1: 理论和代码结合、实践与平台结合,帮助读 者快速掌握深度学习基本功 目前,市面上关于AI和深度学习的图书已经汗牛充栋 ,但大多偏重理论,对于AI实践应用的介绍涉猎较少。但 以我多年的经验来看,对于深度学习的初学者来说,更需要 一本理论和代码结合、实践与平台结合的书,因为多数开发 者更习惯通过实践代码来理解模型背后的原理。本书介绍的 内容和相关代码都配有在线课程,读者可扫描封底的二维码 获取。在线课程以Jupyter Notebook的方式呈现,源代码 可在线运行。 建议本书的最佳阅读方式: 阅读本书时,读者可以配 合视频课程,并同时在线运行实践代码,观察打印结果。纸 质图书、线上课程视频和交互式编程平台三位一体的策略, 可以帮助读者在最短的时间内,轻松愉悦地掌握深度学习的 基本功,这就是本书撰写的初衷。 理论知识讲解和可运行代码演示一体化 特色2: 工业实践示例和作业结合,帮助读者快速具 备深度学习应用的能力 很多接触深度学习时间不是很长的开发者都会面临一 个困惑,虽然系统地学习了很多相关课程,能独立实践经典 的学术问题,但在产业应用时仍然信心不足,感觉自己和在 工业界摸爬滚打多年的工程师们之间有很大的差距。因此, 本书在撰写时,除了选取一些经典的学术问题作为介绍深度 学习知识的示例外,还选取了一些真实的工业实践项目作为 比赛题和作业题。这些项目来源于百度工程师正在研发的与 AI相关的工业应用。 在这些真实的工业实践项目中,读者会接触到很多独 有的数据集和有趣的问题,并和成千上万的读者们共同较量 模型优化的效果。如果你能在这些实践中独占鳌头,那么恭 喜你,与在AI前端冲浪已久的工程师们相比,你已经毫不 逊色。如果愿意,你甚至可以尝试面试顶级科技公司,从事 与AI相关的研发工作。 特色3: 深度学习全流程工具支撑,帮助读者“武装 ” 在AI应用飞速落地的今天,如何实现快速建模、如何 提升模型的训练和部署效率已经成为工业界普遍关注的课题 。因此,本书在介绍深度学习领域的各种“生存技巧”之后 ,还为读者配备了“先进的武器”——飞桨,内容由“武器 ”的制造者——飞桨产品架构师们共同撰写。高超的“生存 技巧”配以先进的“武器”,相信可以让读者更加自信地驾 驭这场轰轰烈烈的AI浪潮,并大放异彩。 全书共8章,可分为3部分: 第1部分包括第1、2章, 以最基础的深度学习任务(房价预测和手写数字识别)为例 ,内容由浅入深、层层剖析,帮助读者入门深度学习的编程 并掌握深度学习各环节的优化方法; 第2部分包括第3~7章 ,以计算机视觉、自然语言处理和推荐系统3个深度学习常 用领域的典型任务为例,介绍各领域的基础知识和应用深度 学习解决实际问题的方案及实践过程,帮助读者对深度学习 模型有更深刻的理解; 第3部分包含第8章,系统地介绍飞 桨提供的各种武器,包括模型资源、工业化训练和部署工具 以及如何基于飞桨进行二次研发。 特别感谢王海峰老师在百忙中给本书作序,您对AI发 展趋势的深刻理解为我们提供了指引方向; 感谢吴甜女士 的指导和帮助,您对AI技术的热爱、对AI人才的重视和培 育让本书的诞生成为可能; 感谢马艳军、于佃海、李轩涯 、周奇在本书撰写过程中的大力支持,让其更匹配深度学 导语 本书从人工智能、机器学习和深度学习三者的关系开始,以深度学习在计算机视觉、自然语言处理和推荐系统的应用实践为主线,逐步剖析模型原理和代码实现。书中的内容深入浅出,通过原理与代码结合、产业实践和作业结合的方式,帮助读者更好地掌握深度学习的理论知识和深度学习开源框架的使用方法。为了让更多的读者从中受益,快速应对复杂多变的AI应用,书中还 介绍了各种模型资源和辅助工具,旨在帮助读者在人工智能的战场上和“AI大师”一样无往不利。 人工智能是一门跨学科的技术,本书既可作为深度学习的入门读物,又可作为人工智能或相关学科本科生和研究生的教材,还可供AI爱好者和从业者使用。 精彩页 第3章计算机视觉 3.1卷积神经网络基础 3.1.1概述 计算机视觉作为一门让机器学会如何去“看”的学科,具体地说,就是让机器去识别摄像机拍摄的图片或视频中的物体,检测出物体所在的位置,并对目标物体进行跟踪,从而理解并描述出图片或视频里的场景和故事,以此来模拟人脑视觉系统。因此,计算机视觉也通常被叫作机器视觉,其目的是建立能够从图像或者视频中“感知”信息的人工系统。 计算机视觉技术经过几十年的发展,已经在交通(车牌识别、道路违章抓拍)、安防(人脸闸机、小区监控)、金融(刷脸支付、柜台的自动票据识别)、医疗(医疗影像诊断)、工业生产(产品缺陷自动检测)等多个领域应用,影响或正在改变人们的日常生活和工业生产方式。未来,随着技术的不断演进,必将涌现出更多的产品和应用,为我们的生活创造更大的便利和更多的机会,如图3.1所示。 ■ 图3.1计算机视觉技术在各领域的应用 飞桨为计算机视觉任务提供了丰富的API,并通过底层优化和加速保证了这些API的性能。同时,飞桨还提供了丰富的模型库,覆盖图像分类、检测、分割、文字识别和视频理解等多个领域。用户可以直接使用这些API组建模型,也可以在飞桨提供的模型库基础上进行二次研发。 由于篇幅所限,本章将重点介绍计算机视觉的经典模型(卷积神经网络)和图像分类任务,而在第4章介绍目标检测。本章主要涵盖如下内容。 (1) 卷积神经网络。卷积神经网络(Convolutional Neural Network,CNN)是计算机视觉技术最经典的模型结构。本教程主要介绍卷积神经网络的常用模块,包括卷积、池化、激活函数、批归一化、暂退法等。 (2) 图像分类。介绍图像分类算法的经典模型结构,包括LeNet、AlexNet、VGG、GoogLeNet、ResNet,并通过眼疾筛查示例展示模型和算法的应用。 计算机视觉的发展历程要从生物视觉讲起。对于生物视觉的起源,目前学术界尚没有形成定论。有研究者认为最早的生物视觉形成于距今约7亿年前的水母之中,也有研究者认为生物视觉产生于距今约5亿年前寒武纪。 经过几亿年的演化,目前人类的视觉系统已经具备非常高的复杂度和强大的功能,人脑中神经元数目达到1000亿个,这些神经元通过突触互相连接,这样庞大的视觉神经网络使我们可以很轻松地观察周围的世界,如图3.2所示。 ■ 图3.2人类视觉感知 对人类来说,识别猫和狗是件非常容易的事。但对计算机来说,即使是一个精通编程的高手,也很难轻松写出具有通用性的程序(比如: 假设程序认为体型大的是狗,体型小的是猫,但由于拍摄角度不同,可能一张图片上猫占据的像素比狗还多)。那么,如何让计算机能像人一样看懂周围的世界呢?研究者尝试着从不同的角度去解决这个问题,由此也发展出一系列的子任务,如图3.3所示。 ■ 图3.3计算机视觉子任务示意图 (1) 图像分类,用于识别图像中物体的类别(如瓶子、杯子、立方体)。 (2) 目标检测,用于检测图像中每个物体的类别,并准确标出它们的位置。 (3) 图像语义分割,用于标出图像中每个像素点所属的类别,属于同一类别的像素点用一个颜色标识。 (4) 实例分割,值得注意的是,图3.3(b)中的目标检测任务只需要标注出物体位置,而图3.3(d)中的实例分割任务不仅要标注出物体位置,还需要标注出物体的外形轮廓。 在早期的图像分类任务中,通常是先人工提取图像特征,再用机器学习算法对这些特征进行分类,分类的结果强依赖于特征提取方法,往往只有经验丰富的研究者才能完成,如图3.4所示。 ■ 图3.4使用传统的机器学习方法完成图像分类任务示意 在这种背景下,基于神经网络的特征提取方法应运而生。Yan LeCun是最早将卷积神经网络应用到图像识别领域的,其主要逻辑是使用卷积神经网络提取图像特征,并对图像所属类别进行预测,通过训练数据不断调整网络参数,最终形成一套能自动提取图像特征并对这些特征进行分类的网络,如图3.5所示。 ■ 图3.5早期的卷积神经网络处理图像任务示意 这一方法在手写数字识别任务上取得了极大的成功,但在接下来的时间里,却没有得到很好的发展。其主要原因 一方面是数据集不完善, 训练出的模型泛化性较差, 只能处理简单任务,在大尺寸的数据集上效果比较差; 另一方面是硬件瓶颈,网络模型复杂时,计算速度会特别慢。 目前,随着互联网技术的不断进步,数据量呈现大规模的增长,越来越丰富的数据集不断涌现。另外,得益于硬件能力的提升,计算机的算力也越来越强大。不断有研究者将新的模型和算法应用到计算机视觉领域。由此催生了越来越丰富的模型结构和更加准确的精度,同时计算机视觉所处理的问题也越来越丰富,如分类、检测、分割、场景描述、图像生成和风格变换等,甚至还不仅仅局限于二维图片,也包括视频处理技术和三维视觉等。 3.1.2卷积神经网络 卷积神经网络是 |