导读:今天介绍一种你没有玩过的机器学习船新版本,叫TinyML。ML我们都很熟了,而TinyML则是Tiny Machine Learning的缩写,直译为“微型机器学习”,是一种面向特定嵌入式产品的机器学习技术。面向哪种特定嵌入式产品呢?

作者:木羊同学

来源:华章计算机(hzbook_jsj)

1

下一波机器学习革命

先说回TinyML这个词,也许大家听着感觉耳生,国内对TinyML目前有点后知后觉,还只有零星的介绍。但在行业内,TinyML已经被视作一种具有特定意义的专业术语,而不只是某本书或者某个公司偶然提出来的概念性噱头。

我专门就这方面调查了一下,发现TinyML的行业化发展已经搞得有声有色。在工业界,TinyML已经成立了专门的行业委员会,定期举办TinyML峰会。在今年的TinyML峰会上,英伟达、ARM、高通、谷歌、微软、三星等等大公司悉数登台亮相,行业规模和影响力都可见一斑。在学术界方面,TinyML方向已经出版了一本经典的书,甚至有部分知名大学已经开设有相关的课程。

不过,这就有了问题。机器学习我们都知道,可究竟怎么样才能算作“Tiny”?而且,为什么要在已经百花齐放的机器学习领域,又另外搞出个TinyML来呢?这就要从深度学习的痛点说起。

2

深度学习的“大”问题

TinyML虽然挂了个“ML”名号,不过主要使用的是DL的技术,也就是主打深度学习模型。这个槽点我们姑且放过它,毕竟现在深度学习大行其道,但单叫DL又未免格局太小,没准明天又有其它哪款ML算法逆风翻盘了呢?

总之,TinyML目前的当家花旦就是深度学习模型,但是,转折来了,深度学习模型存在一个大问题,TinyML不能拿来就直接使用,必须先进行一些处理。

那么,深度学习存在什么大问题呢?

大,就是问题。深度学习模型采用的是神经网络结构,规模可以很大,而且正在越来越大。本来呢,深度学习模型规模大倒也不是什么问题,相反还是优势。回想一下,在深度学习流行以后,大家都很爱的一个问题,就是:深度学习为什么比其它机器学习模型效果要好?

这是个很好的问题。很多初学者会理所当然地以为,机器学习也像手机一样,新出来的性能必然要比老的好,深度学习是机器学习最新发展出来的技术,当然要比其它模型效果好。

这里面包含了几个误解。首先,深度学习不“新”。当然,深度学习确实是这几年崛起的新技术,但却不是这几年才横空出世。机器学习领域有几个经典算法,神经网络就是其中之一。而说深度学习是神经网络的继承而发展都未免太过生分了,深度学习就是神经网络加深了网络然后换了个皮,按我说,算是老树开新花。

哪个模型好哪个模型坏也是大家喜欢讨论的问题,其实,这个问题早有定论。机器学习领域有个著名的NFL定理(No Free Lunch Theorem) ,中文一般翻译为没有免费午餐定理。NFL定理包含了相当复杂的数学证明过程,不过简单来说,NFL定理给了我们一个非常清晰的结论:机器学习模型效果好不好,不是由模型本身决定的,而是看数据的具体情况。再简单一点,就是模型本身没有好坏。

既然是这样,那深度学习究竟好在哪里呢,又为什么会在这几年异军突起呢?

最常见的解释是这几年硬件发展了,高性能的硬件便宜了。这个回答不能说不对,但是显然忽略了主角。高性能硬件便宜了,对于所有算法应该都是同样的利好,为什么唯独是深度学习崛起了?很简单,深度学习模型有一个现在看来非常好的特性,这就是模型规模和模型性能保持了“水涨船高”的良好关系。随着深度学习模型规模的不断增加,模型的预测性能也能得到同步提升,简单来说就是正相关。相比之下,其它机器学习模型都没有这个特性,所以很容易达到性能瓶颈,需要费好大的力气找另外的路子才能提升。

