利用段落检索和生成模型进行开放域问答12.2

news2025/4/9 4:56:08

利用段落检索和生成模型进行开放域问答

  • 摘要
  • 引言
  • 2 相关工作
  • 3 方法

摘要

事实证明,开放域问答的生成模型具有竞争力,无需借助外部知识。虽然很有希望,但这种方法需要使用具有数十亿个参数的模型,而这些模型的训练和查询成本很高。在本文中,我们研究了这些模型可以从检索可能包含证据的文本段落中获益多少。我们在 Natural Questions 和 TriviaQA 开放基准测试中获得了最先进的结果。有趣的是,我们观察到当增加检索的段落数量时,该方法的性能显着提高。这证明序列到序列模型提供了一个灵活的框架,可以有效地聚合和组合来自多个段落的证据。

引言

最近,一些工作表明,可以从经过大量数据训练的大规模语言模型中提取事实信息。基于这一观察和自然语言处理模型预训练的进展。2020年引入了开放域问答的生成模型。在不依赖外部知识的情况下,该方法在多个基准测试中获得了有竞争力的结果。然而,它需要包含数十亿个参数的模型,因为所有信息都需要存储在权重中。这使得模型的查询和训练成本高昂。在本文中,我们研究了这种方法可以从访问外部知识源(例如维基百科)中获益多少。

基于检索的方法之前曾在使用提取模型的开放域问答的背景下被考虑过。在这种情况下,系统首先检索支持文档,然后从这些文档中提取答案。我们考虑了不同的检索技术,要么使用基于 TF/IDF 的稀疏表示,要么使用密集嵌入。提取答案的模型通常基于上下文化的单词表示,例如 ELMo 或 BERT,并预测一个范围作为答案。使用提取模型时,聚合和组合来自多个段落的证据并不简单,并且已经提出了多种技术来解决这一限制。

在本文中,我们基于开放域问答的生成建模和检索方面令人兴奋的发展,探索了一种两全其美的简单方法。该方法分两个步骤进行,首先使用稀疏或密集检索支持段落交涉。然后,序列到序列模型生成答案,除了问题之外,还将检索到的段落作为输入。虽然概念上很简单,但该方法在 TriviaQA 和 NaturalQuestions 基准上设置了新的最先进结果。特别是,我们表明,当检索到的段落数量增加时,我们的方法的性能显着提高。我们认为,这证明生成模型比提取模型更擅长结合多个段落的证据。

2 相关工作

开放领域问答 是回答一般领域问题的任务,其中证据不作为系统的输入给出。虽然这是自然语言处理中的一个长期存在的问题,但随着 Chen 等人的工作,这项任务最近重新引起了人们的兴趣,在该版本的问题中,学习系统可以以与答案相对应的跨度的形式进行强有力的监督。陈等人(2017)提出通过首先从维基百科检索支持文档来解决该问题,然后再从检索到的文档中提取答案。人们提出了不同的方法来解决系统没有给出黄金跨度但只给出正确答案的情况。 Clark 和 Gardner(2018)提出在与答案相对应的所有范围内使用全局归一化,后来应用于基于 BERT 的模型。敏等人 (2019) 引入了一种基于硬期望最大化的方法来解决此设置中的噪声监督问题。王等人 (2018) 描述了一种使用置信度和覆盖率得分来汇总不同段落的答案的技术。

段落检索 是开放域问答的重要一步,也是改进 QA 系统的一个活跃的研究领域。最初,基于 TF/IDF 的稀疏表示用于检索支持文档。李等人引入了一种基于 BiLSTM 的监督学习方法来对段落进行重新排序,而 Wang 等人 (2018) 通过强化学习训练了一个排名系统。改进 QA 系统检索步骤的第二种方法是使用额外信息,例如维基百科或维基数据图。最近,多项研究表明,完全基于密集表示和近似最近邻的检索系统与传统方法具有竞争力。此类模型可以使用问答对形式的弱监督进行训练,或者使用完形填空任务和端到端微调进行预训练。

