首页>参考读物>计算机科学与技术>人工智能

AI嵌入式系统:算法优化与实现
作者 : 应忍冬 刘佩林 编著
出版日期 : 2021-10-28
ISBN : 978-7-111-69325-3
定价 : 99.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 345
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书介绍机器学习推理算法在嵌入式系统中的底层实现技术与优化。给出不同层级的优化方法,包括面向机器学习推理模型结构的优化;面向运算图中各个算子计算优化;面向二进制比特运算优化以及面向CPU硬件特性的优化。内容结合了理论和实践,其中底层算法的优化方法涉及其背后的信号处理理论介绍,但同时通过应用例子和大量代码说明其软件实现方法。所讨论的内容能够帮助读者在嵌入式平台上实现机器学习算法,另外也为进一步实现通用的嵌入式环境下机器学习算法自动优化和部署工具的开发提供基本知识。
本书内容面向电子信息及计算机专业本科教学,也可供相关领域工程技术人员参考。

图书特色

阐述面向人工智能嵌入式应用的机器学习算法优化理论、设计方法与实现
理论与实践相结合的AI嵌入式算法设计与开发参考书和教材,安谋科技(Arm China)教育计划推荐

图书前言

随着人工智能(AI)技术在各个行业的普及,将AI技术和嵌入式系统相结合,构建AI嵌入式系统成为当前技术热点之一。本书介绍AI领域多种机器学习算法在嵌入式系统上的底层实现和优化技术。现在很多机器学习算法基于海量存储和运算,对功耗、体积、计算能力和存储容量有较高要求,而不同领域的嵌入式系统受限于各自的应用需求,难以满足所有条件。目前在嵌入式系统中实现复杂机器学习算法有多条途径,包括基于通用GPU多处理器架构的方案、基于专用运算加速引擎的定制化方案,以及基于现有处理器对算法进行深度优化的方案等。这些技术方案各有优缺点,并且在不同领域得到了应用。基于GPU的通用多处理器架构的方案通用性强、算力高,但代价是硬件成本高、功耗大。基于专用运算加速引擎的定制化方案运算效率高,功耗可控,但运算结构相对固定,灵活性差。基于现有处理器对算法进行深度优化的方案成本低,不需要专用或者定制化硬件,通用性强,但代价是需要手动对各案例逐个进行优化,开发难度高。本书中关注的是基于现有的嵌入式处理器系统和架构,通过不同层次的优化实现机器学习算法。虽然书中所介绍的方法以通用嵌入式处理器为例,但也能够应用于GPU或者硬件加速引擎架构,比如基于变换域的快速卷积算法在GPU的底层运算库中得到应用,基于加减图的常数乘法运算能够方便地在芯片硬件设计中实现。
机器学习涉及多个不同领域的算法,其中包括基于统计学习的方法和基于神经网络的方法。基于统计学习的算法理论模型设计精巧,泛化性能好,运算量相对较低,容易在存储量和运算量受限的嵌入式系统中实现,但它依赖较强的概率假设,模型上的偏差限制了它在实际应用中的性能。近年来,随着GPU算力的增加以及海量标注数据的积累,基于神经网络的“灰盒”式机器学习算法得到应用,神经网络训练使用反向梯度传播算法,能够“自动”地从训练数据中学到特征提取方法,摆脱人工特征设计的效率约束。很多现有神经网络性能优越,但庞大的参数存储量限制了其在嵌入式系统上的实现。近年来的研究发现,很多神经网络架构中存在大量冗余的运算和参数,通过运算的简化和架构裁剪能够大大降低神经网络对计算性能和内存的需求,使得在嵌入式系统上实现它成为可能。本书中讨论的内容覆盖基于统计学习和基于神经网络的机器学习算法在嵌入式系统上的实现,通过算法和例程介绍具体的优化手段。
书中给出了通过详细的手工优化步骤以说明嵌入式机器学习算法的优化过程,但随着机器学习算法复杂度的增加和规模的扩大,手动优化效率显得较低。对部分优化过程,我们给出了软件辅助优化的介绍,比如通过软件自动搜索加减图实现多常数乘法,使用软件控制神经网络训练过程,“消除”网络参数和架构上的冗余,以及通过软件自动从训练得到的模型中提取参数并自动生成C语言源代码。读者可以基于这些代码进一步拓展,构建自动化的嵌入式机器学习算法实现工具。在撰写本书期间,出现了多种嵌入式机器学习算法框架和算法部署工具,大大提高了机器学习算法在嵌入式系统中的部署效率。从长远看,使用更高层的机器学习算法来训练和优化当前机器学习算法会是研究趋势。
书中介绍的部分底层算法代码以Python语言形式给出,这考虑了Python语言的表达能力和程序简洁性,在实际应用中需要读者在理解算法原理的基础上改成C程序实现。另外,书中列举的机器学习问题集中在基本的手写识别数据或者简单图像分类问题上,选择这些机器学习问题,是考虑到它们的训练速度快,模型构建代码量小,能够在有限篇幅内解释清楚,但所介绍的方法能够应用于更复杂的机器学习算法和模型。
机器学习涉及建模、训练和推理这几个部分,本书的重点在于嵌入式系统中的机器学习算法推理过程的实现,对机器学习本身的理论模型介绍相对较少,因此需要读者在阅读之前了解基本的机器学习算法知识。另外,要掌握本书介绍的近似算法,需要读者提前了解一些线性代数的知识。
本书的撰写工作得到了Arm中国大学计划的帮助和支持,在此表示感谢!

