近年来,知识图谱问答任务取得较大进展,但当问题变得复杂,涉及多个实体的比较和推理时,机器尚不能很好地解答。如何让机器像人类一样学会推理,从而处理复杂问题,是当前的一个研究热点和难点。AI TIME PhD 知识图谱专题第三期,清华大学计算机系、知识工程实验室的博士四年级研究生史佳欣,将结合知识图谱推理问答的数据集,为大家梳理主流的研究方法,分析各种方法的优缺点,并对将来的研究工作作出展望。
什么是推理问答
知识图谱推理问答要求计算机根据给定的知识图谱,处理实体之间的多跳、比较、集合操作等复杂问题。相较于简单问答只涉及单个实体和单个关系,推理问答的问题相对复杂,常常涉及多个实体,多个关系,多跳,比较等。简单问答,例如中国的首都是哪里?而推理问答,中国的首都和美国的首都,哪个人口更多?
简单问答只需要识别出问题中的实体和关系,链接到知识图谱中,即可查出答案。推理问答则要求计算机具备多种推理能力,具体包括:(1)处理多跳关系的能力,如“姚明的妻子的学校”;(2)数值比较的能力,如“哪个城市的人口更多”;(3)集合操作的能力,如“即是篮球运动员,又是球队老板的人有哪些”。
知识图谱推理问答的数据集
数据集是推理问答的基础,在本次分享中,讲者主要为大家总结了如图一所示的 4 个常用推理问答数据集,并从所用知识库、知识类型、问题数量、自然语言、SPARQL 共 5 个角度加以对比。
图一 4个常用数据集对比
现有知识库主要有三种知识类型:①关系型,如(“姚明”,“出生于”,“上海”);②属性型,如(“姚明”,“身高”,“ 229 厘米”);③事实型,用于表示一个关系型事实或属性型事实的知识,如((“上海”,“人口”,“23,390,000”),“统计时间”,“2016”)。在提到的4个数据集中,MetaQA 和 CSQA 仅考虑关系型知识。
但现有数据集存在一个共同的问题,都缺乏推理过程,只给出复杂的问题以及对应的答案,没有问题解答过程。回想人类是如何学习解答复杂问题的,都是先学会解答简单问题,再学会将复杂问题分解为简单问题的组合。如果数学老师只讲答案,那么应该大部分学生都无法掌握解答问题的能力。可见问题中间的解答步骤是必要的,对于机器来说亦是如此。
基于以上考虑,清华大学知识工程实验室构造了一个新的数据集——KQA Pro,可提供之前数据集都不具备的推理过程。图二是KQA Pro数据集与之前提到4个数据集的对比情况,清楚明了地展示了其属性特征。
图二 KQA Pro与其他数据集的对比
为表示推理过程,KQA Pro引入函数(function)和程序(program)两个概念。函数对应简单问题,程序对应复杂问题,将简单的函数组合成复杂的程序,从而解决复杂问题。具体操作过程可用图三的例子进行简单的说明。
图三 KQA Pro 示例
知识图谱推理问答的方法
知识图谱推理问答主流方法大致分为键值记忆网络(KVMemNet)、基于强化学习的多跳路径搜索、弱监督的程序学习、查询图解析与匹配4大类别,接下来将一一介绍。
1)键值记忆网络(KVMeMNet)
键值记忆网络是记忆网络的一种扩展形式,框架结构如图四所示。
图四 KVMemNet 框架图
其处理过程主要有以下几大流程:
(1)Key Hashing: 将知识库转换成 (k, v) 的形式,并从中选取一个子集
形式转换为对于三元组 (s, p, o),将 s 和 p 共同作为 k,将 o 作为 v。子集选择条件:一是k与输入的问题有共同的单词;二是共同的单词不是停用词;三是根据共同的单词数量排序,选择前 N 个。每个问题都需要构造对应的Memory。
(2)Key Addressing:根据问题 ,为 Memory 中的所有 key 计算一个概率分布
(3)Value Reading:根据 key 的概率,计算 value 的加权向量
(4)Query Updating:用得到的 value 向量更新 query 向量,使用映射矩阵 Rj
用 qj+1替换 Key Addressing 中的问题向量,迭代更新
迭代 H 步之后,将 qH+1输入分类器中,预测答案
键值记忆网络(KVMemNet)的优点为模型简单,通用性强;通过向量的迭代更新,隐式进行推理。缺点在于需要对每个问题构造 Memory,容易占用大量的时间和空间;推理能力较弱,存在缺乏可解释性。
2)基于强化学习的多跳路径搜索
基于强化学习的多跳路径搜索的基本思路是:
(1)找到问题中的主题实体(Topic Entity),并链接到知识库上;
(2)从知识库上的主题实体出发,根据问题选择一个关系,从而跳转到一个新的实体;
(3)继续选择关系,跳转实体;
(4)迭代若干步,用最终的实体作为答案;
(5)利用强化学习进行训练。
在此类方法中,讲者选择了Variational Reasoning Network (VRN)模型作为代表进行简单分析,模型框架如图五所示。
图五 Variational Reasoning Network (VRN) 框架图
VRN模型主要分为两个模块,一是主题实体识别模块 Pθ1(y|p) ;二是知识推理模块 Pθ2(a|y,q) ,将主题实体 y 看作隐变量。两个模块进行联合优化:
a)主题实体识别模块:
b)知识推理模块:从主题实体出发,找出所有能在 T 跳之内到达的实体(忽略边的方向)及对应的整个子图(图六),用Gy表示。
图六 Gy 子图
Gy中包含的实体都是潜在的答案实体。对任一潜在答案a,定义 Gy→a为包含了所有从 y 到 a 路径的子图。计算子图的向量表示:
将 g(Gy→a) 作为 a 的特征向量用于计算概率:
c)训练:
目标函数的原始形式为
使用辨分推断得到目标函数的下界
d)用强化学习进行优化
基于强化学习的多跳路径搜索不仅有较强的多跳推理能力,可以得到推理路径,而且具有较好的可解释性。但存在只能处理关系型知识,无法处理属性型、事实型;问题中必须有且仅有一个主题实体,适用范围较小;不具备其他推理能力等缺点。
3)弱监督的程序学习
弱监督的程序学习的基本思路为:(1)定义一些基本的函数,每个函数负责特定功能,用规则实现;(2)将输入问题解析为程序(即函数的组合),执行程序得到答案。由于缺乏监督信息,已有方法使用如下两种方式学习程序:
① 强化学习,跑出正确答案的程序获得正向激励。难点在于搜素空间巨大,难以收敛。
② 枚举程序并执行,将跑出正确答案的程序作为标注。难点是执行枚举时间消耗大,即使得到正确答案其程序也不一定正确。
图七给出了 KQA Pro 数据集中的程序示例,可以帮助理解函数与程序的概念。
在使用强化学习来进行弱监督的程序学习时,常常需要引入约束和 trick 以帮助收敛。例如函数的语法约束,如函数 A 必须在 B 之后;函数的位置约束,如程序必须以 A 或 B 开头,以 C 或 D 结尾;辅助激励策略,如程序给出的答案类型正确时,给予一定的正向激励;根据目标答案的类型进行剪枝等。
图七 KQA Pro 程序示例
弱监督的程序学习的优点有:(1)只需定义相应的函数,理论上可以处理任何推理问题;(2)组合性,有限函数的组合可以解决无限的问题;(3)程序表示推理步骤,具有很好的可解释性。缺点有:(1)搜索空间巨大,优化困难,非常耗时,性能不理想;(2)需要人工定义函数的具体实现,不易扩展。
4)查询图解析与匹配
查询图解析与匹配的基本思路是先将自然语言问题解析为查询图的形式,如使用翻译模型将问题转换为 SPARQL(示例如图八);再用查询图与知识图谱进行匹配,找出答案。
图八 KQA Pro SPARQL 示例
查询图解析与匹配具有可以处理大多数推理问题,查询图具有较好的可解释性等优点。但由于查询图的复杂性,解析的准确率往往比较低。另外,需要大量的训练数据。
未来研究方向
对于未来的研究,主要有以下4个方向:
(1)基于 KQA Pro 数据集;
(2)神经模块网络(neural-symbolic),将函数实现为神经网络,以获得更好的鲁棒性;
(3)sequence-to-graph 模型进行查询图解析,将 SPARQL 看作图而非序列,以更好地捕获节点间的依赖关系;
(4)用于推理任务的 GCN、RGCN 模型。
答疑互动
最后为大家分享直播结束后讲者在微信群里与大家的互动。
如果要收集类似KQA的原始数据,有什么渠道,文本类型,和注意的问题?
要收集类似的数据集的话,建议参照我们的流程,先用模板生成问题,再通过众包进行转写。
请问知识图谱在工业界有哪些应用?
应用包括智能客服、对话系统等。
整理:何文莉
审稿:史佳欣
(直播回放:https://b23.tv/5ivYvW)
点击
阅读原文
,下载PPT!
喜欢本篇内容,请点在看