Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

实现一个边缘机器学习项目到底有多难?

我们每天都要跟传感器打交道,如果你不相信的话,拿出手机,Google一下它里面配备了多少种传感器—加速度计,陀螺仪,压力传感器,……,或许还能发现很多你从未听过的名词。

这些传感器输出的信号都是独特的。理解它信号的含义,对信号进行处理,都需要有专业背景和经验。如果你的机器学习模型需要的数据正好来自这些传感器,通常意味着,你需要雇佣熟知传感器并且具有信号处理能力的机器学习工程师。

即便不考虑组建机器学习团队的成本和难度,进入项目开发流程,仍然还有很多难关需要克服,而这些经常成为被“忽略”的事实。

传统机器学习流程

对于机器学习工程师来说,除了传统软件开发工具之外,他们还需要使用多套开发工具来创建ML模型。就算已经有像Jupyter Notebook这样比较强大并且相对成熟的工具,但其目前也还存在着极大的局限性。虽然针对机器学习开发的新平台和工具层出不穷,但是目前还没有一个端到端的解决方案,让工程师们可以实现整套流程,从创建项目开始,一直到在嵌入式芯片上运行机器学习模型。此外,这些工具也需要工程师们花费额外的精力和时间来学习,并且会增加项目的管理成本和硬件及软件成本。

在开发机器学习模型的过程中,通常需要进行大量的实验来找到表现最好的模型,而且每一次不同的实验之间都可能存在很多变数。保证实验数据的可复现性非常重要,所以对于硬件,操作平台,模型配置,训练数据等等都需要做到精确的版本控制,这些都需要花费很多的精力和时间来完成。

就像在传统软件开发过程中,开发人员们从来没有摆脱过Bug的困扰,在机器学习开发中,类似的问题依然存在。不同的是,传统软件开发人员已经建立了一套测试和debug的最佳方式,然而,这些方式并不适合机器学习。当机器学习模型失败时,通常没有信息显示失败的原因和改进的方向。除此之外,造成失败的还有可能是一些“其他”因素,包括糟糕的训练数据等等,这让问题更难被排除。

有一个案例就是对这一问题最好的说明,Anders Arpteg在他与其他三位作者合著的《Software Engineering Challenges of Deep Learning》一文中提到,为了解决某个公司天气预测系统中重组后输出图像分辨率过低的问题,开发人员花费了2周时间,用不同的神经网络模型完成了几百次实验,才发现是由于pooling operation过于激进,导致分辨率在数据被编码之前就已经受损,而这一结果正是由于缺乏针对深度神经网络的debug调试工具。

而且这篇文章也明确指出,在如何简单和高效地构建一个高质量的可用于生产的机器学习系统上仍然需要更多的研究和努力。

从公司的角度来说,要构建一个复杂的机器学习模型,通常需要花费几天甚至几周的时间来训练,而且无法对结果做出预测,也无法预知如果模型出现问题,究竟需要花费多少时间来解决这些问题,那么构建这样一个模型的成本是非常高的。

即便对于一个已经部署的可用于生产的机器学习系统来说,保障它处于最新状态也需要花费大量的时间和努力。因为对一个成熟的机器学习系统来说,它一般会依赖许多不同的pipelines,这些pipelines可能是用不同的程序语言,格式和结构系统实现的,它们的改变,增加或者移除,甚至被弃用都是很常见的情况,因此要确保检测系统和日志系统能获取到这些信息。但这些成本通常也是很多公司在进行项目规划时可能不会考虑到的。

对于传统软件开发而言,一个相同的程序可以运行在不同的设备上,例如,Win10系统可以运行在成千上万台不同型号的电脑上(这里讨论的是理论可行性,不考虑为了让用户体验最优而要做的种种适配性工作),但是对于机器学习而言,通常每一种不同的设备都需要不同对待。

以预测性维护为例,如果汽车厂商要为发动机加入预测性维护功能,那么即便有2种不同型号的汽车使用的是同一种发动机,从理论上来说,这2种车型的发动机数据都需要单独采集和处理,进行特征提取,然后再进行模型训练,调参等步骤。

Qeexo在FingerSense(指关节技术)项目上也遇到过同样的问题,这项技术是在手机上执行机器学习推理,分辨手指、指关节等不同的输入方式,依靠的也是传感器数据。不同的手机型号会使用不同的硬件配置,一台手机上采集到的数据无法满足另一台不同型号手机的需求,所以每一个不同的手机型号都必须经历一次从采集数据开始到配置机器学习库的完整过程,再加上即便是同一个型号的手机,在很多部件也会使用多家供应商提供的不同产品,这又衍生出更多种不同的可能性。

以上种种问题也从一定程度上解释了为什么眼下AI成为了大公司追逐的游戏,因为对于中小型企业来说,尝鲜成本极高,而且一旦做错决定就很有可能给公司带来极大的危险,所以如何规避或者降低风险也就成为了领导者们首先需要考虑的问题。

也正是因为这些原因,自动化机器学习平台进入了很多公司的视野。将传统机器学习过程中的特征提取,模型选择超参数优化,模型验证等等步骤通过自动化的方式来实现,极大地降低了普通企业在应用机器学习时的难度和所需的资源。Qeexo也基于自己的经验与需要,创建了Qeexo AutoML,利用传感器数据针对高度受限的环境快速创建机器学习解决方案。自动化机器学习到底是什么—这一问题,我们也会在之后的文章中进行详细的介绍。

Qeexo
Qeexo

Qeexo是第一家为嵌入式边缘设备(Cortex M0-M4级别)提供自动化端到端机器学习服务的公司。在Qeexo AutoML的支持下,Qeexo已经将机器学习部署到全球范围内超过2.1亿台消费者设备上。

http://www.qeexochina.cn
专栏二维码
产业机器学习边缘AI传感器
相关数据
机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

超参数优化技术

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

信号处理技术

信号处理涉及到信号的分析、合成和修改。信号被宽泛地定义为传递“关于某种现象的行为或属性的信息(如声音、图像和生物测量)”的函数。例如,信号处理技术用于提高信号传输的保真度、存储效率和主观质量,并在测量信号中强调或检测感兴趣的组件。我们熟悉的语音、图像都可以看做是一种信号形式。因此,对于语音、图像的增强、降噪、识别等等操作本质上都是信号处理。

模型选择技术

模型选择是从给定数据的一组候选模型中选择统计模型的任务。对于具有类似预测或解释力的候选模型,最简单的模型最有可能是最佳选择(奥卡姆剃刀)。

深度神经网络技术

深度神经网络(DNN)是深度学习的一种框架,它是一种具备至少一个隐层的神经网络。与浅层神经网络类似,深度神经网络也能够为复杂非线性系统提供建模,但多出的层次为模型提供了更高的抽象层次,因而提高了模型的能力。

自动化机器学习技术

机器学习最近在许多应用领域取得了长足的进步,这促成了对机器学习系统的不断增长的需求,并希望机器学习系统可以被新手快速地熟悉并使用。相应地,越来越多的商业企业推出产品旨在满足这种需求。这些服务需要解决的核心问题是:在给定数据集上使用哪种机器学习算法、是否以及如何预处理其特征以及如何设置所有超参数。这即是自动化学习(AutoML)企图解决的问题。

推荐文章
暂无评论
暂无评论~