应忍冬
2021年6月于上海

上架指导

人工智能/智能系统

封底文字

本书介绍了人工智能在嵌入式系统中的应用,从嵌入式系统开发的角度,既介绍通用软件开发,也讲授神经网络算法的部署,将算法理论分析和实践相结合,给读者以启发,是AI应用普及深化的应景之作。
—— 哈亚军 上海科技大学教授、IEEE TCAS-II总主编
嵌入式系统为AI走入人们的生活提供了关键渠道,但也从成本、性能和功耗等方面提出了全新要求。本书从深度神经网络底层计算细节入手,为嵌入式AI技术提供了全面、深入而引人入胜的论述。
—— 邓仰东 清华大学软件学院博士生导师、副研究员

机器学习算法在各个领域得到广泛应用。对于复杂任务,现有机器学习算法对硬件运算平台有很高的要求,这限制了它在功耗、体积、运算速度受限的嵌入式系统中的实现。本书内容侧重底层运算优化理论,同时结合工程实践,给出所讨论优化方案在嵌入式平台上的代码实现。本书可作为嵌入式领域工程技术人员、机器学习算法的底层计算软件开发人员的参考书,也可作为计算机、电子信息、自动控制等相关专业高年级本科生的参考教材。读者可扫描如下二维码获取书中示例的源代码以及教辅材料。
本书针对嵌入式系统的特点,介绍机器学习推理算法的实现和优化技术,包括:
神经网络算法模型结构优化。
机器学习算法中各算子运算优化。
二进制位运算优化以及面向CPU向量指令的优化。

图书目录

