谷歌 Smart Compose:神经网络可以帮你写 Gmail 邮件了
扫描二维码
随时随地手机看文章
在 Google I/O 2018 上,除了 Google 助手给餐馆打电话的场景赢得现场观众的喝彩外,在用户写邮件时可预测下一句的 Smart Compose 技术同样也引得众人欢呼。近期,谷歌大脑团队首席软件工程师 Yonghui Wu 在 Google AI Po 出了这篇详细介绍 Smart Compose 原理的博文。
Google I/O 2018 上,谷歌介绍了 Gmail 中的一项新特性,智能预测拼写功能:Smart Compose,该新特性利用机器学习,交互式地为正在写邮件的用户提供补全句子的预测建议,从而让用户更快地撰写邮件。Smart Compose 基于此前智能回复(Smart Reply)技术开发而来,Smart Compose 提供了全新的方式来帮助用户撰写邮件,无论用户是在回一封来件还是从草稿箱起草一封新邮件。
谷歌在开发 Smart Compose 的过程中,遭遇到了以下这些关键挑战:
延迟:因为 Smart Compose 需基于用户的每一次输入来提供预测,所以它必须提供 100 毫秒以内的理想预测,这样用户才察觉不到任何延迟。这时候,平衡模型复杂性和推理速度就成了一个需要解决的关键难题。
用户规模:Gmail 拥有超过 14 亿的各种用户。为了面向所有用户提供自动组句预测,模型必须拥有足够强的建模能力,这样它才能精细地在不同上下文中提供定制建议。
公平性和用户隐私:在 Smart Compose 的开发过程中,谷歌需要在训练过程中处理潜在偏倚的来源,并遵守像 Smart Reply 功能一样严格的用户隐私标准,以确保模型不会暴露用户的隐私信息。另外,谷歌的研究人员也不具备查看用户邮件的权限,这意味着他们不得不在一个自己都无法查看的数据集上开发和训练一个机器学习系统。
找到对的模型
比如 ngram,neural bag-of-words(BoW)和 RNN language 这种典型的语言生成模型,它们是基于前缀词序列来预测下一个词的。然而,在一封邮件中,用户在当前邮件撰写会话中打下的单词会给模型一个信号,模型会利用该信号来预测下一个单词。为了结合更多用户想表达的上下文,谷歌的模型还会利用邮件主题和此前的邮件正文(假设用户正在回复一封刚刚收到的邮件)。
谷歌的方法是包含利用额外语境的一个方法,该方法是将问题转换成一个序列到序列(seq2seq)的机器翻译任务,其中源序列是邮件主题和上封邮件正文(假设存在上封邮件)的串联,用户正在写的邮件是目标序列。尽管该方法在预测质量上表现良好,但它的延迟要比谷歌严苛的延迟标准超出了好几个量级
为了提高预测质量,谷歌将一个 RNN-LM 神经网络与一个 BoW 模型结合起来,结合后的模型在速度上比 seq2seq 模型要快,且只轻微牺牲了预测质量。在该混合算法中,谷歌通过把词嵌套们平均分配在每个区域内,来对邮件主题和此前的邮件内容进行编码。随后谷歌将这些平均分配后的嵌套连接在一起,并在每次执行解码步骤时将它们提供给目标序列 RNN-LM,过程如下面的模型图解。
Smart Compose RNN-LM 模型架构。将邮件主题和此前邮件信息进行编码,采用的方法是将它们的词嵌套平均分配在每一个区域内。随后,平均后的嵌套会在每次执行解码步骤时提供给目标序列 RNN-LM。加速模型训练和服务
当然,一旦选定了这种建模方法,谷歌就必须调整各种模型超参数和使用超过数十亿的样本来训练这些模型,所有的这些操作都相当费时。为了实现加速,谷歌使用了一个完整 TPUv2 Pod 来执行实验。在这情况下,谷歌能够在一天之内将一个模型训练至收敛状态。
在谷歌训练出速度上更快的混合模型之后,初始版本的 Smart Compose 在一个标准 CPU 上运行时,依旧存在几百毫秒的平均服务延迟,这与 Smart Compose 努力预测语句来帮用户节省时间的特点是不相符的。幸运的是,谷歌可在推断期间使用 TPU 来大大地加速用户体验,通过分流 TPU 之上的大部分计算,谷歌可以将平均延迟改良至几十毫秒,同时也能大大增加单一机器可处理的服务请求数量。
公平性和隐私
由于语言理解模型会反映人类的认知偏倚,这样会导致得到多余的词汇联想和句子完成建议,所以在机器学习内实现公平至关重要。Caliskan et al. 在他们近期的「Semantics derived automatically from language corpora contain human-like biases」论文中指出,模型的词联想深陷于自然语言数据的偏倚数据中,这为打造任何一个语言模型都带来了相当的挑战。在模型训练过程中,谷歌积极地寻找方法来持续降低潜在的偏倚。另外,由于 Smart Compose 是基于数十亿的短语和句子进行训练,这与垃圾邮件机器学习模型的训练方法一致,谷歌已经进行了广泛的测试来确保,模型只记忆多种用户都使用的常识语句,关于常识语句的调查结果源自这篇论文 The Secret Sharer: Measuring Unintended Neural Network Memorization & Extracting Secrets(https://arxiv.org/abs/1802.08232)。
未来研究
谷歌将持续地研究改良语言生成模型的预测质量,为此谷歌会通过使用最先进的构架(如 Transformer,RNMT+等)和试用最新、最先进的训练技术来实现这一目标。一旦模型的实验结果满足了谷歌的严格延迟约束条件,谷歌就会把这些更加的先进模型部署到自家产品上去。另外,谷歌还在进行结合个人语言模型的研究,该模型的目的是给系统增加一个新特性,让它能够更加准确地模拟每个用户自己的写作风格。