起源

1977年,在第五届国际人工智能会议上,美国斯坦福大学计算机科学家爱德华·菲根鲍姆发表了特约文章《The Art of Artificial Intelligence: Themes and case studies of Knowledge Engineering》,系统地阐述了“专家系统”的思想,并提出了“知识工程”的概念。

2012年5月,谷歌发布了新一代知识搜索引擎,可以展示与关键词所描述的实体或概念相关的人物、地点和事件等信息。

什么是知识图谱

对于知识的准确定义,目前还没有统一的表述,只能从不同角度加以理解。

Feigenbaum认为知识是经过消减、塑造、解释和转换的信息,即知识就是经过加工的信息。

虽然人类涉及的知识非常广泛,但总体上可以分为陈述性知识(或称描述性知识)和过程性知识(或称程序性知识)两大类。

陈述性知识描述客观事物的性质等静态信息,主要分为事物、概念、命题三个层次。其中事物指特定的事或物,概念是对一类事物本质特征的反映,命题是对事物之间关系的陈述。命题又可以分为非概括性命题和概括性命题两类,非概括性命题表示特定事物之间的关系,概括性命题描述概念之间的普遍关系。

过程性知识描述问题如何求解等动态信息,分为规则和控制结构两种类型,其中规则描述事物的因果关系,控制结构描述问题的求解步骤。

在对各种知识进行收集和整理的基础上,进行形式化表示,按照一定的方式进行存储,并提供相应的知识查询手段,从而使知识有序化,这是知识共享和应用的基础。知识的编码化和数字化形成了知识库。

计算机擅长处理结构化数据。然而,互联网中大量的信息以非结构化的形式存储和传播,为了让计算机能够处理这些信息,就需要理解这些非结构化形式数据蕴含的语义,分析其中的语义单元之间的关系,从而将其转换成结构化形式。图是一种能有效表示数据之间结构的表达形式。因此,人们考虑把数据中蕴含的知识用图的结构进行形式化表示。数据的结构化并和已有的结构化数据进行关联,就构成了知识图谱。

知识图谱对于知识服务有重要的支撑作用,能够将传统基于浅层语义分析的信息服务范式提升到基于深层语义的知识服务。因此,学术界和工业界都给予知识图谱高度关注,将其作为新一代人工智能的基础设施。

知识图谱目前在学术界没有统一的定义。参照Wikipedia的描述,知识图谱是一种比较通用的语义知识的形式化描述框架,它用节点表示语义符号,用边表示符号之间的语义关系。

在计算机科学技术领域,对知识和结构化数据的表示和存储具有不同的技术路线,最典型的包括本体(Ontology)和数据库(Database)两类。

本体这个术语源于哲学,是一套对客观世界进行描述的共享概念化体系。在人工智能领域,本体是通过对象类型、属性类型以及关系类型对领域知识进行形式化描述的模型。本体强调的是抽象的概念表示,例如不同类型的人,他们之间具有什么类型的语义关系,而不关注具体的个体信息,例如某人是什么类型的人,某人和某人是什么关系。因此,本体只对数据的定义进行了描述,而没有描述具体的实例数据。

数据库是计算机科学家为了用电脑表示和存储计算机应用中需要的数据而设计开发的产品。尽管有不同类型的数据库,一般它主要用于存储数据,这些数据可以进行传递和交换。但是,对于数据的描述和定义,在传递和交换过程中,会假定参与方都已经明白和理解。数据库系统对数据描述和数据记录的表示和存储采用了不同的机制。

知识图谱用统一的形式对知识实例数据的定义和具体知识数据进行描述,即用三元组形式(二元关系)对知识系统进行资源描述和存储。各个具体实例数据只有在满足系统约定的“框架”约束下运用才能体现为“知识”,其中框架(Schema,或称“元知识”)就是对知识的描述和定义,知识框架和实例数据共同构成一个完整的知识系统。总之,在约定的框架下,对数据进行结构化,并与已有结构化数据进行关联,就形成了知识图谱。为了将其付诸实现,知识图谱往往需要将自身的框架结构映射到某种数据库系统所支持的框架定义上,必要时可以对数据库进行专门扩展。所以,知识是认知,图谱是载体,数据库是实现,知识图谱就是在数据库系统上利用图谱这种抽象载体表示知识这种认知内容。

