嵌入式人工智能就是在嵌入式环境下做人工智能。算法模型还是原来的算法模型,但是毕竟是嵌入式环境,时代变了,肯定会有一些变化。首先,我们来回答为什么会有嵌入式人工智能。01为什么需要嵌入式人工智能?现在人工智能发展最大的问题是什么?通过图灵测试?在SOTA上?我认为这是一个着陆问题。这几年,关于人工智能的新闻层出不穷。无论是学术界还是工业界,大家都认为人工智能现在是一个风口。不过,质疑的声音也逐渐变强了。有人不断地问这是不是泡沫,甚至有人开始预测泡沫何时破灭。为什么同样是人工智能,意见如此两极分化?一开始不太明白,后来问了一些朋友,看了一些资料,渐渐明白了:毕竟是实现的问题。每年都有好几场与人工智能相关的峰会,每次都有值得聊的话题,有时还会有意想不到的突破,让人感叹“哎呀,我还能这么玩”。平心而论,从研究的角度来看,人工智能这几年一直在进步,而且进步不小。所有人都在期待着奇点的早日到来。然而,当你从应用程序的角度考虑它时,事情就不那么美好了。很多人工智能产品确实让我们眼前一亮,但那已经是几年前的事了。这几年也不是什么都没做。它们主要是优化的。现在吵架基本不是问题。但是以前没有的新东西是什么?久久想不起来。像鸡一样安静地向前唱歌,这就是问题所在。很多人说人工智能的下一个落地场景就是下一个风口。当然,我猜不到下一个落地场景会是什么,但我知道其中一个选项就是嵌入式人工智能。以前说嵌入式就是单片机,所以很多同学认为这两个词是一回事。过去,嵌入式系统的一般流程是:输入传感器信号,用编写好的程序进行处理,然后输出控制信号。为什么学习嵌入式系统感觉像学习单片机编程就是这个道理。然而,现在是智能化时代,嵌入式系统已经进化为“智能嵌入式系统”。有什么不同?这里引用《AI嵌入式系统》的一个观点:传统嵌入式系统主要用于控制,而智能嵌入式系统在感知、交??互和决策三个方面提高了智能化水平,称为智能感知、智能交互和智能决策。.这三个术语在书中解释得很清楚。这里我想借这个问题来解释为什么嵌入式人工智能会是下一个落地场景之一。02智能的作用大家最想问的是“智能”多了会有什么不同,关键在于编程。过去,嵌入式系统必须经过编程才能做任何事情。编程不是一开始就写代码。首先,你要分析数据,提炼需求,最后实施编程。花时间在这些环节上,尤其是现在嵌入式部署环境越来越复杂,问题越来越多。按照传统的方法,这些问题在编程时必须一一考虑,规则一一。只有文章写好了,系统才有处理能力。手写规则费时费力,很容易“一字不漏”。有没有更好的方法来解决它?对,就是加入人工智能。人工智能不需要手动编写规则,而是可以通过数据“自学”。对于一些不易被人工描述的抽象规则,人工智能也可以通过学习拥有相应的能力。这是智慧。嵌入人工智能,大大降低人力成本,大大拓展想象空间,可能催生下一个杀手级人工智能应用。03嵌入式的特殊局限现在,我们有一个新的问题:为什么要从人工智能中切出一块来,叫它嵌入式人工智能?前面说了,嵌入式人工智能的模型算法和之前一样,从理论层面上没有太大区别。问题出在嵌入式本身。嵌入式设备和通用计算机的计算环境大不相同,通常我们感受最多的就是存储容量小。《AI嵌入式系统》给出一组对比数据:常见的深度神经网络模型使用单精度浮点数来存储参数对应的存储容量在20MB到560MB之间。相比之下,传统的低成本嵌入式系统RAM最高存储容量也只有16MB。另一件同样捉襟见肘的事情是计算能力。这个先不说,嵌入式设备在计算能力上永远只是小弟。另一个容易被大家忽视但也有局限性的就是能耗。要知道深度学习模型是电老虎。每次模型跑训练时,显卡的风扇都会发出起飞的声音。即使模型只是运行,也是浪费电能。在许多情况下,嵌入式设备的能耗是有限的。总而言之,或许我们可以很容易地找到一个需要人工智能的嵌入式应用场景,而且确实已经有现成的模型足以满足需求。现有的成绩只能让男主泪流满面。04应对人工智能有两种方式。一是改善嵌入式设备的硬件条件,但这也变相限制了应用场景。另一个是优化人工智能本身,减少对空间、计算能力和能源消耗的需求。现在大家选择了第二条路,把问题又拉回到人工智能这边,于是就有了嵌入式人工智能。这部分内容很多。在这里我就简单介绍一下,让大家了解嵌入式人工智能研究有哪些方面。人工智能要适应嵌入式环境,就要字面上的“割脚穿鞋”。在大幅降低资源需求的同时,尽量保证性能不会大幅下降。在嵌入式人工智能中叫做优化,比如矩阵乘法优化。.以前在介绍机器学习的知识体系时,都说矩阵运算是机器学习的支柱。机器学习不是一个模型,而是一堆模型,而这些模型用到了大量的矩阵运算,主要是矩阵乘法。如果可以减少矩阵乘法的计算量,那么整个模型的计算量也可以减少。道理很好理解,可是世上真有白狼空手套的好事吗?科学家们真的想通了。这要从1969年提出的Strassen矩阵乘法算法说起,它是第一个算法复杂度低于O(N3)的矩阵乘法。简单来说,这个算法可以减少矩阵乘法的量。例如,对于2×2矩阵乘法,常规算法执行8次乘法运算,而本算法只需要执行7次,矩阵乘法量减少12.5%,但并非没有代价,并且加法运算的次数从4次增加到18次。看起来没什么,但是一旦矩阵按比例放大,比如128×128的矩阵运算,使用这个算法可以减少大约一半的矩阵乘法运算,并且优化效果非常可观。类似的算法还有Winograd算法,在大规模矩阵运算中也可以减少50%的乘法运算。上述算法称为快速矩阵乘法。另一种解决方案是采用牺牲精度来提高速度的思想,允许矩阵乘法的结果存在一定的误差。这种算法称为近似矩阵乘法,例如基于数据统计相关性的近似。矩阵乘法,以及基于数据协方差的低秩分解近似的快速乘法。类似的从算子层面的优化也是卷积运算的优化。毋庸置疑,现在卷积运算的作用已经离不开用深度神经网络进行图像处理的卷积运算。优化的方向和矩阵乘法很相似,也是从快速卷积算法和近似卷积算法两个方面来研究的,如一维循环卷积频域快速算法和基于卷积核低秩分解的二维快速卷积。05如何开发嵌入式人工智能既然要落地应用,除了理论研究,当然要有开发工具。但是嵌入式平台很多,开发环境也不一样。这里我将介绍基于《AI嵌入式系统》的Arm平台上的机器学习工具。我不会谈论Arm本身。十年前学习嵌入式可能是个新词。现在每个人都有一部智能手机,它配备了Arm处理器。不过按照处理器的划分,Arm平台大致可以分为三个系列:Cortex-A、Cortex-M和Cortex-R。Cortex-A系列安装在我们的手机中。据说计算能力超过了美国宇航局登月时使用的超级计算机。硬件条件比较充足,发展资源也很丰富。Cortex-A版本。Arm还推出了ACL(ArmComputeLibrary)等库来支持Arm平台上的高性能数据计算。Cortex-M和Cortex-R系列我们听得不多,因为它们主要面向工业应用。Cortex-M侧重于低成本、低能耗的应用场景,而Cortex-R则可以用于实时性要求更高的场景。任务。与Cortex-A相比,这两个系列的计算能力都非常有限。Arm专门推出了CMSIS软件架构,方便Cortex-M系列的应用开发。有两个库与CMSIS和机器学习密切相关。一个是CMSIS-DSP库,提供矩阵运算等基本数学运算,一些机器学习算法如SVM,FIR滤波,计算KL距离,DCT转换,PID等。控制、排序等功能。CMSIS-DSP使用C语言,但可以导入使用Python的Scikit-Learn库训练的模型。另一个是CMSIS-NN库。看名字就知道这是一个构建神经网络的库,也可以导入训练好的模型。
