OK,Google Now 背后的科技有多黑?
【编者注】本文作者@陈村,剑桥大学自然语言处理(NLP)组全奖硕士。现从事机器学习、 语音识别 、语义分析工程师。
不久前,Google 宣布进行架构重组,原安卓业务主管、Google 高级副总裁桑达尔·皮查伊成为了 Google 新任的CEO。这个变动似乎引起了一些 Google Now 开发团队的不满,引发全员离职(亦说骨干成员离职),Google Now并入大 Search 组。Google Now 是安卓平台用以对抗苹果Siri、微软Cortana的 语音助手 。那么,Google Now是什么?它包含了哪些 Google 的 黑科技 ?
Google Now 是什么
虽然本文谈的广义 Google Now 是集成了语音搜索的一整套 App,但更精确地定义狭义的 Google Now,就是手机上 Google Now 应用打开之后,出现在首屏的那些智能推荐卡片,在合适的时间推送给你合适的信息,比如天气、新闻。相对于人们在Google搜索输入框主动输入自己想找的东西,Google Now会“智能”地把你所需要的信息推送到你面前。
所以,大家经常把 Google Now 称之为 Google 的智能推送技术。
比如笔者在国外的时候,能享受到 Google Now 的便利。比如通过Booking.com(类似携程)定了酒店,或者 kayak.com(类似去哪儿)定了机票,确认邮件都会发到笔者的 Gmail 邮箱。Google会很“智能”地分析(偷窥)这些行程邮件,并在航班即将起飞前几小时提醒你航班的具体信息及航站楼甚至登机口信息。在你到达新的城市的时候,自动弹出你即将下榻酒店的导航路线以及联系电话等信息。 出国旅行的时候,Google Now会自动弹出当地的货币汇率,以及祖国的时间。它也会细心地记住你家和公司的位置,在下班时间准时提醒你回家的交通状况,虽然还并不能那么智能地了解到你今晚又要加班!
这里再说说Google Now 的诞生
Google Now,也是传说中的 Google 20% Project 的产物。Google工程师 Baris Gultekin 在2010年的时候,因为个人兴趣想利用手机上丰富的传感器来做一些有趣的事情,这个想法跟时任Google Map负责人的 Andrew Kirmse 不谋而合。两人在业余时间里面搭建了一个原型,并展示给当时还在 Google 的梅姐 Marissa mayer 。
在梅姐的支持下,队伍渐渐壮大,并且也加入了用户通勤的时间预测和对 Google Calendar 事件的整合。碰巧的是,在2012年初,Larry Page正好要求 Android 和 Search 团队搭建一个类似的东西。于是在Android 老大 Andy Rubin 的支持下,两人加入了 Android 团队,得到了大量的设计方面的资源,并且在2012年 Google IO上第一次发布Google Now。
发展了这么多年,现在 Google Now 已经被整合进 Google 搜索的 App 中。
最近某国外科技网站也传出了Google Now团队解散的谣言,说是成员全数离职,还联系到最近Google架构变动,颇有阴谋论的意思。部分骨干成员离职确有其事,但这早在几个月前就发生了,非常正常的人事变动。
Google Now本身作为一个出色的产品,从Android组移入Search组,从技术角度来讲,能得到大Search组更多的技术资源,对早日完成智能Google这一伟大目标是大有好处的,这明显是个好消息!
别看这个App界面简单,就一个搜索框和一排卡片,里面的技术可不简单。
介绍完狭义的Google Now推荐卡片,我们一起来看看Google Now这个小app里面, 蕴含了很多Google的黑科技:智能推荐(Google Now card),热词唤醒(OK Google),语音识别和语义分析。
首先说下智能推荐
推荐的原则是“Just right information at right time”,即合适的时间推荐合适的信息。那么如何知道哪些信息是用户真正想要的,而不是机器自作主张,这个度需要拿捏。虽然现在统计机器学习方面这几年已经大规模地应用在工业界,但是巧妇难为无米之炊,在无法得知用户生活方方面面信息的前提之下,算机器学习算法再高级,也无法做出太智能的推荐,所以一般公司都会采用规则+机器学习相结合的策略。
从现有产品看来,Google Now推荐的东西也相当保守。
Google 能够通过你在某个地点待的频率,猜测你家和工作单位的位置,并且在每天指定时间自动提醒你回家的交通情况。
前面也提到过,行程邮件卡片、酒店预订卡片、出国旅游的汇率和祖国时间卡片等等。难点不在有多高深的推荐算法,而在于Google能尽量收集用户的生活信息的点点滴滴,并且通过深思熟虑的规则,尽量不打扰地推荐给你。在国外,由于邮件普及率高,Google 坐拥 Gmail(顺便说一下,Gmail 当年出生跟 Google Now很像,也是诞生于传说中的20% project),因此做出这个东西非 Google 莫属。
热词唤醒
在 Google Now 软件主界面,对着手机喊一声“OK Google”,则自动触发语音识别接受用户语音查询。
热词唤醒作为启动语音识别的钥匙,目的是以尽可能低的功耗来接受用户的唤醒。
因为需要持续开着麦克风,对输入的音频进行运算,使得CPU一直无法得到休眠,会严重影响已经很紧张的手机电池续航。
所以手机上热词唤醒要维持高水准,需要考虑的重点,除了准确率(用户叫你的时候能马上响应,用户不在叫你的时候不要听错),还有能耗。热词唤醒不需要像通用语音识别一样识别千变万化的自然语言,它只要识别“OK Google”这个固定的词,所以在算法方面也不必要采用复杂的传统语音识别,抛弃高大上的各种 HMM、语言模型,用简单直接的分类的方法在用户输入语音流中寻找“OK Google”这几个字,简单但好用。
当然,这也有个例外,几年前 Moto X刚出来,就是主打24小时全程语音唤醒待命,人家可是有2颗低功耗芯片,专门等待着用户随时输入语音命令。
语音识别就不用说了,Google的强项
几年前微软研究院的一篇基于深度学习应用于语音识别的论文,定义的算法准确率超越了传统的基于 HMM-GMM 的语音识别。但 Google 领先将其工业化,并应用到当年的语音搜索产品中。DNN 直接在最原始的音频数据上进行语音识别,并且需要大量的训练数据,来训练大量的 神经网络 参数,因此对硬件要求也很高,这正好是 Google 的强项。
经过几年的积累,Google 的语音识别已经初具规模。值得注意的是,作为 Google Now 的竞争对手的Siri,Siri 的语音识别一直用的是 nuance 家的技术(nuance是世界最大的语音识别提供商,可以理解为讯飞在中国的地位),虽然前段时间也传出过苹果在组建自己的语音识别团队的消息。
语义识别
通过 Google Now 上面的应用搜索框,你可以问一些看起来非常炫酷的问题。
一些日常生活类信息查询,比如纽约到旧金山的航班,比如未来3天北京的天气,现在东京时间几点。这种问答系统涉及到自然语言处理的方方面面,难度极大。
虽然在学术上,NLP(神经语言程序学)在各种领域,比如语法分析、实体识别,经过几十年的努力,都取得了90%以上的准确率。但在实际产品情境下,用户口语化表述更加多样,会产生歧义,和学术界经常用于评测系统的语言测试集差别很大。
并且,问答系统是多个子NLP系统串联成流水线的产物,比如词性分析的输出可能作为语法分析的输入,语法分析的输出可能作为实体识别的输入。 在这么一个流水线系统中,早期的错误会被传播到流水线之后的步骤,并被放大。
因此单个子系统上很小的错误,在最终都会被放大,严重影响最终对用户查询的理解。
一般的问答系统,都会针对当前领域进行专门优化,研究用户问得最多的是哪些问题,并尽量倚重规则(甚至正则表达式),并加强用户引导,减少用户自然语言的歧义。
Google Now 语音搜索还支持一些百科类问题,比如现在的美国总统是谁,喜马拉雅山的高度是多少,或者中国的人口是多少。
Google 毕竟是搜索出身,坐拥整个互联网的信息,千千万万的网页中已经包含了“奥巴马是美国总统”,“中国的人口是13亿”这样的陈述,对于 Google 来说,问题会简化成如何匹配用户的问题到千千万万网页中的某一句话,而不仅仅是给出 Top 几十的匹配网页,这在屏幕小的手机上、甚至手表上对用户体验的影响至关重要。
学术界的一般做法,是首先识别用户是问哪个类型的问题(What? When? Which? Where? etc.),然后利用信息检索的策略先在千万网页中筛选出一些和用户问题最相关的候选网页,之后根据问题类型,去这些候选网页中摘出最能直接回答用户提问的语句。赢了Jeopardy!(可以理解为老美的开心辞典这样的知识问答类节目) 人类冠军的 IBM Watson 系统,也采用了类似的设计思路。这样的方法可以确保以自动化而非人力的方法提高问题的覆盖率,而不用像某果 需要招聘很多问题编辑来应对越来越多热心群众对Siri的无情调戏 。
Google 近几年来,在语义分析、知识图谱方面都投入了大力气,大家也渐渐能在Google Now以及普通搜索中看到对这类技术的整合。
所以,Google Now 并入大 Search 组,得到更多的技术支持,绝对是一件大大的好事呢!