为什么说这是一个现在看来非常好的特性呢?因为模型的规模越大,计算量也就越大,需要的计算资源成倍增加。以前硬件成本高,算力并不富裕,多买一杯秋天的奶茶都得扣着手指数半天。在这种算力有天花板的情况下,深度学习,准确来说,那时还叫神经网络模型的这种特性,并不会发挥出多大优势。但是时代变了,现在硬件白菜价了,算力四舍五入以后约等于无限量供应,那深度学习这种只要模型大,效果就能“奥利给”的硬派作风就变得非常讨人喜欢,所以“大力出奇迹”这种暴力美学已经成为现在学界的主流研究方向。

但是,深度学习的这一碾压性优势,到了TinyML领域,就变成了十足的劣势了。

3

Tiny的世界

前面我们简单提到,TinyML是面向特定嵌入式产品。我们对嵌入式产品会有一个一般性的印象:对耗电量十分敏感。在TinyML这里,耗电量的指标就变得更为苛刻了:功耗必须低于1毫瓦。

这是一个非常苛刻的指标,平时跑深度模型必不可少的各种豪横GPU挪一下屁股都得好几百瓦,肯定直接出局了,连很多以节能著称的嵌入式设备也严重超标,包括我们熟知的树莓派。树莓派人称极客玩具,特点就是功耗低。低到什么程度呢?可以忽略不计,所以经常有人开了就再也不关机,除非出现故障或者停电。但即使是树莓派这样的嵌入式设备,功耗也高达数百毫瓦,远远超过了TinyML的标准。

为什么TinyML要定下如此苛刻的标准呢?这和TinyML应用场景密切相关,这类场景主要有两个特点,第一个特点肯定是存在需要智能技术才能完成的任务,譬如说包含有图像识别、音频识别等等任务;第二个特点是需要长时间待机,所以必须能耗很低。很多研究认为,从当前智能设备、物联网设备和嵌入式设备等等的发展来看,TinyML应用场景的这两个特点会成为未来各种设备最基本的两项要求。

最典型的例子就是智能设备的唤醒,现在各种智能助手非常多,知名度最高的应属iOS的Siri,这些智能助手平时处于休眠状态,但只要我们说出特定的唤醒词,如“嘿Siri”,智能助手就马上在前台出现和我们交互。这个智能助手的唤醒过程,就是一个典型的TinyML应用场景,大致流程分三步:首先启动深度学习网络的音频识别任务,然后持续地捕捉环境音频传入模型,模型不断进行识别,一旦识别到唤醒词,则启动智能助手。

TinyML一般是部署在什么设备上的呢?大家可能看到开头的“嵌入式”就会下意识想到树莓派,以为TinyML是一种在树莓派上开发机器学习的技术,其实不是。树莓派功耗超标,没法用来开发TinyML。那用什么开发TinyML呢?一般使用超低功耗微控制器,这就是Tiny的由来。微控制器只能完成运算,而一些外围功能,譬如环境音的拾音功能,则需要搭配特定的传感器组件来完成,所以一般是通过开发板来使用微控制器,通常会选择另一款与树莓派齐名的网红嵌入式产品,叫Arduino。

4

TinyML下的深度学习

最难也是最有趣的地方终于要到了,怎么才能满足TinyML的要求,要在不到1毫瓦功耗的微控制器上部署深度学习模型呢?

先介绍部署深度学习模型的一般流程。要使用深度学习模型,第一步自然是需要训练模型,这一步实际包括三大项任务:收集数据,搭建模型以及使用数据训练模型。这三项任务是机器学习任务和深度学习任务的三个非常重要的环节,主要的任务时间就是用来完成这三项工作,内容很多,展开都可以分别写一本书,也是出研究成果的热门方向。

