知识图谱:方法、实践与应用
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.1 什么是知识表示

20世纪90年代,MIT AI实验室的R.Davis定义了知识表示的五大用途或特点:

●客观事物的机器标示(A KR is a Surrogate),即知识表示首先需要定义客观实体的机器指代或指称。

●一组本体约定和概念模型(A KR is a Set of Ontological Commitments),即知识表示还需要定义用于描述客观事物的概念和类别体系。

●支持推理的表示基础(A KR is a Theory of Intelligent Reasoning),即知识表示还需要提供机器推理的模型与方法。

●用于高效计算的数据结构(A KR is a medium for Efficient Computation),即知识表示也是一种用于高效计算的数据结构。

●人可理解的机器语言(A KR is a Medium of Human Expression),即知识表示还必须接近于人的认知,是人可理解的机器语言。

有关知识表示的研究可以追溯到人工智能的早期研究。例如,认知科学家M.Ross Quillian和Allan M.Collins提出了语义网络的知识表示方法[2],以网络的方式描述概念之间的语义关系。典型的语义网络如WordNet属于词典类的知识库,主要定义名词、动词、形容词和副词之间的语义关系。20世纪70年代,随着专家系统的提出和商业化发展,知识库构建和知识表示更加得到重视。传统的专家系统通常包含知识库和推理引擎(Inference Engine)两个核心模块。

无论是语义网络,还是框架语言和产生式规则,都缺少严格的语义理论模型和形式化的语义定义。为了解决这一问题,人们开始研究具有较好的理论模型基础和算法复杂度的知识表示框架。比较有代表性的是描述逻辑语言(Description Logic)[4]。描述逻辑是目前大多数本体语言(如OWL)的理论基础。第一个描述逻辑语言是1985年由Ronald J.Brachman等提出的KL-ONE[5]。描述逻辑主要用于刻画概念(Concepts)、属性(Roles)、个体(Individual)、关系(Relationships)、元语(Axioms,即逻辑描述Logic Statement)等知识表达要素。与传统专家系统的知识表示语言不同,描述逻辑家族更关心知识表示能力和推理计算复杂性之间的关系,并深入研究了各种表达构件的组合带来的查询、分类、一致性检测等推理计算的计算复杂度问题。

语义网的基础数据模型RDF受到了元数据模型、框架系统和面向对象语言等多方面的影响,其最初是为人们在Web上发布结构化数据提供一个标准的数据描述框架。与此同时,语义网进一步吸收描述逻辑的研究成果,发展出了用OWL系列标准化本体语言。现代知识图谱如DBpedia、Yago、Freebase、Schema.ORG、Wikidata等大多以语义网的表达模型为基础进行扩展或删减。

无论是早期专家系统时代的知识表示方法,还是语义网时代的知识表示模型,都属于以符号逻辑为基础的知识表示方法。符号知识表示的特点是易于刻画显式、离散的知识,因而具有内生的可解释性。但由于人类知识还包含大量不易于符号化的隐性知识,完全基于符号逻辑的知识表示通常由于知识的不完备而失去鲁棒性,特别是推理很难达到实用。由此催生了采用连续向量的方式来表示知识的研究。

基于向量的方式表示知识的研究由来已有。随着表示学习的发展,以及自然语言处理领域词向量等嵌入(Embedding)技术手段的出现,启发了人们用类似于词向量的低维稠密向量的方式表示知识。通过嵌入将知识图谱中的实体和关系投射到一个低维的连续向量空间,可以为每一个实体和关系学习出一个低维度的向量表示。这种基于连续向量的知识表示可以实现通过数值运算来发现新事实和新关系,并能更有效发现更多的隐式知识和潜在假设,这些隐式知识通常是人的主观不易于观察和总结出来的。更为重要的是,知识图谱嵌入也通常作为一种类型的先验知识辅助输入很多深度神经网络模型中,用来约束和监督神经网络的训练过程。如图2-1所示为基于离散符号的知识表示与基于连续向量的知识表示对比。

图2-1 基于离散符号的知识表示与基于连续向量的知识表示对比

综上所述,与传统人工智能相比,知识图谱时代的知识表示方法已经发生了很大的变化。一方面,现代知识图谱受到规模化扩展的影响,通常采用以三元组为基础的较为简单实用的知识表示方法,并弱化了对强逻辑表示的要求;另一方面,由于知识图谱是很多搜索、问答和大数据分析系统的重要数据基础,基于向量的知识图谱表示使得这些数据更易于和深度学习模型集成,使得基于向量的知识图谱表示越来越受到重视。

由于知识表示涉及大量传统人工智能的内容,并有其明确、严格的内涵及外延定义,为避免混淆,在本书中主要侧重于知识图谱的表示方法的介绍,因此用“知识表示”和“知识图谱的表示方法”加以了区分。