作者:虞喵喵
编者按:近日,机器之心独家对话百度副总裁王海峰博士,针对时下的 NLP 热点、百度相关的技术情况及其个人经历展开讨论。
同时,机器之心与百度联合推出技术专栏,探讨百度在自然语言处理领域的研究成果、实践经验与心得。王海峰博士也表示,「理解语言、拥有智能、改变世界,希望我们的专栏能一起朝这个方向努力」。此篇专访作为合作专栏的开篇,希望读者能从中有所获益。专栏后续内容,请持续关注机器之心。
王海峰博士现任百度副总裁,负责百度搜索引擎、手机百度、百度信息流、百度新闻、百度手机浏览器、百度翻译、自然语言处理、语音搜索、图像搜索、互联网数据挖掘、知识图谱、小度机器人等业务。
学术方面,王海峰博士是 ACL(Association for Computational Linguistics)50 多年历史上唯一出任过主席(President)的华人,也是迄今为止最年轻的 ACL 会士(Fellow)。同时,王海峰博士还在多个国际学术组织、国际会议、国际期刊兼任各类职务。
此前,我们曾专访过百度自然语言处理部技术负责人吴华、高级总监吴甜,就百度机器翻译技术展开过详细讨论。想要进一步了解百度机器翻译,可移步《独家对话百度 NLP:先解决语义理解,再谈机器翻译取代人类》(可点击文末阅读原文查看)。
因涉及方面较多、篇幅较长,根据专访情况将内容分为上、下两篇。《上篇:产品与技术》,谈百度翻译系统、信息流、知识图谱的特点与技术,以及对数据、知识、记忆等解决 NLP 问题关键点的看法;《下篇:过去与现在》,谈王海峰博士自 1993 年来专注研究机器翻译与自然语言处理的过程,以及发展百度自然语言处理相关技术过程中的经历与思考。
上篇:产品与技术
机器之心:首先请您介绍一下,目前所负责的研究和关注的重点有哪些?
王海峰:从整体上,我在百度负责搜索、信息流、手机百度,百度新闻、百度翻译、手机浏览器、自然语言处理、知识图谱等业务,既包括技术和产品,也包括运营等。我们的很多产品如搜索、信息流等,都是技术驱动的,既有工程上的架构、策略,也有很多人工智能技术,如机器学习、数据挖掘、知识图谱、自然语言处理和语音图像技术等等。
自然语言处理一直是这些业务中非常重要的基础技术。从做搜索引擎诞生的第一天开始,最基本的 query 分析,网页内容分析,文本匹配等,都需要自然语言处理。近些年来大家都很关注人工智能,随着深度学习的应用,语音图像很多问题已解决得比较好,但自然语言处理仍然面临很多难题,也是现在人工智能的重点和热点。
十几年来,自然语言处理工作在百度一直很重要,并已有很多积累。2010 年初我加入百度后,建立了独立的自然语言处理部门。既致力于支持百度最核心的搜索和广告等业务,也对自然语言处理技术进行了完整布局。不管是偏基础的分析理解、生成,还是各种应用系统,像机器翻译、问答系统、对话系统都在开展。
百度自然语言处理技术的开展,一方面依托百度强大的数据和计算能力,另一方面将自然语言处理技术实际应用于产品也产生了更多数据。每天有非常多的用户使用搜索,而背后又有万亿量级的网页数据,绝大多数都用语言文字表示,蕴含了非常多可以挖掘的、有价值的信息和知识。这些既为自然语言处理的研究提供了非常好的基础,同时提供了非常重要的应用场景。
机器之心:您在 AAAI 上的演讲中提到百度会在 query 中用到 BOW、CNN、RNN 等技术,这些不同的技术在语义理解上有什么样的作用?怎么去应用这些技术?
王海峰:Query 理解是一个研究了很多年的方向。Query 理解分很多层,比如最基础的中文 query 理解,要做分词、命名实体识别、短语结构分析等等。在应用深度学习之前百度就达到了很好的效果,在这过程中也积累了非常丰富的用户数据。这些数据的积累又为后来应用深度学习提供了基础。
百度是世界上最早将深度学习技术应用在搜索引擎中的公司。深度学习本身具有很强的表示能力及大数据学习能力,基于百度积累的海量数据以及强大的计算资源,我们设计研发的针对性的新模型,展现出非常好的学习效果。
学习出来的是什么?更多是语义层面的匹配。用户在 query 中用的是一种表达方式,网页中对应的可能是另外一种。在用户的使用过程中,他的点击数据、行为数据隐藏着不同表达方式之间的关联,机器学习、深度学习就能学到这种关联。本质上,还是更好地利用更多的数据学到了更多东西。BOW(Bag-of-Words,词袋)就是对这些词的语义表示做简单的组合,我们用了更复杂的网络如 CNN、RNN,CNN 能更好自动捕捉一些局部结构信息,RNN及其变体在序列建模中更能体现句篇的长距离依赖特性,它们的表示能力、学习能力就会进一步增强。
神经网络不是近几年才出现的。20 多年前我读博士的时候,博士论文也用了 RNN,但那时候的数据量要小很多,计算机的计算能力甚至跟现在的手机都没法比。那时只能用很小的数据去跑模型,能跑出来、也有效果,但远远达不到今天的效果。深度学习很多基础理论也并不是近几年才产生的,但是近几年爆发式的在应用中取得了非常多的成果,大数据和强大的计算能力起到了至关重要的支撑作用。
机器之心:百度在前几年就上线了机器翻译系统,我们知道机器翻译系统可能用到神经网络、基于规则方法、基于实例的方法,还有基于统计的。这些不同的方法,如何在一个翻译系统中结合?
王海峰:我们在世界上最早把深度学习应用到大规模线上翻译系统,2015 年 5 月系统正式上线。但上线的同时,并没有把原来的方法直接替换掉。我们发现多个模型融合使用的效果是最好的,因为深度学习有些问题解决的并不好,每一种方法都有它擅长的地方。
在应用深度学习之前,基于统计的、规则的、实例的方法我们都用了。比如规则方法,擅长抽象语言知识并显式地表示出来,比如语法知识、局部的规则等。
从一种语言到另一种语言并不是完全依靠规则的,如果有限的语法能覆盖所有语言现象,翻译这件事就会变得非常简单。现实中语言是非常复杂的,表示很灵活,很多时候并不是从语法演绎出来,而是约定俗成就这么说,这时候基于实例的方法就会效果更好、效率更高。就像我们学英语时,很多时候不需要去分析,一听到中文,相应的英文就会脱口而出。
统计机器翻译方法和神经网络机器翻译有一些相似的优点,同样可以从非常庞大的语料库中学习。因为它基于参数和模型,鲁棒性也更好。统计方法需要从词,到短语,到句子一层一层去做对齐、抽取、重排序等等;而神经网络翻译模型则可以是端到端的系统,用足够的语料去训练,就可以得到不错的结果。从这个角度看,机器翻译入门的门槛变低了,但想做到特别好仍然非常难。
这几种方法,我们现在更多是在结果级进行融合。
机器之心:我们现在的知识图谱包含 3 种:实体图谱、意图图谱、关注点图谱,我们为什么要做这些不同的知识图谱,它们的情况和应用是怎么样的?
王海峰:做不同的图谱,其实是应用驱动的。基于实体的知识图谱,就是通常意义上的知识图谱。基本节点是实体,实体的属性、实体和实体之间的关系,一个基本的实体知识图谱就是这样。
为什么做关注点图谱?因为我们现在在做信息流,用户关注的不一定是实体。它可以是一个实体或者概念,比如关注人工智能、机器翻译;但也可以是一个事件,比如 AAAI 会议在旧金山召开,这不是实体或概念,而是一个事件,在实体图谱里是没有表示这样的事件的节点的。这时就需要关注点图谱。
意图图谱我们在内部也称为需求图谱,用户对话的过程中提出了一个需求,下一个需求会是什么?比如「阿拉斯加」,用户关注的是城市还是宠物?如果关注宠物那么接下来关注的是喂养、习性还是其它?这既不是一个实体,也不是一个事件关注点。所以每一种知识图谱都是由不同的应用驱动的。
机器之心:包括 UC、今日头条等等大家都在做信息流,百度在技术上有哪些不同之处?
王海峰:信息流从基本原理上讲,一端是对用户的理解,一端是对内容的理解,然后对它们进行匹配。从这个最基本点看,大家都在做类似的事,但我们可以对内容、对用户理解得更好、更充分。这背后既有数据的优势,也有技术的优势。
数据方面,通过信息流中的用户行为可以分析用户的一些兴趣点,但不限于此,比如用户搜索的 query,明确表达了用户的需求,而这些需求与用户兴趣爱好或者个体属性等是相关的。再比如用户关注了某个贴吧,这是一个非常强的信号,意味着他对这个东西很感兴趣。
所以我们做信息流不是孤立的,而是基于百度整体的各种产品,综合起来会对用户有更好的理解。
另一方面是技术。百度在人工智能的方方面面都有着非常深厚的技术积累,我们会综合利用各种技术。刚才谈到不少深度学习技术模型在百度产品中已得到很多应用,而在真正的产品应用中,其它各种机器学习方法,比如 SVM 、CRF、GBDT 等也都会用。技术的选型,是基于对应用需求的充分理解及对数据的深入分析进行的。
对内容理解这部分,则更多依赖自然语言理解。在搜索中,虽然也用到大量的自然语言处理技术,例如 query 的理解、改写等,但搜索系统的基础是关键词与文本的匹配,使用的理解技术相对简单。而对于信息流推荐系统,则需要先对一篇完整的文章有深度的分析理解,比如打上合适且丰富的标签,需要的分析理解程度会更深。
机器之心:目前我们的信息流里也有机器生成的文章,没有语病、读起来非常通顺,但会缺少所谓的「意图」。对于自动写作的意图和创造这件事,您是怎么看的?
王海峰:目前有相对做得比较好的一面,也有局限性。
写稿子、甚至写诗时,机器是在做什么?一方面是基于系统里的结构化数据,把数据组织成语句或者文章。比如我们做篮球解说,首先是拿到比赛赛况的实时数据,基于这些数据模拟解说,学习解说员的常用语言,也做一些简单的推理。再比如写诗也是首先明确诗的主题,比如「桃花」还是「月亮」?然后去规划诗的内容。其背后是基于一个大规模诗集训练得到的生成模型,基于确定好的主题和规划的内容,最后生成的很多诗歌的确看上去让人觉得很惊艳。
机器能做到上面这些,也并不意味着机器具备了真正的深层次的理解。比如桃花开了,每个人的感受不一样,联想的东西也不一样。机器并没有像人一样真正去具备这些情感,更多的是模仿已有数据。
机器相对人来说有很多更擅长的能力,但也有一些远不如人的方面。例如,让搜索匹配到合适的网页,但深层的基于背景知识进行深层次的理解及联想则比较困难。还有,比较个大小长短的,对机器来说易如反掌,但要真正去推理则很困难。再比如,机器可以模仿人来写诗,但让机器真正有感而发去搞艺术创作则很难。总结一下,机器很善于匹配、比较、模仿,但要具备像人一样的理解、推理、创造能力,则还有很长的路要走。
机器之心:对于这个问题,常识和记忆是解决的方法吗?
王海峰:知识很重要,所以我们现在很重视建设知识图谱。知识图谱的建设已经是非常浩大的工作,而如何利用这些知识进行理解、推理,是更复杂的事。
简单的推理相对容易,比如在搜索里询问名人的年龄,这不是匹配可以得到的,因为答案和当下的时间有关。静态的知识是这个名人的生日,有了生日和当前时间,做个减法就能得到年龄。这是一个简单的推理过程。
再说记忆,首先是记什么,然后是怎么用。机器可以记住网页,可以记用户日志,也可以把经过分析提取后结构化的数据和知识记住。记住了这么多,接下来就是利用这些数据和知识,去分析、去推理、去解决实际问题。
机器之心:大家都在研究用无监督学习或少量数据代替大量的标注数据,来达到同样的训练效果,在 NLP 领域我们有相关的研究或者进程吗?
王海峰:具体还是要看问题的目标是什么。如果目标是最终的结果,比如在机器翻译中使用双语语料达到源语言输入、经过翻译之后目标语言输出的目的,就可以用端到端深度学习,训练一个模型找到结果。怎么标注数据,甚至是不是真正有对词、对短语的理解就不那么重要。如果目标是做一个 Parser,得到一棵符合人的认知、人对语法理解的句法树,那就一定需要标注数据,在此基础上加入某些特定的无标注数据也可以进一步提升效果。
关于少还是多的问题,可以首先用较少的数据作为原始标注数据训练一个模型,然后设法全自动或半自动的得到更多数据。
再举一个更基本的例子,分词。有些任务涉及到理解就需要分成符合语言学定义的词,有些任务就不太关心片段是不是真正的词。有时候做信息检索是一些片段放在一起,分析 query、分析网页时是同样的片段,两个片段只要能匹配上就可以了。这时候分词的粒度是什么、分出的词是不是符合语言学定义就不那么重要了。
机器之心:现在生成对抗网络比较热门,在计算机视觉领域得到很多应用。那么生成对抗网络可以在 NLP 中应用吗?
王海峰:现在在 NLP 领域是有人在研究,但是还没有特别显著的突破。
不止是生成对抗网络,近年来深度学习在语音图像等领域的应用很成功,在 NLP 领域也出现大量研究成果,但是这些研究成果真正对应用带来质的飞跃还不多。语言的复杂性在于,语言不仅仅是表面的字符串,语言的内涵太丰富了,语言实际上是人对整个客观及主观世界的认知、描述和表达。
机器之心:那 NLP 领域,接下来需要着重解决的是哪些问题?
王海峰:根本问题还是语言的分析理解,语言的生成,以及知识的掌握和运用。
真正要让先进的 NLP 技术实现大规模应用,我认为更重要的是更好地利用大数据,尤其是实际产品应用中产生的数据。数据是动态增长的,用户会不断产生和反馈新数据。在这个动态过程中,技术会越来越完善。积累到一定程度我相信会带来质变。