不过,对于TinyML来说,这三项虽然重要,但都属于常规动作,重头戏放在后边。但是,这里有一个问题。收集数据和搭建模型就不用说了,使用数据训练模型可是一件重体力劳动,尤其是训练深度学习的模型。前面我们说,深度学习模型有个现在来看非常好的特性,那就是模型规模和模型性能正相关,但是这也带来一个问题,模型的规模一旦大起来,计算量自然就要增加,虽然现在硬件便宜了,算力可以约等于无限量供应,但算力可也是需要电力来驱动的,这一连串的最终结果是,深度学习模型都一个接一个地成了业界有名的电老虎,譬如人称史上规模最大的GPT-3模型,一次训练成本就高达1300万美金。而TinyML要求的功耗不得超过1毫安,不但在能耗上上了紧箍咒,为了达到类似要求,相应的硬件资源,譬如内存等等,也会进行严格限制,所以,我们即使用小一点的深度学习模型,对于TinyML的小身板来说,也已经是庞然大物,想要在功耗如此低的设备上完成模型训练,必然是不可能的任务。

那怎么办呢?TinyML采取的办法是分离,模型训练这些重体力活还是照旧放到GPU上跑,没有了1毫安的紧箍咒,自然可以放飞了玩,只要最后把训练好的模型吐给我就行。所以对于TinyML来说,第一步是载入模型。

载入模型本身很简单,写成代码的话也就几行完事,不过可能准备工作反而比较多。首先,我们的模型是在通用平台上训练,而最终需要在微控制器上使用,模型运行的环境有所不同。目前,业界在嵌入式深度学习方面,名气最大的工具当数Google推出的TensorFlow Lite,是深度学习两大阵营之一的TensorFlow的嵌入式版本。TensorFlow Lite针对嵌入式平台进行了专门的优化设计。不过,对于微处理器来说,要完全支持TensorFlow Lite还是太难了,于是Google又推出了TensorFlow Lite for Microcontrollers,也就是微处理器版的TensorFlow Lite。

要通过TensorFlow Lite for Microcontrollers载入使用TensorFlow训练的模型,需要考虑平台之间存在差异的问题,譬如运行模型需要全套的算子,而TensorFlow Lite只支持TensorFlow的部分算子,这就可能需要做一些额外的处理才能让模型正常跑起来。

载入模型之后,接下来就流程就和我们前面介绍的基本一致,把微处理器和传感器打通,把外部数据传给模型,最后吐出结果。不过因为TinyML设备的硬件资源捉襟见肘,尤其是内存,可能还需要做一些额外的调整工作。

TinyML很可能是机器学习下一波的爆发点,当然各种技术细节也很多,要想更系统地了解这方面内容,我推荐阅读《TinyML:基于TensorFlow Lite在Arduino和超低功耗微处理控制器上部署机器学习》。这是目前我看到市面唯一一本专门介绍TinyML的书,同时也是一本新书,2019年出的英文版,2020年就出了中文版,机工华章社跟进非常快,点个赞!这本书是TinyML领域当前最有名气的一本书,极具权威性,作者Pete Warden就是TensorFlow Lite开发团队的核心成员,对于TinyML和如何开发TinyML产品,有许多具有指导性的观点。这本书还由浅入深并且安排了许多实践案例,特别适合作为了解TinyML和进入这一领域的第一本书。

5

推荐阅读

01

《TinyML:基于TensorFlow Lite在Arduino和超低功耗微控制器上部署机器学习》

作者:(美)皮特•沃登(Pete Warden)

(美)丹尼尔•西图纳亚克(Daniel Situnayake)

译者:魏兰,卜杰 译 王铁震

ISBN:978-7-111-66422-2

卖点:

1)内容过硬。谷歌TensorFlow团队创始成员领衔撰写,谷歌工程师翻译并审校;

2)大咖推荐。Arduino联合创始人、Arm副总裁联袂推荐;

