写点什么

Gmail Inbox 发布基于深度学习的智能回复功能

  • 2015-11-13
  • 本文字数:1734 字

    阅读完需:约 6 分钟

作为日常工作最主要的沟通手段,Email 在发明后几十年仍然活跃在工作第一线,越来越多的智能功能被添加进来。近日,继旅程助手提醒推荐功能以后,Gmail 团队发布了Inbox 最新功能:智能回复(Smart Reply)(界面如下图),并撰文阐述了背后基于深度学习的实现思路

推出智能回复功能的契机很直白:由于工作强度的增强,人们的交流日益频繁,然而大多数人有用手机收发邮件的习惯,使得回复Email 有时变成了很烦躁的事情,费时费力。而很多时候,工作邮件都可以通过一些简短的回复例如“正在尝试”、“马上发给您”、“开会时讨论一下”等等来解决。智能回复就是基于这种考虑,通过深度学习技术,来“猜测”可能的简短回复,帮用户简化回复过程。智能回复会基于用户收到的邮件内容,来推荐三个可能的回复供用户选择,一个直观的展示参见下图:

智能回复将此前数次按键输入直接简化为一两次,极大方便了用户,提高了Inbox 体验,而后台支撑该功能的技术却是相当复杂。Inbox 利用机器学习技术(确切来讲是深度学习技术)识别那些能够被“秒回”的邮件,并动态生成回复。值得一提的是,用户选择智能回复词的过程中,后台的机器学习模型会根据选择不断迭代。下面再介绍一些具体的技术细节。

在展开介绍之前,多说一句Google 内部的很多项目都在使用机器学习技术来改进用户体验,比如利用深度学习改进语音搜索 YouTube 缩略图等等。因此 Gmail 团队的 Bálint Miklós 看到了上文中提到的回复邮件痛点,找到资深科学家 Greg Corrado,后者表示了极大的兴趣。

智能回复的原理是很复杂的,涉及到自然语言理解和生成技术,这些技术多用于机器翻译,而回复邮件也可以抽象认为是个机器翻译问题,即来信是一种语言,而回信是另一种语言,智能回复就是要理解来信,并“翻译”生成回信。长期的实践已经表明相关技术并没有发展到能直接应用到产品中的程度,大部分时间都只能实现一些逗乐聊天机器人。但对于智能回复词这一特定场景,是能够给出比较满意答案的。Google 科学家 Oriol Vinyals, Ilya Sutskever 和 Quoc Le 在去年曾重点研究理解和生成技术,称为序列学习,Greg 的同事Anjuli Kannan 在此基础上开发了可生成智能回复的产品级神经网络。

类似其他序列学习系统,智能回复功能由一对RNN 组成,如下图所示。

一个用来对用户收到的邮件内容进行编码,另一个则用来预测可能的回复。编码网络一次读入一个单词,然后生成一个由数字组成的向量。该向量被Geoff Hinton 老先生称为“ thought vector ”,能够在一定程度上表达邮件的语义。在这种情况下,英文句子“Are you free tomorrow?”和句子“Does tomorrow work for you?”语义距离更近。第二个网络根据 thought vector 来生成一个语义语法都正确的回复。值得一提的是,整个网络都无需任何人工接入,完全通过历史邮件和回复来学习模型。

Greg 提到,跟邮件打交道的一个挑战就是,学习模型的输入和输出都很长,有时多达几百单词。因此需要选择合适的 RNN 模型,Google 选择的是 LSTM 模型,能够很好处理比较远的单词之间的依赖关系,并能够发现邮件内容中最重要的部分,而不会被附近的短句所影响。Greg 还提到,另一个挑战就是用户的隐私问题,在模型训练的过程当中,要保证没有任何人阅读用户的邮件,全程都是机器自动化操作。

最后 Greg 还分享了开发过程中的一些感受。最开始的时候,智能回复给出的三个答案基本意思相同,用户很难取舍。最后机器学习专家 Sujith Ravi 解决了这个问题,并表示这是一个典型的“回复多样性”缺乏问题,可通过计算句子语义相似度来解决,而不仅仅是考虑单词的相似度。另一个早期版本中的问题是不管邮件内容是什么,智能回复都倾向给出“I love you”的回复,因为类似感谢、听起来不错和我爱你这样的回复太常见了。后来通过对可能回复的概率进行归一化解决,使得回复不但常见,而且要和邮件的内容也比较相关。

