QA-GNN: 使用语言模型和知识图谱的推理问答

Abstract
使用预训练语言模型(LMs)和知识图谱(KGs)的知识回答问题的问题涉及两个挑战:在给定的问答上下文(问题和答案选择)中,方法需要(i)从大型知识图谱中识别相关的知识,并且(ii)在问答上下文和知识图谱上进行联合推理。在这项工作中,我们提出了一个新的模型,QA-GNN,通过两个关键创新解决了上述挑战:(i)相关性评分,我们使用LMs来估计相对于给定的问答上下文,KG节点的重要性,以及(ii)联合推理,我们将问答上下文和知识图谱连接起来形成一个联合图,并通过图神经网络相互更新它们的表示。我们在常识(CommonsenseQA,OpenBookQA)和生物医学(MedQA-USMLE)领域的问答基准上评估了我们的模型。QA-GNN胜过了现有的LM和LM+KG模型,并展现了执行可解释和结构化推理的能力,例如在问题中正确处理否定。

代码和数据可在https://github.com/michiyasunaga/qagnn 获取。

论文下载: 2104.06378.pdf (arxiv.org)icon-default.png?t=N7T8https://arxiv.org/pdf/2104.06378.pdf

1. 动机

目前现有的方法,对于QA上下文使用LM处理,对于KG使用GNN进行处理,并且并不相互更新彼此的表示,也不做语义的对齐表示。因此QA上下文与KG的分离表示可能会限制模型执行结构化推理的能力(比如处理否定问题)。因此本篇工作主要在于QA上下文与KG的融合表示。

2. 亮点

基于知识图谱的问答(KBQA)集中于知识图谱上的多跳推理以及语言模型与知识图谱的融合,目前的方法需要解决两个问题:

(1)在给定上下文的条件下,如何从规模巨大的知识图谱中检索出相关的知识。

(2)如何进行问答上下文与知识图谱的联合推理。

本文提出了一个新的模型:QA-GNN,通过两个关键性创新来尝试解决上述问题:

(1)相关性评分:在给定问答上下文的条件下,使用语言模型计算相关性评分,来估计知识图谱中的实体对于给定上下文的重要性。

(2)联合推理:将问答上下文与筛选出的知识图谱的子图构建一张联合图,使用基于GNN的消息传递来更新彼此的表示。

3. 模型方法

如图1所示,QA-GNN 的工作原理如下。首先,我们使用 LM 来获得 QA 上下文的表示,并从 KG 中检索子图  。然后我们引入一个表示 QA 上下文的 QA 上下文节点 z,并将 z 连接到主题实体  ,我们在两个知识来源上有一个联合图,我们称之为工作图  。为了自适应地捕获 QA 上下文节点与  中的每个其他节点之间的关系,我们使用 LM 计算每对的相关分数,并将该分数用作每个节点的附加特征。然后,我们提出了一个基于注意力的 GNN 模块,该模块在  上执行消息传递以进行多轮。我们使用 LM 表示、QA 上下文节点表示和池化工作图表示进行最终预测。

图片

图1 总体架构图

(1)相关性评分

本文在给定问答上下文的条件下,使用语言模型计算相关性评分,估计知识图谱中的实体对于给定上下文的重要性。对中心实体附近few-hop的节点截为子图,对每一个entity与QA上下文做concat,然后使用预训练语言模型(本文使用的是RoBERTa),计算它们的相似程度。

对于每个节点 ,QA的上下文,节点的相关性评分为:

图片

(2)联合推理

本文中将问答上下文与筛选出的知识图谱的子图构建一张联合图,使用基于GNN的消息传递来更新彼此的表示。

图片

图2 联合推理

该文章在CommonsenseQA以及OpenBookQA数据集上,进行了实验,实验表明,QA-GNN方法比fine-tune LM与现有的LM+KG方法分别提高了 5.7% 和 3.7% ,以及处理结构化推理(如否定问题)的能力,比目前的fine-tune LM有4.6%的提升。

4. 实验结果

