知识应用的难点在于知识推理,知识推理的难点在于知识表示。因此,知识表示是基于知识的人工智能应用中的核心部分。对于什么是知识表示,MIT AI LAB的Randall Davis教授等人于1993年在AI Magazine上发表了极具影响的文章“What is a knowledge Representation?” 该文章指出,知识表示的五个主要角色是:(1) 知识表示是一种代理,基于对事物的表示,我们无需实践而是通过思考和推理就可以得到有关外部世界的结论;(2) 知识表示是一组本体论约定的集合,说明我们以什么样的方式来思考世界;(3) 知识表示是智能推理的组成部分:推理需要对知识进行表示,但知识表示不是推理的全部;(4) 知识表示是高效计算的媒介:通过对知识进行有效组织,支持高效的推理;(5) 知识表示是人类表达的媒介:基于通用表示框架,方便人们表达和分享对世界的认知。

经典知识表示理论

1. 逻辑

逻辑本身根据复杂性从简单到复杂分为:命题逻辑、一阶谓词逻辑、高阶逻辑。

命题逻辑(Propositional Logic)具有最简单的语法,它定义了具有真假值的原子命题,并可以通过与、或、非、蕴含、当且仅当等逻辑连接符将多个原子命题组合成复合命题,而推理过程则根据逻辑连接词的真值表进行自动推导。

一阶谓词逻辑又简称为一阶逻辑(first-order logic),它在命题逻辑基础上引入了全称量词和存在量词,这使得一阶逻辑可以量化实体和概念。但是,一阶逻辑不能量化谓词或集合,而这些可以在高阶逻辑(higher-order logic)中得以实现。二阶逻辑可以量化集合,三阶逻辑可以量化集合的集合,以此类推。

命题逻辑把每一个命题看成是一个二值的逻辑变量,具有真(true)和假(false)两种可能。在经典的逻辑学中,一个命题要么是真要么是假,不会存在中间状态,但在概率逻辑中,会对这种假设进行松弛,使命题可以以不同的概率处于真和假之间的状态。命题逻辑很适合进行简单的推理。

谓词逻辑可分为一阶谓词逻辑和高阶谓词逻辑,它们的主要区别在于是否可以量化谓词或集合。由于高阶谓词逻辑过于复杂,实践中应用很少。

一阶谓词逻辑在命题逻辑的基础上增加了量词的概念。相比于命题逻辑,谓词逻辑的优势是可以表达对象集合的属性,而不用逐一列举所有对象,通过量词能够实现对对象集合的描述,一阶谓词逻辑中有两种量词:全称量词和存在量词。

命题逻辑和(一阶)谓词逻辑是人工智能领域使用最早的和最广泛的知识表示方法之一。命题逻辑和谓词逻辑是陈述性的,它利用简单统一的方式描述知识,让知识表示和知识推理分离,使得推理方法可以完全不依赖于具体领域。在命题逻辑的基础上,通过引入量词和变量,使其能够描述更抽象的知识,便于知识推理。谓词逻辑是一种强大的知识表示语言,一阶谓词逻辑具有完备的逻辑推理算法。逻辑表示能够保证知识表示的一致性,也能够确保推理结果的正确性。但是,这种产生式表示方法难以表示过程性知识和不确定性知识,而且当表示知识中的属性、谓词和命题数量增大时,其推理过程因为符号的组合爆炸问题,计算复杂度呈指数级增长态势。因此,基于谓词逻辑的推理过程比较耗时,工作效率较低。

2. 语义网络

语义网络(Semantic Network)是Quillan M. Ross 1966年在研究人类联想记忆时提出的一种心理学模型。该模型认为人类的记忆是由概念间的联系实现的,这种思想受到以下两点的启发:(1) 人脑记忆的一个重要特征是人脑中不同信息片段之间的高度连接;(2) 高度相关的概念能够比不太相关的概念更快地回忆起来。随后Quillan又利用该模型进行知识表示。

