微软华盛顿州 Redmond 总部的实验室成员 Ajay Manchepalli、Rob DeLine、Lisa Ong、Chuck Jacobs、Ofer Dekel、Saleema Amershi、Shuayb Zarar、Chris Lovett 和 Byron Changuion
有时候,展示一个大胆、即将改变世界的技术的最佳场所是花园。以 Ofer Dekel 为例,他正在微软华盛顿州 Redmond 总部的实验室里领导一个机器学习和优化小组。在这里,松鼠经常前来摧残花朵,偷取鸟食,打击他和他的家人养花喂鸟的乐趣。
为了解决这个问题,他训练了一个计算机视觉模型来探测松鼠的行踪,并把这些代码部署在一块树莓派 3 上——这是一种廉价且计算能力有限的单片计算机。这套设备们现在一直在帮助 Dekel 监视着他家的后院,在小动物出现时会呼叫喷水灭火系统进行驱赶。「拥有树莓派的所有计算机爱好者应该都能做到这件事,」Dekel 表示。「但今天,很少有人去做。」
Dekel 是一名机器学习专家,他的工作就是专注解决这类问题。他在 Redmond 与印度班加罗尔领导了一个由大约 30 名计算机科学家、软件工程师和其他研究实习者们组成的团队,正在致力于开发一类全新的机器学习软件和工具,它可以将人工智能塞进面包屑大小的计算机处理器中。
这套系统的早期版本已经开源,可在 GitHub 中获取:https://github.com/Microsoft/ELL
这项计划是微软首席执行官萨提亚·纳德拉最近在 Build 2017 大会上倡导的业界技术新转变的一部分,他曾说道:「我们正从目前的移动优先、云优先转变到云端智能和终端智能的世界。」
终端智能
创造基于终端的人工智能是让智能设备实用化的前置条件——让人工智能嵌入在我们的衣服中,散布在我们的家中和办公室里,充分部署并执行多种任务:异常检测,以及汽车发动机、电梯和钻井设备的预测性维护。
今天,这些类型的设备主要用作传感器,只负责收集和传送数据,而机器学习模型运行在云端。「所有这些过程需要大量的计算,也需要耗费很多存储资源,」微软 Redmond 研究院商务和技术运营负责人 Shabnam Erfani 说道。「你不能把所有这些塞进低成本的嵌入式设备中。」
「Dekel 和他的同事们却试图完成这个不可能的任务,」她又说道。「通过压缩和让机器学习更加高效,你可以让它们运行在终端设备上。」
这些智能设备是物联网(IoT)的一部分,它们是自动,甚至智能化的,有些可以在未连接网络的环境下工作。
印度实验室的研究者们,从左前起:Manik Varma,Praneeth Netrapalli,Chirag Gupta,Prateek Jain,Yeshwanth Cherapanamjeri,Rahul Sharma,Nagarajan Natarajan 和 Vivek Gupta。
「现有的范式是:这些设备是愚蠢的,」微软印度研究院资深研究员,本项目的共同领导人 Manik Varma 说道。「它们可以感受到周围的环境,将传感器读数传送到云端,让机器学习在服务器上运行。然而这种模式并不是我们想象中能够改变世界的样子。」
将机器学习推向设备本身可以减少带宽的压力,打消延迟的困扰——数据从设备传送到服务器不可避免的需要时间。Varma 指出,基于终端设备的机器学习也可以减少传输信息带来的电池消耗,并通过本地保存数据的形式来保护隐私。
在项目中,研究人员想象了所有智能设备的应用场景,从用于精准灌溉的智能土壤传感器到可以向护理人员及时提醒癫病发作的脑机接口设备。
「如果你正在高速公路上开车,连不上网,你肯定不希望脑机接口就停止工作了,」Varma 说道。「事实上,这是你最需要它的时候。」
自顶向下
研究团队采用了自上而下和自下而上的方法来将机器学习模型装载进资源有限的设备中。
自上而下的方法包含开发压缩机器模型算法,在云端经过训练,能够有效运行在树莓派 3 和树莓派 Zero 上。
目前有许多机器学习模型都应用了深度神经网络——一种受人类大脑结构启发的算法机制。Dekel 和他的同事们使用了很多技术把深度神经网络塞进了小型设备中。其中一种技术被称作权重量化(weight quantization),可以通过几个比特,甚至一个比特的长度代表神经网络参数,而无需以往的 32 位。
微软的研究人员正在让机器学习系统可以运行在微控制器中,它们就像 Ofer Dekel 手中的那么小。
「我们可以把更多参数塞入更小的空间里,让计算机运行得更快,」Dekel 说道。
为了展示这种效果,他播放了一个视频,对比了目前最好的计算机视觉神经网络部署在树莓派 3 上的表现,压缩前和压缩后的:两个模型几乎一样准确,而压缩过的版本速度要快 20 倍。
这些算法已经可以在 GitHub 中下载了。微软的团队还希望计算机爱好者、制造商和其他并非机器学习专家的人士可以通过这些技术学会端到端处理过程、收集和清理数据、训练模型并将其部署在终端设备中。
「向人们提供这些强有力的机器学习工具就是 AI 民主化的一部分,」Redmond 实验室人机交互研究院 Saleema Amershi 说道。「如果我们有能够让小型设备智能化的技术,而只有专家才能掌控,那这一切的意义就太小了。」
这个团队探索的另一个方向是剪除或稀疏化神经网络,这可以让算法运行消耗的计算资源更少,可以运行在 ARM Cortex M7 这样的处理器上。
自底向上
所有这些压缩工作只会令现有的机器学习模型精简 10 到 100 倍。而将机器学习部署到 Cortex M0s(最小的 ARM 处理器,物理尺寸只有红辣椒薄片大小)上,模型需要压缩到 1000 到 10000 倍。
Dekel 说:「现在我们并没有方法在 1/10000 的计算资源下继续使用深度学习,并将其精度保留在大型模型的程度。所以我们需要从头开始设计一种长期的方法,即为这些有限资源的平台量身定做新的机器学习技术和工具。」
自底向上的方式从光谱(spectrum)的微端开始,团队成员正在构建一个集成了很多训练算法的库,每个训练算法都已经微调好并可以很好地适应于一组特定的场景。如一个算法专用于大脑植入应用,另一个专用于检测喷气式引擎是否异常和需要维护等。
该团队关注的最小设备是 Arduino Uno,这是一种资源十分有限的单片机,它只有容量为 2 千字节的 RAM。而他们训练的机器学习模型却需要执行一些如回答是否问题、多项选择问题、预测可能的目标值和为项目排序等任务。
这些模型的灵感来源于云端系统,但它们正在进行重新设计而缩减所需要学的数据,因此这些算法能减少计算复杂度和内存要求,但同时还能保持准确性和速度。
Varma 解释说:「最终我们得到的预测几乎和基于云端训练的神经网络一样精准,但是我们的模型规模十分小,因此它可以部署到只有几千字节 RAM 的设备中。」
微软研究院正在研究在微控制器(如上图所示那么小)上可运行的机器学习算法的系统。
展现这一研究潜力的一个设备原型是 Varma(视觉有障碍)的智能拐杖,能够检测摔倒、呼叫帮助。另一潜在的应用是智能手套,能翻译美国手语并通过一个音箱发音。
Varma 说道:「我喜欢帮助有障碍的人群,让他们更有能力、更好的融入社会。」
想象未来
在小设备上做嵌入式 AI 是微软研究团队探求十几年来可普遍存在的科技的愿景之一。对 Dekel 和他的同事而言,有了想法之后付诸实践,每个人都能用一些工具建立智能化、安全的设备。
现在,该研究项目正服务于制造者(maker) 社区,也就是和 Dekel 有同样的问题,并期望用自制技术解决问题的一批人。其他的制造者包括其他领域的专业人士,比如游泳健将想要训练一个健身手环来计算圈数,分别自由式、仰泳和蝶泳。
Varma 预想这些制造在产业中也能发挥作用,为异常检测、预测性维护任务开发智能、安全的优化设备。他提到,「当东西坏的时候修,要比防患于未然成本更高。」
Amershi 认为,如果只把工作留给一小批人工智能计算机科学家,那么这种设备永远不会多起来。她目前在研究减少边缘设备上训练、部署机器学习模型复杂度与单调性的接口与工具,以便于制造者作出各种设备。
她说道:「机器学习不是一蹴而就的,它是一种艺术,需要花费努力,不断迭代,引导机器学习模型去做你想让他们做的事。」
相关资源:嵌入式学习库
链接:https://github.com/Microsoft/ELL
嵌入式学习库(Embedded Learning Library,ELL)能让你在嵌入式平台上建立、部署机器学习管道,例如树莓派、Arduinos、micro:bits 以及其他微控制器。部署的机器学习模型在设备上运行,脱离云的连接。我们的 API 既可从 C++ 使用,又可从 Python 使用。
该项目由微软研究院的团队开发,是一个持续发展的项目。以下链接是个教程,能让你在树莓派上用一个 web cam 做图像识别,即使脱离云端。部署到派上的软件将能够识别大量的物体,并在屏幕上附上识别出的物体名称。
建立与安装指南(链接见原文)
- Windows 安装指南
- Ubuntu Linux 安装指南
- Mac OS X 安装指南
原文地址:https://blogs.microsoft.com/next/2017/06/29/ais-big-leap-tiny-devices-opens-world-possibilities/