F. 知识图谱 推理
概述
- 知识图谱推理能用来对知识图谱进行补全和质量检测等
- 推理的方法
- 逻辑推理:推理过程包含了严格的约束和推理过程
- 演绎推理:是一种自上而下的逻辑推理,是指在给定的一个或多个前提的情况下,推断出一个必然成立的结论的过程
- 算法分类
- 肯定前件假言推理
- 否定后件假言推理
- 三段论
- 算法分类
- 归纳推理:是一种自下而上的推理,是指基于已有的部分观察得出一般结论的过程
- 算法分类
- 归纳泛化:基于对个体的观察而得出可能适用于整体的结论,即在整体的一些样本中得到的结论可以泛化到整体上
- 统计推理:将整体的统计结论应用于个人
- 溯因推理:在给定一个或多个已有观察事实,并根据已有的知识推断出对已有观察最简单且最有可能的解释的过程溯因推理是归纳推理的一种,因为整个推理过程的前提和结论并没有必然的关系
- 比如说:下雨了马路一定会湿,如果观察到马路是湿的,可以通过溯因推理得到很大概率是因为下雨了
- 类比推理:可以看做只基于对一个事物的观察而进行的对另一个事物的归纳推理,是通过寻找两者之间可以类比的信息,将已知事物上的结论迁移到新的事物上的过程
- 算法分类
- 演绎推理:是一种自上而下的逻辑推理,是指在给定的一个或多个前提的情况下,推断出一个必然成立的结论的过程
- 非逻辑推理:推理过程相对模糊
- 逻辑推理:推理过程包含了严格的约束和推理过程
- 面向知识图谱的推理
- 基于图谱中已有的事实或关系推断出未知的事实或关系,一般着重考察实体、关系和图谱结构三个方面的特征信息
- 知识图谱的推理的主要技术手段可以分为两大类
- 基于演绎的知识图谱推理:如基于描述逻辑、Datalog、产生式规则等
- 基于归纳的知识图谱推理:如所示的路径推理、表示学习、规则学习、基于强化学习的推理等
基于演绎的知识图谱推理
- 本体推理 — 描述逻辑
- 描述逻辑的基本组成部分
- 最基本的元素:概念、关系、个人
- 概念:解释为一个领域的自己
- 关系:该领域上的二元关系
- 个人:一个领域内的实例
- TBox术语集:概念术语的公理集合
- TBox语言有定义和包含
- 定义为引入概念及关系的名称,如Mother、Person、has_child
- 包含指声明包含关系的公理
- TBox语言有定义和包含
- ABox断言集:个体的断言集合
- ABox 语言包含概念断言和关系断言
- 概念断言即表示一个对象是否属于某个概念,例如Mother(Alice)、Person(Bob)。
- 关系断言表示两个对象是否满足特定的关系,例如 has_child(Alice, Bob)。
- ABox 语言包含概念断言和关系断言
- TBox和ABox上的推理机制
- 解释I是知识库K的模型,当且仅当I是K中每个断言的模型。若一个知识库K有一个模型,则称K是可满足的。
- 若断言σ对于K的每个模型都是满足的,则称K逻辑蕴含σ,
- 对概念C,若K有一个模型I使得则称C是可满足的。
- 最基本的元素:概念、关系、个人
- 抽象的信息
- 概念包含
- 概念互斥
- 概念可满足
- 全局一致
- TBox一致
- 实例测试
- 实例检索
- 常用本体推理工具简介
- FaCT++:有C++和Java版本
- Racer:Allegro Common Lisp语言实现
- Pellet:Java版本
- HermiT:Java版本
- 描述逻辑的基本组成部分
- 基于逻辑编程的推理方法
- 跟本体推理的区别
- 本体推理:通常仅支持预定义的本体公理上的推理
- 规则推理:可以根据特定的场景定制规则,以实现用户自定义的推理过程
- 编程语言 — Datalog
- Datalog:是一种面向知识库和数据库设计的逻辑语言,便于撰写规则,实现推理
- 基于Datalog的推理工具RDFox介绍
- KAON2:实现编程语言 - Java;支持编程语言 - Java
- RDFox:实现编程语言 - C++;支持编程语言 - Java/C++/Python
- Stardog:实现编程语言 - Java;支持编程语言 - Java
- HerimT:实现编程语言 - Java;支持编程语言 - Java
- Pellet:实现编程语言 - Java;支持编程语言 - Java
- 跟本体推理的区别
- 基于查询重写的方法
- 通过重写的方法实现知识图谱的查询
- 第一种情况:知识图谱已经存在,直接在知识图谱之上的查询成为本体介导的查询回答(OMQ)。
- 第二种情况:基于本体的数据查询。将数据库的数据映射为一个知识图谱。映射的标准语言为R2RML语言
- 框架 — OBDA
- 相关工具
- Ontop:支持本体 语言 - OWL 2 QL;支持映射语言 R2RML,Ontop Mapping
- Mastro:支持本体 语言 - OWL 2 QL;支持映射语言 R2RML
- Ultrawrap:支持本体 语言 RDFS - Plus;支持映射语言 R2RML
- Stardog:支持本体 语言 - OWL 2 SL/SWRL;支持映射语言 R2RML
- Morph - RDB:支持本体 语言 - OW DL/SWRL;支持映射语言 R2RML
- 通过重写的方法实现知识图谱的查询
- 基于产生式规则的方法
- 产生式系统是一种前向推理,可以按照一定机制执行规则并达到某些目标,与一节逻辑类似,也有区别。产生式系统可以应用于自动规划和专家系统等领域
- 产生式系统有三部分组成
- 事实集合:事实集合是运行内存为事实的集合,用于存储当前系统中的所有事实
- 产生式集合:有一系列产生式组成。产生式形如:IF conditions Then actions
- 推理引擎:用于控制系统的执行
- 具体实现
- 模式匹配:用规则的条件部分匹配事实集中的事实,整个LHS都被满足的规则触发,并被加入议程
- Rete算法
- 选择规则:按一定的策略从被触发的多条规则中选择一条
- 随机选择
- 具体性:选择最具体的规则
- 新近程度:选择最近没有被触发的规则执行动作
- 执行规则:执行被选择出来的规则RHS,从而操作WM
- 模式匹配:用规则的条件部分匹配事实集中的事实,整个LHS都被满足的规则触发,并被加入议程
- 相关工具
- Drools:实现语言 - Java;知识语言 - Java
- Jena:实现语言 - Java;知识语言 - Java
- GraphDB:实现语言 - Java;知识语言 - Java/PHP/Python/Scala …
基于归纳的知识图谱推理
- 基于图结构的推理
- 基于知识图谱路径特征的PRA算法
- 任务类型(三元组:(h, r, t))
- 第一种:给定关系r和头实体h,预测可能的尾实体h,叫做尾实体链接预测
- 第二种:给定r, t的情况下,预测可能的头实体,叫作头实体链接预测
- 目标:针对自底向上构建的含有较多噪音的图谱
- 任务类型(三元组:(h, r, t))
- PRA的演进算法
- 基于知识图谱路径特征的PRA算法
- 基于规则学习的推理
- 规则一般包含了两个部分,分别为规则头和规则主题:rule: head <- body
- 规则头:是一个二元的原子构成
- 规则主体:由一个或多个一元原子或二元原子组成
- 对于一条规则的评估方法
- 支持度:满足规则主题和规则头的实例个数,规则的实例化指的是将规则中的变量替换成知识图谱中真实的实体后的结果
- 置信度:支持度和满足规则主题的实例个数的比值
- 规则头覆盖度:规则支持度和满足规则头的实例个数的比值
- 常见算法
- AMIE
- 定义了3个挖掘算子
- 增加悬挂原子
- 增加实例化的原子
- 增加闭合原子
- 定义了3个挖掘算子
- AMIE
- 规则一般包含了两个部分,分别为规则头和规则主题:rule: head <- body
- 基于表示学习的推理
- 概述
- 基于图结构的推理和基于规则学习的推理,都显式地定义了推理学习所需的特征
- 基于表示学习的推理通过将知识图谱中包含实体和关系的元素映射到一个连续的向量空间中,为每个元素学习在向量空间中表示,向量空间中的表示可以是一个或多个向量或矩阵
- 常见算法
- TransE
- 概述
知识图谱推理新进展
- 时序预测推理:通过快照(针对本体流进行离散化存储),对某一个时刻的本体进行建模,
- 基于强化学习的知识图谱推理
- 基于元学习的少样本知识图谱推理
- 目标:学习如何学习,旨在通过少量样本完成学习,其相对主要的应用是少样本学习
- 主要的元学习方法
- 基于度量
- 基于模型
- 基于优化
- 图神经网络与知识图谱推理