1.2 知识图谱的发展历史
知识图谱并非突然出现的新技术,而是历史上很多相关技术相互影响和继承发展的结果,包括语义网络、知识表示、本体论、Semantic Web、自然语言处理等,有着来自Web、人工智能和自然语言处理等多方面的技术基因。从早期的人工智能发展历史来看, Semantic Web是传统人工智能与Web融合发展的结果,是知识表示与推理在Web中的应用;RDF(Resource Description Framework,资源描述框架)、OWL(Web Ontology Language,网络本体语言)都是面向Web设计实现的标准化的知识表示语言;而知识图谱则可以看作是Semantic Web的一种简化后的商业实现,如图1-2所示。
图1-2 从语义网络到知识图谱
在人工智能的早期发展流派中,符号派(Symbolism)侧重于模拟人的心智,研究怎样用计算机符号表示人脑中的知识并模拟心智的推理过程;连接派(Connectionism)侧重于模拟人脑的生理结构,即人工神经网络。符号派一直以来都处于人工智能研究的核心位置。近年来,随着数据的大量积累和计算能力的大幅提升,深度学习在视觉、听觉等感知处理中取得突破性进展,进而又在围棋等博弈类游戏、机器翻译等领域获得成功,使得人工神经网络和机器学习获得了人工智能研究的核心地位。深度学习在处理感知、识别和判断等方面表现突出,能帮助构建聪明的人工智能,但在模拟人的思考过程、处理常识知识和推理,以及理解人的语言方面仍然举步维艰。
哲学家柏拉图把知识(Knowledge)定义为“Justified True Belief”,即知识需要满足三个核心要素:合理性(Justified)、真实性(True)和被相信(Believed)。简而言之,知识是人类通过观察、学习和思考有关客观世界的各种现象而获得并总结出的所有事实(Fact)、概念(Concept)、规则(Rule)或原则(Principle)的集合。人类发明了各种手段来描述、表示和传承知识,如自然语言、绘画、音乐、数学语言、物理模型、化学公式等。具有获取、表示和处理知识的能力是人类心智区别于其他物种心智的重要特征。人工智能的核心也是研究怎样用计算机易于处理的方式表示、学习和处理各种各样的知识。知识表示是现实世界的可计算模型(Computable Model of Reality)。从广义上讲,神经网络也是一种知识表示形式,如图1-3所示。
图1-3 知识图谱帮助构建有学识的人工智能
符号派关注的核心正是知识的表示和推理(KRR,Knowledge Representation and Reasoning)。早在1960年,认知科学家Allan M.Collins提出用语义网络(Semantic Network)研究人脑的语义记忆。例如,WordNet[23]是典型的语义网络,它定义了名词、动词、形容词和副词之间的语义关系。WordNet被广泛应用于语义消歧等自然语言处理领域。
1970年,随着专家系统的提出和商业化发展,知识库(Knowledge Base)构建和知识表示更加得到重视。专家系统的基本想法是:专家是基于大脑中的知识来进行决策的,因此人工智能的核心应该是用计算机符号表示这些知识,并通过推理机模仿人脑对知识进行处理。依据专家系统的观点,计算机系统应该由知识库和推理机两部分组成,而不是由函数等过程性代码组成。早期的专家系统最常用的知识表示方法包括基于框架的语言(Frame-based Languages)和产生式规则(Production Rules)等。框架语言主要用于描述客观世界的类别、个体、属性及关系等,较多地被应用于辅助自然语言理解。产生式规则主要用于描述类似于IF-THEN的逻辑结构,适合于刻画过程性知识。
知识图谱与传统专家系统时代的知识工程有着显著的不同。与传统专家系统时代主要依靠专家手工获取知识不同,现代知识图谱的显著特点是规模巨大,无法单一依靠人工和专家构建。如图1-4所示,传统的知识库,如Douglas Lenat从1984年开始创建的常识知识库Cyc,仅包含700万条的事实描述(Assertion)。Wordnet主要依靠语言学专家定义名词、动词、形容词和副词之间的语义关系,目前包含大约20万条的语义关系。由著名人工智能专家Marvin Minsky于1999年起开始构建的ConceptNet[24]常识知识库依靠了互联网众包、专家创建和游戏三种方法,但早期的ConceptNet规模在百万级别,最新的ConceptNet 5.0也仅包含2800万个RDF三元组关系描述。谷歌和百度等现代知识图谱都已经包含超过千亿级别的三元组,阿里巴巴于2017年8月发布的仅包含核心商品数据的知识图谱也已经达到百亿级别。DBpedia已经包含约30亿个RDF三元组,多语种的大百科语义网络BabelNet包含19亿个RDF三元组[25],Yago3.0包含1.3亿个元组,Wikidata已经包含4265万条数据条目,元组数目也已经达到数十亿级别。截至目前,开放链接数据项目Linked Open Data统计了其中有效的2973个数据集,总计包含大约1494亿个三元组。
图1-4 现代知识图谱的规模化发展
现代知识图谱对知识规模的要求源于“知识完备性”难题。冯·诺依曼曾估计单个个体大脑的全量知识需要2.4×1020个bits存储[26]。客观世界拥有不计其数的实体,人的主观世界还包含无法统计的概念,这些实体和概念之间又具有更多数量的复杂关系,导致大多数知识图谱都面临知识不完全的困境。在实际的领域应用场景中,知识不完全也是困扰大多数语义搜索、智能问答、知识辅助的决策分析系统的首要难题。