回复邮件拯救你的大脑→ 在谷歌电子邮件中填写聪明的句子

Root 编译自 谷歌博客

量子位 出品 | 公众号 QbitAI

上周谷歌开发者大会I/O上,Gmail刷了下存在感。出场时间大概有1分多钟。

谷歌掌门人劈柴哥当时介绍了Gmail的一个和AI有关的新功能,Smart Compose,智能句子填写。

这个功能,可以根据用户输入一到两个单词就能主动预测出用户要写的句子,算是基于之前Smart Reply技术做的更新。

简单来讲,这两个功能的不同之处在于,前者提供的是长句子,适合一句话搞不定的邮件回复;后者猜测的回复更短,适用于简单的邀约场景。

这个看似简单的预测功能,背后要克服的挑战并不少。为了给用户一个良好的使用体验,不再骂AI是人工智障,研发团队要解决以下三大问题。

保证低延迟

句子的预测需要做到实时,这样用户边码字,才能边看到预测。而且,预测必须要比用户自己把话打完要快,理想的话最好低于100毫秒,不然就等机器预测完,天都亮了。

除了时间上要快,预测还得尽可能准确。如何平衡好这两点,是Smart Compose模型面临最难的问题。

句子风格要多样化

现在Gmail的用户超过14亿,每个人回复的需求都不同。如果给老板回复和给老妈回复口气都一个样,预测没有针对性,那大家就会果断弃用“智障”的功能。

用词的分寸感把握很重要

因为模型训练的来源是人的语言,就难免会有个人偏好或者歧视。所以模型的训练来源得格外小心,要筛掉那些带歧视字眼或语气的用词。

研发团队在寻找减少带颜色的用词训练源,尽力确保只让模型学会那些被大部分人使用的话语,而忽略有个人歧视的用词。

用户隐私高于一切

根据谷歌严格的用户隐私规定,保护用户个人信息必须放在第一位。

因此,邮件句子预测模型的训练过程中,研发团队不能接触用户的邮件内容。在训练集看不见摸不着的情况下,怎么凭“感觉”造出一个好用的模型?

确认过眼神,你是那个模型

经典的语言生成模型,有ngram,词袋模型,以及基于RNN的语言模型。这些模型可以依照前面的词语序列,猜出下一个词应该是什么。

不过在邮件中,语言生成模型能参照的依据就只有用户敲出来的单词。

为了get到邮件整体的背景作出合适的回复语句,谷歌智能句子模型还得消化之前邮件的主题内容。

其中一个吃透之前邮件内容的办法是,把这个问题转化成一个序列到序列(seq2seq)的机器翻译任务。源序列是一系列邮件主题和之前邮件的内容(如果有的话),然后靶序列是现在用户正在写的邮件。

尽管这个方法的句子预测效果很优秀,但是响应速度太慢,时间上没达到要求。

所以,为了改善这一点,研发团队就把词袋模型和基于RNN的语言模型结合起来了。出来效果还不错,虽然牺牲了少许的预测质量,但延迟降低了,比seq2seq方法还快。

这种混和法,研发团队编码好邮件主题和之前的邮件内容,平均了每个领域的词嵌入(word embeddings)。然后在每一次解码时,给靶序列RNN语言模型喂这些添加完的平均嵌入(averaged embeddings),如下图所示。

模型训练:快一点,再快一点

选定了这个办法之后,研发团队就开始微调模型的超参数。为了加快训练速度,他们采用了2代TPU板,最后模型聚合用时不超过一天。

不过,最初的智能句子填写版本预测时间还是不够快,在CPU跑的话用时大概要几百毫秒。后来把计算任务扔给TPU之后,延时就降到了几百微秒,增加了单台电脑处理请求的数量。

模型还在“成长”

研发团队将会采用最尖端的架构,比如Transformer,RNMT+等,持续提升语言模型预测句子的质量。后期还会开发针对个人风格的语言模型,为用户提供更具个人特点的回复内容。

最后,附谷歌原文:

https://ai.googleblog.com/2018/05/smart-compose-using-neural-networks-to.html

— 完 —

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。

量子位 QbitAI · 头条号签约作者

վ’ᴗ’ ի 追踪AI技术和产品新动态

发表评论

您的电子邮箱地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据