新書推薦:
《
古今“书画同源”论辨——中国书法与中国绘画的关系问题兼中国画笔墨研究
》
售價:NT$
602.0
《
《日本文学史序说》讲演录
》
售價:NT$
332.0
《
无尽的海洋:美国海事探险与大众文化(1815—1860)
》
售價:NT$
454.0
《
治盗之道:清代盗律的古今之辨
》
售價:NT$
556.0
《
甲骨文丛书·剑桥世界暴力史(第一卷):史前和古代世界(套装全2册)
》
售價:NT$
959.0
《
甲骨文丛书·中华早期帝国:秦汉史的重估
》
售價:NT$
1367.0
《
欲望与家庭小说
》
售價:NT$
449.0
《
惜华年(全两册)
》
售價:NT$
320.0
|
編輯推薦: |
适读人群: 本书可作为嵌入式领域工程技术人员、机器学习算法的底层算法软件开发人员的参考书,也可作为计算机、电子信息、自动控制等相关专业高年级本科学生的参考教材。 配套PPT 代码 数据获取方式: 1、微信关注“华章计算机” 2、在后台回复关键词:69325
一、本书面向人工智能的嵌入式应用,涵盖了基于运算量,内存,功耗等多维度的机器学习算法优化理论与技术。从算法底层单元到机器学习算法训练-推理联合优化及自动优化部署算法等方面进行阐述,并结合通用嵌入式处理器进行了验证。本书集机器学习算法优化理论和应用实践为一体,为实现高效的人工智能嵌入式系统提供了基础理论与方法。
二、本书作者常年从事嵌入式教学与研究,书中的内容凝练了他们长期从事人工智能算法研究与系统设计的研究与经验,为人工智能应用普及提供了详实的学习和研究指南。
三、本书配套的PPT、源代码和训练数据均可下载并持续更新。
|
內容簡介: |
本书介绍在嵌入式系统中的机器学习算法优化原理、设计方法及其实现技术。内容涵盖通用嵌入式优化技术,包括基于SIMD指令集的优化、内存访问模式优化、参数量化等。并在此基础上介绍了信号处理层面的优化,包括AI推理算法及基于神经网络的AI算法训练-推理联合的优化理论与方法。其中信号处理层面优化包括了基于线性代数的快速近似算法、基于多项式的快速卷积构造技术、基于数据二进制结构的快速乘法算法等;在AI推理层面,介绍了机器学习推理模型共性结构、运算图中各个算子的计算优化途径;另外对基于神经网络AI算法,阐述了如何将推理阶段的运算量约束以及底层数据量化约束加入训练代价函数,从算法训练端减少运算量以提升AI嵌入式系统的运行效率;此外本书还通过多个自动搜索优化参数并生成C代码的例子介绍了通用的嵌入式环境下机器学习算法自动优化和部署工具开发的基本知识;本书通过应用例子和大量代码说明AI算法在通用嵌入式系统中的实现方法,力求让读者在理解算法的基础上,通过实践掌握高效的AI嵌入式系统开发的知识与技能。
|
關於作者: |
应忍冬
上海交通大学电子信息与电气工程学院副教授,硕士生导师。长期从事嵌入式系统和数字电路教学与科研工作。主要研究领域包括数字信号处理VLSI架构、3D视觉信号处理、类脑智能算法及嵌入式实现技术等。主持或参加过多项国家重点科研项目,在数字信号处理理论和工程实现方面拥有丰富经验。
刘佩林
上海交通大学电子信息与电气工程学院教授,博士生导师。研究领域包括音频、视频、3D信号处理与智能分析,面向机器人的环境感知、人机交互、定位与导航,以及类脑计算与低功耗电路设计等。2017年起任上海交通大学类脑智能应用技术研究中心主任。
|
目錄:
|
前言
第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
|
內容試閱:
|
随着人工智能(AI)技术在各个行业的普及,将AI技术和嵌入式系统相结合,构建AI嵌入式系统成为当前技术热点之一。本书介绍AI领域多种机器学习算法在嵌入式系统上的底层实现和优化技术。现在很多机器学习算法基于海量存储和运算,对功耗、体积、计算能力和存储容量有较高要求,而不同领域的嵌入式系统受限于各自的应用需求,难以满足所有条件。目前在嵌入式系统中实现复杂机器学习算法有多条途径,包括基于通用GPU多处理器架构的方案、基于专用运算加速引擎的定制化方案,以及基于现有处理器对算法进行深度优化的方案等。这些技术方案各有优缺点,并且在不同领域得到了应用。基于GPU的通用多处理器架构的方案通用性强、算力高,但代价是硬件成本高、功耗大。基于专用运算加速引擎的定制化方案运算效率高,功耗可控,但运算结构相对固定,灵活性差。基于现有处理器对算法进行深度优化的方案成本低,不需要专用或者定制化硬件,通用性强,但代价是需要手动对各案例逐个进行优化,开发难度高。本书中关注的是基于现有的嵌入式处理器系统和架构,通过不同层次的优化实现机器学习算法。虽然书中所介绍的方法以通用嵌入式处理器为例,但也能够应用于GPU或者硬件加速引擎架构,比如基于变换域的快速卷积算法在GPU的底层运算库中得到应用,基于加减图的常数乘法运算能够方便地在芯片硬件设计中实现。
机器学习涉及多个不同领域的算法,其中包括基于统计学习的方法和基于神经网络的方法。基于统计学习的算法理论模型设计精巧,泛化性能好,运算量相对较低,容易在存储量和运算量受限的嵌入式系统中实现,但它依赖较强的概率假设,模型上的偏差限制了它在实际应用中的性能。近年来,随着GPU算力的增加以及海量标注数据的积累,基于神经网络的“灰盒”式机器学习算法得到应用,神经网络训练使用反向梯度传播算法,能够“自动”地从训练数据中学到特征提取方法,摆脱人工特征设计的效率约束。很多现有神经网络性能优越,但庞大的参数存储量限制了其在嵌入式系统上的实现。近年来的研究发现,很多神经网络架构中存在大量冗余的运算和参数,通过运算的简化和架构裁剪能够大大降低神经网络对计算性能和内存的需求,使得在嵌入式系统上实现它成为可能。本书中讨论的内容覆盖基于统计学习和基于神经网络的机器学习算法在嵌入式系统上的实现,通过算法和例程介绍具体的优化手段。
书中给出了通过详细的手工优化步骤以说明嵌入式机器学习算法的优化过程,但随着机器学习算法复杂度的增加和规模的扩大,手动优化效率显得较低。对部分优化过程,我们给出了软件辅助优化的介绍,比如通过软件自动搜索加减图实现多常数乘法,使用软件控制神经网络训练过程,“消除”网络参数和架构上的冗余,以及通过软件自动从训练得到的模型中提取参数并自动生成C语言源代码。读者可以基于这些代码进一步拓展,构建自动化的嵌入式机器学习算法实现工具。在撰写本书期间,出现了多种嵌入式机器学习算法框架和算法部署工具,大大提高了机器学习算法在嵌入式系统中的部署效率。从长远看,使用更高层的机器学习算法来训练和优化当前机器学习算法会是研究趋势。
书中介绍的部分底层算法代码以Python语言形式给出,这考虑了Python语言的表达能力和程序简洁性,在实际应用中需要读者在理解算法原理的基础上改成C程序实现。另外,书中列举的机器学习问题集中在基本的手写识别数据或者简单图像分类问题上,选择这些机器学习问题,是考虑到它们的训练速度快,模型构建代码量小,能够在有限篇幅内解释清楚,但所介绍的方法能够应用于更复杂的机器学习算法和模型。
机器学习涉及建模、训练和推理这几个部分,本书的重点在于嵌入式系统中的机器学习算法推理过程的实现,对机器学习本身的理论模型介绍相对较少,因此需要读者在阅读之前了解基本的机器学习算法知识。另外,要掌握本书介绍的近似算法,需要读者提前了解一些线性代数的知识。
本书的撰写工作得到了Arm中国大学计划的帮助和支持,在此表示感谢!
应忍冬 2021年6月于上海
|
|