来源:AI TIME 论道

本文约6000字,建议阅读10分钟

本文将结合知识图谱推理问答的数据集,为大家梳理主流的研究方法,分析各种方法的优缺点,并对将来的研究工作作出展望。

标签:知识图谱

近年来,知识图谱问答任务取得较大进展,但当问题变得复杂,涉及多个实体的比较和推理时,机器尚不能很好地解答。如何让机器像人类一样学会推理,从而处理复杂问题,是当前的一个研究热点和难点。清华大学计算机系、知识工程实验室的博士四年级研究生史佳欣,将结合知识图谱推理问答的数据集,为大家梳理主流的研究方法,分析各种方法的优缺点,并对将来的研究工作作出展望。

一、什么是推理问答

知识图谱推理问答要求计算机根据给定的知识图谱,处理实体之间的多跳、比较、集合操作等复杂问题。相较于简单问答只涉及单个实体和单个关系,推理问答的问题相对复杂,常常涉及多个实体,多个关系,多跳,比较等。简单问答,例如中国的首都是哪里?而推理问答,中国的首都和美国的首都,哪个人口更多?

简单问答只需要识别出问题中的实体和关系,链接到知识图谱中,即可查出答案。推理问答则要求计算机具备多种推理能力,具体包括:(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大类别,接下来将一一介绍。

  • 键值记忆网络(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,容易占用大量的时间和空间;推理能力较弱,存在缺乏可解释性。

  • 基于强化学习的多跳路径搜索

基于强化学习的多跳路径搜索的基本思路是:

(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)用强化学习进行优化

基于强化学习的多跳路径搜索不仅有较强的多跳推理能力,可以得到推理路径,而且具有较好的可解释性。但存在只能处理关系型知识,无法处理属性型、事实型;问题中必须有且仅有一个主题实体,适用范围较小;不具备其他推理能力等缺点。

  • 弱监督的程序学习

弱监督的程序学习的基本思路为:(1)定义一些基本的函数,每个函数负责特定功能,用规则实现;(2)将输入问题解析为程序(即函数的组合),执行程序得到答案。由于缺乏监督信息,已有方法使用如下两种方式学习程序:

① 强化学习,跑出正确答案的程序获得正向激励。难点在于搜素空间巨大,难以收敛。

② 枚举程序并执行,将跑出正确答案的程序作为标注。难点是执行枚举时间消耗大,即使得到正确答案其程序也不一定正确。

图七给出了 KQA Pro 数据集中的程序示例,可以帮助理解函数与程序的概念。

在使用强化学习来进行弱监督的程序学习时,常常需要引入约束和 trick 以帮助收敛。例如函数的语法约束,如函数 A 必须在 B 之后;函数的位置约束,如程序必须以 A 或 B 开头,以 C 或 D 结尾;辅助激励策略,如程序给出的答案类型正确时,给予一定的正向激励;根据目标答案的类型进行剪枝等。

图七 KQA Pro 程序示例

弱监督的程序学习的优点有:(1)只需定义相应的函数,理论上可以处理任何推理问题;(2)组合性,有限函数的组合可以解决无限的问题;(3)程序表示推理步骤,具有很好的可解释性。缺点有:(1)搜索空间巨大,优化困难,非常耗时,性能不理想;(2)需要人工定义函数的具体实现,不易扩展。

  • 查询图解析与匹配

查询图解析与匹配的基本思路是先将自然语言问题解析为查询图的形式,如使用翻译模型将问题转换为 SPARQL(示例如图八);再用查询图与知识图谱进行匹配,找出答案。

图八 KQA Pro SPARQL 示例

查询图解析与匹配具有可以处理大多数推理问题,查询图具有较好的可解释性等优点。但由于查询图的复杂性,解析的准确率往往比较低。另外,需要大量的训练数据。

四、未来研究方向

对于未来的研究,主要有以下4个方向:

(1)基于 KQA Pro 数据集;

(2)神经模块网络(neural-symbolic),将函数实现为神经网络,以获得更好的鲁棒性;

(3)sequence-to-graph 模型进行查询图解析,将 SPARQL 看作图而非序列,以更好地捕获节点间的依赖关系;

(4)用于推理任务的 GCN、RGCN 模型。

最后为大家分享直播结束后讲者在微信群里与大家的互动。

五、答疑互动

如果要收集类似KQA的原始数据,有什么渠道,文本类型,和注意的问题?

要收集类似的数据集的话,建议参照我们的流程,先用模板生成问题,再通过众包进行转写。

请问知识图谱在工业界有哪些应用?

应用包括智能客服、对话系统等。

编辑:王菁

校对:林亦霖

知识图谱推理问答:如何让机器像人类一样学会推理相关推荐

  1. NAACL 2021 | QA-GNN:基于语言模型和知识图谱的问答推理

    ©PaperWeekly 原创 · 作者|刘兴贤 学校|北京邮电大学硕士生 研究方向|自然语言处理 论文标题: QA-GNN: Reasoning with Language Models and K ...

  2. 论文浅尝 | 基于时序知识图谱的问答

    笔记整理:姚云志,浙江大学在读博士,研究方向为自然语言处理. 链接:https://arxiv.org/pdf/2106.01515.pdf 时序知识图谱是一种多关系的知识图谱,相较于常规的知识图谱, ...

  3. 基于中医药知识图谱智能问答(二)

    鸣谢:该项目基于刘焕勇老师.IrvingBei这两位的代码启发下,才有了我这么一个辣鸡项目.期间我的学业导师,给了我很多指导帮助.站在前人的肩膀上,我们可以看得更远 前文我们已经构建了知识图谱,我们知 ...

  4. 【论文】知识图谱简单问答(单跳)挑战、技术和趋势综述

    文章目录 Challenges, Techniques, and Trends of Simple Knowledge Graph Question Answering: A Survey Abstr ...

  5. 基于TransferNet和nlpcc2018知识图谱搭建问答服务

    GitHub仓库 问答服务的构建 postman请求: 后台日志:

  6. 直播预告:知识图谱推理问答综述 | AI TIME PhD 知识图谱专题-3

    AI TIME PhD 知识图谱专题-3 <知识图谱推理问答综述> 2020年6月19日 19:30-20:30 AI TIME PhD 知识图谱专题 主题 讲者 时间 大规模在线教育中的 ...

  7. 虚拟专题:知识图谱 | 知识图谱多跳问答推理研究进展、挑战与展望

    来源:<大数据> 知识图谱多跳问答推理研究进展.挑战与展望 杜会芳1, 王昊奋1, 史英慧2, 王萌3 1 同济大学设计创意学院 2 东南大学网络空间与安全学院 3 东南大学计算机科学与工 ...

  8. 第二章 知识图谱——机器大脑中的知识库

    原文: http://book.thunlp.org/knowledge_graph/ 第二章 知识图谱--机器大脑中的知识库 Published by  liuzy on July 6, 2015 ...

  9. 初学者入门知识图谱必看的能力:推理

    摘要:本文从知识推理的基本概念出发,通俗易懂得介绍了知识图谱知识推理的应用和方法. 本文分享自华为云社区<0基础入门知识图谱的超能力--知识推理>,作者:Cheri Chen. 一.知识推 ...

最新文章

  1. 【转载】Deep learning:十九(RBM简单理解)
  2. Python学习 Day 025 -模块相关
  3. 公司SAP ERP 项目开始上线切换和最终用户培训了!
  4. MySQL中的表压缩功能
  5. python写的贪吃蛇小游戏_Python贪吃蛇小游戏
  6. JAVA获取别人发过来的json字符串(Post方式)
  7. SQLServer DBA 三十问之我答(第7题)
  8. iOS下拉刷新和上拉刷新
  9. JDK 1.5 HashMap 源代码读解
  10. linux centos 安装mysql,linux/centos安装mysql
  11. VIM 第五节:文件信息、跳转、定位括号和缩进 https://fishc.com.cn/thread-65856-1-1.html
  12. 关于Si24r1调试的总结
  13. ps里面的css,PS中如何添加图层样式
  14. better-scroll基本使用
  15. Unity的一些特效和粒子特效插件
  16. [sdx62]bitbake lighttpd出现NOTE: Reconnecting to bitbake server...
  17. CentOS 7.9 Xfce桌面安装中文输入法
  18. 详解Node.js API系列 Module模块(2) 案例分析
  19. 使用pytorch搭建自己的网络之Res2Net
  20. 《Python知识手册》.pdf

热门文章

  1. jquery-- json字符串没有自动包装为 json对象
  2. CentOS 编译 openjdk
  3. 转载:JMS-ActiveMQ浅析
  4. Service 与 Thread 的区别
  5. python怎么拆分没有分隔符字符串_python如何拆分含有多种分隔符的字符串
  6. python3使用staf问题_python调用staf自动化框架
  7. python pandas inplace用法
  8. pandas库scatter_matrix绘图可视化参数详解
  9. torch.nn.softmax()
  10. HSV颜色空间 HSV空间各通道分离实验