3)题材新颖。TinyML里程碑级著作,手把手教你在Arduino和微控制器上部署ML;

4)知识体系完善。适合各层次学生及从业人员,无需任何机器学习或者微控制器开发经验。

推荐语:

谷歌TensorFlow团队创始成员领衔撰写,谷歌工程师翻译并审校,Arduino联合创始人、Arm副总裁联袂推荐!TinyML里程碑级著作,手把手教你在Arduino和微控制器上部署ML。“美亚”嵌入式系统畅销榜首图书。

02

《移动传感器与情境感知计算》

作者:[美] 玛尼什· J.贾加(Manish J. Gajjar)

译者:陈彦如 张媛媛 陈良银

ISBN:978-7-111-63300-6

卖点:

结合移动计算领域的知识,展示了创新的移动和传感器解决方案,为各类平台提供了增强型个性化的用户体验,其中包括快速增长的移动健康领域和虚拟现实领域。通过阅读本书,你将了解移动和传感器融合如何促进信息物理系统和物联网的发展,以及与物理世界直接交互的应用,书中全面涵盖了平台组件和安全、隐私、电源管理以及与更广泛的生态系统的交互等关键问题。

推荐语:

Intel技术专家撰写,基于移动计算的传感器生态系统架构指南,涵盖不同行业的应用实例。

03

《移动平台深度神经网络实战:原理、架构与优化》

作者:卢誉声

ISBN:978-7-111-64100-1

卖点:

(1)业界专家联袂推荐,资深专家手把手教你开发移动平台人工智能系统

(2)精讲移动平台深度学习系统所需核心算法、硬件级指令集、系统设计与编程实战、海量数据处理、业界流行框架裁剪与产品级性能优化策略等

推荐语:

谷歌、华为,ARM专家及C++专家侯捷联袂推荐!AIoT时代来临,移动平台正在成为工业实践最重要的阵地!这本书手把手教会你如何把智能装进移动端,开发移动平台人工智能系统解决方案,不止分享知识,还完整呈现深度学习的学习路径!让你的学习之路有方向,不迷茫!

6

关于作者

莫凡,网名木羊同学。娱乐向机器学习解说选手,《机器学习算法的数学解析与Python实现》作者,前沿技术发展观潮者,擅长高冷技术的“白菜化”解说,微信公众号“睡前机器学习”,个人知乎号“木羊”。

扫码关注作者

更多精彩回顾

书讯 |10月书讯(下)| 双节同庆,读书正当时

书讯 |10月书讯(上)| 双节同庆,读书正当时

资讯 |DB-Engines 10月数据库排名:“三大王”无人能敌,PostgreSQL紧随其后

上新 | 百度官方出品 | 全面解读PaddlePaddle,零基础快速入门深度学习
书单 | 开学季——计算机专业学生必读的10本畅销经典

干货 | 数据分析必读干货:简单而实用的3大分析方法

收藏 | (万字长文)Spring的核心知识尽揽其中

视频 | 大佬出镜推荐不可不读系列——程序员陈彼得

赠书 | 【第26期】Coroutines(协程)我是这样理解的!

点击阅读全文了解更多好书

