为了打造能够实现对话理解和图像识别的前沿技术,我们常常会将多种机器学习技术组合使用,比如深度神经网络和基于图(graph-based)的机器学习。但是,驱动这些应用的机器学习系统大都运行在云端,是计算密集型的并有着巨大的内存需求。如何做到使机器智能在你的个人手机或智能手表或物联网设备上运转呢,不管它们是否连接到云端?
昨天,我们宣布推出 Android Wear 2.0,以及全新可穿戴设备,它将运行谷歌第一个完全「便携式」的 ML 技术以智能回复消息。由 Expander 研究团队开发的这种便携式 ML 系统使诸如智能回复之类的技术无需连接云便可用于任何程序,包括第三方消息传递应用程序。所以,现在你点击手表,可以直接回复正在输入的聊天信息。
这背后的研究始于去年,当时,我们的团队正在开发能够在 Allo 和 Inbox 中实现对话式理解能力的机器学习系统。Android Wear 团队与我们联系,并有兴趣了解是否可以将此智能回复技术直接部署到智能设备上。由于智能设备上的计算能力和内存有限,我们很快意识到这是不可能的。我们的产品经理 Patrick McGregor 意识到,这为 Expander 团队带来了独特的挑战和机遇,他们可以回到设计板来设计一个全新的、轻量级机器学习架构——不仅要启用 Android Wear 上的智能回复,也为大量其他便携式移动应用程序提供智能回复。与 Tom Rudick、Nathan Beach 和 Android Wear 团队的其他同事一起,我们开始构建新系统。
用映射进行学习
建立轻量级对话模型的简单策略,或许是在设备上创造一个关于共同规则(输入到回复映射)的小词典,并在推论时使用朴素的查找策略。这个策略可用于简单预测任务,包括使用了少量特征的一小组分类(比如源自文本,如「I love this movie」的二值情感分析传达出一种积极情感,而句子「The acting was horribel」传达出负面情感。)。
不过,这个策略不能扩展到包括丰富词汇量以及诸多语言多样性的复杂语言任务上,比如聊天信息中。另一方面,机器学习模型,比如 RNN(LSTM 等)结合图谱学习,已经被证明是处理自然语言处理中复杂序列学习任务的极强工具,包括智能回复。不过,压缩如此丰富的模型以适应设备存储,还能低成本地实现稳健预测,这是极富挑战性的。早期的实验使用了限制模型来预测少量回复,或使用了其他诸如量化(quantization))或字符级模型(character-level models)的技术,但是效果都不理想。
我们为设备端的机器学习系统搭建了一个不同的解决方案。我们首先使用了一个快速、高效的机制来分类相似引入信息,并将它们投射到一个相似(「附近」)比特向量表征上。虽然有几个实现这一投射步骤的方法,比如使用词嵌入或自编码网络,但是,我们采用了一个修正版的 LSH,将数以百万独特词汇的维度减少到一个简单且固定长度的比特序列。这样,仅占用移动设备上少量内存,就能快速为一个引入信息计算一个投射,因为我们不需存储引入信息,词嵌入甚至用于训练的整个模型。
映射步骤:相似的信息会被分组并映射到附近向量上。比如,「hey,how it going?」以及「how it going buddy?」内容相似,就可能被映射到相同向量*11100011。另一个相关信息「Howdy, everything going well?」被映射到一个附近向量* 11100110,差别仅有 2 个比特。
接下来,我们的系统会半岁映射吸收引入信息,并一起训练一个「信息映射模型(message projection model)」,它能学会利用我们的半监督图学习框架来预测可能的回复。图学习框架能通过结合源自多资源的语义关系——信息/回复相互作用,语词/短语相似性,语义簇信息——训练出一个强健模型,学习能够被映射到好回复预测上的有用映射操作。
学习步骤:(顶部)伴随映射的信息和相应回复,如果有的话,能被用于机器学习框架,一起学习一个「信息映射模型」。(底部)信息模型学会将回复与相应接收信息的投射联系起立,比如,模型将两个不同的信息「howdy,everything going well」以及「how's it going buddy?」(底部中心)投射到附近比特向量上,学会将这些内容映射到相关回复上(底部右边)。
值得注意的是,尽管可以用复杂新机器学习架构以及云来训练信息映射模型,如上文所述,但是,模型本身完全在设备上驻留并进行推论。运行在设备上的应用程序能通过一名用户的引入信息,并接收来自在线设备模型的回复预测,而无需数据离开设备。模型也能适用于消费者手写模式并提供个性化体验的偏好。
推理步骤:模型将学到的映射应用于正在输入的消息(或消息序列),并提出相关且多样的回复。推理在设备上执行时,允许模型适应用户数据和个人写作风格。
为了让移动型设备系统开箱即用,我们必须进行一些额外改进,例如优化以加快设备上的计算并从模型中生成丰富多样的回复。我们有一本即将出版的科学书籍,更详细地描述了移动型机器学习的运作。
手腕上的交流
当我们踏上从头开始构建这项技术的旅程时,我们不确定预测是否有用或足够可靠。即使在计算和存储资源十分有限的安卓可穿戴设备上,它依然运转良好,这使我们非常惊讶和兴奋。我们期望继续改进模型,为用户提供更加愉快的会话体验。在未来几个月里,我们将会利用这种移动型机器学习平台启用全新的应用程序。
你现在可以使用此功能直接从 Google 手表或任何运行 Android Wear 2.0 的手表上回复消息。目前也已在 Google Hangouts、Google Messenger 和许多第三方通讯应用上启用。我们还为第三方穿戴应用程序的开发人员提供 API。
致谢
代表 Google Expander 团队,我要感谢以下帮助我们使这项技术取得成功的人:Andrei Broder、Andrew Tomkins、David Singleton、Mirko Ranieri、Robin Dua 和 Yicheng Fan。