什么是机器学习?如何将其应用到Cortex-M MCU中去?

https://www.eefocus.com/mcu-dsp/454674
 

人工智能(AI)及其子集机器学习(ML)均代表着人类生存的重要发展里程碑。虽然人们仍然在争论一些道德问题,但 AI 和 ML 所提供的潜在好处实在令人难以抗拒。

  

AI 是一个非常广泛的主题(如图 1),在这里详细介绍 ML,特别是 ML 如何从云渗透到网络的边缘。

 

 

  

1 什么是机器学习?

“机器能够思考吗?”这个问题促使伟大的科学家 Alan Turing 开发了“图灵测试(Turing test)”,今天这仍然是回答这个问题的基准。如果机器可以学习,那么他们在考虑必须证明事项(QED)吗?这仍然是关于“思考”定义的诸多争论的主题。机器需要一个开始学习的基础,不过随着时间的推移,它们正在进行自主学习并发展出更强的理解能力。

  

真正引发 ML 爆炸的是云计算和大数据中几乎无限的容量和访问。后端系统可以提供数据,然后在云服务器上运行算法。从云,我们可以获得见解并做出决策。 因此,ML 收集数据,通过基于云的算法和训练集处理数据,并且采取行动。ML 在整个过程中创建新的学习路径,人手操作并非绝对必要。

  

ML 有 4 类操作:监督学习、无监督学习、半监督学习和强化学习。

  

1)监督学习。监督学习使用带有特征和标记的数据集,然后在训练过程中将其提供给学习算法,其中,ML 将会弄清楚所选特征与标签之间的关系。而后,人们使用学习结果对新的未标记数据进行分类。

  

2)无监督学习。当不知道正确答案是什么时,就会发生无监督学习,因此数据集是未经标记的。在这种情况下,预计会找到数据本身所表明的自然分组的模式。答案并不明显。此外,正确答案可能有许多组合,这取决于所考虑的变量。

  

3)半监督学习。对于仅有部分标记的大型数据集可以做些什么呢?要么完成标记其余数据的过程,要么尝试使用半监督学习算法。许多现实世界的机器学习问题都属于这种类型,因为将整个数据集进行标记然后进行完全监督学习的方法通常过于昂贵和耗时。另一方面,可能不一定需要无监督学习方法。因此,通过结合这两种学习方法,理论上应该可以提供两全其美的优势。研究表明,同时使用标记和未标记数据实际上提供了最佳的学习长期结果。

  

4)强化学习。强化学习是最复杂的方法,这与人类实际学习的方式最相似,这种复杂的学习方式受到博弈论和行为心理学的启发。

  

这种学习方法通常涉及代理、正在进行操作的机器和解释器,代理将会暴露于执行操作的环境中,然后,解释器将根据该操作的成功与否来奖励或惩罚代理。

  

代理的目标是通过以不同的方式与环境迭代交互,从而找到最大化奖励的最佳方式,数据科学家在这种学习方法唯一为代理提供的,就是量化绩效的方法。

  

这种方法已被许多开发机器人和自动驾驶车辆的企业所采用。它通常与监督学习等其他学习技术一起部署,创建一个集合学习模型。这是因为很难将强化学习应用于环境、行动和规则变化的场景。

  

2 数据分组和分类

所获取的数据需要分类为相关的对象,二项分类是指数据分为两类中的一类,例如:“在温度范围内”和“超出温度范围”。多级分类则允许多种分类,例如对于温度分类,它可以读作:“在范围内”、“关断高”、“临界高”、“高警报”、“低警报”、“临界低”和“关断低”。

  

异常检测是单一类型分类算法,其唯一目标是查找数据集中的异常值或出现在正态分布之外的异常对象。这可用于检测故障设备中的奇怪瞬变之类事件。

  

3 学习模型

1)线性回归

  

这项技巧长期以来一直是统计学家的主要工具,而数据科学和统计学在各个领域都具有很多的相似之处。线性回归已经应用于机器学习,作为在自变量变化时显示因变量和自变量之间关系的标准方法。

  

学习方法:监督学习(如图 2)。

 

 

  

2)决策树

  

这种算法具有很高的可解释性,可以很好地处理异常值和缺失观察结果。可以将多个决策树协同工作以创建称为合奏树的模型。合奏树可以提高预测准确度,同时在一定程度上减少过度拟合。

  

学习方法:监督学习(如图 3)。

 

 

  

3)支持向量机

  