具体地,知识图谱以结构化三元组的形式存储现实世界中的实体以及实体之间的关系,表示为\(\mathscr{G} = (\mathscr{E}, \mathscr{R}, \mathscr{S})\),其中\(\mathscr{E} ={e_1, e_2, ..., e_{\mid \mathscr{E} \mid}}\)表示实体集合,\(\mathscr{R} = {r_1, r_2, ..., r_{\mid \mathscr{R} \mid}}\)表示关系集合,\(\mathscr{S} \subset \mathscr{R} \times \mathscr{E} \times \mathscr{E}\)表示知识图谱中三元组的集合。

尽管目前大部分知识图谱都以三元组的形式表示各种类型的知识,但是实际上知识图谱的知识表示绝不仅仅体现在以二元关系为基础的三元组上,还体现在实体、类别、属性、关系等多粒度、多层次语义单元的关联之中,它以一种统一的方式体现知识定义(Schema)和知识实例(Instance)两个层次共同构成的知识系统。

尽管上述定义较为被大众所接受,但是,知识图谱应该包含哪些知识目前还没有统一定论。从知识工程角度,知识框架一般包含三个层次的知识:(1) 概念知识:给出了知识的最基本内容;(2) 事实知识:建立了概念之间的联系;(3) 规则知识:建立了事实间的联系。对于知识图谱应不应该包含推理规则型的知识,不同领域的人有着完全不同的意见。有一部分人认为,知识图谱仅仅是人工智能任务的重要基础设施,不应该包含推理等知识图谱的应用部分。他们认为:推理不是知识利用的必要条件。并且,他们认为,目前的众多流行知识图谱(如Freebase、Wikidata、YAGO、DBpedia等)都在去规则化(W3C的OWL标准没能取得大规模推广和应用的原因之一就是引入了描述逻辑),仅保留对知识数据的基本描述,因为推理规则确定性更弱,更难以管理。当然,也有一部分人认为,人类发展过程中,有意无意间总结和传承了很多规则,这些抽象的知识给人们带来了很大的便利,不仅可以节省知识存储和搜索空间,也让人类能够发展出联想、推理、决策等更高层的认知能力。因此,在模拟高层认知能力的人工智能系统中应该建模这类知识,而知识图谱作为知识表示的基石,应该涵盖推理规则。

知识图谱发展历程

知识图谱的发展可以从人工智能和语义网两个领域进行追溯。一方面,人工智能的研究目标是使计算机更智能。人们希望借助知识库完成该目标,即把人类的知识用计算机进行表示和组织,并设计相应算法完成推理、预测等任务。另一方面,随着互联网的发展,虽然存储和检索海量数据的能力日益提高,但是却没有推理、预测等完成复杂任务的功能,不能有效地支持商业智能等决策任务。人们希望通过引入知识,使得原始数据能够支撑推理、问题求解等复杂任务(如多维数据分析),这个目标就是语义网(Semantic Web)。因此,知识库在人工智能和语义网领域的目标可以分别总结为知识的数据化(让计算机表示、组织和存储人类的知识)和数据的知识化(让数据支持推理、预测等智能任务)。

我们认为,目前知识图谱无论在学术界还是产业界都备受关注,主要是由于它的以下几个特点:

  • 知识图谱是人工智能应用不可或缺的基础资源。
  • 语义表达能力丰富,能够支持很多知识服务应用任务。
  • 描述形式统一,便于不同类型知识的集成与融合。
  • 表示方法对人类友好,给以众包等方式编辑和构建知识提供了便利。
  • 二元关系为基础的描述形式,便于知识的自动获取。
  • 表示方法对计算机友好,支持高效推理。
  • 基于图结构的数据格式,便于计算机系统的存储和检索。

知识图谱的类型