语义网络是一个通过语义关系连接的概念网络,它将知识表示为相互连接的点和边的模式,其中,节点表示实体、事件、值等,边表示对象之间的语义关系。也就是说,语义网络其实是一种有向图表示的知识系统,节点代表的是概念,而边则表示这些概念之间的语义关系。语义网络中最基本的语义单元称为语义基元,可以用三元组形式表示:<节点1,关系,节点2>。

语义网络中的关系有很多类型,包括:

(1) 实例关系(ISA):体现的是“具体与抽象”的概念,含义为“是一个”,表示一个事物是另一个事物的一个实例,如“小王是一个人”。

(2) 分类关系(AKO,a kind of的缩写):亦称泛化关系,体现的是“子类与超类”的概念,含义为“是一种”,表示一个事物是另一个事物的一类类型,如“篮球是一种球”。

(3) 成员关系(a-member-of):体现的是“个体与集体”的关系,含义为“是一员”,表示一个事物是另一个事物的一个成员,如“小余是一位公务员”。

(4) 属性关系:指事物和其属性之间的关系。常用的属性关系有:Have,含义为“有”,表示一个节点具有另一个节点所描述的属性,如“狗有尾巴”;Can,含义为“能”“会”,表示一个节点能做另一个节点的事情,例如“鱼能游泳”;其他属性,例如人的“身高”“年龄”等。

(5) 时间关系:指不同时间在其发生时间方面的先后次序关系。常用的时间关系有“在前(表示一个事件在另一个事件之前发生)”和“在后(表示一个事件在另一个事件之后发生)”,例如“2022北京冬奥会在2008年北京夏季奥运会之后”。

(6) 位置关系:指不同事物在位置方面的关系。

(8) 相近关系:指不同事物在形状、内容等方面相似或接近。

可以按照论元个数把关系分为一元关系、二元关系和多元关系。一元关系可以用一元谓词P(x)表示,二元关系可以用二元谓词P(x,y)表示。语义网络在表示多元关系时是把多元关系转化为多个二元关系的组合,然后利用合取把这种多元关系表示出来。

语义网络与一阶谓词具有相同的表达能力,不同的是,它用最简单的一种统一形式描述所有知识,非常有利于计算机的存储和检索。语义网络的缺点是,它仅用节点及其关系描述知识,推理过程不像谓词逻辑表示方法那样明了,需要针对不同关系做不同处理,推理方法还不完善。

建立于1988年的知网(HowNet)是一个典型的语义网络。

3. 框架

框架表示法是由美国著名人工智能学者Minsky在1975年首先提出来的知识表示法。从认知学的角度,框架理论继承了人类认知世界的方式,对现实世界中各种事物,人类都是以一种类似于框架的结构存储在记忆中。当面临一个新事物时,人就从记忆中找出一个合适的框架,并根据实际情况对框架中的具体值进行填充,填充的部分被称为槽(Slot),而框架以及槽的粒度则根据人类对事物认知程度而定。因此,理论上框架表示法是对世界知识的一种有效建模。

框架将所有事物进行了抽象,并用来表示事物在各方面的属性以及事物之间的类属关系。

在原始的框架定义中,槽可以是任何形式的信息,包括原子值或值的集合;对于非原子的槽,还可以由多个侧面(facet)对槽的描述进行补充。

人类对事物的认知存在层级的特性,在日常生活中,人们也会有意或无意地对事物进行层级式的分类。

框架表示法也有不可避免的缺陷,由于真实世界的多样性和复杂性,许多实际情况与框架原型存在较大的差异,在框架设计中难免引入错误或冲突。另外因为框架结构的复杂性,一方面,不同系统之间的框架很难对齐,另一方面,也给从非结构文本中抽取信息填充框架增加难度。