本文的实验结果在官方排行榜上均取得了与其他系统竞争的结果。值得注意的是,前两个系统 T5 (Raffel et al., 2020) 和 UnifiedQA (Khashabi et al., 2020) 使用更多的数据进行训练,并且比本文的模型使用 8x 到 30 倍的参数(本文模型的参数为 ∼360M)。排除这些和集成系统,本文的模型在与其他系统的大小和数据量上具有可比性,并在两个数据集上实现了最佳性能。

表1 CommonsenseQA 官方排行榜上的测试准确性

图片

表2 OpenBookQA 排行榜上的测试准确性

图片

表3 CommonsenseQA IHdev上的消融实验

图片

5. 总结

本文提出了QA-GNN,利用预训练语言模型与GNN融合QA上下文与KG。通过使用相关性评分,从知识图谱中检索实体相关子图,并衡量每个节点对于QA上下文的重要程度,这保证了在后续进行融合时,能够注意到这样的相关性信息。接着通过将QA上下文视作一个节点添加进KG,通过工作图连接两个信息源,并通过GNN消息传递联合更新它们的表示。本文是GNN在融合QA上下文与KG的一个尝试,在问答任务上相比现有的预训练语言模型、以及预训练+KG模型,都有不小的提升。同时,使用attention-base GNN,能够可视化知识图谱中节点之间的注意力关系,有助于提高QA可解释性和结构化推理的能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/354023.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++:auto 关键字 范围for

目录 auto 关键字: 起源: auto的使用细则: auto不能推导的场景: 范围for: 范围for的使用条件: C的空指针: 注意: auto 关键字: 起源: 随着程序越…

蜡烛图采用PictureBox控件绘制是实现量化的第一步

股票软件中的蜡烛图是非常重要的一个东西,这里用VB6.0自带的Picture1控件的Line方法就可以实现绘制。 关于PictureBox 中的line 用法 msdn 上的说明为如下所示 object.Line [Step] (x1, y1) [Step] - (x2, y2), [color], [B][F] 然…

【Axure教程0基础入门】02高保真基础

