【知识图谱】知识图谱(一)—— 综述

【知识图谱】知识图谱(一)—— 综述

目录
一、介绍
二、知识图谱表示
2.1 知识构建
2.1.1 知识从哪来?
2.1.2 知识长啥样?—— 知识表示
2.1.3 知识抽取/挖掘
2.1.4 知识存储
2.2 知识融合
2.3 知识推理
2.3.1 基于逻辑规则的推理
2.3.2 基于图结构的推理
2.3.3 基于分布式表示的推理
2.3.4 基于神经网络的推理
三、应用实例
四、总结

麻烦知乎赶紧出文章目录索引好吧

前言:

本文为在知识图谱领域研读陈华均老师的书籍,与会CCKS2020、华为网络天下2020,结合相关知识在一些具体算法场景做出一定程度的应用后的个人知识总结笔记。在学习过程中看了很多paper或教程,整理起来放到这里备忘,列表会随着我的学习不断更新。
  • 书籍推荐:
《知识图谱——方法、实践与应用》陈华钧
  • 论文推荐:
知识表示
《A Review of Relational Machine Learning for Knowledge Graphs》 [1]
《Knowledge Graph Embedding with Iterative Guidance from Soft Rules》 [2]
知识抽取
《Neural Architectures for Named Entity Recognition》 [3]
《End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF》 [4]
《Joint Extraction of Multiple Relations and Entities by using a Hybrid Neural Network》 [5]
《Distant Supervision for Relation Extraction with Sentence-Level Attention and Entity Descriptions》 [6]
《归纳逻辑程序设计综述》 [7]
《Reinforcement Learning for Relation Classification from Noisy Data》 [8]
知识推理:
《Open world Knowledge Graph Completion》 [9]
《RNNLOGIC: LEARNING LOGIC RULES FOR REASONING ON KNOWLEDGE GRAPH》 [10]

一、介绍:

知识图谱的早期理念源于万维网之父Tim Berners-Lee关于语义网 (The Semantic Web)的设想,旨在采用图结构(Graph Structure)来建 模和记录世界万物之间的关联关系和知识,以便有效实现更加精准的对 象级搜索。知识图谱的相关技术已经在搜索引擎、智能问答、语言理 解、推荐计算、大数据决策分析等众多领域得到广泛的实际应用。近年 来,随着自然语言处理、深度学习、图数据处理等众多领域的飞速发展,知识图谱在自动化知识获取、知识表示学习与推理、大规模图挖掘与分析等领域又取得了很多新进展。知识图谱已经成为实现认知层面的 人工智能不可或缺的重要技术之一。

二、知识图谱表示

2.1 知识构建

2.1.1 知识从哪来?

想要构建知识,首先需要有数据来源。互联网的发展为知识海量来源提供了新的机遇。在一定程度上,互联网的出现帮助传统知识工程突破了在知识获取方面的瓶颈。从1998年Tim Berners Lee提出语义网至今,涌现出了大量以互联网资源为基础的新一 代知识库。这类知识库的构建方法可以分为三类: 众包 专家协作 互联网挖掘

以卡内基梅隆大学开发的知识库NELL(Never-Ending Language Learner)为例:NELL主要采用互联网挖掘的方法从Web中自动抽取 三元组(SPO)知识 。NELL的基本理念是:给定一个初始的本体(少量类和关系的定义)和少量样本,让机器能够通过自学习的方式不断地从Web中学习和抽取新的知识。目前,NELL已经抽取了300多万条三元组知识。

而专家协作常见于领域知识图谱的构建,因为专业领域知识抽取的质量要求相较于通用领域知识图谱,更高。下图对比介绍了领域知识图谱的主要特点及技术难点:

以医疗领域的知识图谱项目Linked Life Data 为例,该项目包含的RDF三元组规模就达到102亿个,包含从基因、 蛋白质、疾病、化学、神经科学、药物等多个领域的知识。再例如国内构建的中医药知识图谱,通常需要融合各类基础医学、文献、医院 临床等多种来源的数据,规模也达到20多亿个三元组。医学领域的知识 结构更加复杂,如医学语义网络 UMLS 包含大量复杂的语义关系,GeneOnto则包含复杂的类层次结构。在知识质量方面,特别涉及临床辅助决策的知识库通常要求完全避免错误知识。