生成式问答 在之前的工作中主要被考虑用于需要生成答案的数据集。这些数据集的生成方式使得答案与支持文档中的范围不对应,因此需要抽象模型。拉斐尔等人 (2019) 表明,生成模型对于阅读理解任务具有竞争力,例如 SQuAD (Rajpurkar et al., 2016),其中答案是跨度。罗伯茨等人(2020)建议使用大型预训练生成模型,而不使用额外的知识来进行开放域问答。最接近我们的工作,Min 等人(2020)和刘易斯等人 (2020) 引入了用于开放域问答的检索增强生成模型。我们的方法与这些作品的不同之处在于生成模型如何处理检索到的段落。这允许扩展到大量文档,并从大量证据中受益。

3 方法

在本节中,我们将描述我们的开放域问答方法。它分两个步骤进行,首先检索支持段落,然后使用序列到序列模型对其进行处理。

检索
对于支持段落的检索,我们考虑两种方法:BM25(Robertson et al., 1995)和 DPR(Karpukhin et al., 2020)。
在 BM25 中,段落被表示为词袋,排名函数基于术语和逆文档频率。我们使用带有默认参数的 Apache Lucene1 实现,并使用 SpaCy.2 对问题和段落进行标记。
在 DPR 中,段落和问题被表示为密集向量表示,并使用两个 BERT 网络计算。排名函数是查询和段落表示之间的点积。使用 FAISS 库的近似最近邻进行检索。

阅读
我们的开放域 QA 生成模型基于序列到序列网络,在无监督数据上进行预训练,例如 T5 或 BART。该模型将问题以及支持段落作为输入,并生成答案。更准确地说,每个检索到的段落及其标题都与问题连接在一起,并由编码器独立于其他段落进行处理。我们在每段文章的问题、标题和文本之前添加特殊标记 Question:,title: 和 context: 。最后,解码器对所有检索到的段落的结果表示的串联执行。因此,该模型仅在解码器中执行证据融合,我们将其称为解码器中的融合。

通过在编码器中独立处理通道,但在解码器中联合处理通道,该方法不同于 Min 等人(2020)和刘易斯等人(2020)。在编码器中独立处理段落可以扩展到大量上下文,因为它一次仅对一个上下文执行自关注。这意味着模型的计算时间随着通道数线性增长,而不是二次增长。另一方面,在解码器中联合处理段落可以更好地聚合来自多个段落的证据。
在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

还在Wins 11怀念10的右键单击菜单?别担心,可通过注册表来实现

到目前为止,Windows 11最令人讨厌的新“功能”是右键单击任何内容时会出现截断的上下文菜单。以前版本的Windows显示了你的所有选项,包括可以打开文件的不同程序,而新菜单仅限于少数选项,不一定是你想要的。 例如,当我…

SHAP(五):使用 XGBoost 进行人口普查收入分类

SHAP(五):使用 XGBoost 进行人口普查收入分类 本笔记本演示了如何使用 XGBoost 预测个人年收入超过 5 万美元的概率。 它使用标准 UCI 成人收入数据集。 要下载此笔记本的副本,请访问 github。 XGBoost 等梯度增强机方法对于具有…

C++ day48 打家劫舍

题目1:198 打家劫舍 题目链接:打家劫舍 对题目的理解 专业小偷偷盗房屋的钱财,每个房屋存放的金额用非负整数数组表示; 如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警; 不触动警报装置的情况…

吸积效应:为什么接口会越来越臃肿?我们从一个接口说起

欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我微信「java_front」一起交流学习 1 从一个接口说起 1.1 初始接口 假设现在有一个创建订单接口: pub…

C语言每日一题(44)删除排序链表中的重复元素 II

力扣 82 删除排序链表中的重复元素 II 题目描述 给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。 示例 1: 输入:head [1,2,3,3,4,4,5] 输出:[1,2,5]示…

mac安装解压缩rar后缀文件踩坑

mac默认能够解压缩zip后缀的文件,如果是rar后缀的自己需要下载相关的工具解压 下载地址: https://www.rarlab.com/download.htm mac我是因特尔芯片所以下载 x64 然后解压缩文件进入目录 rar中 将可执行文件 rar、unrar 移动到 /usr/local/bin目录下即…

【高效开发工具系列】jackson入门使用

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

ASP.NET Core MVC过滤器

