本文旨在为硬件和嵌入式工程师提供机器学习(ML)的背景,它是什么,它是如何工作的,它为什么重要,以及 tinyML 是如何适应的机器学习是一个始终存在并经常被误解的技术概念。数十年来,使用复杂处理和数学技术使计算机能够发现大量输入和输出数据之间的相关性的实践一直存在于我们对技术的集体意识中。近年来,随着以下方面的进步,科学技术得到了迅猛发展:
事实上,这个领域已经如此专注于桌面和基于云计算的应用,以至于许多嵌入式工程师没有太多考虑机器学习如何影响他们。大多数情况下,并没有。
然而,随着 TinyML 或微型机器学习(在微控制器和单板计算机等受限设备上的机器学习)的出现,机器学习已经与所有类型的工程师相关,包括那些从事嵌入式应用的工程师。此外,即使您熟悉 TinyML,对机器学习有一个通用的具体理解也是很重要的。
在本文中,我将概述机器学习,它是如何工作的,以及为什么它对嵌入式工程师很重要。
什么是机器学习?机器学习是人工智能(AI)领域的一个子集,是一门利用数学技术和大规模数据处理来构建程序,以发现输入和输出数据之间关系的学科。作为一个总括性的术语,人工智能涵盖了计算机科学的广泛领域,其重点是使机器能够在没有人类干预的情况下“思考”和行动。它涵盖了一切,从“一般智能”或机器按照人类的方式思考和行动的能力,到专门的、面向任务的智能,这就是机器学习的范畴。
我过去听到的机器学习定义的最强大的方法之一是与传统的、用于经典计算机编程的算法方法相比较。在经典计算中,工程师向计算机提供输入数据ーー例如,数字2和4ーー以及将它们转换为所需输出的算法ーー例如,用 x 和 y 乘以 z。当程序运行时,提供输入,并应用该算法产生输出。这可以在图1中看到。
图1。在一个经典的方法中,我们向计算机提供输入数据和算法,并要求得到答案另一方面,机器学习是向计算机提供一组输入和输出,并要求计算机识别“算法”(或用机器学习的说法称为模型)的过程,这种算法每次都将这些输入转化为输出。通常,这需要大量的输入,以确保模型每次都能正确地识别正确的输出。
例如,在图2中,如果我向 ML 系统提供数字2和2以及预期的输出4,它可能会决定该算法总是将这两个数字相加。但是,如果我然后提供数字2和4以及8的预期输出,模型将从两个例子中学到,正确的方法是将提供的两个数字相乘。
图2。有了机器学习,我们就有了数据(输入)和答案(输出) ,并且需要计算机通过确定输入和输出如何以对整个数据集为真的方式相互关联来推导出一种排序算法假设我使用一个简单的示例来定义一个复杂的字段,那么您可能会问: 为什么一个人要费心将不复杂的字段复杂化呢?为什么不坚持我们经典的算法计算方法呢?
答案是,倾向于机器学习的一类问题往往不能通过纯算法的方法来表达。没有一种简单的算法可以给计算机一张图片,然后让计算机判断图片中是否包含猫或人脸。相反,我们利用机器学习,给它数以千计的图片(作为像素的集合)与猫,和人的脸,两者都没有,和一个模型开发通过学习如何关联这些像素和像素组与预期的输出。当机器看到新的数据时,它会根据之前看到的所有示例推断出一个输出。这部分过程,通常称为预测或推断,是机器学习的魔力。
听起来很复杂,因为事实就是如此。在嵌入式和物联网(IoT)系统领域,机器学习越来越多地被用于机器视觉、异常检测和预测性维护等领域。在每一个区域中,我们收集大量的数据ーー图像和视频、加速度计读数、声音、热量和温度ーー用于监测设施、环境或机器。然而,我们常常很难将这些数据转化为我们可以采取行动的洞察力。条形图固然不错,但是如果我们真正想要的是能够在机器故障和脱机之前预测到它需要服务,那么简单的算法方法是不行的。
机器学习开发回路进入机器学习。在有能力的数据科学家和机器学习工程师的指导下,这个过程从数据开始。也就是说,我们嵌入式系统产生的大量数据。机器学习开发过程的第一步是收集数据,并在数据输入模型之前对其进行标记。标记是一个关键的分类步骤,也是我们将一组输入与预期输出关联起来的方式。
机器学习中的标记与数据采集例如,一组加速度计 x、 y 和 z 值可能对应于机器处于空闲状态,另一组可能意味着机器运行良好,第三组可能对应于问题。在图3中可以看到一个高级描述。
图3.ML 工程师在数据收集过程中使用标签对数据集进行分类数据收集和标记是一个耗时的过程,但对于正确处理数据至关重要。虽然机器学习领域有一些创新,利用预先训练的模型来抵消一些工作和新兴的工具来简化从实际系统收集数据,但这是一个不容忽视的步骤。世界上没有任何机器学习模型能够可靠地告诉你,你的机器或设备是否运行良好,或者在没有看到来自该机器或其他类似机器的实际数据的情况下即将崩溃。
机器学习模型的开发、训练、测试、提炼数据收集之后,接下来的步骤是模型开发、培训、测试和细化。在这个阶段,数据科学家或工程师创建一个程序,该程序接收收集到的大量输入数据,并使用一种或多种方法将其转换为预期的输出。解释这些方法可以填满容量,但是只要说明大多数模型对其输入执行一组转换(例如,向量和矩阵乘法)就足够了。此外,他们还将调整每个输入的权重,以便找到一组与预期输出可靠相关的权重和函数。
过程的这个阶段通常是迭代的。工程师将调整模型、工具和使用的方法,以及在模型训练期间运行的迭代次数和其他参数,以建立可靠的输入数据与正确输出(即标签)的关联。一旦工程师对这种相关性感到满意,他们就使用训练中未使用的输入来测试模型,以了解模型在未知数据上的表现。如果模型在这个新数据上表现不佳,工程师会重复图4所示的循环,并进一步细化模型。
图4. 模型开发是一个有许多步骤的迭代过程,但它始于数据收集一旦模型准备就绪,就可以部署它并对新数据进行实时预测。在传统的机器学习中,模型被部署到云服务中,以便运行中的应用程序可以调用它,该应用程序提供所需的输入并接收来自模型的输出。应用程序可能会提供一张图片,询问是否有人在场,或者询问一组加速计读数,并询问模型这组读数是否与一台空闲的、正在运行的或坏掉的机器相对应。
在这个过程中 TinyML 是如此重要,如此开创性。
那么 TinyML 适合哪里呢?如果还不清楚的话,机器学习是一个数据密集型的过程。当您试图通过相关性获得模型时,需要大量数据来为该模型提供信息。数以百计的图像或数以千计的传感器读数。事实上,模型训练的过程是如此密集,如此专业化,以至于几乎任何中央处理器(CPU)都要占用大量的资源,无论它有多高性能。相反,在机器学习中非常常见的向量和矩阵数学操作与图形处理应用程序并无不同,这就是为什么 GPU 已经成为模型开发的流行选择。
鉴于对强大计算能力的需求,云已经成为事实上卸载训练模型工作并托管它们进行实时预测的场所。虽然模型训练仍然是云计算的领域,特别是对于嵌入式和物联网应用程序,但是我们越能够实时预测数据捕获的位置,我们的系统就会越好。当我们在微控制器上运行模型时,我们获得了内置安全性和低延迟的好处,以及在本地环境下做决定和采取行动的能力,而不需要依赖互联网连接。
这是 TinyML 的领域,像 Edge Impulse 这样的平台公司正在构建基于云的传感器数据收集工具和机器学习架构,这些架构输出为微控制器单元(MCU)专门设计的紧凑、高效的模型。从意法
半导体到阿里夫半导体(Alif Semiconductor) ,越来越多的硅厂商正在制造具有类似于 gpu 的计算能力的芯片,这使得它们能够完美地在传感器旁边运行机器学习工作负载,而这正是数据收集的地方。
对于嵌入式和物联网工程师来说,现在是探索机器学习世界的最佳时机,从云到最小的设备。我们的系统越来越复杂,处理的数据也越来越多。把机器学习带到边缘意味着我们可以处理这些数据,更快地做出决定。
纪客老白淘宝店铺:
https://shop487754824.taobao.com ... umber_id=2484694219