支持向量机(SVM)通常用于分类,但也可以转换为回归算法。通过找到最佳超平面(不同数据类型之间的划分),SVM 便可以在分类问题上带来更高的准确度。为了找到最佳超平面,这个算法将在数据类型之间绘制多个超平面。然后,算法将会计算从超平面到最近向量点的距离,通常称为余量。然后,它会选择使用产生最大余量的超平面,即最优超平面。最后在分类过程中利用最优超平面。

  

学习方法:监督学习(如图 4)。

 

 

  

4)K-Means 聚类算法

  

K-Means 聚类算法用于查找数据点之间的相似性并将它们分类为多个不同的组别,K 是组别的数量。

  

学习方法:无监督学习(如图 5)。

 

 

  

5)分层聚类

  

分层聚类是沿着分层树来创建已知数量的不同大小的重叠群集以形成分类系统,这种聚类算法可以通过各种方法来实现,最常见的方法是凝聚和分裂。重复分裂过程,直到获得所需数量的群集。

  

学习方法:无监督学习。

  

6)神经网络算法

  

神经网络(NN)与机器人和神经科学高度相关,因此,它自然成为最令人兴奋的探索算法。神经网络,特别是人工神经网络,由 3 个层级组成:输入层、输出层和一个或多个隐藏层,用于检测数据中的模式,通过在每次处理一组数据时为隐藏层内的神经元分配权重来实现。

  

学习方法:无监督学习(如图 6)。

 

 

 

4 将机器学习带到网络边缘

那么,我们现在对于 ML 究竟是什么有了一点基础,这与在遍布各处的数十亿个产品中的小型嵌入式单元里的微控制器(MCU)有什么关系呢?

  

当 ML 科学以一日千里的速度快速发展时,其效率也相应提高,ML 的调整元素也适用于越来越多用例。那些先前不得不在云完成的工作,现在已有可能在具有 1 MB 闪存和 256 kB RAM 的 MCU,比如来自 Nordic 的 nRF52840 SoC 上完成了。没有人说应当在这类空间受限设备中这么做,但它已被证明是可行的,而一流的无线嵌入式 SoC 具有更大的处理能力,ML 工具和算法更适用于这样的平台。这当然存在着局限性,nRF52840 之类器件永远无法及得上基于云的系统的绝对优势。但是,它能够做到在没有云连接的情况下执行实时的本地化的专用机器学习。当然,它可以与基于云的系统(如 Matillion 或许多其他系统)结合使用,以提供具有众多优势的混合 ML 学习方法。

  

5 用于嵌入式 Cortex-M MCU 的 ML 工具

现在有某些工具可以为 ML 创建学习集 。Tensorflow 与其相关的 Tensorflow Lite 可能是最广为人知的工具。这款工具是谷歌开发的,是为 ML 用途设计的开源库框架。谷歌将其用于自己的人工智能用途,具有足够强大的图像识别功能。工作流程沿袭使用 python 和程序库来构建模型和训练集的多个阶段。而后,Tensorflow 将生成在设备或系统上实施的 C++代码。用户可从 Apache MXNET、Microsoft CNTK 和 Pytorch 获取其他 ML 程序库。

 

6 目前发展状况和未来展望

迄今为止,ML 仍然是一个前沿领域,还有很多的道路要走。但笔者认为,预计未来数年我们将看到 ML 出现在大量的嵌入式系统中,有些是相当粗浅的,有些是非常复杂的。声音和语音识别应用显然具有吸引力,机器中的音频识别也是如此。在这些机器应用中,可以通过音频识别发现轴承或电机可能接近使用寿命,并需要更换。

  

就在 2019 年的 Google I/O 2019 活动中,Arm 和谷歌宣布针对 Tensorflow Lite 和 μTensor 项目建立合作伙伴关系,这些项目将在 Tensorflow Lite Micro Project 下进行合并。现有一个在 Arm mbed 上使用 ML 进行关键词搜索(KWS)的开源项目 [1] ,如果你有兴趣,请在这里查看。

  

机器学习的发展如日中天,日后我们会继续为你更多有关 Cortex-M 和 Nordic 器件之 ML 应用的信息。

  

参考文献

[1]ML-KWS-for-MCU[EB/OL].https://github.com/ARM-software/ML-KWS-for-MCU/blob/master/Deployment/README.md

  

机器学习   云服务器   MCU   自动驾驶车   Cortex-M


分享到:

来源:互联网

版权声明:本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

 

你可能感兴趣的