斯坦福AI Lab好文:知识图谱深度介绍
原文:An Introduction to Knowledge Graphs
作者:Vinay K. Chaudhri, Naren Chittar, Michael Genesereth
译者:张雨佳
知识图谱(KGs)是最近非常热门的一个概念。它可以组织结构化的世界知识,并可以整合从多个数据来源中提取到的信息。知识图谱已经在自然语言处理和计算机视觉提取到的信息表示方面发挥重要作用,比如将知识图谱表示的领域知识输入到机器学习模型中,就可以产生更好的预测结果。
因此,我们写这篇文章的目的是:
(a)解释知识图谱的基本术语、概念和用法;(b)介绍知识图谱的应用为何在最近突然流行起来;(c)将知识图谱置于人工智能的整体环境中介绍。
在阅读其他相关的报告或关注知识图谱有关讨论之前,这篇文章是一个不错的入门选择。
知识图谱的定义
有向标记图记为一个四元组 G=(N,E,L,f),其中 N 是节点的集合,E⊆N×N 是边的集合,L 是标签集合,f:E→L 是一个从边到标签的函数。标签 B 与边 E=(A,C) 可以看作是一个三元组 (A,B,C),如图 1 所示。
图 1 有向标记图中的一个三元组
知识图谱是一个有向标记图,可以将具体含义与节点和边联系起来。任何东西都可以作为节点,例如,人、公司、计算机等。边用来描述节点之间的关系,例如,两个人之间的友谊关系,公司和个人之间的客户关系或两台计算机之间的网络连接关系等等。
根据应用的具体需要,有向标记图的使用方式多种多样。例如有向标记图中的节点是人,而边描述了他 / 她与父母的关系,那么这个有向标记图也可以叫做数据图。如果有向标记图中的节点是物体类别(例如,书、课本等),边描述子类之间的关系,那该有向标记图也被称为分类。还有的数据模型会给定一个三元组 (A,B,C),其中 A、B、C 分别称为该三元组的主语、谓语和宾语。
应用程序可以利用知识图谱这种数据结构存储信息。信息通过人工输入、自动和半自动的方法组合添加到知识图谱中。无论采用哪种方法输入知识信息,只要记录的信息能被人们轻松理解和验证就好。
许多对图的计算可以简化为导向。例如,想在友谊知识图谱中找到 A 这个人朋友的朋友,就可以在这张图中先找到与 A 标记为朋友关系的节点 B,然后通过递归就可以找到所有和 B 有朋友关系的节点 C。
知识图谱的最新应用
使用有向标记图这种数据结构存储信息,以及使用图算法来处理这些信息并不是什么新鲜事。
有向图表示法已经在许多计算机科学领域中都有所应用,例如,数据流图、二进制决策图、状态图等等。我们主要考虑了知识图谱中最为流行的两个具体应用:通过互联网整合知识、整合企业中的数据。讨论这些应用的同时,也会突出讲解使用知识图谱时的创新和不同之处。
通过互联网整合知识
在谷歌上搜索 “苏黎世 温特图尔” 的结果显示在图 2 的左侧,而维基百科的相关搜索结果显示在右侧,右侧的页面也被称为信息框。
图 2 在网络搜索结果中使用知识图谱
从搜索结果中可以看出,温特图尔位于瑞士,其海拔高度为 430 米等信息。这些信息是直接从温特图尔的维基百科页面信息框中提取的。而信息框中的数据是通过查询一个名为维基数据(Wikidata)的知识图谱来获得的。
接下来要讨论的是来自知识图谱的数据是如何增强网络搜索能力的。
维基百科页面还列出了温特图尔的孪生城市:两个在瑞士,一个在捷克共和国,一个在奥地利。加利福尼亚州的安大略市在维基百科上有一个名为 “安大略,加利福尼亚” 的页面,它将温特图尔列为其姐妹城市。而姐妹城市和孪生城市的关系是对等的,因此,如果城市 A 是另一个城市 B 的姐妹(孪生)城市,那么 B 也一定是 A 的姐妹(孪生)城市。
由于 “姐妹城市” 和 “孪生城市” 都是维基百科中的一种标题,两者之间并没有明确的定义或关系,所以很难发现两者的差异。
与此相反,Wikidata 在对温特图尔的表述中,有一个名为孪生行政机构的关系,其中包括安大略市。在知识图谱中把这种关系定义为对称关系,所以 Wikidata 在安大略市的页面中也会自动包括温特图尔。
因此,Wikidata 的策划人通过使用知识图谱进行存储和推理,解决了识别等价关系的问题。
如果可以把 Wikidata 的知识图谱完全整合到维基百科中,就可以消除例子中提到的缺失链接的情况。我们可以在图 3 中直观地看出温特图尔和安大略市间的双向关系。另外,图 3 的知识图谱中还显示了与温特图尔和安大略市相连的其他对象及关系。
图 3 Wikidata 的一个知识图谱
Wikidata 的数据来自于几个独立的提供者,如美国国会图书馆。通过使用温特图尔的 Wikidata 标识,美国国会图书馆可以轻松地将发布的信息与 Wikidata 中关于温特图尔和温特图尔的其他信息联系起来。通过在 Schema.Org 中发布使用中的关系,Wikidata 可以很容易建立起链接关系。
在 Schema.Org 中还可以查到一些关系列表或者叫关系词汇表,这些列表可以带来两个好处。
首先,用多个数据来源的共同关系,可以更容易确定跨越多个数据集的查询结果。而如果不使用这种共同关系,就需要确定它们之间的语义关系并进行适当翻译。举一个跨越多个来源进行查询的例子:在地图上显示死于温特图尔的人的出生城市?搜索引擎可以使用这个查询去检索知识图谱的信息,并返回类似图 2 那样的最终结果。在返回的搜索结果中使用结构化信息是目前主流搜索引擎的一个标准特性和发展趋势。
最新版本的 Wikidata 有超过 9000 万个对象,这些对象之间有超过 10 亿个关系。Wikidata 通过独立数据提供者发布的 414 种语言的 4872 个不同图录来建立它们之间的联系。
根据最近的统计结果显示,31% 的网站,超过 1200 万的数据提供者正在使用 Schema.Org 的词汇表来发布他们的网页注释。
所以,Wikidata 的知识图谱到底有哪些特殊的创新之处?
首先,它是当今规模最大的知识图谱之一。
第二,尽管 Wikidata 是人为策划的,但策划的成本是由策划者群体共同分担的。
第三,Wikidata 中自动提取到的一些数据信息,必须是容易理解并按照 Wikidata 的编辑策略进行验证后才会使用。
第四,Schema.Org 中的词汇表可以解决不同关系名称的语义定义问题。
最后,Wikidata 主要用于提升网络的搜索性能。尽管 Wikidata 还可以应用在分析和可视化方面,但它在网络上的成果却是最令人瞩目和容易理解的。
企业数据集成
图 4 通过整合外部数据和公司内部信息创建客户的 360 度视图
许多金融机构希望通过 360 度全方位视角来更好地管理客户关系,因为这种视图可以把同一客户的外部信息和内部信息整合在一起。
例如,将来自财经新闻的公开信息、商业来源信息和策划的供应链关系数据与客户的内部信息整合起来,就可以创建一个 360 度视图。
下面我们举例说明该视图的作用:
金融新闻报道说,因为流行病的原因 “Acma 零售公司” 申请破产,因此许多与它相关的供应商将面临财务压力。而这种压力会通过供应链进行传递,引发其他客户的财务困难。比如,如果作为 Acma 供应商的 A 公司正面临财务压力,那么作为 A 公司供应商的公司 B 也会经历这样的压力。这种供应链关系是一个名为 Factset 的商业数据集中的一部分。在 360 度视图中,将来自 Factset 的数据和金融新闻的数据与客户内部数据库相结合。
由此产生的知识图谱就能准确地跟踪 Acma 供应链,识别出有不同收入风险的受压供应商和值得监测的公司。
图 5 全景视图
为了创建客户全方位视图,业务分析师需要整合感兴趣的关键实体、事件和关系。
由于知识图谱模式具有可视化性,因此业务专家更容易明确他们的要求。之后通过知识图谱引擎将来自不同来源的数据进行加载。三元组的存储格式允许只翻译那些与业务领域专家定义的模式直接相关的关系。不过其余的数据仍然可以以三元组的形式加载,以减少将它们与定义的模式联系起来的前期成本。并且知识图谱使用的是通用的三元组模式,在分析过程中很容易写入需要改变的需求。
最后,存储格式是由领域专家所定义的模式决定的。
使用知识图谱进行数据整合有什么创新之处?
首先,一个通用的三元组模式大大降低了数据整合项目的启动成本。
其次,与调整传统关系型数据库所需的工作相比,调整基于三元组的模式来应对变化要更加容易。
最后,为了回答那些需要遍历数据中图关系的问题,需要对现代知识图谱引擎进行高度优化。比如图 5 中的示例,图引擎已经内置了一些操作来识别供应链网络中的核心供应商、关系密切的客户或供应商群体以及不同供应商的影响范围。这些计算都是利用与领域无关的图算法进行的,比如 centrality detection 和 community detection。
正是因为知识图谱具有易于创建、可视化的模式以及内置的分析操作等优点,所以渐渐成为将数据转化为智能的一种主流方案。
人工智能中的知识图谱
人工智能个体可以表示真实的世界,并用这种表示进行推理。所以人工智能领域的核心问题就是怎样提出更好的表示,以允许个体存储信息并推断出结论。
我们先快速回顾一下之前 AI 对知识的表示,然后重点论述现代 AI 算法如何使用知识图谱。
知识图谱在人工智能领域中也被称为语义网络,人工智能个体很早就被用来存储世界知识,而现在已经应用到计算机科学的各个领域。当然还有许多其他方法与语义网络一起并行发展,比如概念图(conceptual graphs)、描述逻辑(description logics,)和规则语言( rule languages)等等。某些情况下,概率图模型可以获取不确定的知识。
语义网络方法的一个重要应用是可以获取知识主体( ontologies)。知识主体是知识图谱中关系的正式描述。例如在图 3 中,知识主体是由城市、国家等概念,部分、相同等关系以及它们的正式定义构成的。通过这个知识主体,我们可以推断出温特图尔位于瑞士。
为了使互联网更加智能,万维网联盟(W3C)对一系列知识表示语言进行了标准化,如今已经广泛地应用在互联网上获取知识。这些语言包括资源描述框架(RDF)、Web 本体语言(OWL)和语义 Web 规则语言(SWRL)。
我们刚才提到的 AI 的知识表示是以自上而下的方式驱动的,也就是说首先需要开发一个世界化的模型,然后再使用逻辑推理算法得出结论。
而如今出现了很多自下而上的人工智能方法,即一种可以处理数据并从中得出结论和见解的算法。接下来,我们将讨论知识图谱在两个方向的发展:学习知识和向 AI 算法输入领域知识。
将知识图谱作为机器学习的输出
尽管 Wikidata 已经成功地吸引了一批标注人群,但实际上人工创建知识图谱的成本依旧很高。因此,我们非常期待可以通过自动化的方式来创建知识图谱。
几年前,自然语言处理(NLP)和计算机视觉(CV)算法就可以很好地从文本中识别语言和从图像中检测目标。
而随着近几年的发展,这些算法不仅仅实现了最基本的识别任务,还可以提取并存储对象之间的关系用于进一步的处理和推理。现在,我们将讨论如何通过自然语言处理和计算机视觉技术自动创建知识图谱。
图 6 通过提取实体和关系创建的知识图谱
从文本中提取实体和关系是自然语言处理的两项基本任务。
提取的方法主要分为基于规则的方法和基于机器学习的方法。基于规则的方法是利用句子的语法结构,或者指定好从输入文本中识别实体和关系的方法。而机器学习的方法利用序列标注算法或语言模型来提取实体和关系。
知识图谱就是一种自然媒介,可以将文本中多个部分提取到的信息进行相互关联。例如从图 6 的句子中,我们可以提取到阿尔伯特 - 爱因斯坦、德国、理论物理学家和相对论等实体;以及出生地、职业和发展等关系。一旦将该部分知识整合到更大的知识图谱中,就可以使用逻辑推理获得更多的链接(如图中虚线所示)。
比如我们可以得到,理论物理学家是从事物理学研究的人、相对论是物理学的一个分支等等知识。
图 7 通过计算机视觉技术中的物体和边缘检测得到的知识图谱
计算机视觉的最终目标是能够完全理解图像,包括正确地检测物体,描述物体属性并识别物体之间的关系。更好地理解图像也可以为图像检索、问答系统和机器人交互等应用提供支持。
近年来,在图像分类和目标检测领域上的研究取得了很大的进展。计算机视觉算法大量使用机器学习,如分类、聚类、最近邻,以及循环神经网络等深度学习方法。
将图 7 的左图输入图像理解系统,就会生成右侧的知识图谱。知识图谱中的节点就是目标检测的输出。目前计算机视觉的研究重点是开发一种可以正确推断物体之间关系的技术,例如上图中人拿着桶,马从桶里吃东西等等。而右边显示的知识图谱,可以为视觉问答提供基础。
将知识图谱作为机器学习的输入
如果想让机器学习算法表现得更好,就得结合领域知识。
而知识图谱这种数据结构就能很好地捕获领域知识,但机器学习算法需要符号或离散结构的输入。所以首先要将知识图谱转换成数字形式,比如使用词嵌入或图嵌入方法就可以将符号输入转换为数字形式。
词嵌入最初是为了计算单词之间的相似度而出现的。为了理解词嵌入,可以看以下几组句子:
I like knowledge graphs.
I like databases.
I enjoy running.
我们计算上面句子中一个单词挨着另一个单词出现的频率,并记录在矩阵中。
例如,单词 I 在单词 like 旁边出现了两次,在单词 enjoy 旁边出现一次。因此,这两个单词次数分别计为 2 和 1,其他单词为 0。我们可以用类似方式计算其他单词,结果如表 1 所示。通常这种矩阵被称为词共现次数(word co-occurrence counts),每个单词的含义由对应行中的词向量表示。所以可以通过计算单词对应向量之间的相似度来表示单词之间的相似度。但实际上,我们感兴趣的文本可能包含数百万个单词,从而得到一个稀疏矩阵。
所以我们需要使用线性代数技术(例如奇异值分解)来降低矩阵的维数,使其有紧凑的表示。由此产生的对应词的向量称为词嵌入,目前常用的典型词嵌入向量的长度为 200。
表 1 共现次数矩阵
句子是由单词序列构成的,而词嵌入是计算单词在句子中的共现次数。我们可以将这一思想推广到图的节点嵌入中,方法是:(a)使用随机游走遍历图得到一条路径,(b)通过重复遍历图获得一组路径,(c)就像计算单词在句子中的共现矩阵一样,计算节点在这些路径上的共现次数,(d)计算出的共现次数矩阵每一行对应一个节点的向量,(e)采用合适的降维技术获得维度更小的向量,这称为节点嵌入。
图嵌入就是将整个图编码成一个向量。有很多方法可以计算图嵌入,但最简单的是为图中的每个节点添加节点嵌入向量,以获得表示整个图的向量。
我们用词嵌入为例子,来解释图嵌入。是因为从根本上两者的目标是相似的:词嵌入捕获词的含义并可以计算单词之间的相似性,而节点嵌入捕获图中节点的含义并计算节点之间的相似性。而且用来计算它们相似性的方法也很类似。
词嵌入和图嵌入方法是为了给机器学习算法提供符号输入。
词嵌入方法常用于学习语言模型,来预测在已知单词序列情况下,下一个最有可能出现的单词。而更高级的应用是将词嵌入与知识图谱一起使用,例如,只要知识图谱将频率较低的单词编码为频率较高词的下义词,那么频率较低的单词就可以重复使用频率高单词的词嵌入向量。比如由朋友关系图谱计算出的图嵌入,就可以直接用来推荐新朋友。更高级的图嵌入用法就是链接预测,比如可以在公司图谱上使用链接预测来识别潜在新客户。
总结
在计算机科学的各个领域中,都有对离散数学基本结构 —— 有向标记图的应用。
在人工智能中最常见的就是将有向标记图作为数据图的形式使用,在数据集中则是以分类法( taxonomies)和知识主体(ontologies)的形式出现的。一般来说,这种应用的规模比较小,并且是通过自上而下的设计和人工知识工程创建的。
与经典知识图谱相比,现代知识图谱的特殊在于规模性、自下而上的发展和多种模式构建方式。
比如早期的人工智能语义网络就从未达到过当今知识图谱的规模和程度。因为当时难以构思一个自上而下的数据集成方案,也无法理解机器学习的数据驱动本质,所以不得不采用自下而上的方法创建知识图谱。而现代知识图谱的创建,则大量使用自动化技术和众包来补充人工知识工程。
最近,上述这两种方法有渐渐融合的趋势,重新确定了经典知识图谱理论和算法的重要性。
即使使用自下而上的方式创建知识图谱,仍然要重视模式的设计和语义定义。虽然自动化技术可能在某些步骤中可以加快创建知识图谱,但人工验证和监督仍然是必不可少的。利用经典知识图谱技术、机器学习、众包和可扩展计算等现代工具的协同作用,已经开辟了一个引人探索的新领域。
Reference
http://ai.stanford.edu/blog/introduction-to-knowledge-graphs/