作为人工智能时代重要的知识表示方式之一,知识图谱能够打破不同场景下的数据隔离,为搜索、推荐、问答、解释与决策等应用提供基础支撑。美团大脑围绕吃喝玩乐等多种场景,构建了生活娱乐领域超大规模的知识图谱,为用户和商家建立起全方位的链接。我们美团希望能够通过对应用场景下的用户偏好和商家定位进行更为深度的理解,进而为大众提供更好的智能化服务,帮大家吃得更好,生活更好。
知识图谱的重要性
近年来,人工智能正在快速地改变人们的生活,我们可以看到各家科技公司都纷纷推出人工智能产品或者系统,比如说在2016年,谷歌推出的AlphaGo,一问世便横扫整个围棋界,完胜了人类冠军。又比如亚马逊推出的AmazonGo无人超市,用户只需下载一个App,走进这家超市,就可以直接拿走商品,无需排队结账便可离开,这是人工智能时代的“新零售”体验。又比如微软推出的SkypeTranslator,它能够帮助使用不同语言的人群进行实时的、无障碍的交流。再比如说苹果推出的Siri智能助理,它让每一个用苹果手机的用户都能够非常便捷地完成各项任务。所有这些人工智能产品的出现都依赖于背后各个领域技术突飞猛进的进展,包括机器学习、计算机视觉、语音识别、自然语言处理等等。
作为全球领先的生活服务电子商务平台,美团点评在人工智能领域也在积极地进行布局。今年2月份,AI平台部NLP中心正式成立,我们的愿景是用人工智能帮大家吃得更好,生活更好。语言是人类智慧的结晶,而自然语言处理是人工智能中最为困难的问题之一,其核心是让机器能像人类一样理解和使用语言。
所有这一切,都依赖于人工智能背后两大技术驱动力:深度学习和知识图谱。我们可以将这两个技术进行一个简单的比较:
我们将深度学习归纳为隐性的模型,它通常是面向某一个具体任务,比如说下围棋、识别猫、人脸识别、语音识别等等。通常而言,在很多任务上它能够取得非常优秀的结果,同时它也有非常多的局限性,比如说它需要海量的训练数据,以及非常强大的计算能力,同时它也有非常多的局限性,比如说难以进行任务上的迁移,而且可解释性比较差。
另一方面,知识图谱是人工智能的另外一大技术驱动力,它能够广泛地适用于不同的任务。相比深度学习,知识图谱中的知识可以沉淀,可解释性非常强,类似于人类的思考。
我们可以通过上面的例子,来观察深度学习技术和人类是如何识别猫的,以及它们的过程有哪些区别。
2012年,GoogleX实验室宣布使用深度学习技术,让机器成功识别了图片中的猫。它们使用了1000台服务器,16000个处理器,连接成一个10亿节点的人工智能大脑。这个系统阅读了1000万张从YouTube上抽取的图片,最终成功识别出这个图片中有没有猫。
我们再来看看人类是如何做的。对于一个3岁的小朋友,我们只需要给他看几张猫的图片,他就能够很快识别出不同图片中的猫,而这背后其实就是大脑对于这些知识的推理。
2011年,Science上有一篇非常出名的论文叫《HowtoGrowaMind》。这篇论文的作者来自于MIT、CMU、UCBerkeley、Stanford等美国名校的教授。在这篇论文里,最重要的一个结论就是:如果我们的思维能够跳出给定的数据,那么必须有AnotherSourceOfInformation来MakeUpTheDifference。
这里的知识语言是什么?对于人类来讲,其实就是我们从小到大接受的学校教育,报纸上、电视上看到的信息,通过社交媒体,通过与其他人交流,不断积累起来的知识。
近年来,不管是学术界还是工业界都纷纷构建自家的知识图谱,有面向全领域的知识图谱,也有面向垂直领域的知识图谱。其实早在文艺复兴时期,培根就提出了“知识就是力量”,在当今人工智能时代,各大科技公司更是纷纷提出:知识图谱就是人工智能的基础。
全球的互联网公司都在积极布局知识图谱。早在2010年微软就开始构建知识图谱,包括Satori和Probase。2012年,Google正式发布了GoogleKnowledgeGraph,现在规模已经达到700亿左右。目前微软和Google拥有全世界最大的通用知识图谱,Facebook拥有全世界最大的社交知识图谱,而阿里巴巴和亚马逊则分别构建了商品知识图谱。
如果按照人类理解问题和回答问题这一过程来进行区分,我们可以将知识图谱分成两类。我们来看这样一个例子,如果用户看到这样一个问题,“WhowastheU.S.PresidentwhentheAngelswontheWorldSeries?”相信所有的用户都能够理解这个问题,也就是当Angels队赢了WorldSeries的时候,谁是美国的总统?
这是一个问题理解的过程,它所需要的知识通常我们称之为CommonSenseKnowledge(常识性知识)。另外一方面,很多网友可能回答不出这个问题,因为它需要另外一个百科全书式的知识。
因此,我们将知识图谱分成两大类,一类叫CommonSenseKnowledgeGraph(常识知识图谱),另外一类叫EncyclopediaKnowledgeGraph(百科全书知识图谱)。这两类知识图谱有很明显的区别。针对CommonSenseKnowledgeGraph,通常而言,我们会挖掘这些词之间的LinguisticKnowledge;对于EncyclopediaKnowledgeGraph,我们通常会在乎它的Entities和这些Entities之间的Facts。
对于CommonSenseKnowledgeGraph,一般而言我们比较在乎的Relation包括isARelation、isPropertyOfRelation。对于EncyclopediaKnowledgeGraph,通常我们会预定义一些谓词,比如说DayOfbirth、LocatedIn、SpouseOf等等。
对于CommonSenseKnowledgeGraph通常带有一定的概率,但是EncyclopediaKnowledgeGraph通常就是“非黑即白”,那么构建这种知识图谱时,我们在乎的就是Precision(准确率)。
CommonSenseKnowledgeGraph比较有代表性的工作包括WordNet、KnowItAll、NELL以及MicrosoftConceptGraph。而EncyclopediaKnowledgeGraph则有Freepase、Yago、GoogleKnowledgeGraph以及正在构建中的“美团大脑”。
这里跟大家介绍两个代表性工作:1)CommonSenseKnowledgeGraph:Probase;2)EncyclopediaKnowledgeGraph:美团大脑。
常识性知识图谱(CommonSenseKnowledgeGraph)
MicrosoftConceptGraph于2016年11月正式发布,但是它早在2010年就已经开始进行研究,是一个非常大的图谱。在这个图谱里面有上百万个Nodes(节点),这些Nodes有Concepts(概念),比如说SpanishArtists(西班牙艺术家);有Entities(实体),比如说Picasso(毕加索);有Attributes(属性),比如Birthday(生日);有Verbs(动词),有Adjectives(形容词),比如说Eat、Sweet。也有很多很多的边,最重要的边,是这种isA边,比如说Picasso,还有isPropertyOf边。对于其他的Relation,我们会统称为Co-occurance。
这是我们在微软亚洲研究院期间对CommonSenseKnowledgeGraph的ResearchRoadmap(研究路线图)。当我们构建出CommonSenseKnowledgeGraph之后,重要的是在上面构建各种各样的模型。我们提出了一些模型叫Conceptualization(概念化模型),它能够支持TermSimilarity、ShortTextSimilarity以及Head-ModifierDetection,最终支持各种应用,比如NER、文本标注、Ads、QueryRecommendation、TextUnderstanding等等。
到底什么是ShortTextUnderstanding?常识怎么用在TextUnderstanding中?下面我们可以看一些具体的例子:
当大家看到上面中间的文本时,相信所有人都能够认出这应该是一个日期,但是大家没办法知道这个日期代表什么含义。但如果我们再多给一些上下文信息,比如Picasso、Spanish等等,大家对这个日期就会有一些常识性的推理。我们会猜测这个日期很可能是Picasso的出生日期,或者是去世日期,这就是常识。
比如说当我们给定China和India这两个Entity的时候,我们的大脑就会做出一些常识性的推理,我们会认为这两个Entity在描述Country。如果再多给一个Entity:Brazil,这时候我们通常会想到EmergingMarket。如果再加上Russia,大家可能就会想到“金砖四国”或者“金砖五国”。所有这一切就是常识性的推理。
再比如,当我们看到Engineer和Apple的时候,我们会对Apple做一些推理,认为它就是一个ITCompany,但是如果再多给一些上下文信息,在这个句子里面由于eating的出现,我相信大家的大脑也会一样地做出常识推理,认为这个Apple不再是代表Company,而是代表Fruit。
所以,这就是我们提出来的ConceptualizationModel,它是一个ExplicitRepresentation。我们希望它能够将Text,尤其是ShortText,映射到MillionsConcepts,这样的Representation能够比较容易让用户进行理解,同时能够应用到不同场景当中。
在这一页PPT中,我们展示了Conceptualization的结果。当输入是Pear和Apple的时候,那么我们会将这个Apple映射到Fruit。但是如果是iPadApple的时候,我们会将它映射到Company,同时大家注意这并不是唯一的结果,我们实际上是会被映射到一个ConceptVector。这个ConceptVector有多大?它是百万级维度的Vector,同时也是一个非常Sparse的一个Vector。
通过这样的一个ConceptualizationModel,我们能够解决什么样的文本理解问题?我们可以看这样一个例子。比如说给定一个非常短的一个文本Python,它只是一个SingleInstance,那么我们会希望将它映射到至少两大类的Concept上,一种可能是ProgrammingLanguage,另外一种是Snake。当它有一些Context,比如说PythonTutorial的时候,那么这个时候Python指的应该是ProgrammingLanguage,如果当它有其他的Adjective、Verb,比如有Dangerous时,这时候我们就会将Python理解为Snake。
同时如果在一个文本里面包含了多个的Entity,比如说DNNTool、Python,那么我们希望能够检测出在这个文本里面哪一个是比较重要的Entity,哪一个是用来做限制的Entity。
下面我们将简单地介绍一下,具体应该怎么去做。当我们在Google里搜一个SingleInstance的时候,通常在右侧会出现这个KnowledgePanel。对于Microsoft这样一个Instance,我们可以看到这个红色框所框出来的Concept,Microsoft指向的是TechnologyCompany,这背后是怎么实现的?
我们可以看到,Microsoft实际上会指向非常非常多的Concept,比如说Company,SoftwareCompany,TechnologyLeader等等。我们将它映射到哪一个Concept上最合适?
如果我们将它映射到Company这个Concept上,很显然它是对的,但是我们却没办法将Microsoft和KFC、BMW这样其他类型的产品区分开来。另外一方面,如果我们将Microsoft映射到LargestDesktopOSVendor上,那么这是一个非常Specific的Concept,这样也不太好,为什么?因为这个Concept太Specific,太Detail,它可能只包含了Microsoft这样一个Entity,那么它就失去了Concept的这种抽象能力。
所以我们希望将Microsoft映射到一个既不是特别General(抽象),又不是一个特别Specific(具体)的Concept上。在语言学上,我们将这种映射称之为Basic-level,我们将整个映射过程命名为Basic-levelConceptualization。
我们提出了一种计算Basic-levelConceptualization的方法,其实它非常简单而且非常有效。就是将两种的Typicality做了一些融合,同时我们也证明了它们跟PMI和CommuteTime之间的一些关联。并且在一个大规模的数据集上,我们通过Precision和NDCG对它们进行了评价。最后证明,我们所提出来的Scoring方法,它在NDCG和Precision上都能达到比较好的结果。最重要的是,它在理论上是能够对Basic-Level进行很好的解释。
下面我们来看一下,当Instance有了一些Context之后,我们应该怎么去进行处理。我们通过一个例子,来简单地解释一下这背后最主要的思想。
比如说iPad、Apple,其中iPad基本上是没有歧异的,它会映射到Device、Product。但是对于Apple而言,它可能会映射到至少两类的Concept上,比如说Fruit、Company。那么我们怎么用iPad对Apple做消歧呢?
方法其实也挺直观的。我们会通过大量的统计去发现像iPad这样的Entity,通常会跟Company、Product共同出现。比如说iPad有可能会跟三星共同出现,有可能会跟Google共同出现,那么我们就发现它会经常跟Brand、Company、Product共同出现。于是我们就利用新挖掘出来的Knowledge对Apple做消歧,这就是背后最主要的思想。
除了刚才这样一个GeneralContext以外,在很多时候这些Text可能还会包含很多一些特殊的类型,比如说Verb、Adjective。具体而言,我们希望在看到WatchHarryPotter时,能够知道HarryPotter是Movie,当我们看到ReadHarryPotter时,能够知道HarryPotter是Book。同样的,HarryPotter还有可能是一个角色名称,或者是一个游戏名称。
那么我们来看一看应该怎样去解决这样一件事情。当我们看到WatchHarryPotter时,我们首先要知道,HarryPotter有可能是一本Book,也有可能是一部Movie。我们可以算出一个先验概率,这通常要通过大规模的统计。同时我们要知道,Watch它有可能是一个名词,同时它也有可能是一个动词,并且我们还需要去挖掘,当Watch作为动词的时候,它和Movie有非常紧密的关联。
所以我们本质上是要去做一些概率上的推理,不仅要将条件概率做非常细粒度的分解,最后还要做概率计算。
通过概率计算的方法,我们实际上就可以构建出一个非常大的离线知识图谱,那么我们在这个上面,就可以有很多的Term,以及它们所属的一些Type,以及不同Term之间的一些关联。
当我们用这样一个非常大的离线知识图谱来做TextUnderstanding的时候,我们可以首先将这个Text进行分割处理,在分割之后,我们实际上是可以从这个非常大的离线知识图谱中截取出它的一个子图。最后我们使用了RandomWalkWithRestart的模型,来对这样一个在线的Subgraph进行分类。
我们再来看一下,如果一个文本里包含了MultipleEntities,要怎样处理?我们需要做知识挖掘,怎么做?首先我们可以得到非常多的QueryLog,然后我们也可以去预定一些Pattern,通过这种Pattern的定义,可以抽取出非常多Entity之间Head和Modifier这样的Relation,那么在接下来我们可以将这些Entity映射到Concept上,之后得到一个Pattern。
在这个过程之中,我们要将Entity映射到Concept上,那么这就是前面所提到的Conceptualization。我们希望之后的映射不能太General,避免ConceptPattern冲突。
但是它也不能太Specific,因为如果太Specific,可能就会缺少表达能力。最坏的情况,它有可能就会退化到EntityLevel,而Entity至少都是百万的规模,那么整个ConceptPatterns就有可能变成百万乘以百万的级别,显然是不可用的。
所以我们就用到了前面介绍的Basic-LevelConceptualization的方法,将它映射到一个既不是特别General,也不是特别Specific的Concept上。
大家可以看一下我们能够挖掘出来的一些Top的ConceptPatterns,比如说Game和Platform,就是一个Concept和一个Pattern。它有什么用?举一个具体的例子,当用户在搜AngryBirds、iOS的时候,我们就可以知道用户想找的是AngryBirds这款游戏,而iOS是用来限制这款游戏的一个Platform。苹果公司每年都会推出新版本的iOS,那么我们挖掘出这样的ConceptPattern之后,不管苹果出到iOS15或者iOS16,那么我们只需要将它们映射到Platform,那么我们的ConceptPatterns就仍然有效,这样可以很容易地进行知识扩展。
美团大脑——百科全书式知识图谱(EncyclopediaKnowledgeGraph)
在介绍完CommonSenseKnowledgeGraph之后,给大家介绍一下EncyclopediaKnowledgeGraph。这是美团的知识图谱项目——美团大脑。
美团大脑是什么?美团大脑是我们正在构建中的一个全球最大的餐饮娱乐知识图谱。我们希望能够充分地挖掘关联美团点评各个业务场景里的公开数据,比如说我们有累计40亿的用户评价,超过10万条个性化标签,遍布全球的3000多万商户以及超过1.4亿的店菜,我们还定义了20级细粒度的情感分析。
我们希望能够充分挖掘出这些元素之间的关联,构建出一个知识的“大脑”,用它来提供更加智能的生活服务。
我们简单地介绍一下美团大脑是如何进行构建的。我们会使用LanguageModel(统计语言模型)、TopicModel(主题生成模型)以及DeepLearningModel(深度学习模型)等各种模型,希望能够做到商家标签的挖掘,菜品标签的挖掘和情感分析的挖掘等等。
无监督模型我们主要用了LDA,它的特点是成本比较低,无需标注的数据。当然,它准确性会比较不可控,同时对挖掘出来的标签我们还需要进行人工的筛选。至于有监督的深度学习模型,那么我们用了LSTM,它的特点是需要比较大量的标注数据。
通过这两种模型挖掘出来的标签,我们会再加上知识图谱里面的一些推理,最终构建出商户的标签。
如果这个商户有很多的评价,都是围绕着宝宝椅、带娃吃饭、儿童套餐等话题,那么我们就可以得出很多关于这个商户的标签。比如说我们可以知道它是一个亲子餐厅,它的环境比较别致,服务也比较热情。
下面介绍一下我们的知识图谱是如何进行落地的。目前业界知识图谱已经有非常多的成熟应用,比如搜索、推荐、问答机器人、智能助理,包括在穿戴设备、反欺诈、临床决策上都有非常好的应用。同时业界也有很多的探索,包括智能商业模式、智能市场洞察、智能会员体系等等。
此外,我们也将它用在商圈的个性化推荐。当大家打开大众点评时,如果你现在位于某一个商场或者商圈,那么大家很快就能够看到这个商场或者商圈的页面入口。当用户进入这个商场和商户页面时,通过知识图谱,我们就能够提供“千人千面”的个性化排序和个性化推荐。
在这背后其实使用了一个“水波”的深度学习模型,关于这个深度学习模型更详细的介绍,大家可以参见我们在CIKM上的一篇论文。
所有的这一切,其实还有很多的技术突破等待我们去解决。比如整个美团大脑的知识图谱在百亿的量级,这也是世界上最大的餐饮娱乐知识图谱,为了支撑这个知识图谱,我们需要去研究千亿级别的图存储和计算引擎技术。我们也正在搭建一个超大规模的GPU集群,来支持海量数据的深度学习算法。未来,当所有的这些技术都成熟之后,我们还希望能够为所有用户提供“智慧餐厅”和“智能助理”的体验。