懒人聊天神器!Google 推出智慧聊天应用「Allo」,个

2020-07-10    收藏645
点击次数:957

懒人聊天神器!Google 推出智慧聊天应用「Allo」,个

Google 在今年的 I/O 大会推出了一个大惊喜:由机器学习支持的 Allo 智慧聊天应用。为何 Allo 能够如此讨用户的欢心?Google 研究的 Pranav Khaitan 在 Google blog 上为我们解读了 Allo 背后的人工智慧算法。Khaitan 具有史丹佛大学计算机科学硕士学位,曾在史丹佛大学担任研究助理工作,并在微软、Facebook 等公司实习。他 2011 年加入谷歌,目前带领团队进行机器学习、神经网路和个人化科技的工作,并帮助打造 Google 搜寻等产品所需的知识图表,在 Google 搜寻的几乎每个领域——排名、指数和基础建设——都能看到由他打造、发布的功能。

Google 一直在打造由机器学习支持的产品,让用户的生活更加简单、美好。今天,本文将介绍一个全新智慧聊天应用 Allo 背后的技术,该应用使用神经网路和 Google 搜寻,让文字聊天更加简单、高效。

正如 Inbox 的智慧回覆一样,Allo 能够理解对话记录,提供用户会想採用的回覆建议。除了理解对话的语境之外,Allo 还能理解你的个人聊天风格,因此可以实现个人化的聊天回覆。

懒人聊天神器!Google 推出智慧聊天应用「Allo」,个

如何做到的?

一年多以前,团队开始研究如何让对话可以更加简便、更加好玩。Allo 智慧回覆的想法来源于团队中的 Sushant Prakash 和 Ori Gershony,他们带领团队打造了这项技术。我们最初使用了一个神经网路进行试验,其模型架构之前已经成功应用在序列预测中,包括 Inbox 智慧回覆中使用的编码 – 解码模型。

我们面临的挑战之一,是在线聊天在回覆时间上有很严格的要求。为了解决这个问题,Pavel Sountsov 和 Sushant 想出了一个非常创新的两阶段模型。首先,一个递归神经网路一个字一个字地查看聊天语境,然后用长短时记忆(LSTM)的隐藏状态将其编码。下图展示的就是一个例子,语境是「你在哪?」语境有三个标记,每一个标记都嵌入到一个连续空间中,然后输入到 LSTM 里。然后,LSTM 状态将语境编码为一个连续矢量。这个矢量用来生成作为离散语义类别的回覆。

懒人聊天神器!Google 推出智慧聊天应用「Allo」,个

每一个语义类别都与它可能的回覆库关联起来。 我们使用了第二个递归神经网路来从这个回覆库中,生成一个具体的回覆信息。这个神经网络还将语境转换为一个隐藏的 LSTM 状态,但是这一次,这个隐藏状态是用来生成回覆的完整信息,一次生成一个标记。我们回到上面的例子,LSTM 看到了「你在哪?」的语境后,生成了回复:「我在上班。」

懒人聊天神器!Google 推出智慧聊天应用「Allo」,个

从 LSTM 生成的大量可能回覆库中,beam 搜索能有效选择出顶层得分最高的回覆。下图展示的是一个搜索空间的小片段,我们可以从中一窥 beam 搜索技术。

懒人聊天神器!Google 推出智慧聊天应用「Allo」,个

正如任何大规模产品一样,我们面临了多个工程方面的挑战,高效生成高质量的回覆库并非易事。举一个例子,虽然我们使用了这个两阶段的架构,我们最初的几个神经网路运行都非常慢,生成一个回覆需要大约半秒钟。半秒钟听起来很短,但是针对即时聊天应用来说,这完全是没法接受的。因此,我们必须让我们的神经网路架构进一步进化, 将回覆时间再减少至少 200 毫秒。 我们改变了 softmax 层,转而使用一个层级性的 softmax 层,可以遍历一个词彙树,比之前遍历一个词彙列表更加高效。

在生成预测时我们遇到的另一个挑战比较有趣, 那就是控制讯息的长度。 有时候,所有可能的回覆长度都不合适——如果模型预测的讯息太短,可能对于读者来说就没有用;而如果我们预测的讯息太长,可能就不适合手机屏幕的显示大小 。我们的办法是,让 beam 搜索更偏向于跟进能够通向更高反应用途的路径,而不是倾向于选择最有可能的回覆。 这样,我们可以高效生成长度适合的回覆预测,对用户来说会非常有用。

个人化

这项智慧聊天建议最棒的地方在于, 随着时间,软体会为用户进行个人化,这样你的个人风格会在聊天对话中体现出来。 例如,假设当别人和你说「你好吗?」(「How are you?」)的时候,你通常的回覆方式是「蛮好。」而不是「不错。」(英文中某个用户可能更习惯回复「Fine.」而不是「I am good.」),软体就会了解到你的偏好,在未来的回覆建议中就会考虑到这一点。要实现这一点, 就要在神经网路中加入用户的个人「风格」,将这个神经网路用于预测回覆中下一个词语是什幺 ,这样回覆建议就会根据你的个性和偏好进行个人化。 用户的风格是在一系列数字中获取的,我们称之为用户嵌入。 这些嵌入可以作为常规模型训练的一部分,但是这种方法需要等上很多天训练才能结束,而且如果用户超过了几百万人,这种方法就有可能搞不定。为了解决这个问题,Alon Shafrir 打造了一项基于 L-BFGS 的技术,让 Allo 能够快速、大量地生成用户嵌入。 现在,Allo 的用户只需要很短的一段时间,就能获得个人化的回覆建议。

不只会说英语

我们之前说到的这个神经网路模型是不针对某种语言的, 因此我们可以对每一种语言分别建立预测模型。Sujith Ravi 为了确保每一种语言的回覆可以从我们对其他语言的语音理解中获益,他提出了 一种基于图表的机器学习技术,可以将不同语言的可能回覆联繫起来。Dana Movshovits-Attias 和 Peter Young 将这项技术应用在一个图表中,对收到信息的回覆,可以与其他有相似词彙嵌入和语法关係的回覆联繫起来。基于 Google 翻译团队开发的机器翻译模型,这个图表还能将不同语言中具有相似语义的回覆联繫起来。

利用这个图表,我们使用了半监督学习来了解回覆的语义含义,判断哪一个可能的回覆组群是最有用的。每一个可能的回覆语义中都有多个可能的变种,现在我们可以让 LSTM 对每个变种进行打分,让个人化常规来为用户在聊天情景中选择最好的回覆。这还能帮助实现多元化,因为我们现在可以从不同的语义组群中选择最终的回覆库。

懒人聊天神器!Google 推出智慧聊天应用「Allo」,个

不止于智慧回覆

我非常期待 Allo 中的 Google 个人助理, 你可以与它聊天,获得 Google 搜索上可以了解到的任何信息。它可以直接通过对话理解你的句子,帮助你完成日常任务。 举个例子,你和朋友聊天的时候,Google 助理可以在 Allow 应用内帮你发现有什幺好吃的餐厅并预定座位。正是因为我们在谷歌进行了最尖端的自然语言理解研究,我们才能实现这项功能。更多细节信息将在未来发布。这些智慧功能将于今年夏天晚些时候出现在 Allo 的 Android 和 IOS 应用中。

 

相关文章  RELEVANT ARTICLES