02高保真基础 1.高保真原型的要素 (1)静态高保真原型图 尺寸:严格按照截图比例,参考线 色彩:使用吸取颜色,注意渐变色 贴图:矢量图/位图,截取,覆盖等 (…

【Java Kubernates】Java调用kubernates提交Yaml到SparkOperator

背景 目前查询框架使用的是trino,但是trino也有其局限性,需要准备一个备用的查询框架。考虑使用spark,spark operator也已经部署到k8s,现在需要定向提交spark sql到k8s的sparkoperator上,使用k8s资源执行sql。 对比 …

【linux】查看进程和子进程

在Linux系统中,可以使用多个命令来查看进程及其子进程。以下是一些常用的方法: 1. ps 命令 ps 命令用于显示当前进程的状态。可以结合不同的选项来查看进程及其子进程。 查看进程树: ps -auxf - -a 显示所有进程。 - -u 显示进程的用户/所…

2024年最适合开Palworld的游戏服务器

如果要开Palworld服务器,当然要选大内存的服务器 在雨云,你不仅可以 链接:雨云 - 新一代云服务提供商欢迎来到以用户体验为优先的雨云,我们提供稳定高速的国际虚拟主机,云服务器产品,强大的功能&#xff…

MySQL中使用percona-xtrabackup工具 三种备份及恢复 (超详细教程)

CSDN 成就一亿技术人! 今天讲讲再MySQL中使用percona-xtrabackup这个开源工具来实现在线备份。 CSDN 成就一亿技术人! 目录 介绍percona-xtrabackup 安装Percona 完整备份 备份流程 恢复流程 1.模拟文件损坏 2.滚回日志 3.恢复数据目录 4.授权…

复现五 LMDeploy 的量化和部署

0基础知识 一步一步跟着教程复现第五:LMDeploy 的量化和部署 复现一: 轻松玩转书生浦语大模型internlm-demo 配置验证过程_ssh -cng -l 7860:127.0.0.1:6006 rootssh.intern-ai-CSDN博客文章浏览阅读827次,点赞17次,收藏24次。…

BTC的数据结构Merkle Tree和Hash pointer

比特币是一种基于区块链技术的加密数字货币,其底层数据结构被设计为分布式,去中心化的。它的核心数据结构是一个链式的区块,每个区块都包含了多笔交易记录和一个散列值。 比特币的底层数据结构使用了两个关键概念:hash pointer和…

01 Redis的特性+下载安装启动+Redis自动启动+客户端连接

1.1 NoSQL NoSQL(“non-relational”, “Not Only SQL”),泛指非关系型的数据库。 键值存储数据库 : 就像 Map 一样的 key-value 对。如Redis文档数据库 : NoSQL 与关系型数据的结合,最像关系…

AP3464 车充 适配器IC 4-30V 2.4A 同步降压驱动器

AP3464 是一款支持宽电压输入的同步降压电源管理芯片,输入电压 4-30V 范围内可实现2.4A 的连续电流输出。通过调节 FB 端口的分压电阻,设定输出 1.8V 到 28V 的稳定电压。AP3464 具有优秀的恒压/恒流(CC/CV)特性。AP3464 采用电流模式的环路控制原理&…

Spring5深入浅出篇:Spring中ioc(控制反转)与DI(依赖注入)

Spring5深入浅出篇:Spring中ioc(控制反转)与DI(依赖注入) 反转(转移)控制(IOC Inverse of Control) 控制:对于成员变量赋值的控制权 反转控制:把对于成员变量赋值的控制权,从代码中反转(转移)到Spring⼯⼚和配置⽂件中完成好处:…

基于YOLOv8的摄像头吸烟行为检测系统(Python源码+Pyqt6界面+数据集)

💡💡💡本文主要内容:详细介绍了摄像头下吸烟行为检测系统,在介绍算法原理的同时,给出Pytorch的源码、训练数据集以及PyQt6的UI界面。在界面中可以选择各种图片、视频进行检测识别,可进行置信度、Iou阈值设定…

Pandas.Series.mode() 众数 详解 含代码 含测试数据集 随Pandas版本持续更新

关于Pandas版本: 本文基于 pandas2.2.0 编写。 关于本文内容更新: 随着pandas的stable版本更迭,本文持续更新,不断完善补充。 传送门: Pandas API参考目录 传送门: Pandas 版本更新及新特性 传送门&…

LeetCode---122双周赛

题目列表 3010. 将数组分成最小总代价的子数组 I 3011. 判断一个数组是否可以变为有序 3012. 通过操作使数组长度最小 3013. 将数组分成最小总代价的子数组 II 一、将数组分成最小总代价的子数组I 这道题纯纯阅读理解题,关键在于理解题意。注意:第一…

Go语言基础之单元测试

1.go test工具 Go语言中的测试依赖go test命令。编写测试代码和编写普通的Go代码过程是类似的,并不需要学习新的语法、规则或工具。 go test命令是一个按照一定约定和组织的测试代码的驱动程序。在包目录内,所有以_test.go为后缀名的源代码文件都是go …

【时间安排】

最近刚刚回到家,到家就是会有各种事情干扰,心里变乱人变懒的,而要做的事情也要继续,写论文,改简历,学习新技能。。 明天后天两天写论文改简历 周一(早上去城市书房,可能吵一点戴个耳…

Java 的反射学习总结

一、什么是反射? 反射是指在运行时动态地获取、检查和修改类或对象的信息的能力,不需要在编译时知道类的具体细节。 二、如何获取类对象? 三、如何通过类对象来创建类的对象? 四、类对象获取类构造器的方式 通过获取私有构造器创…

招聘网站简单爬虫_24.1.26

完整程序传送门 24.1.26 前些天接了一个大两届的师兄的小活,做了一下爬boss直聘岗位信息的程序,在这里记录一下 程序框架 定义一个名为paQu的接口函数,用于检查窗口的输入,它接受一个参数self,获取self对象的a属性&am…

vmware-VCSA6.0部署

下载vcsa的iso包,解压后首先安装VMware-ClientIntegrationPlugin-6.0.0-6823256.exe 如果不配置域名配置成ip地址也可以 https://172.16.51.202/