前言
第1章 绪论 1
1.1 AI嵌入式系统的概念与特点 1
1.2 机器学习在嵌入式系统中的实现 4
1.3 本书内容概述 6
第2章 嵌入式软件编程模式和优化 8
2.1 嵌入式软件编程模式 8
2.1.1 基于周期调用的运行模式 9
2.1.2 基于中断的前后台运行模式 12
2.1.3 基于事件队列的运行模式 14
2.1.4 带时间信息的事件队列运行模式 16
2.1.5 计算图运行模式 17
2.2 通用软件优化方法 20
2.2.1 循环结构优化 21
2.2.2 时间空间平衡 23
2.2.3 运算精度和性能平衡 25
2.2.4 底层运算的快速实现算法 28
2.2.5 内存使用优化 30
2.3 小结 34
参考文献 34
第3章 机器学习算法概述 35
3.1 高斯朴素贝叶斯分类器 35
3.1.1 原理概述 35
3.1.2 模型训练和推理 36
3.2 感知器 38
3.2.1 原理概述 38
3.2.2 模型训练和推理 39
3.3 SVM分类器 40
3.3.1 原理概述 40
3.3.2 模型训练和推理 42
3.4 决策树 43
3.4.1 原理概述 43
3.4.2 模型训练和推理 44
3.4.3 决策树分类器的代码实现 45
3.5 线性数据降维 47
3.5.1 原理概述 47
3.5.2 模型训练和推理 47
3.6 神经网络 48
3.6.1 原理概述 48
3.6.2 模型训练和推理 50
3.7 小结 54
参考文献 54
第4章 数值的表示和运算 55
4.1 浮点数 55
4.1.1 单精度和双精度浮点数 55
4.1.2 16位浮点数 57
4.2 定点数 61
4.2.1 定点数的二进制表示形式 61
4.2.2 定点数的运算 64
4.2.3 给定算法的定点化方法 71
4.3 仿射映射量化 78
4.3.1 量化数据表示 78
4.3.2 量化数据运算 83
4.3.3 基于量化数据的矩阵运算 84
4.4 常数整数乘法优化 88
4.4.1 基于正则有符号数的常数整数乘法优化 89
4.4.2 基于运算图的常数整数乘法优化 92
4.4.3 多常数整数乘法优化 97
4.4.4 浮点数和整数常数乘法优化 101
4.4.5 常数整数乘法优化的应用 103
4.5 小结 108
参考文献 108
第5章 卷积运算优化 109
5.1 卷积运算的定义 109
5.1.1 一维线性卷积 110
5.1.2 一维循环卷积 111
5.1.3 二维线性卷积 112
5.1.4 二维循环卷积 113
5.2 快速卷积算法 114
5.2.1 一维循环卷积频域快速算法 114
5.2.2 短序列一维线性卷积快速算法 117
5.2.3 长序列一维线性卷积的构建 124
5.2.4 快速FIR滤波器算法 129
5.2.5 二维快速卷积算法 140
5.3 近似卷积算法 152
5.3.1 基于卷积核低秩分解的二维快速卷积 153
5.3.2 矩形卷积核近似卷积 154
5.3.3 分段线性卷积核近似 160
5.3.4 卷积核的分段近似 164
5.3.5 基于IIR滤波器的近似卷积 168
5.3.6 基于卷积核低秩近似的二维近似快速卷积 172
5.3.7 基于二维矩形卷积核的近似快速卷积 173
5.4 小结 176
参考文献 177
第6章 矩阵乘法优化 178
6.1 机器学习算法中的矩阵乘法 178
6.2 Strassen矩阵相乘算法 180
6.3 Winograd矩阵相乘算法 184
6.4 低秩矩阵乘法 187
6.5 循环矩阵乘法 188
6.6 近似矩阵乘法 190
6.6.1 基于矩阵低秩近似的矩阵乘法 191
6.6.2 基于数据统计相关性的近似矩阵乘法 192
6.6.3 基于向量量化的近似矩阵乘法 194
6.7 小结 202
参考文献 203
第7章 神经网络的实现与优化 204
7.1 神经网络基本运算及软件实现 205
7.1.1 全连接层运算 205
7.1.2 卷积层运算 207
7.1.3 BN层运算 213
7.1.4 激活层运算 214
7.1.5 池化层运算 216
7.1.6 神经网络示例 217
7.2 神经网络的权重系数优化 221
7.2.1 权重系数二值化 222
7.2.2 权重系数的定点数量化 224
7.2.3 权重系数量化和神经网络训练结合 226
7.3 神经网络结构优化 233
7.3.1 剪枝优化 233
7.3.2 卷积结构优化 245
7.3.3 知识蒸馏 251
7.4 小结 255
参考文献 255
第8章 ARM平台上的机器学习编程 257
8.1 CMSIS软件框架概述 258
8.2 CMSIS-DSP软件框架和编程 261
8.2.1 矩阵运算 263
8.2.2 高斯朴素贝叶斯算法实现 267
8.2.3 SVM算法实现 271
8.2.4 数据降维 275
8.3 基于CMSIS-NN的神经网络编程 277
8.3.1 基于卷积神经网络的手写数字识别算法 277
8.3.2 CMSIS-NN的卷积神经网络实现 278
8.3.3 卷积神经网络的定点化 282
8.3.4 数据存储和格式转换 287
8.4 ARM Compute Library软件框架和编程 288
8.4.1 基于ACL库的图像处理编程 289
8.4.2 基于ACL库的神经网络编程 292
8.5 ARM NN软件框架和编程 306
8.5.1 基于ARM NN运行神经网络模型 307
8.5.2 基于ONNX格式的机器学习模型构建 310
8.6 ARM的SIMD指令编程 316
8.6.1 NEON编程的基本概念和数据寄存器 317
8.6.2 基于C语言的NEON编程 319
8.7 小结 330
附录A 补充数据和列表 332
附录B 技术术语表 338

教学资源推荐
作者: [美] 纪强(Qiang Ji) 著
作者: [美]约翰 J.克雷格(John J. Craig)著
参考读物推荐