FrameNet是一个经典的基于框架表示的知识库,针对词汇级的概念进行框架的建模,它认为大部分词汇的语义能够通过语义框架的形式进行表示。

4. 脚本

脚本是一种与框架类似的知识表示方法,是由Schank等于二十世纪七十年代提出的。脚本通过一系列的原子动作来表示事物的基本行为,按照时间顺序描述事物的发生,类似于电影剧本。脚本表示的知识有确定的时间或因果顺序,必须是前一个动作完成后才会触发下一个动作的开始。与框架相比,脚本是用来描述一个动态的过程而非静态知识的表示方法,与框架有着不同的目的。

根据脚本表示法的定义,一个完整的脚本应该包括以下几个重要的组成部分:

  • 进入条件:指出脚本所描述的事件可能发生的先决条件,即事件发生的前提条件。
  • 角色:描述事件中可能出现的人物。
  • 道具:描述事件中可能出现的相关物体。
  • 舞台:脚本中事件发生的空间。
  • 场景:时间发生的序列。
  • 结局:给出在剧本所描述的事件发生以后通常所产生的结果。

脚本表示方法能力有限,不具备对于元素基本属性的描述能力,也难以描述多变的事件发展的可能方向。但在非常狭小的领域内,脚本表示方法却可以比其他方法更细致地刻画步骤和时序关系。

综上,经典知识表示理论中的语义网络、框架和脚本都属于基于槽的表示方法,有所区别的是槽是否具有层次、时序、控制关系。其中,语义网络是最简单的一种,它的每个三元组都可以看成一个槽结构。框架系统由一组相关的框架结构联结而成,其中每个框架是由若干个节点和关系构成的网络,因此,框架可以看成是层次化的语义网络,是语义网络的一般化形式。脚本是按照一定的时间流程对事件的发展和变换控制进行的建模,因此,可以认为是定义了时间和控制条件的槽结构,与语义网络也没有本质区别。

语义网中的知识表示方法

本节所提到的语义网(Semantic Web)与人工智能中提出的语义网络(Semantic Network)的概念有所不同,语义网的概念来源于万维网,甚至语义网最初的目的就是为了对万维网的功能进行拓展以提高其智能程度,因此人们也将语义网称为Web 3.0。

目前,语义网知识表示体系主要包括如下三个层次:

  • XML:全称可扩展标记语言(eXtensible Markup Language)。作为最早的语义网表示语言,XML是从网页标签式语言向语义表达语言的一次飞跃。XML以文档为单位进行表示,不能显示地定义标签的语义约束,它的拓展版本XML Schema定义了XML文档的结构,指出了XML文档元素的描述形式。
  • RDF:全称资源描述框架(Resource Description Framework)。RDF可以看成XML的扩展或简化。相应地,RDF资源的属性、类的描述,以及类别间一般到特殊的层次结构语义,一起由RDF Schema进行定义。
  • OWL:全称网络本体语言(Web Ontology Language)。OWL是本体的语义表示语言,它建立在RDF和RDF Schema的基础之上。OWL能够表达本体知识和刻画属性之间关系。为了更好地对逻辑和推理知识进行描述,OWL吸收了描述逻辑等逻辑语言。

虽然只是一字之差,但是语义网与语义网络有比较大的区别。在语义网络中,对节点和边的描述没有标准,用户按照需要自行定义,这样导致两个问题:一是不同用户定义方式不同,不便于知识的分享;另一个是无法区分知识描述和知识实例。语义网基于W3C制定的标准,利用统一的形式对知识进行描述和关联,这种表示方法更便于知识的共享和利用。语义网通过语义具化(Semantic Grouding),让每个概念(实体、类别、关系、事件等)都有一个唯一的标识符,这种唯一性使得知识共享在更大领域更大范围称为可能。

知识图谱中的知识表示方法