本书将已有的知识图谱根据领域和用途大致分为语言知识图谱、语言认知知识图谱、常识知识图谱、领域知识图谱以及百科知识图谱等几个类别。

  • Cyc:通用的常识知识库;
  • WordNet:语言知识图谱;
  • HowNet:语言认知知识图谱;
  • ConceptNet:常识知识图谱;
  • YAGO:百科知识图谱;
  • BabelNet:百科知识图谱;
  • DBpedia:百科知识图谱;
  • Freebase:百科知识图谱;
  • KnowItAll、TextRunner和ReVerb
  • NELL
  • Knowledge Vault

知识图谱生命周期

1. 知识体系构建

知识体系构建,也称知识建模,是指采用什么样的方式表达知识,其核心是构建一个本体对目标知识进行描述。在这个本体中需要定义出知识的类别体系、每个类别下所属的概念和实体、某类概念和实体所具有的属性以及概念之间、实体之间的语义关系,同时也包括定义在这个本体上的一些推理规则。

资源描述框架(RDF)的基本数据模型包括了三个对象类型:资源(resource)、谓词(predicate)及陈述(statements)。

  • 资源:能够使用RDF表示的对象称之为资源,包括互联网上的实体、事件和概念等。
  • 谓词:谓词主要描述资源本身的特征和资源之间的关系。每一个谓词可以定义元知识,例如,谓词的头尾部数据值的类型(如定义域和值域)、谓词与其他谓词的关系(如逆关系)。
  • 陈述:一条陈述包含三个部分,通常称之为RDF三元组<主题(subject),谓词(predicate),宾语(object)>。其中主体是被描述的资源,谓词可以表示主体是属性,也可以表示主体和宾语之间的关系。当表示属性时,宾语就是属性值;当表示关系时,宾语也是一个资源。

目前,知识图谱中的数据也采用RDF数据模型进行描述。在知识图谱中,上述的“资源”称为实体或实体的属性值,“谓词”称为关系或者属性,“陈述”指的是RDF三元组,一个三元组描述的是两个实体之间的关系或者一个实体的属性。

2. 知识获取

结构化数据

结构化数据可以来自于各个企业内部数据库中的私有数据,也可以是网页中看到的表格数据。可以直接采用模板的方式提取实体相关的属性和属性值。

半结构化数据

半结构化数据是指那些不能够通过固定的模板直接获得的结构化数据。半结构化数据的样式结构相对于结构化数据较为松散,具有结构多变、模式不统一的特点。

非结构化文本数据

(1) 实体识别:命名实体(Named Entity)指的是文本中具有特定意义的实体,一般包含三大类(实体类、时间类和数字类)、七小类(人名、地名、机构名、时间、日期、货币和百分比)。但是,在知识图谱领域,从文本中识别实体不仅仅局限于命名实体,还包括其他类别的实体。

(2) 实体消歧:实体消歧任务的目标是消除指定实体的歧义。从技术路线上划分,实体消歧任务可以分为实体链接和实体聚类两种类型。实体链接是将给定文本中的某一个实体指称项链接到已有知识图谱的某一个实体上,因为在知识图谱中,每个实体具有唯一的编号,链接的结果就是消除了文本指称项的歧义。实体聚类的假设是已有知识图谱中并没有已经确定的实体,在给定一个语料库的前提下,通过聚类的方法消除语料中所有同一实体指称项的歧义,具有相同所指的实体指称项应该被聚为同一类别。

(3) 关系抽取:根据抽取目标的不同,已有关系抽取任务可以分为:关系分类、属性抽取、关系实例抽取等。关系分类任务是判别给定的一句话中两个指定实体之间的语义关系。属性抽取的任务是在给定一个实体以及一个预定义关系的条件下,抽取另外一个实体。关系实例抽取的任务包括判断实体间关系和抽取满足该关系的知识实例数据。已有关系抽取的方法可以分为有监督关系抽取、无监督关系抽取、弱监督关系抽取以及开放关系抽取等。

