应用机器学习,第4部分:嵌入式系统
从系列中:应用机器学习
介绍在嵌入式设备上运行机器学习模型的几个关键技术和最佳实践。
该视频讨论了使模型更快和减少内存占用的选项,包括自动C/ c++代码生成、特征选择和模型缩减。
“机器学习”一词让人想到复杂的算法,这些算法使用大量的计算来训练一个模型。但是“嵌入式设备”上的计算在可用的内存和计算量上是有限的。
现在,当我说“嵌入式设备”时,我指的是带有特殊用途计算系统的物体,所以想想像家用电器或自动驾驶汽车中的传感器之类的东西。
今天,我们将讨论在为嵌入式设备准备机器学习模型时要记住的不同因素。
不同类型的模型需要不同数量的内存和时间来进行预测。例如,单个决策树速度很快,只需要少量内存。最近邻方法较慢,需要更多内存,因此您可能不希望在嵌入式应用程序中使用它们。
在决定在嵌入式设备上使用哪些模型时,要记住的另一件事是如何将模型传递到设备。
大多数嵌入式系统都是用低级语言编写的,比如C语言。
但是机器学习通常是在高级解释语言中完成的,比如MATLAB、Python或R。
如果你必须用两种不同的语言维护代码库,保持它们同步将是非常痛苦的。
MATLAB提供了自动将机器学习模型转换为C代码的工具,因此您不需要单独用C手动实现模型。
那么,如果在将一个模型转换为C之后,您发现它不能满足我们系统的需求,该怎么办呢?也许内存占用太大,或者模型需要太长时间才能做出预测?
您可以尝试其他类型的模型,看看代码是否满足需求。也许可以从一个简单的模型开始,比如决策树。
或者,您可以回到过程的早期,看看是否可以减少模型中的特征数量。您可以使用诸如邻域组件分析之类的工具,这些工具对于确定特性对结果的影响非常有用。如果您看到一些特征权重较低,您可以将它们从我们的模型中删除,使我们的模型更加简洁。
某些类型的模型具有与之相关的不同简化技术。对于决策树,您可以使用修剪技术,其中删除提供最小精度改进的节点。
另一种方法是减少存储模型参数所需的内存。例如,看看模型是否可以转换为保持可接受的精度的定点表示。
根据您的用例,这些策略中的任何一种都可能是合适的。硬件考虑、网络连接和预算都是影响设计决策的关键因素。
以上只是对嵌入机器学习模型的简要概述。有关为嵌入式设备准备模型的更多信息,请参阅下面的链接。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。