通常情况下,一个知识本体主要涵盖以下几个方面的内容:(1) 事物;(2) 概念;(3) 属性;(4) 关系; (5) 函数;(6) 约束;(7) 规则;(8) 公理。实际上,目前大部分知识图谱主要对前四部分内容(即事物、概念、属性和关系)进行建模,只有很少的知识图谱建模了简单的规则结构,这也反映了不同层次知识在表示上的复杂程度是不同的。

知识图谱中的知识定义和实例数据及其相关的配套标准、技术、应用系统构成了广义的知识图谱。

知识图谱的知识表示绝不仅仅体现在以RDF为基础框架的三元组之上,还体现在实体、类别、属性、关系等多颗粒度、多层次语义单元的关联之中,它是一个知识系统,以一种统一的方式表示了知识定义(Schema)和知识实例(Instance)两个层次的知识。

另一方面,知识图谱也可以看成是语义网的工程实现,知识图谱不太专注于对知识框架的定义,而专注于如何以工程的方式从文本中自动抽取,或依靠众包的方式获取并组建广泛的具有平铺结构的知识实例,最后再要求使用它的方式具有容错、模糊匹配等机制。这种对格式以及内容的宽泛定义,可以看成是狭义的知识图谱与语义网的主要区别。另一方面,知识图谱放宽了对三元组中各项值的要求,并不局限于实体,也可以是数值、文字等其他类型的数据。除此之外,语义网表示与知识图谱表示之间并没有明显的区别。现有的网络知识图谱,大多也使用RDF等语义网的表示方式来对知识进行表示。

知识图谱的真正魅力在于它的图结构,这样可以在知识图谱上运行搜索、随机游走、网络流等大规模的图算法,使得知识图谱与图论、概率图等碰撞出火花。例如,基于大规模知识图谱的逻辑规则的挖掘,得益于知识图谱中频繁子图的挖掘,促进了逻辑规则的自动生成和评价。基于大规模链接图谱的标签传播,可以对知识图谱中的实体按照普通角度分类,也可以有目的地发现关键的实体。

知识图谱的数值化表示方法

符号的数值化表示

知识表示的一大重要目标就是进行语义计算。

很多知识表示方法(例如逻辑、语义网络、框架、脚本、知识图谱等)用符号显示表示概念及其关系,概念的种类和关系的种类都是人们总结的结果,其中难免存在有遗漏的情况。因此在语义计算过程中,仅仅依赖这类显示表示的知识,难以获取更全面的知识特征;

另一方面,目前的大多数语义计算任务都采用基于数值计算的统计机器学习方法,而作为知识载体的数据表示是机器学习中的基础工作,数据表示的好坏直接影响到整个机器学习系统的性能。

近年来,以深度学习为代表的数值计算方法越来越受到人们的欢迎。

文本的数值化表示

知识表示以文本处理和自然语言处理为核心,在自然语言处理领域,深度学习技术并没有产生类似图像和语音领域那样的突破。其中一个主要原因是,在图像和语音领域,最基本的数据是信号数据,我们可以通过一些距离度量,判断信号是否相似。而文本是符号数据,两个词只要字面不同,就难以刻画它们之间的练习。

词是知识表示的最基本的单元(这里关注于面向数值计算的词的表示,实体等更大语义单元的数值表示与词的表示类似),而传统用不同符号表示各个词的方式不包含任何语义信息。如何将语义融入到词表示中,Harris在1954年提出的分布假说(Distributional Hypothesis)为这一设想提供了理论基础:上下文相似的词,其语义也相似。Firth在1957年对分布假说进行了进一步阐述和明确:词的语义由其上下文决定(a word is characterized by the company it keeps)。20世纪90年代初期,统计方法在自然语言处理中逐渐成为主流,分布假说也再次被人关注。Dagan和Schutze等人完善了利用上下文分布表示词义的方法,并将这种表示用于词义消歧等任务,这类方法在当时被称为词空间模型(Word Space Model)。在此后的发展中,这类方法逐渐演化称为基于矩阵的分布表示方法,期间的十多年时间里,这类方法得到的词表示都被直接称为分布表示(Distributional Representation)。1992年,Brown等人同样基于分布假说,构造了一个上下文聚类模型,开创了基于聚类的分布表示方法。2006年之后,随着硬件性能的提升以及优化算法的突破,神经网络模型逐渐在各个领域中发挥出自己的优势,使用神经网络构造词表示的方法可以更灵活地对上下文进行建模,这类方法开始逐渐成为了词分布表示的主流方法。

