终于有人把“嵌入式人工智能”讲明白了

AI百科5个月前更新 快创云
49 0

  人工智能

  嵌入式人工智能是一个颇具吸引力的概念。经常听到有同学询问,在就业或考研时,选择嵌入式还是人工智能更有前途?答案是两者兼顾,于是有了嵌入式人工智能。本文将简要探讨嵌入式人工智能。

为什么需要嵌入式人工智能

  当前,人工智能发展的最大瓶颈是什么?通过图灵测试、登上SOTA榜单?我认为是落地问题。近年来,人工智能领域新闻不断,无论是学术界还是工业界,都认为人工智能是风口。然而,质疑的声音也在逐渐增强,不断有人询问这是否是一个泡沫,甚至有人开始预测泡沫何时会破裂。

  为什么同样是人工智能,看法却如此两极分化?起初我也很困惑,询问了一些朋友并查阅了一些资料后,逐渐有了些理解:归根结底是落地问题。人工智能相关的顶级会议每年召开数次,每次都能涌现出令人津津乐道的新成果,有时还有意想不到的突破,让人感叹“原来还可以这样玩”。从研究的角度看,人工智能这几年确实在进步,且进步不小,大家都在期待奇点早日到来。

  然而,从应用的角度看,情况并不那么乐观。不少人工智能产品确实让我们眼前一亮,但那已是几年前的事情了。这几年主要是在优化,比如几年前Siri说话还磕磕巴巴,现在吵架已不成问题。但有什么新的功能吗?想半天也想不出来。这就是问题所在:一边高歌猛进,一边却默默无闻。

  很多人认为,人工智能下一个落地的场景将是下一个风口。虽然我猜不出下一个落地的场景是什么,但我知道嵌入式人工智能是可选之一。以前一说嵌入式就是单片机,以至于很多同学认为这两者是一回事。

智能的作用

  大家最关心的是,“智能”多了会有什么不同?关键在于编程。

  过去嵌入式系统要干点什么都需要编程。编程不是上来就写代码,首先要分析数据、提炼需求,最后才是编程实现。这几个环节都要投入时间,特别是现在嵌入式部署的环境越来越复杂,问题也越来越多。而按照传统方式,这些问题都必须在编程时一一考虑并写上规则,系统才能具备处理能力。

  手写规则费时费力且容易“挂一漏万”。有没有更好的办法解决呢?有!就是加入人工智能。人工智能不需要人工写规则,而是可以通过数据“自学”。对于抽象的、不好人工描述的规则,人工智能同样可以通过学习来具备相应的能力。这就是智能。

  嵌入式加上人工智能后,人工成本大大降低,想象空间大大延伸,其中可能就孕育了下一个杀手级的人工智能应用。

嵌入式的特殊局限

  现在,我们又有了一个新问题:为什么要从人工智能中单独切出一块叫嵌入式人工智能?

  前面已经说过,嵌入式人工智能的模型算法都是原来的那套,从理论层面并没有太多不同,问题出在嵌入式本身。

  嵌入式设备和通用计算机的计算环境大相径庭。平时我们感受最深的就是存储容量小。《AI嵌入式系统》给出了一组对比数据:常见的深度神经网络模型使用单精度浮点数存储参数对应的存储量在20MB至560MB之间,而传统低成本的嵌入式系统RAM存储容量最高也只有16MB。

  另一个同样捉襟见肘的是算力。嵌入式设备在算力方面一直不如通用计算机。还有一个容易被忽视的局限性是能耗。要知道深度学习模型都是电老虎,每次模型跑训练时显卡的风扇都要发出即将起飞的声音。而嵌入式设备在很多情况下是有耗能限制的。

  总而言之,也许我们很容易找到一个嵌入式应用场景需要人工智能且已有现成的模型满足要求本应是水到渠成的事但由于嵌入式本身的种种限制想要简单硬套人工智能的现有成果只能长使英雄泪满襟。

人工智能的应对方法

  方法不是没有!有两条路:一条是提升嵌入式设备的硬件条件不过这也变相限制了应用场景另一条就是人工智能自己做出优化减少对空间、算力和能耗的需求。现在大家选择了第二条路将问题带回到人工智能这一边于是有了嵌入式人工智能。

  这部分内容很多这里只做简单介绍方便大家了解嵌入式人工智能都研究哪些方面。人工智能要适应嵌入式环境就要进行字面意义上的“削足适履”在大幅减少资源需求的同时尽量保证性能不至于明显下降在嵌入式人工智能里面叫做优化譬如说矩阵乘法优化。

  过去在介绍机器学习的知识体系时说过矩阵运算是机器学习的骨骼。机器学习不是一种模型而是一堆模型而这些模型都大量使用了矩阵运算主要是矩阵乘法。如果矩阵乘法的运算量能够降下来模型整体的运算量也就能够降下来。

  道理好懂可是天下真有这种空手套白狼的好事吗?科学家还真给研究出来了!这要从Strassen矩阵相乘算法说起该算法于1969年提出是首款算法复杂度低于O(N3)的矩阵乘法。简单来说就是这款算法能够降低矩阵乘法的运算量譬如说2×2矩阵相乘常规算法进行8次乘法运算而采用本算法只需要进行7次矩阵乘法的运算量减少12.5%不过不是没成本的加法运算从4次提升至18次。就这样看起感觉没什么但一旦矩阵上了规模譬如说128×128的矩阵运算使用该算法能够降低约一半的矩阵乘法运算优化效果就十分可观了。类似的算法还有Winograd算法同样能够在大尺寸矩阵运算中将乘法运算降低50%。上面这类算法称为快速矩阵乘法另一种方案则是采用了牺牲精度提升速度的思想允许矩阵乘法结果存在一定误差这类算法称为近似矩阵乘法譬如基于数据统计相关性的近似矩阵乘法以及基于数据协方差低秩分解近似的快速乘法。类似的从算子层面进行优化的还有对卷积运算的优化卷积运算的作用不必多说了现在用深度神经网络做图像处理就离不开卷积运算优化的方向和矩阵乘法很类似也是从快速卷积算法和近似卷积算法两个方面展开研究譬如说一维循环卷积频域快速算法和基于卷积核低秩分解的二维快速卷积。

© 版权声明

相关文章