事实上,这个领域已经如此专注于桌面和基于云计算的应用,以至于许多嵌入式工程师没有太多考虑机器学习如何影响他们。大多数情况下,并没有。
然而,随着 TinyML 或微型机器学习(在微控制器和单板计算机等受限设备上的机器学习)的出现,机器学习已经与所有类型的工程师相关,包括那些从事嵌入式应用的工程师。此外,即使您熟悉 TinyML,对机器学习有一个通用的具体理解也是很重要的。
在本文中,我将概述机器学习,它是如何工作的,以及为什么它对嵌入式工程师很重要。 什么是机器学习?机器学习是人工智能(AI)领域的一个子集,是一门利用数学技术和大规模数据处理来构建程序,以发现输入和输出数据之间关系的学科。作为一个总括性的术语,人工智能涵盖了计算机科学的广泛领域,其重点是使机器能够在没有人类干预的情况下“思考”和行动。它涵盖了一切,从“一般智能”或机器按照人类的方式思考和行动的能力,到专门的、面向任务的智能,这就是机器学习的范畴。
我过去听到的机器学习定义的最强大的方法之一是与传统的、用于经典计算机编程的算法方法相比较。在经典计算中,工程师向计算机提供输入数据ーー例如,数字2和4ーー以及将它们转换为所需输出的算法ーー例如,用 x 和 y 乘以 z。当程序运行时,提供输入,并应用该算法产生输出。这可以在图1中看到。
图1。在一个经典的方法中,我们向计算机提供输入数据和算法,并要求得到答案另一方面,机器学习是向计算机提供一组输入和输出,并要求计算机识别“算法”(或用机器学习的说法称为模型)的过程,这种算法每次都将这些输入转化为输出。通常,这需要大量的输入,以确保模型每次都能正确地识别正确的输出。
例如,在图2中,如果我向 ML 系统提供数字2和2以及预期的输出4,它可能会决定该算法总是将这两个数字相加。但是,如果我然后提供数字2和4以及8的预期输出,模型将从两个例子中学到,正确的方法是将提供的两个数字相乘。
图2。有了机器学习,我们就有了数据(输入)和答案(输出) ,并且需要计算机通过确定输入和输出如何以对整个数据集为真的方式相互关联来推导出一种排序算法假设我使用一个简单的示例来定义一个复杂的字段,那么您可能会问: 为什么一个人要费心将不复杂的字段复杂化呢?为什么不坚持我们经典的算法计算方法呢?
答案是,倾向于机器学习的一类问题往往不能通过纯算法的方法来表达。没有一种简单的算法可以给计算机一张图片,然后让计算机判断图片中是否包含猫或人脸。相反,我们利用机器学习,给它数以千计的图片(作为像素的集合)与猫,和人的脸,两者都没有,和一个模型开发通过学习如何关联这些像素和像素组与预期的输出。当机器看到新的数据时,它会根据之前看到的所有示例推断出一个输出。这部分过程,通常称为预测或推断,是机器学习的魔力。
听起来很复杂,因为事实就是如此。在嵌入式和物联网(IoT)系统领域,机器学习越来越多地被用于机器视觉、异常检测和预测性维护等领域。在每一个区域中,我们收集大量的数据ーー图像和视频、加速度计读数、声音、热量和温度ーー用于监测设施、环境或机器。然而,我们常常很难将这些数据转化为我们可以采取行动的洞察力。条形图固然不错,但是如果我们真正想要的是能够在机器故障和脱机之前预测到它需要服务,那么简单的算法方法是不行的。 机器学习开发回路进入机器学习。在有能力的数据科学家和机器学习工程师的指导下,这个过程从数据开始。也就是说,我们嵌入式系统产生的大量数据。机器学习开发过程的第一步是收集数据,并在数据输入模型之前对其进行标记。标记是一个关键的分类步骤,也是我们将一组输入与预期输出关联起来的方式。 机器学习中的标记与数据采集例如,一组加速度计 x、 y 和 z 值可能对应于机器处于空闲状态,另一组可能意味着机器运行良好,第三组可能对应于问题。在图3中可以看到一个高级描述。