谷歌发布全新轻型机器学习架构:可直接载于设备端的AI系统
谷歌近日发布了全新应用于可穿戴设备的Android Wear 2.0系统和相关设备,而这一批系统和设备,将具有一项新技能:运行谷歌全新的“设备端”机器学习技术。
作者:雷锋网 亚萌
雷锋网(公众号:雷锋网)消息,谷歌近日发布了全新应用于可穿戴设备的Android Wear 2.0系统和相关设备,而这一批系统和设备,将具有一项新技能:运行谷歌全新的“设备端”机器学习技术。下面是对该项技术的介绍,原文载于Googleblog,由雷锋网编译整理。
设备端的机器智能
为了打造会话理解和图像识别领域领先的技术,我们通常将多种先进的机器学习技术(比如深度神经网络和基于图的机器学习)结合起来使用。然而,以上提到的机器学习系统往往需要大量的计算能力和存储空间。可是,如果想 要在不论是否连接到的云端的情况下,个人手机、智能手表和IoT设备都能运行机器智能,又要怎么办呢?
昨天,我们发布了Android Wear 2.0系统和全新的可穿戴设备,这些设备将会运行 谷歌首个完全“设备端”(on-device)的机器学习技术,首先用于“智能回复”(Smart Reply)这一功能上。这个“设备端”机器学习系统由谷歌Expander研发团队开发,在不需要接入云端的情况下,将“智能回复”功能应用于各第三方的讯息App上。所以现在,你若在手表上收到了一条信息,轻敲回复选项就可以了。
这个系统的研发从去年开始,当时我们的团队正在为Allo和Inbox里的会话理解开发相应的机器学习系统。 Android Wear团队找到我们,并询问将“智能回复”直接应用在智能设备上的可能性。因为智能设备的计算和存储量都是有限的,我们很快就判断这种移植根本不可能。
但我们的产品经理Patrick McGregor意识到这对于Expander团队来说是个独特的挑战和机会,可以从头开始 设计一个全新的、轻型机器学习架构,这不仅让“智能回复”应用于Android Wear系统,还应用于其它众多设备端的移动应用程序。于是,我们与Android Wear团队的Tom Rudick、Nathan Beach等同事一起,开始着手建立这个全新的系统。
与“投影”一起进行学习
建立轻型会话理解模型的一个简单策略,就是在设备上 创建一个小型的包含一般规则的字典(输入—>回复映射),并且在推理阶段,使用一个朴素的查找策略。 这个可以执行简单的预测任务,包括使用一些特征进行分类 (比如对文本里的情感进行二元分类,例如“我爱这部电影”传递出一种积极的情感,而“演员的表演很糟糕”则传达一种消极情感)。但是,它的规模并没有大到去执行包含丰富词汇和语言变化的复杂自然语言任务。
另一方面,机器学习模型,比如RNN(如LSTM),结合图学习(graph learning),已经被证明是用于自然语言理解的复杂序列学习里极强悍的工具,包括“智能回复”。 然而,为了适应设备存储空间而将这么丰富的模型进行压缩,并在低计算成本的情况下产生鲁棒的预测(快速按需),这是非常具有挑战性的。在我们的早期实验里,受到限制的模型仅仅预测一小批回复语句,我们还使用其他包括量化(quantization)、字母级别模型等技术,并不能产生有用的结果。
所以,我们为设备端机器学习系统建立了一种不同的解决方法,我们一开始使用了一个快速、有效的机制,将相似的传入讯息聚集起来,并将他们投影到相似的(附近的)位向量表征里。虽然执行这个投影步骤有几种方法,比如使用单词嵌入(word embeddings)或者编码网络(encoder networks),我们应用了局部敏感哈希算法(locality sensitive hashing ,LSH) 的修改版本来降低维度,把数百万个独特的单词转换为短小的、固定长度的位序列。
这允许我们为一条传入讯息的投影进行非常 快速、即时(on-the-fly) 的计算,占用很少的内存,由于我们并不需要存储传入讯息、单词嵌入甚至是用来训练的整个模型。
投影步骤:相似讯息组合在一起,投射到邻近向量里。比如,“hey, how’s it going?”与 “How’s it going buddy?” 这两条讯息内容是相似的,或许会投射到同样的向量 11100011。另一条相似的讯息“Howdy, everything going well?”被映射到一个附近的向量11100110,与前两条相差2位。
接下来,使用我们的 半监督图学习框架 ,我们的系统把传入讯息和投影结合在一起,共同训练一个“讯息投入模型”,学习预测可能的回复语句。图学习框架能够训练一个鲁棒的模型,通过从各种资源里找出的语义关系——讯息/回复互动、单词/短语相似性、语义集群信息——学习有用的投影操作,来映射良好的回复语句预测。
学习步骤:(顶部)的讯息、投射和相应回复语句一起,在一个机器学习框架里,同步学习一个“讯息投射模型”。(底部)讯息投射模型学习,将回复语句与相应传入讯息的投射联系在一起。比如,模型投射两种不同的讯息“Howdy, everything going well?”和“How’s it going buddy?”投射到附近的位向量里,并且学习着将其映射成相关的回复语句(底部左图)。
值得注意的是,就像我们前面提到的,尽管“讯息投影模型”用复杂的机器学习架构和云计算进行训练,但是模型本身在设备上存在和运行。 设备上的App可以传递用户的传入讯息,并从设备端模型上接受回复语句预测选项,而不需要离开设备去获得数据。这个模型也可以适应用户书写风格和个人偏好,从而提供一种个性化的体验。
推理步骤:模型将学习好的映射应用于一条传入讯息(或讯息序列)里,并且推荐相关的多条回复语句。推理过程在设备上运行,使得模型适应用户数据和个性化书写风格。
为了得到开箱即用的设备端系统,我们必须要进行一些额外的改进,比如优化设备上的计算速度、从模型中生成丰富多样的回复语句等等。不久之后,我们将进行一些科学发表,介绍更多设备端机器学习系统工作的细节。
与你的手腕交谈
当我们踏上从无到有打造这项技术的旅程时,一开始我们并不确定,这些模型的预测结果质量是否合格。我们非常惊讶地发现,它能在非常有限的计算能力和存储资源的情况下,在安卓的可穿戴设备上工作良好,对此我们非常兴奋。我们期待继续改善模型,为用户提供共更加愉悦的会话体验,我们将会提升这个设备端的机器学习平台,接下来的几个月里将其应用于新的领域。
现在,你可以在你的Google手表或任何运行Android Wear 2.0系统的手表上使用这一功能。这一功能已经可以在Google Hangouts、Google Messenger和众多第三方App上使用。我们也 会为第三方穿戴设备App的开发者提供API接口。