1、过滤器分为授权过滤、资源访问过滤、操作方法(Action)过滤、结果过滤、异常过滤、终结点过滤。上一次咱们没有说异常过滤和终结点过滤,不过老周后面会说的。对这些过滤器,你有印象就行了。 2、所有过滤器接口都有同步版本和异…

可视化开源编辑器Swagger Editor本地部署并实现远程访问管理编辑文档

最近,我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念,而且内容风趣幽默。我觉得它对大家可能会有所帮助,所以我在此分享。点击这里跳转到网站。 文章目录 Swagger Editor本地接口文档公网远程访问1. 部署Swagge…

【Python百练——第3练】矩形类及操作

💐作者:insist-- 💐个人主页:insist-- 的个人主页 理想主义的花,最终会盛开在浪漫主义的土壤里,我们的热情永远不会熄灭,在现实平凡中,我们终将上岸,阳光万里 ❤️欢迎点…

一缕青丝寄相思

10年8月16日七夕节男孩向女孩表白,女孩不知道那天是七夕,也没有读懂男孩的爱,女孩在9月22日中秋,向男孩打开了心门,男孩却没有懂女孩的心思.13年后的一封问候邮件,一束女孩的长发和回不去的青春 洒满阳光的午后 转眼间看到你的笑脸 微笑着你对我说 遇上你认识我真好 你说得好莫…

论文解读--Robust lane detection and tracking with Ransac and Kalman filter

使用随机采样一致性和卡尔曼滤波的鲁棒的车道线跟踪 摘要 在之前的一篇论文中,我们描述了一种使用霍夫变换和迭代匹配滤波器的简单的车道检测方法[1]。本文扩展了这项工作,通过结合逆透视映射来创建道路的鸟瞰视图,应用随机样本共识来帮助消…

力扣日记12.3-【二叉树篇】二叉树的所有路径

力扣日记:【二叉树篇】二叉树的所有路径 日期:2023.12.3 参考:代码随想录、力扣 257. 二叉树的所有路径 题目描述 难度:简单 给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径…

JAVA代码优化:CommandLineRunner(项目启动之前,预先加载数据)

CommandLineRunner接口是Spring Boot框架中的一个接口,用于在应用程序启动后执行一些特定的代码逻辑。它是一个函数式接口,只包含一个run方法,该方法在应用程序启动后被自动调用。可以帮助我们在应用程序启动后自动执行一些代码逻辑&#xff…

sharding-jdbc实现分库分表

shigen日更文章的博客写手,擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长,分享认知,留住感动。 😅😅最近几天的状态有点不对,所以有几天没有更新了。 当我们的数据量比较大…

css实现简单的抽奖动画效果和旋转效果,还有春联效果

使用css的animation和transform和transition可以实现简单的图片放大缩小,旋转,位移的效果,由此可以延伸的动画效果还是挺多的,比如图片慢慢放大,图片慢慢旋转并放大,图片慢慢变化位置等等, 抽奖…

使用pytorch从零开始实现迷你GPT

生成式建模知识回顾: [1] 生成式建模概述 [2] Transformer I,Transformer II [3] 变分自编码器 [4] 生成对抗网络,高级生成对抗网络 I,高级生成对抗网络 II [5] 自回归模型 [6] 归一化流模型 [7] 基于能量的模型 [8] 扩散模型 I, 扩散模型 II…

MathType 7.5.2中文版软件使用期到了怎么办?

MathType 7.5.2中文版作为一款专业的公式编辑器,MathType受到很多人的青睐,它可以将编辑好的公式保存成多种图片格式或透明图片模式,可以很方便的添加或移除符号、表达式等模板(只需要简单地用鼠标拖进拖出即可),也可以…

Verilog 入门(八)(验证)

文章目录 编写测试验证程序波形产生值序列重复模式 测试验证程序实例从文本文件中读取向量实例:时序检测器 测试验证程序用于测试和验证设计方法的正确性。Verilog 提供强有力的结构来说明测试验证程序。 编写测试验证程序 测试验证程序有三个主要目的:…

Java 表达式引擎

企业的需求往往是多样化且复杂的,对接不同企业时会有不同的定制化的业务模型和流程。我们在业务系统中使用表达式引擎,集中配置管理业务规则,并实现实时决策和计算,可以提高系统的灵活性和响应能力。 引入规则引擎似乎就能解决这个…