而从数据源的类型上来分类,我们可以获得包括文本、图像数据、多媒体数据、传感器数据等多模态数据。但每一种数据源的 知识化 都需要综合各种不同的技术手段。例如,对于文本数据源,需要综合实体识别、 实体链接、关系抽取、事件抽取等各种自然语言处理技术,实现从文本中抽取知识。 此外,还需要综合采用实体消歧、数据融合、知识链接等技术,提升数据的规范化水平,增强数据之间的关联。 语义技术也被用来对传感器产生的数据进行语义化。这包括对物联设备进行抽象,定义符合语义标准的数据接口;对传感数据进行语义封装和对传感数据增加上下文语义描述等。

人工众包是获取高质量知识图谱的重要手段。例如,Wikidata和 Schema.org 都是较为典型的知识众包技术手段。可以开发针对 文本、图像等多种媒体数据的语义标注工具,辅助人工进行知识获取。

2.1.2 知识长啥样?—— 知识表示

有了来源以后,知识应该怎么被定义呢?

这里就需要涉及到 知识表示 与Schema工程等相关技术了。知识表示是指用计算机符号描述和表示人脑中的知识,以支持机器模拟人的心智进行推理的方法与技术。早期专家们用语义网、逻辑描述来刻画显示、离散的知识(比如一阶谓词逻辑、霍恩子句和霍恩逻辑),因而具有内生的可解释性。完全基于符号逻辑的知 识表示通常由于知识的不完备而失去鲁棒性。

随着语义网的提出与互联网的发展,知识表示迎来了新的契机和挑战,契机在于语义网为知识表示提供了一个很好的应用场景,挑战在于面向语义网的知识表示需要提供一套标准语言可以用来描述Web的各种信息。早期Web 的标准语言HTML和XML无法适应语义网对知识表示的要求,所以W3C 提出了新的标准语言 RDF RDFS和OWL 。相关概念我觉得这篇文章介绍地比较好:

  • 常见的知识图谱的知识表示框架
Freebase

Freebase 的知识表示框架主要包含如下几个要素:对象-Object、事 实-Facts、类型-Types和属性-Properties。“Object”代表实体。每一 个“Object”有唯一的 ID,称为 MID (Machine ID)。一个“Object”可以 有一个或多个“Types”。“Properties”用来描述“Facts”。

例如,“Barack Obama”是一个 Object,并拥有一个唯一的 MID:“/m/02mjmr”。这个 Object 的一个 type 是“/government/us_president”,并有一个称 为“/government/us_president/presidency_number”的Property,其数值 是“44”。Freebase使用复合值类型(Compound Value Types,CVT)处理多元关系。

Freebase的知识表示结构示例
Wikidata

Wikidata 的知识表示框架主要包含如下要素:页面-Pages、实体Entities、条目-Items、属性-Properties、陈述-Statements、修饰Qualifiers、引用-Reference 等。

Wikidata 起源于Wikipedia,因此与 Wikipedia 一样,以页面“Page”为基本的组织单元。Entities 类似于 OWL:Things,代指最顶层的对象。每一个 Entity 都有一个独立的维基页面。Entities 主要有两类:Items 和 Properties。Items 类似于 RDF 中的 Instance,代指实例对象。Properties和Statements分别等价于RDF中的 Property和Statement。通常一个Item的页面还包含多个别名-aliases和多 个指向Wikipedia的外部链接-Sitelinks。 每个 Entities 有多个 Statements。一个 Statement 包含一个 Property、一个或多个Values、一个或多个Qualifiers、一个或多个 References、一个标识重要性程度的Rank。

ConceptNet

ConceptNet5的知识表示框架主要包含如下要素:概念-Concepts、 词-Words、短语-Phrases、断言-Assertions、关系-Relations、边-Edges。

Concepts由Words或Phrases组成,构成了图谱中的节点。与其他知识图 谱的节点不同,这些 Concepts 通常是从自然语言文本中提取出来的, 更接近自然语言描述,而不是形式化的命名。Assertions 描述了Concepts 之间的关系,类似于RDF中的Statements。Edges类似于RDF中的 Property。一个 Concepts 包含多条边,而一条边可能有多个产生来源。 例如,一个“化妆 Cause 漂亮”的断言可能来源于文本抽取,也可能来源 于用户的手工输入。来源越多,该断言就越可靠。ConceptNet5根据来 源的多少和可靠程度计算每个断言的置信度。ConceptNet5示例如图所示。

ConceptNet5示例

ConceptNet5中的关系包含21个预定义的、多语言通用的关系,如 IsA、UsedFor等,以及从自然语言文本中抽取的更加接近自然语言描述 的非形式化的关系,如 on top of,caused by等。


