本书紧密围绕深度学习及加速技术的基础理论与应用案例展开叙述,实现了深度学习算法设计与硬件加速技术的有机统一,是一本基础理论与实践案例相结合的实用图书。其具体内容涉及人工智能基本概念,神经网络数学基础、神经网络基本结构与学习策略、反向传播算法数学原理与训练机制等神经网络基础理论,以及一些高级主题和实践。本书可作为从事人工智能领域算法研究、架构设计与应用实现等工作的科研人员、工程师以及高等院校师生的参考书籍。
前 言
近年来,随着深度神经网络算法的发展,人工智能应用的热潮席卷全球,以深度学习为基础的信息搜索、图像处理、机器视觉、自然语言处理、信息推荐、智能决策等技术已逐步应用在智能金融、机器人、智能安防、智能制造、智慧交通、在线传媒、在线娱乐等领域,推动了人工智能产业的飞速发展。
人工智能产业作为战略新兴产业得到我国政府的高度重视,2015年以来国家先后出台了《关于积极推进“互联网+”行动的指导意见》《“十三五”国家科技创新规划》《新一代人工智能发展规划》《促进新一代人工智能产业发展三年行动计划(2018—2020年)》等多项政策,积极推动人工智能产业快速发展。根据中国电子学会数据,2021年我国人工智能核心产业市场规模为1300亿元,相较于2020年增长了38.9%。根据《新一代人工智能发展规划》,预计2025年,我国人工智能核心产业规模将超过4000亿元,带动相关产业规模超过5万亿元。我国人工智能产业市场规模巨大,人工智能技术与产业正处于高速增长期,产业的发展需要人才来支撑,然而目前我国人工智能人才严重不足,根据2020年人力资源和社会保障部发布的《新职业——人工智能工程技术人员就业景气现状分析报告》,我国人工智能人才缺口超过500万,国内的供求比例为1∶10,出现了严重失衡,如不加强人才培养,至2025年,人才缺口将突破1000万。因此,人工智能产业人才的培养是人工智能产业发展的基础性工程,积极建设人工智能学科专业、改革人工智能课程与教材、实现人工智能创新人才的培养是我国人工智能技术与产业发展的迫切需要。深度学习是人工智能技术进步与产业发展的核心引擎,开展对深度学习算法与加速技术理论及应用的研究,培养具备深度学习理论与加速技术相关知识的技术人才就显得更加重要。然而传统的深度学习基础与应用课程所采用的教材不够完善,大多只注重深度学习算法的基础理论阐述,而缺少对深度学习算法优化技术与加速技术的讨论,更缺乏基于深度学习的应用案例的分析,因此急需一本适合人工智能领域人才培养、偏重深度学习应用与加速技术实现的高水平教材。
基于以上需求,我编写了本书。本书内容分为理论篇与应用篇,适合具备不同基础的读者学习,旨在培养读者在深度学习算法及硬件加速方案设计方面的工程实践能力。本书不仅注重对深度学习基础理论的阐述,而且深入分析了处理梯度消失与过拟合现象、选择合适初始值、优化损失函数等深度学习算法设计中的关键技术,阐述了深度学习算法硬件加速技术基础理论,并给出了加速方案设计案例,非常有助于读者理解深度神经网络在实际应用中所遇到的难题并掌握其解决方法。本书具有以下四个特色:
1)不仅引入线性向量空间、内积、线性变换与矩阵表示、梯度等神经网络数学基础概念,而且结合神经网络算法应用重新定义这些数学概念的物理意义,以加强读者对基于内积、梯度等数学概念的人工智能算法的设计能力。
2)详细分析了梯度消失与梯度爆炸处理、过拟合消除、初始值选择规则、可变的学习速度、损失函数优化等深度学习算法设计中的关键技术,以增强读者对深度学习算法的理解以及算法设计能力。
3)解读了网络模型优化、计算精度降低与网络剪枝技术、SIMD计算架构与GPU加速、TPU计算架构与TPU加速、ASIC AI计算架构与FPGA加速等深度学习算法硬件加速技术的基础理论。
4)重点讲解了基于OpenCL的FPGA异构并行计算技术与基于OpenVINO的FPGA深度学习加速技术,引入灰度图像逆时针旋转、squeezenet网络目标识别等FPGA异构加速应用案例,以提高读者在深度学习算法设计及异构加速方案实现方面的工程实践能力。
本书在编写过程中,不仅受到了湖南省教育厅高水平研究生教材建设项目与长沙理工大学优秀教材建设项目的资助,而且得到了戴葵教授、研究生陈立等的鼎力相助,同时获得了Intel和Terasic对加速技术实验部分的大力支持,在此一并表示真挚的感谢。由于作者水平有限,加上时间仓促,书中难免有疏漏甚至错误之处,敬请同行和读者批评指正,作者的联系方式为baichuang@csust.edu.cn。
CONTENTS
目 录
前言
理论篇
第1章 人工智能简介2
1.1 人工智能概念2
1.1.1 人工智能定义2
1.1.2 人工智能发展历程3
1.2 人工智能与深度学习4
1.2.1 人工智能与深度学习之间
的关系4
1.2.2 图灵机与丘奇-图灵论题5
1.3 人工智能发展阶段6
1.3.1 人工智能1.0——知识+
算法+算力6
1.3.2 人工智能2.0——数据+
算法+算力7
1.3.3 人工智能3.0——知识+
数据+算法+算力7
1.3.4 人工智能4.0——存算
一体化8
1.4 人工智能应用9
1.4.1 工业零部件尺寸测量与
缺陷检测9
1.4.2 目标检测与跟踪9
1.4.3 人脸比对与识别10
1.4.4 三维影像重构10
第2章 神经网络数学基础12
2.1 线性向量空间12
2.2 内积14
2.3 线性变换与矩阵表示15
2.4 梯度17
第3章 神经网络与学习规则20
3.1 神经元模型与网络结构20
3.1.1 神经元模型20
3.1.2 神经网络结构22
3.2 感知机学习24
3.2.1 感知机定义及结构24
3.2.2 感知机学习规则25
3.3 Hebb学习28
3.3.1 无监督Hebb学习28
3.3.2 有监督Hebb学习29
3.4 性能学习30
3.4.1 性能指数30
3.4.2 梯度下降法31
3.4.3 随机梯度下降法32
第4章 反向传播33
4.1 LMS算法33
4.2 反向传播算法35
4.2.1 性能指数36
4.2.2 链式法则36
4.2.3 反向传播计算敏感性38
4.2.4 反向传播算法总结39
4.3 反向传播算法变形39
4.3.1 批数据训练法40
4.3.2 动量训练法40
4.3.3 标准数值优化技术42
4.4 反向传播算法实例分析42
第5章 卷积神经网络45
5.1 卷积神经网络基础45
5.1.1 全连接神经网络与卷积
神经网络45
5.1.2 卷积神经网络组成结构46
5.1.3 卷积神经网络进化史50
5.2 LeNet50
5.2.1 LeNet结构51
5.2.2 LeNet特点52
5.3 AlexNet52
5.3.1 AlexNet结构52
5.3.2 AlexNet特点54
5.4 VGGNet54
5.4.1 VGG16结构55
5.4.2 VGG16特点57
5.5 GoogLeNet57
5.5.1 Inception结构57
5.5.2 GoogLeNet结构——基于Inception V1模块59
5.5.3 GoogLeNet特点62
5.6 ResNet62
5.6.1 ResNet残差块结构63
5.6.2 ResNet结构63
5.6.3 ResNet特点66
第6章 目标检测与识别67
6.1 R-CNN67
6.1.1 基于SS方法的候选区域
选择68
6.1.2 候选区域预处理68
6.1.3 CNN特征提取69
6.1.4 SVM目标分类69
6.1.5 Bounding box回归70
6.2 Fast R-CNN70
6.2.1 基于SS方法的候选区域
生成71
6.2.2 CNN分类与回归71
6.2.3 Fast R-CNN目标检测
算法特点72
6.3 Faster R-CNN73
6.3.1 CNN特征提取73
6.3.2 RPN候选框生成74
6.3.3 CNN分类与回归74
6.3.4 Faster R-CNN目标检测
算法特点75
6.4 YOLO75
6.4.1 YOLOv175
6.4.2 YOLOv277
6.4.3 YOLOv380
第7章 深度学习优化技术83
7.1 梯度消失83
7.2 过拟合85
7.2.1 增加训练数据集85
7.2.2 regularization86
7.2.3 dropout技术88
7.3 初始值与学习速度89
7.3.1 初始值选择规则89
7.3.2 可变的学习速度91
7.4 损失函数92
7.4.1 均方误差损失函数92
7.4.2 cross-entropy损失函数93
7.4.3 log-likelyhood损失函数 95
第8章 深度学习加速技术96
8.1 软件模型优化技术96
8.1.1 网络模型优化96
8.1.2 计算精度降低97
8.1.3 网络剪枝技术97
8.2 GPU加速技术98
8.3 TPU加速技术100
8.4 FPGA加速技术102
8.4.1 全连接神经网络加速102
8.4.2 卷积神经网络加速103
应用篇
第9章 基于OpenCL的FPGA异构
并行计算技术106
9.1 OpenCL技术基础与环境搭建106
9.1.1 OpenCL技术基础106
9.1.2 OpenCL环境搭建107
9.2 OpenCL异构并行计算架构115
9.2.1 平台模型116
9.2.2 执行模型116
9.2.3 内存模型117
9.3 OpenCL C语言基本语法与程序
设计118
9.3.1 基本语法与关键字118
9.3.2 数据类型119
9.3.3 维度与工作项122
9.3.4 其他注意事项123
9.4 基于OpenCL的FPGA异构并行
计算实现方法123
9.4.1 主程序设计123
9.4.2 内核程序设计139
第10章 基于OpenCL的FPGA异构
并行计算应用案例140
10.1 整体描述140
10.2 内核