AI嵌入式系统:算法优化与实现
上QQ阅读APP看书,第一时间看更新

1.3 本书内容概述

本书针对机器学习的推理运算,讨论它在嵌入式系统中的实现方法以及不同层级的优化方法,各章内容概述如下:

·嵌入式软件编程模式和优化

这一章针对嵌入式系统对软件的约束,介绍常见的几种编程模式,包括内存和CPU运行时间的分配方案、无操作系统条件下的多任务软件执行方法。此外,介绍通用的嵌入式软件优化方案,这些优化方案配合嵌入式软件编程模式,保障机器学习算法的高效可靠运行。

·机器学习算法概述

这一章介绍常用的机器学习算法,包括算法原理简介以及利用这些算法实现特定应用的例子。我们会以Python程序的形式给出机器学习算法的训练和推理代码。针对部分算法还介绍了从Python程序生成C语言程序的方法。通过比较这一章给出的不同算法的运算细节,可以发现它们具有共同的底层运算,即矩阵乘法和卷积,在随后的章节中将分别介绍这两个运算的优化。

·数值的表示和运算

机器学习底层实现需要大量的加减乘除运算,在这一章我们讨论数据的不同二进制表示形式及其运算特点,包括机器学习中经常使用的16位浮点数格式、定点数格式、仿射映射量化格式等。通过例子解释如何将高精度浮点数算法转成对嵌入式系统“友好”的定点数运算,以及如何通过简单的整数加减运算替代乘法操作以降低运算复杂度。

·卷积运算优化

卷积运算在图像处理神经网络中得到广泛应用,我们从降低卷积运算的乘法次数的角度讨论几种算法,这些算法基于卷积的多项式表示形式构建得到,不少算法在流行的神经网络框架中得以实现。另外,我们讨论近似卷积算法,通过适当降低运算精度换取运算量的大幅下降。

·矩阵乘法优化

绝大多数机器学习的推理算法能够写成矩阵乘法形式,包括矩阵乘以矩阵、矩阵乘以向量、向量乘以向量等。我们会介绍降低矩阵乘法运算中乘法数目的方法,以及多种能够降低矩阵运算量的近似算法。

·神经网络的实现与优化

在这一章,我们通过神经网络结构优化降低运算复杂度和参数存储量。所讨论的几种神经网络结构优化方案通过修改网络训练过程实现,包括网络参数稀疏化、网络运算层裁剪以及网络参数量化等。

·ARM平台上的机器学习编程

ARM处理器是当前应用最为广泛的嵌入式处理器之一,我们针对几种ARM处理器专用的软件框架介绍机器学习算法的实现,给出具体代码,将之前章节介绍的算法运行在ARM处理器上。另外,这一章也会介绍ARM的SIMD指令集,通过它实现底层运算的并行,进一步提升机器学习算法运行效率。

本书内容会涉及一部分机器学习算法原理介绍,但这些介绍不能取代机器学习专业领域的知识。希望读者能够在阅读之前对机器学习算法所了解,或者结合各章节所给算法参考相关的理论。在撰写本书的同时,出现了多个神经网络推理运算的嵌入式部署和实现框架,在本书的部分内容选取上考虑了这些框架所涉及的技术。基于嵌入式系统的多样性和硬件定制化特性,并不是所有平台都能部署通用的推理框架,需要开发者针对硬件特点手动选择实现方案,通过实践找到合适的优化方案组合。

最后,为方便读者复现书中介绍的算法,我们在华章图书官网(http://www.hzbook.com/)提供了完整的代码,读者可在该网站搜索本书下载相关资源。考虑到代码的简洁性和阅读时的便利性,部分代码以Python形式给出,为了在嵌入式系统中运行,需要将它们改成C程序。希望读者通过参考并修改本书提供的代码,将其应用到实际的嵌入式系统中去。