在前面提到的一些知识图谱的表示方法中,其基础大多是以三元组的方法对知识进行组织。虽然这种离散的符号化的表达方式可以非常有效地将数据结构化,但这些符号并不能在计算机 中表达相应语义层面的信息,也不能进行语义计算,对下游的一些应用并不友好。

随着表示学习的发展, 以及NLP领域 词向量 嵌入(Embedding) 技术手段的出现, 启发了人们用类似于词向量的低维稠密向量的方式表示知识。

通过嵌入将知识图谱中的实体和关系投射到一个低维的连续向量空间,可以为每一个实体和关系学习出一个低维度的向量表示。

这种基于连续向量的知识表示可以实现通过数值运算来发现新事实和新关系,并能更有效发现 更多的隐式知识和潜在假设,这些隐式知识通常是人的主观不易于观察和总结出来的。更为重要的是,知识图谱嵌入也通常作为一种类型的先验知识辅助输入很多深度神经网络模型中,用来约束和监督神经网络的训练过程。

如图所示为基于离散符号的知识表示与基于连续向量的知识表示对比。
  • 知识图谱的向量表示
在介绍有关知识图谱的向量表示方法之前,在此先介绍词的表示方法,可以参考我的另一篇学习笔记: VoidOc:【深度学习】详解TextCNN

为了解决前面提到的知识图谱表示的挑战,在词向量的启发下,研究者考虑如何将知识图谱中的实体和关系映射到连续的向量空间,并包含一些语义层面的信息,可以使得在下游任务中更加方便地操作知识图谱,例如KBQA、关系抽取等。对于计算机来说,连续向量的表达可以蕴涵更多的语义,更容易被计算机理解和操作。把这种将知识图谱中包括实体和关系的内容映射到连续向量空间方法的研究领域称为 知识图谱嵌入(Knowledge Graph Embedding) 知识图谱的向量表示 、 知识图谱的 表示学习(Representation Learning) 或者 知识表示学习

类似于词向量,知识图谱嵌入也是通过机器学习的方法对模型进行学习,与One-Hot编码、词袋模型的最大区别在于,知识图谱嵌入方法的训 练需要基于监督学习。在训练的过程中,可以学习一定的语义层信息, 词向量具有的空间平移性也简单地说明了这点。类似于词向量,经典的知识图谱嵌入模型TransE的设计思想就是,如果一个三元组(h, r, t)成 立,那么它们需要符合h+r ≈ t关系,例如: vec(Rome)+vec(is−capital−of)≈vec(Italy)

  • 知识图谱嵌入的主要方法

1)转移距离模型: 如TransE

2)语义匹配模型: 如RESCAL

RESCAL模型的核心思想是将整个知识图谱编码为一个三维张量, 由这个张量分解出一个核心张量和一个因子矩阵,核心张量中每个二维 矩阵切片代表一种关系,因子矩阵中每一行代表一个实体。由核心张量 和因子矩阵还原的结果被看作对应三元组成立的概率,如果概率大于某 个阈值,则对应三元组正确;否则不正确。其得分函数可以写成

3)考虑附加信息的模型

除了仅仅依靠知识库中的三元组构造知识图谱嵌入的模型,还有一 些模型考虑额外的附加信息进行提升。 实体类型是一种容易考虑的额外信息。在知识库中,一般会给每个 实体设定一定的类别,例如Rome具有city的属性、Italy具有country的属 性。最简单的考虑实体类型的方法是在知识图谱中设立类似于IsA这样 的可以表示实体属性的关系,例如 (Rome,IsA,city) (Italy,IsA,Country) 这样的三元组。当训练知识图谱嵌入的时候,考虑这样的三元组就 可以将属性信息考虑到向量表示中。也有一些方法考虑相同类型的 实体需要在向量表示上更加接近。 关系路径也可以称为实体之间的多跳关系(Multi-hop Relationships),一般就是指可以连接两个实体的关系链,例如(Rome,is−capital−of,Italy) (Italy,is−country−of,Europe). 从 Rome 到 Europe 的关系路径就是一条is−capital−of→is−country −of关系链。当前很多方法也尝试考虑关系路径来提升嵌入模型,这里 的关键问题是考虑如何用相同的向量表达方式来表达路径。

在基于路径 的 TransE,也就是 PTransE [11] 中,考虑了相加、相乘和RNN三种用关系 表达关系路径的方法:

在基于 RNN 的方法中,令c1=r1并且一直遍历路径中的关系,直到最终p=cn。对于某一个知识库中存在的三元组,其两个实体间的关系路径p需要和原本两个实体间关系的向量表示相接近。