据悉,智能回复功能将会在下周发布的 iOS 和 Android 版本中,感兴趣的读者可以进行更新尝试。


感谢杜小芳对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-11-13 18:002407
用户头像

发布了 268 篇内容, 共 132.4 次阅读, 收获喜欢 24 次。

关注

评论

发布
暂无评论
发现更多内容

【LeetCode】二叉树的层序遍历Java题解

Albert

算法 LeetCode 7月日更

模块二作业-微信朋友圈复杂度分析

babos

#架构实战营

【源码篇】Flutter GetX深度剖析 | 我们终将走出自己的路(万字图文)

小呆呆666

flutter ios android 大前端

大型团队的敏捷项目管理实践与思考

万事ONES

项目管理 敏捷开发 ONES 开发管理

模块8 作业

Chris Cheng

架构训练营

质量基础设施一站式服务平台建设,NQI平台解决方案

听说过对 Go map 做 GC 吗?

万俊峰Kevin

map Go 语言

神奇的Duff's device

实力程序员

anyRTC 6月SDK更新迭代

anyRTC开发者

音视频 WebRTC 实时通讯sdk

新手程序员必备10大技能

禅道项目管理

Linux 程序员 语言 git 学习

价值连城 杰弗里·欣顿(Geoffrey·Hinton)的采访 给AI从业者的建议 John 易筋 ARTS 打卡 Week 55

John(易筋)

ARTS 打卡计划

快速构建JVM整体认知-JVM的生命周期

刘绍

Java 程序员 JVM JVM原理 规范

Scrapy 爬取西刺代理存入MySQL & MongoDB 数据库(手把手教学,超详细步骤)

若尘

MySQL mongodb 爬虫 Scrapy 7月日更

HarmonyOS开发者创新大赛作品《智能农场》相关开发技术分享

科技汇

我是一个请求,我是如何被发送的?

华为云开发者联盟

注解 流程 CSE 请求 RestTemplat

Rust从0到1-智能指针-内存泄漏

rust 智能指针 内存泄漏 循环引用 smart pointer

5G消息盛事来袭|2021中国移动创客马拉松大赛5G消息专题赛即将启动!

5G消息

开发者 创客开发 开发者大赛 5G消息

【Flutter 专题】87 初识状态管理 Bloc (二)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 7月日更

毕业四年,我当初是如何走上编程这条路的!

Andy阿辉

程序员 开发 大学生 编程故事 自我成长

Vue进阶(四十五):精解ES6 Promise 用法

No Silver Bullet

Vue Promise 异步编程 7月日更

ReactNative进阶(十六):React-Native 组件生命周期

No Silver Bullet

生命周期 React Native 组件 7月日更

禧大福酒口感怎么样?好喝又养生

Geek_50a546

【技术实践】基于Cglib动态代理,实现Spring的AOP核心功能!

小傅哥

spring 小傅哥 aop 动态代理 cglib

“攻城狮”实用指南之Linux CPU性能优化

中原银行

Linux

详解SQL优化必备:并行执行框架和执行计划

华为云开发者联盟

sql SQL优化 执行计划 GaussDB(for openGauss) 并行执行框架

颠覆传统经营模式,区块链助力餐饮行业数字化革新

旺链科技

数字化 区块链技术 餐饮

架构师之于团队的作用和其能力体现是什么?

happlyfox

话题讨论

上手后才知道,这套仪表盘系统用起来是真的爽!

尔达Erda

开源 微服务 运维 APM msp

关于数据库时区,这么多奥秘你都知道么?

华为云开发者联盟

数据库 操作系统 时间 时区 GaussDB(DWS)

WATT NETWORK软件系统开发详情

决定中国SaaS成败的三个关键问题

ToB行业头条

SaaS

Gmail Inbox发布基于深度学习的智能回复功能_语言 & 开发_张天雷_InfoQ精选文章