(4) 事件抽取:事件抽取任务的目标是从描述事件信息的文本中抽取出用户感兴趣的时间信息并以结构化的形式呈现出来。现有知识图谱大多数以实体和实体之间的关系为核心,缺乏时间知识。然而,很多认知科学家认为人们是以事件为单位来认知世界的,事件符合人们的正常认知规律。已有的事件抽取方法可以分为基于模式匹配的事件抽取和基于机器学习的事件抽取。

3. 知识融合

知识融合是对不同来源、不同语言或不同结构的知识进行融合,从而对已有知识图谱进行补充、更新和去重。

从融合的对象看,知识融合包括:知识体系的融合和实例的融合。知识体系的融合就是两个或多个异构知识体系进行融合,相同的类别、属性、关系进行映射。而实例级别的融合是对于两个不同知识图谱中的实例(实体实例、关系实例)进行融合,包括不同知识体系下的实例、不同语言的实例。

知识融合的核心是计算两个知识图谱中两个节点或边之间的语义映射关系。从融合的知识图谱类型看,知识融合可以分为:竖直方向的融合和水平方向的融合。竖直方向的融合是指融合(较)高层通用本体与(较)底层领域本体或实例数据,例如融合WordNet和Wikipedia。 水平方向的融合是指融合同层次的知识图谱,实现实例数据的互补,例如,融合Freebase和DBpedia。

4. 知识存储

知识存储就是研究采用何种方式将已有知识图谱进行存储。因为目前知识图谱大多是基于图的数据结构,它的存储方式主要有两种形式:RDF格式存储和图数据库(Graph Database)。

RDF格式存储就是以三元组的形式存储数据,如Google开放的Freebase知识图谱,就是以文本的形式逐行存储三元组SPO(Subject, Predicate, Object),但是这种存储方式使得三元组的搜索效率低下,为了提升三元组的搜索效率,通常采用六重索引的方法。

图数据库的方法比RDF数据库更加通用,目前典型的开源图数据库是Neo4j,这种图数据库的优点是具有完善的图查询语言,支持大多数的图挖掘算法,它的缺点是数据更新慢,大节点的处理开销大。为了解决上述问题,子图筛选,子图同构判定等技术是目前图数据库的研究热点。

5. 知识推理

由于处理数据的不完备性,所构建的知识图谱中肯定存在知识确实现象(包括实体缺失、关系缺失)。由于数据的稀疏性,我们也很难利用抽取或者融合的方法对于缺失的知识进行补齐。因此,需要采用推理的手段发现已有知识中的隐含的知识。

目前,知识推理的研究主要集中在针对知识图谱中缺失关系的补足,即挖掘两个实体之间隐含的语义关系。所采用的方法可以分为两种:(1) 基于传统逻辑规则的方法进行推理,其研究热点在于如何自动学习推理规则,以及如何解决推理过程中的规则冲突问题;(2) 基于表示学习的推理,即采用学习的方式,将传统推理过程转化为基于分布式表示的语义向量相似度计算任务。这类方法优点是容错率高、可学习,缺点也很显而易见,即不可解释,缺乏语义约束。

当然,知识推理不仅仅能够应用于已有知识图谱的补全,也可以直接应用于相关应用任务,例如自动问答系统中往往也需要知识推理。关键问题在于如何将问题映射到知识图谱所支撑的结构表示中,在此基础上才能利用知识图谱中的上下文语义约束以及已有的推理规则,并结合常识等相关知识,得到正确的答案。

6. 知识应用

  • 智能搜索
  • 自动问答
  • 推荐
  • 决策支持

知识图谱与深度学习

深度学习在特定任务上取得显著效果,但是,它也存在不少局限性,并且很多是根本性的问题。首先,当前的深度学习模型需要依赖大量的标注数据;其次,这种纯粹的数据驱动学习方式不仅结果不可解释而且学习过程也不可调控;最后,端到端的学习过程很难加入先验知识,而大量应用任务中人类的先验知识非常重要。为了模拟人类的认知过程,进行更好的知识抽象和推理,人们定义了符号逻辑对知识进行表示和推理,其中知识图谱是典型代表之一。但是符号逻辑难以从历史数据中习得,目前大都还是采用人工编撰和校验的方式获得符号逻辑推理规则;而且尽管可以利用概率图模型等方法学习有限的知识推理规则,但是受限于模型复杂度还是难以扩展到大规模数据上。