知识图谱的数值化表示

表示学习也是知识图谱研究的热点任务之一,它把知识图谱中的离散符号(实体、属性、关系、值等)用连续型数值进行表示,这种表示能够体现实体和关系的语义信息,可以高效地计算实体、关系及其之间的复杂语义关联。知识图谱表示学习的主要方法有张量分解模型和基于能量函数的模型等,它们都有各自的学习方式。

基于张量分解的表示学习方法

张量分解的方法以Nickel等提出的RESCAL系统为代表。它的核心思想是将整个知识图谱编码为一个三维张量\(\hat{X}\),如果三元组\(r(e_1, e_2)\)存在知识图谱中,则对应张量中的值\(\hat{X}_{e_1,r,e_2}\)为1,否则为0。将张量\(\hat{X}\)分解为核心张量\(\hat{R}\)和因子矩阵A的乘积形式\(\hat{X} \sim A^T \hat{R} A\),其中核心张量\(\hat{R}\)中每个二维矩阵切片代表一种关系的语义,因为矩阵A中每一列代表一个实体的向量。模型重构的结果\(A^T \hat{R} A\)中的每一个元素被看作对应三元组成立的概率,如果概率大于某个阈值,则对应三元组正确,否则不正确。这里重构的过程即是推理的过程,对于原张量\(\hat{X}\)中值为0的位置所对应的三元组,当重构后它的值大于概率阈值时,该三元组即为推断出的正确三元组。张量分解在编码实体和关系的过程中综合了整个知识图谱的信息,它的主要缺点是需要优化张量中所有位置的值,包括0在内。因此,当关系数目较多时,张量的维度很高,分解过程计算量较大。

基于能量函数的表示学习方法

基于能量函数模型的方法是当前知识图谱表示学习研究最为丰富的方法,该类方法可以克服上述张量分解方法在大规模知识图谱表示学习过程中学习效率低的问题。对于三元组\(r(e_1, e_2)\),定义基于三元组的能量函数\(f_r(e_1, e_2)\)。例如,TransE模型中能量函数定义为\(f_r(e_1, e_2) = \| e_1 + r - e_2 \|_{L_{1/2}}\),\(e_i\)和\(r\)分别表示实体\(e_i\)和关系\(r\)的向量表示。记知识图谱中三元组的集合为\(\bigtriangle\),\(\bigtriangle'_{r(e_1,e_2)}\)表示由\(r(e_1, e_2)\)生成的负样本的集合(比如,随机替换\(e_1\)或\(e_2\)),学习的目标函数定义为

\[\mathsrc{L} = \sum_{r(e_1, e_2)} \in \bigtriangle} \sum_{r(e'_1, e'_2) \in \bigtriangle'_{r(e_1,e_2)}} [\gamma + f_r(e_1, e_2) - f_r(e'_1,e'_2)]_+\]

其中\([x]_+ = max(0,x), \gamma >0\)是分离正样本和负样本的边界值。该目标函数的原理是使正样本的能量比负样本的能量低,通过惩罚负样本的能量值完成学习过程。在测试的过程中,每种关系都设置一个能量阈值,如果三元组的能力小于阈值,则是正确的,否则不正确。因此,推理过程即是计算三元组能量的过程,当三元组的能量值小于阈值时,该三元组为推断出的新三元组。不同能量模型的区别在于能量函数的构造不同。