逻辑规则(Logical Rules)也是常被用来考虑的附加信息,Guo [12] 提出了一种以规则为指导的知识图谱嵌入方法,其中提出的 软规则(Soft rule) 指的是 使用 AMIE+规则学习方法在知识图谱中挖掘的带有置信度的规则。 该方法的整体框架是一个迭代的过程,其中包含两个部分,称为软标签预测阶段 (Soft Label Prediction)和嵌入修正阶段(Embedding Rectification)。 简单来说,就是讲规则学习和知识图谱嵌入学习互相迭代,最后使得知识图谱嵌入可以融入一定的规则信息。

  • 知识图谱嵌入的应用(其实也是知识推理的应用):

1)关系(链接)预测: 指通过一个已知的实体和关系预测另 一个实体,或者通过两个实体预测关系。

2) 三元组评估(fact prediction): 指的是给定一个完整的三元组, 判断三元组的真假。这对于训练过的知识图谱向量来说非常简单,只需要把三元组各个部分的向量表达带入相应的知识图谱嵌入的得分函数, 三元组的得分越高,其合理性和真实性越高。

3)实体对齐: 是验证两个实 体是否指代或者引用的是同一个事物或对象。该任务可以删除同一个知识库中冗余的实体,也可以在知识库融合的时候从异构的数据源中找到相同的实体。一种方法是,如果需要确定 x、y 两个实体指代同一个对象有多大可能,则使用知识图谱嵌入的得分函数对三元组(x, EqualTo, y) 打分,但这种方法的前提是需要在知识库中存在 EqualTo 关系。也有研究者提出完全根据实体的向量表示判断,例如设计一些实体之间的相似 度函数来判断两个实体的相似程度,再进行对齐。

4)QA问答 :利用知识图谱完成问答系统是该任务的一个研究方向,该任务的重 心是对某一个具体的通过自然语言表达的问题,使用知识图谱中的三元 组对其进行回答,如下:

A: Where is the capital of Italy?
Q: Rome(Rome, is-capital-of, Italy)
A: Who is the president of USA?
Q: Donald Trump(Donald Trump, is-president-of, USA)

2.1.3 知识抽取/挖掘

  • 知识抽取 按任务可以分为 实体识别、关系抽取、事件抽取和规则抽取 等。

传统专家系统时代的知识主要依靠专家手工录入,难以扩大规模。现代知识图谱的构建通常大多依靠已有的结构化数据资源进行转化,形成基础数据集,再依靠自动化知识抽取和知识图谱补全技术,从多种数据来源进一步扩展知识图谱,并通过人工众包进一步提升知识图谱的质量。这部分内容比较多,另开一篇专门来写:

2.1.4 知识存储

和传统数据一样,知识也需要数据库来进行存放与管理工作。由于传统关系数据库无法有效适应知识图谱的图数据模型, 知识图谱领域形成了 负责存储 RDF图(RDF graph) 数据的 三元组库(Triple Store) ,和管理 属性图(Property Graph) 图数据库(Graph Database)

  • RDF图
在 RDF 三元组集合中,每个 Web 资源具有一个 HTTP URI 作为其唯一的 id;一个 RDF图定义为三元组(s, p, o)的有限集合;每个三元组代表一个陈述句,其中s是主语,p是谓语,o是宾语; (s, p, o)表示资源s与资源o之间具有联系p,或表示资源s具有属性p且其 取值为o。实际上,RDF三元组集合即为图中的有向边集合。
RDF图示例

值得注意的是,RDF 图对于节点和边上的属性没有内置的支持。节点属性可用三元组表示,这类三元组的宾语称为 字面量 ,即图中的 矩形 。边上的属性表示起来稍显烦琐,最常见的是利用 RDF 中一种叫 作 “具体化”(reification) 的技术 [13] ,需要引入额外的点表示整个三元组,将边属性表示为以该节点为主语的三元组。例如在图3-2中,引入节点ex:participate 代表三元组(ex:zhangsan, 参加, ex:graphdb),该节点通过 RDF 内置属性rdf:subject、rdf:predicate 和 rdf:object 分别与代表 的三元组的主语、谓语和宾语建立起联系,这样三元组(ex:participate, 权重, 0.4)就实现了为原三元组增加边属性的效果。

  • 属性图

属性图可以说是目前被图数据库业界采纳最广的一种图数据模型。属性图由节点集和边集组成,且满足如下性质:

(1)每个节点具有唯一的id; 
(2)每个节点具有若干条出边; 
(3)每个节点具有若干条入边;