机器学习领域已经百花齐放了,为何还要搞个TinyML?相关推荐

  1. 人工智能和机器学习领域有哪些有趣的开源项目

    人工智能和机器学习领域有哪些有趣的开源项目? 投递人 itwriter 发布于 2014-12-02 11:21 评论(0) 有20人阅读  原文链接  [收藏]  « 本文简要介绍了 10 款   ...

  2. 论机器学习领域的内卷

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 编辑:陈萍等,来源:机器之心 机器学习内卷了吗? 「没有博士学位,在机器 ...

  3. 论机器学习领域的内卷:不读PhD,我配不配找工作?

    机器学习内卷了吗? 「没有博士学位,在机器学习领域就业会变得越来越难吗?」最近,一个 Reddit 热帖引发了大量讨论. 对于单个研究者.从业者来说,毫无疑问,机器学习领域确实「卷」起来了.这几年来, ...

  4. 内卷到逆天!机器学习领域不读PhD,我配不配找工作?

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:机器之心 AI博士笔记系列推荐 周志华<机器学习>手推笔记正式开源!可打印版本附pdf下载链接 机 ...

  5. 数学不好,进入机器学习领域还有戏吗?

    自从Google的AlphaGo引爆了人工智能这个领域后,大量的人才开始涌入人工智能领域,各大公司也都开始布局人工智能方向.看一个领域的火爆程度,直接看相关职位的招聘人数和平均薪酬即可.就拿各大公司的 ...

  6. AI入门:机器学习领域基础知识

    本章要点: AI与人类大脑的联系: 对输入/输出建模: 分类和回归: 时间序列: 训练. 外行人都以为人工智能是人造大脑,并且总把它和科幻电影中的机器人联系起来,而实际上这些科幻场景与现如今的人工智能 ...

  7. 机器学习领域最全综述列表!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:kaiyuan,来源:NewBeeNLP 继续来给大家分享gith ...

  8. 史上最强!机器学习领域最全综述列表来啦!

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 作者:kaiyuan,来源:NewBeeNLP 继续来给大家分享github上的干货,一个『机 ...

  9. 2020 IEEE冯诺依曼奖得主:Michael Jordan --机器学习领域泰斗级人物

    近日,2020 年度 IEEE 冯诺伊曼奖项结果正式公布.机器学习泰斗 Michael Jordan 摘得本年度奖项,获奖理由为「对机器学习和数据科学的重大贡献」. 关于冯诺依曼奖 IEEE 冯诺依曼 ...

最新文章

  1. 2021年春季学期-信号与系统-第十一次作业参考答案-第三小题
  2. 2. Python3输入与输出
  3. python抽奖概率设计_通过python分析原神,结果出现了“这种情况”
  4. 晒一下我的代码生成器
  5. Spring循环依赖源码剖析
  6. 新格尔软件测试大师,新格尔神雕软件
  7. r语言aggredate_R语言 分组计算,不止group_by
  8. echarts迁徙图 vue_vue中echarts引入中国地图的案例
  9. Android开发入门教程--3.Activity入门指南
  10. delphi ado 连接mysql_delphi mysql ado连接
  11. 深信服(SCSA)认证学习—基础知识点二
  12. 计算机主机前耳机没声音,win7系统电脑前面耳机没声音怎么办
  13. JS之 生成qq在线客服
  14. IDEA 安装字体 安装JetBrains Mono字体
  15. 计算机网络什么是p2p,计算机网络-p2p(示例代码)
  16. python从srt文件中只提取歌词
  17. 小荷特卖:切中女装童装品类、聚焦三线以下城镇市场的闪购平台
  18. 运营人员必知!SPU和SKU是什么?
  19. 每一款都很能打 苏宁小Biu连发新品布局IoT
  20. 安装win10出现“计算机意外的重新启动或遇到错误。Windows安装无法继续。若要安装Windows,请单击“确定”重新启动计算机,然后安装系统。”

热门文章

  1. Exception和Error有什么区别
  2. 关于Linux开启pathinfo,lnmp开启pathinfo
  3. Eric6启动时“无法定位序数4540于动态链接库LIBEAY32.dll”的错误
  4. Leaflet框选截图 网页框选截图 -- 类似QQ截图功能
  5. 未初始化数组的默认初始值
  6. oracle数据库 —— 分页查询 java代码实现
  7. 最终幻想14无法获取服务器信息,最终幻想14无法连接到服务器 | 手游网游页游攻略大全...
  8. MySQL数据库,面试总结
  9. 使命召唤mod工具下载地址
  10. 徐小平:既然你是创业公司老大,就得让兄弟们有肉吃