为了利用有限标注数据进行有效的预测,应融合可学习的表示学习模型和可表达、可解释的符号逻辑方法。利用表示学习模型从历史数据中学习知识,结合使用符号逻辑表示的领域专家知识,不仅能够有效提升预测性能,还能够得到可解释的预测结果。因此,人们逐渐形成共识:基于数值计算的深度学习方法与基于符号表示和匹配的方法需要融合。只有这样才能解决人工智能、特别是自然语言理解的深层次问题,才能把现有基于浅层语义分析方法提升至能解决深层、更高级人类认知任务的深层语义分析方法。

词的表示学习是基于深度学习的自然语言处理方法的基础步骤,其主要目标是把每个词符号表示为分布向量的形式(Distributional Representation),基于词的向量表示,句子、段落、篇章、对话等更大语言单元就可以通过语义组合模型(如卷积神经网络、循环神经网络等深度学习模型)得到,进而进行文本分类、问答匹配、机器翻译、对话生成等任务。词表示学习的理论基础是Harris在1954年提出的分布假说(Distributional Hypothesis):上下文相似的词,其语义也相似。Firth在1957年对分布假说进行了进一步阐述和明确:词的语义由其上下文决定(A word is characterized by the company it keeps)。尽管词表示学习在自然语言处理领域发挥着重要作用,但是这种完全数据驱动的方法存在一些明显的问题,比如,根据词的分布表示,不能区分两个词之间是“近义词”还是“反义词”的关系。为了让词的分布表示能蕴含更多语义信息,特别是与人类认知一致的语义知识,有不少研究把句法分析结果、语言知识图谱、常识知识图谱融入到词的表示学习过程中,以此提升词表示在深层语义理解任务中的效果。

知识图谱表示学习是将知识图谱中用符号表示的实体和关系投影到低维向量空间中,这种表示能够体现实体和关系的语义信息,可以高效地计算实体、关系及其之间的复杂语义关联。这种方法在知识图谱的构建、推理和应用中具有重要作用。学习到的实体和关系向量表示反映了知识图谱中各个元素之间的关联,能够用于推断知识图谱中缺失的关系,补全知识图谱。除此之外,随着深度学习方法的发展,它也很容易应用到问答系统等任务中。知识图谱表示学习在学习实体和关系的向量时,可以考虑到整个知识图谱的信息。因此,当用其推断知识图谱中缺失的关系时,可以用到更加全面的信息,从而提升预测性能,并且计算效率高,能够满足当前大规模知识图谱的需求。但是,相对于逻辑规则推理的方法,它的推理过程使用数值计算的方式表达,是一种隐含的表达方式,不易被理解,人工也难以干预推理过程和增加先验知识。

神经符号机是一种将神经网络与符号推理想结合的技术,近年来开始被用于自然语言处理领域。神经符号机是利用神经网络对函数演算和图灵机等传统计算模型进行建模。根据抽象层次的不同,可以将其分为两类。一类抽象层次较高,每个推理步骤都是从设计好的操作集合里选择,再选择合适的操作数。操作集合往往根据不同任务来设计,少则三四个,多则数十个。通过依次执行多个操作,得到针对用户问题的最终答案。这样的思路在针对表格的问答、基于知识库的问答等任务上都有应用。另一类做法的抽象层次较低,代表工作如神经图灵机、可微分神经计算机等。他们从模拟计算机底层操作方式的角度抽象模型,设计出内存、CPU控制器等结构,并借鉴传统计算机操作系统的思路,从随机访存、空闲内存分配、访存时序等不同侧面进行建模,完善模型的性能。这种结合的方法已经应用于问答系统、基础图论算法等任务中。

参考文献

  • 《知识图谱》赵军 第一章