信息检索(二):Dense Passage Retrieval for Open-Domain Question Answering

Dense Passage Retrieval for Open-Domain Question Answering

  • 摘要
  • 1. 引言
  • 2. 背景
  • 3. DPR
  • 4. 实验设置
  • 5. 实验:文章检索
  • 6. 实验:问题问答
  • 7. 相关工作
  • 8. 结论
  • 参考资料


原文链接:https://aclanthology.org/2020.emnlp-main.550.pdf
DPR 最早引入密集检索用于问答、事实核查等需要证据的文章。
(2020)


摘要

1)开放域问答依赖于有效的段落检索来选择候选上下文,其中传统的稀疏向量空间模型(例如 TF-IDF 或 BM25)是事实上的方法
2)在这项工作中,我们证明检索实际上可以仅使用密集表示来实现,其中嵌入是通过简单的双编码器框架从少量问题和段落中学习的
3)当在广泛的开放域 QA 数据集上进行评估时,我们的密集检索器在前 20 个段落检索准确度方面绝对优于强大的 LuceneBM25 系统 9%-19%,并帮助我们的端到端 QA 系统建立多个开放域 QA 基准的最新技术

1. 引言

1.1 起源
阅读理解模型的进步提出了一个更加简化的两阶段框架:
(1)上下文检索器首先选择一小部分段落,其中一些包含问题的答案
(2)机器阅读器可以彻底检查检索到的上下文并确定正确答案
尽管将开放域 QA 减少为机器阅读是一个非常合理的策略,但在实践中经常观察到巨大的性能下降,这表明需要改进检索。

1.2 稀疏检索的缺点和密集检索的优点
开放域 QA 中的检索通常使用 TF-IDF 或 BM25 来实现,它通过倒排索引有效地匹配关键字,并且可以被视为以高维、稀疏向量表示问题和上下文。
相反,密集的潜在语义编码在设计上与稀疏表示是互补的。例如,由完全不同的标记组成的同义词或释义仍可能被映射到彼此接近的向量
密集编码也可以通过调整嵌入函数来学习,这为特定于任务的表示提供了额外的灵活性。
借助特殊的内存数据结构和索引方案,可以使用最大内积搜索 (MIPS) 算法高效地完成检索。

1.3 密集检索的坎坷发展
然而,人们普遍认为学习良好的密集向量表示需要大量带标签的问题和上下文对。
因此,在 ORQA 之前,对于开放域 QA,密集检索方法从未被证明优于 TF-IDF/BM25,ORQA 提出了一个复杂的逆完形填空任务(ICT)目标,预测包含屏蔽句子的块,额外的预训练。
然后联合使用问题和答案对对问题编码器和阅读器模型进行微调。
尽管 ORQA 成功证明密集检索可以超越 BM25,在多个开放域 QA 数据集上设置新的最先进结果,但它也存在两个弱点。
首先,ICT 预训练是计算密集型的,并且尚不完全清楚常规句子是否能很好地替代目标函数中的问题。
其次,由于上下文编码器没有使用问题和答案对进行微调,因此相应的表示可能不是最佳的。

1.4 本文模型
在本文中,我们解决了这个问题:我们是否可以仅使用问题和段落(或答案)对来训练更好的密集嵌入模型,而不需要额外的预训练?
通过利用现在标准的 BERT 预训练模型和双编码器架构,我们专注于使用相对少量的问题和段落对开发正确的训练方案。
通过一系列仔细的消融研究,我们的最终解决方案出人意料地简单:利用比较一个batch中的所有问题和段落对的目标,最大化问题和相关段落向量的内积,最终优化嵌入
我们的 (DPR) 非常强壮。它不仅大幅优于 BM25(Top-5 准确率分别为 65.2% vs. 42.9%),而且与 ORQA 相比,端到端 QA 准确率也有大幅提升(41.5% vs. 33.3%)在开放的自然问题设置中。

1.5 总结两个贡献
我们的贡献是双重的。
1)首先,我们证明,通过适当的训练设置,只需在现有问题-段落对上微调问题和段落编码器就足以大大优于 BM25。我们的实证结果还表明可能不需要额外的预训练。
2)其次,我们验证了在开放域问答的背景下,更高的检索精度确实可以转化为更高的端到端 QA 准确性。通过将现代读者模型应用于检索到的最热门段落,与几个非常复杂的系统相比,我们在开放检索设置中的多个 QA 数据集上获得了可比较或更好的结果。

2. 背景

2.1 问答任务设定
假设我们的集合包含D个文档,d1,d2,····,dD。我们首先将每个文档分割成长度相等的文本段落作为基本检索单元,并在我们的语料库中得到 M 个总段落C = {p1,p2,…, pM}。给定问题 q,任务是从段落 pi 之一中找到可以回答该问题的 token span。
(Ps:我们还在初步试验中尝试了自然段落,发现使用固定长度的段落在检索和最终 QA 准确性方面表现更好。实验证明固定长度表现更好。)
2.2 检索的必要性
请注意,为了覆盖广泛的领域,语料库的大小很容易从数百万个文档(例如维基百科)到数十亿个文档(例如网络)。因此,任何开放域 QA 系统都需要包含一个高效的检索器组件,该组件可以在应用阅读器提取答案之前选择一小组相关文本。从形式上来说,检索器 R : (q, C) → CF 是一个函数,它将问题 q 和语料库 C 作为输入,并返回一个小得多的文本过滤器集 CF ⊂ C,其中 |CF| = k <<|C|。对于固定的 k,检索器可以根据 top-k 检索准确度进行单独评估,即 CF 包含回答问题的范围的问题的比例。

3. DPR

我们的研究重点是改进开放域 QA 中的检索组件。
给定 M 个文本段落的集合,我们的密集段落检索器 (DPR) 的目标是索引低维连续空间中的所有段落,以便它可以有效地检索与输入问题相关的前 k 个段落。请注意,M 可以非常大(例如,我们的实验中有 2100 万次传代,如第 4.1 节所述),而 k 通常很小,例如 20-100。
3.1 概述
我们的密集段落检索器 (DPR) 使用密集编码器 EP (·),它将任何文本段落映射到 d 维实值向量,并为我们将用于检索的所有 M 个段落构建索引。在运行时,DPR 应用不同的编码器 EQ(·) 将输入问题映射到 d 维向量,并检索其中向量与问题向量最接近的 k 个段落。我们使用问题和文章向量的点积来定义问题和文章之间的相似度

编码器
尽管原则上问题和段落编码器可以由任何神经网络实现,但在这项工作中,我们使用两个独立的 BERT网络(base,uncased),并将 [CLS] 标记处的表示作为输出,所以 d = 768。
(cased:区分大小写,uncased:不区分大小写)

推理
在推理期间,我们将段落编码器 EP 应用于所有段落,并使用 FAISS 离线对它们进行索引。
FAISS 是一个极其高效的开源库,用于密集向量的相似性搜索和聚类,可以轻松应用于数十亿个向量。给定运行时的问题 q,我们推导其嵌入 vq = EQ(q) 并检索嵌入最接近 vq 的前 k 个段落。

3.2 训练
训练编码器以使点积相似性成为检索的排名函数本质上是一个度量学习(metric learning)问题。目标是通过学习更好的嵌入函数,创建一个向量空间,使得相关的问题和段落对比​​不相关的问题和段落具有更小的距离(即更高的相似度)。
(Ps 度量学习:x表示样本,y表示label。metric learning的目标就是学习一个变换函数(线性非线性均可)L把数据点从原始的向量空间映射到一个新的向量空间,在新的向量空间里相似点的距离更近,非相似点的距离更远,度量更符合任务要求,从而让KNN的表现更好。而deep metric learning,就是用深度神经网络来拟合这个变换函数。度量学习,其实是利用数据在空间中的相对和绝对位置,来帮助我们实现对样本空间的特征学习。)
设 m 个实例组成的训练数据。每个实例包含一个问题 qi 和一个相关(正)段落 p+,以及 n 个不相关(负)段落 p−。我们将损失函数优化为负对数似然:
请添加图片描述
正样本和负样本
对于检索问题,通常的情况是正例是明确可用的,而反例则需要从非常大的池中选择。
例如,与问题相关的段落可能会在 QA 数据集中给出,或者可以使用答案找到。集合中的所有其他段落虽然没有明确指定,但默认情况下都可以视为不相关。在实践中,如何选择负例经常被忽视,但对于学习高质量的编码器可能是决定性的。我们考虑三种不同类型的负例:
  (1)随机:来自语料库的任何随机段落;
  (2)BM25:BM25返回的top的段落,不包含答案,但与大多数问题标记匹配;
  (3)Gold:训练集中其他问题的正例。
Best model使用的负例:同一个 mini-batch 里面的 gold 负例 + 一个 BM25 的负例。

In-batch 负样本
假设我们在一个小批量中有 B 个问题,并且每个问题都与相关段落相关联。令 Q 和 P 为一批大小为 B 的问题和段落嵌入的 (B×d) 矩阵。
(Ps:这里一个 batch 由 B 个问题,Q问题矩阵 = B个 × d维向量,P文章矩阵 = B个 × d维向量)
S = QP(转置) 是相似性分数的 (B × B) 矩阵,其中每一行对应一个问题,成对出现与B段落。每批中的 B² (qi, pj) 问题/段落对。当 i = j 时,任何 (qi, pj) 对都是正例,否则为负例。这会在每个批次中创建 B 个训练实例,其中每个问题有 B − 1 个负例。
批量负例的技巧被证明是学习双编码器模型的有效策略,可以增加训练示例的数量。

4. 实验设置

4.1 Wikipedia 数据处理
接下来,我们使用 2018 年 12 月 20 日的英文维基百科转储作为回答问题的源文档。我们首先应用 DrQA中发布的预处理代码从维基百科转储中提取文章的干净文本部分。此步骤将删除半结构化数据,例如表格、信息框、列表以及消歧页面。
然后,我们将每篇文章分成多个不相交的文本块,每个文本块由 100 个单词作为段落,作为我们的基本检索单元,最终得到 21,015,324 个段落。每个段落还前面加上标题该段落来自的维基百科文章的名称,以及 [SEP] 标记

4.2 问答数据集
我们使用与之前的工作相同的五个 QA 数据集和训练/开发/测试分割方法。
五个常见数据集:
1)Natural Questions (NQ)
这些问题是从真实的谷歌搜索查询中挖掘出来的,答案是由注释者识别的维基百科文章中的内容。
2)TriviaQA
包含一组琐事问题及其最初从网络上抓取的答案。
3)WebQuestions (WQ)
包含使用 Google Suggest API 选择的问题,其中答案是 Freebase 中的实体。
4)CuratedTREC (TREC)
来自 TREC QA 跟踪以及各种 Web 资源的问题,旨在用于来自非结构化语料库的开放域 QA
5)SQuAD v1.1
这是一个流行的阅读理解基准数据集。向注释者展示了维基百科的一个段落,并要求他们写出可以从给定文本中回答的问题。尽管 SQuAD 之前已用于开放域 QA 研究,但它并不理想,因为许多问题在没有提供的段落的情况下缺乏上下文。我们仍然将其包含在我们的实验中,以便与以前的工作进行公平的比较。

请添加图片描述
4.3 正例的选择
由于 TREC、WebQuestions 和 TriviaQA6 中仅提供问题和答案对,因此我们使用 BM25 中包含答案的排名最高的段落作为肯定段落。如果检索到的前 100 篇文章中没有一篇有答案,则该问题将被丢弃。
对于 SQuAD 和Natural Questions (NQ),由于原始段落的分割和处理方式与我们的候选段落池不同,我们将每个黄金段落与候选池中的相应段落进行匹配和替换。当匹配失败时,我们会丢弃问题,由于不同的维基百科版本或预处理。表 1 显示了所有数据集的训练/开发/测试集中的问题数量以及用于训练检索器的实际问题。

5. 实验:文章检索

我们主要实验中使用的 DPR 模型是使用批处理大小为 128 的批处理负样本进行训练的,每个问题有一个额外的 BM25 负样本。我们对大型数据集(NQ、TriviaQA、SQuAD)的问题和段落编码器进行了最多 40 个epoch的训练,对小型数据集(TREC、WQ)进行了 100 个epoch的训练,使用 Adam 的学习率为 10^−5,采用线性调度的 warm-up 和 dropout rate 0.1。
虽然能够灵活地使检索器适应每个数据集是件好事,但也希望获得一个在所有方面都能良好工作的检索器。为此,我们通过组合除 SQuAD 之外的所有数据集的训练数据来训练多数据集编码器。除了 DPR 之外,我们还展示了 BM25、传统检索方法和BM25+DPR 的结果,使用它们分数的线性组合作为新的排名功能。具体来说,我们分别基于 BM25 和 DPR 获得前 2000 个段落的两个初始集合,并使用 BM25(q,p) + λ · sim(q, p) 作为排序函数对它们的并集进行重新排序。
根据dev set中的检索精度,我们使用 λ = 1.1。

5.1 主要结果
请添加图片描述
表 2 使用 top-k 准确度 (k ∈ {20, 100}) 比较了五个 QA 数据集上的不同段落检索系统。1)除了 SQuAD 之外,DPR 在所有数据集上的表现始终优于 BM25。当 k 很小时,差距尤其大(例如,自然问题前 20 名的准确率分别为 78.4% 和 59.1%)。
2)当使用多个数据集进行训练时,TREC(五个数据集中最小的数据集)可以从更多的训练示例中受益匪浅。相比之下,Natural Questions和WebQuestions略有改善,而 TriviaQA 略有下降。
3)在某些情况下,通过在单数据集和多数据集设置中将 DPR 与 BM25 相结合,可以进一步改善结果。
我们推测 SQuAD 性能较低有两个原因。首先,注释者看到文章后提出问题。因此,段落和问题之间存在高度的词汇重叠,这给 BM25 带来了明显的优势。其次,数据仅从 500 多篇维基百科文章中收集,因此训练示例的分布存在极大偏差,正如 Lee 等人 (2019) 之前所指出的那样。

5.2 消融实验
为了进一步了解不同的模型训练选项如何影响结果,我们进行了一些额外的实验并在下面讨论我们的发现。
请添加图片描述

样本效率
我们探讨需要多少训练样本才能实现良好的段落检索性能。图 1 说明了在Natural Questions的dev集上测量的不同数量训练示例的 top-k 检索准确性。如图所示,仅使用 1,000 个示例训练的 DPR 已经优于 BM25。这表明,使用通用的预训练语言模型,可以用少量的问题-段落对来训练高质量的 DPR。添加更多训练示例(从 1k 到 59k)进一步持续提高检索精度。

In-batch 负样本训练
我们在 development set of Natural Questions上测试了不同的训练方案,并将结果总结在表 3 中。


顶部块是标准的 1-of-N 训练设置,其中批次中的每个问题都与一个正向段落及其自己的一组 n 个负向段落配对(等式(2))。我们发现,当 k ≥ 20 时,负数的选择(随机、BM25 或黄金段落(来自其他问题的正数段落))不会对该设置中的 top-k 准确率产生太大影响。
(不使用in-batch方法,负样本的选择对于大 k 来说,没有太大影响)


中间的块是 in-batch 负样本设置。我们发现,使用类似的配置,in-batch 负样本训练可以显着改善结果。两者之间的主要区别在于gold 负样本是来自同一批次还是来自整个训练集。实际上,in-batch 负样本训练是一种简单且节省内存的方法,可以重用批次中已有的负样本示例,而不是创建新的负面示例。它会产生更多对,从而增加训练示例的数量,这可能有助于获得良好的模型性能。因此,随着批量大小的增加,准确性不断提高。
(in-batch 方法有效增多训练数据量,提升效果,并且batchsize越大,效果越好)


最后,我们探索in-batch负样本训练,其中包含额外的“hard”负样本,这些段落在给定问题的情况下具有高 BM25 分数,但不包含答案字符串。这些附加段落用作同一批次中所有问题的否定段落。我们发现添加单个 BM25 负样本可显着改善结果,而添加两个则无济于事。
(添加一个bm25负样本有效)


gold文章的影响
我们使用与原始数据集中的黄金上下文(如果可用)匹配的段落作为正面示例。我们对Natural Questions的实验表明,切换到远程监督的段落(使用包含答案的排名最高的 BM25 段落)只会产生很小的影响:检索的 top-k 准确率降低 1 点。

相似性和损失
除了点积之外,余弦距离和欧几里德 L2 距离也常被用作可分解的相似度函数。我们测试了这些替代方案,发现 L2 的性能与点积相当,并且两者都优于余弦。类似地,除了负对数似然之外,一种流行的排名选项是三元组损失,它直接比较某个问题的正段落和负段落。我们的实验表明,使用三重态损失不会对结果产生太大影响。

跨数据集泛化
关于 DPR 区分训练的一个有趣问题是,非独立同分布设置可能会导致性能下降多少。换句话说,当直接应用于不同的数据集而无需额外的微调时,它仍然可以很好地泛化吗?(因为不同数据集,数据分布不同)为了测试跨数据集泛化,我们仅在 Natural Questions 上训练 DPR,并直接在较小的 WebQuestions 和 CuratedTREC 数据集上进行测试。我们发现 DPR 的泛化能力很好,在前 20 名检索准确率中,与表现最佳的微调模型相比,损失了 3-5 分(69.9/86.3 vs.WebQuestions 和 TREC 分别为 75.0/89.1),同时仍然大大优于 BM25 基线(55.0/70.9)。
(Ps:独立同分布:在概率论与统计学中,独立同分布(英语:Independent and identically distributed,缩写为IID)是指一组随机变量中每个变量的概率分布都相同,且这些随机变量互相独立。一组随机变量独立同分布并不意味着它们的样本空间中每个事件发生概率都相同。例如,投掷非均匀骰子得到的结果序列是独立同分布的,但掷出每个面朝上的概率并不相同。
non-iid的意思即变量之间非独立,或者非同分布。
非独立:对象之间存在关系。例如以某人的行为为随机变量,在某时刻观测到行为behavior1,某时刻观测到行为behavior2,这两个行为之间可能有某种联系。例如一个人走在路上,淋雨了(behavior1),撑开伞(behavior2),它们之间有时序关系。
非同分布:两次观测的概率分布相同。例如某变量服从均匀分布,我们进行了一次观测;过一会服从正态分布,我们又进行了一次观测。这两次观测的变量就是非同分布)

5.3 定性分析
尽管 DPR 总体上比 BM25 表现更好,但这两种方法检索的段落在质量上有所不同。 BM25 等术语匹配方法对高度选择性的关键字和短语敏感,而 DPR 可以更好地捕获词汇变化或语义关系。

5.4 运行效率
我们需要开放域问答的检索组件的主要原因是为了减少读者需要考虑的候选段落的数量,这对于实时回答用户的问题至关重要。我们对配备 Intel Xeon CPU E5-2698 v4 @ 2.20GHz 和 512GB 内存的服务器上的段落检索速度进行了分析。借助 FAISS (实值向量)内存索引,DPR 可以变得非常高效,每秒处理 995.0 个问题,每个问题返回前 100 个段落。相比之下,BM25/Lucene(用 Java 实现,使用文件索引)每个 CPU 线程每秒处理 23.7 个问题。
另一方面,为密集向量构建索引所需的时间要长得多。在 2100 万个段落上计算密集嵌入需要大量资源,但可以轻松并行化,在 8 个 GPU 上大约需要 8.8 小时。然而,在单个服务器上对 2100 万个向量构建 FAISS 索引需要 8.5 小时。相比之下,使用 Lucene 构建倒排索引要便宜得多,总共只需要 30 分钟左右。

构建索引过程:
  BM25:30 min
  DPR:8.5 h
检索过程:
  BM25:23.7 个问题 / s
  DPR:995 个问题 / s
DPR额外的构建段落密集向量:
  8 个GPU需要 8.8 h

6. 实验:问题问答

在本节中,我们将实验不同的段落检索器如何影响最终的 QA 准确性。

6.1 端到端的 QA 系统
我们实现了一个端到端的问答系统,我们可以在其中直接插入不同的检索器系统。除了检索器之外,我们的 QA 系统还包含一个输出问题答案的神经阅读器。给定检索到的前 k 个段落(在我们的实验中最多 100 个),读者为每个段落分配一个段落选择分数。此外,它还从每个段落中提取答案跨度并分配跨度分数。选择分数最高的段落中的最佳跨度作为最终答案
具体来说,令 Pi ∈ RL×h (1 ≤ i ≤ k) 为第 i 段的 BERT(base,在我们的实验中不区分大小写)表示,其中 L 是该段的最大长度,h 是隐藏维度。标记作为答案范围的开始/结束位置和被选择的段落的概率定义为:
请添加图片描述

在训练过程中,我们从检索系统(BM25 或 DPR)针对每个问题返回的前 100 个段落中抽取一个正向段落和 m − 1 个负向段落。 m 是一个超参数,我们在所有实验中使用m = 24。训练目标是最大化正向段落中所有正确答案范围的边际对数似然(答案字符串可能在一篇段落中出现多次),并结合所选择的正向段落的对数似然。对于大型(NQ、TriviaQA、SQuAD)数据集,我们使用批量大小 16,对于小型(TREC、WQ)数据集,我们使用批量大小 4,并在开发集上调整 k。对于多设置下允许使用其他数据集的小数据集的实验,我们将接受自然问题训练的读者微调到目标数据集。所有实验均在八个 32GB GPU 上完成。
(边际似然函数是指在贝叶斯统计中,对于一个模型中的参数,通过积分或求和的方式将其边缘化,得到的关于数据的似然函数。上文中边际似然是指对于出现多次的答案进行边际化,对所有正确答案范围的对数似然进行汇总。这可能涉及将每个范围的对数似然相加,得到它们的边际对数似然。)

6.2 结果
请添加图片描述

表 4 总结了我们的最终端到端 QA 结果,通过轻微标准化后与参考答案的精确匹配来衡量。从表中我们可以看到,较高的检索器准确率通常会带来更好的最终 QA 结果:
1)在除 SQuAD 之外的所有情况下,与 BM25 中的答案相比,从 DPR 检索到的段落中提取的答案更有可能是正确的。
2)对于 NQ 和 TriviaQA 等大型数据集,使用多个数据集(多)训练的模型的性能与使用单个训练集(单)训练的模型相当。相反,在 WQ 和 TREC 等较小的数据集上,多数据集设置具有明显的优势。
3)将我们的结果与 ORQA(Lee 等人,2019)以及同时开发的方法 REALM(Guu 等人,2020)的结果进行对比是很有趣的。虽然这两种方法都包含额外的预训练任务并采用昂贵的端到端训练机制,但 DPR 仅仅通过专注于使用问题和答案对学习强大的段落检索模型,就成功地在 NQ 和 TriviaQA 上超越了它们。
  仅当目标训练集较小时,额外的预训练任务可能才更有用。
  尽管在单数据集设置中 DPR 在 WQ 和 TREC 上的结果竞争力较差,但添加更多问答对有助于提高性能,实现新的最先进水平。
4)为了将我们的管道训练方法与联合学习进行比较,我们按照 Lee 等人(2019)的说法,对自然问题进行了消融,其中检索器和阅读器进行了联合训练。这种方法获得了 39.8 EM 的分数,这表明我们单独训练强大的检索器和阅读器的策略可以利用有效的可用监督,同时优于具有更简单设计的类似联合训练方法(附录 D)。
5)对吞吐量的确切影响更难以衡量:与 DPR 相比,ORQA 使用 2-3 倍长的段落(与我们的 100 个标记相比,有 288 个单词片段),并且计算复杂度在段落长度上是超线性的。我们还注意到,我们发现 k = 50 对于 NQ 来说是最佳的,而 k = 10 只会导致精确匹配精度的边际损失(NQ 上的 EM 为 40.8 vs. 41.5 EM),这应该与 ORQA 的 5 段落设置大致相当。

7. 相关工作

段落检索一直是开放域 QA 的重要组成部分。它不仅有效地减少了答案提取的搜索空间,而且还识别了用户验证答案的支持上下文。 TF-IDF 或 BM25 等强稀疏向量空间模型已被用作广泛应用于各种 QA 任务的标准方法。最近还探索了使用外部结构化信息(例如知识图和维基百科超链接)增强基于文本的检索。
自潜在语义分析以来,使用密集向量表示进行检索已有很长的历史。使用标记的查询和文档对,有区别地训练的密集编码器最近变得流行,应用于跨语言文档检索、广告相关性预测、网络搜索和实体检索。这些方法补充了稀疏向量方法,因为即使没有精确的标记匹配,它们也可以为语义相关的文本对提供高相似度分数。然而,仅密集表示通常不如稀疏表示。虽然不是这项工作的重点,但预训练模型的密集表示以及交叉注意机制在段落或对话重新排序任务中也被证明是有效的。最后,一项并行工作证明了 IR 任务中全密集检索的可行性。他们没有采用双编码器框架,而是在 BERT 编码器之上引入了后期交互算子。
Das 等人 (2019) 探索了开放域 QA 的密集检索,他们建议使用重新表述的问题向量迭代检索相关段落。作为跳过段落检索的替代方法,Seo 等人(2019)提出将候选答案短语编码为向量,并直接有效地检索输入问题的答案。 Lee 等人(2019)使用额外的预训练来匹配问题的代理和相关段落,联合训练问题编码器和阅读器。他们的方法在 QA 准确性方面优于多个开放域 QA 数据集上的 BM25 plus reader 范例,并由 REALM 进一步扩展(Guu 等人,2020),其中包括通过在训练期间重新索引段落来异步调整段落编码器。 Xiong 等人 (2020b) 最近也改进了预训练目标。相比之下,我们的模型提供了一个简单而有效的解决方案,显示出更强的经验性能,而不依赖于额外的预训练或复杂的联合训练方案。
DPR 在最近的工作中也被用作一个重要模块。例如,熊等人扩展了利用hard负样本的想法。(2020a) 使用前一次迭代中训练的检索模型来发现新的负例,并在每次训练迭代中构建一组不同的示例。从我们训练的 DPR 模型开始,他们表明检索性能可以进一步提高。最近的工作(Izacard 和 Grave,2020;Lewis 等人,2020b)也表明 DPR 可以与 BART(Lewis 等人,2020a)和 T5(Raffel 等人,2019)等生成模型结合,在开放领域的质量保证和其他知识密集型任务。

8. 结论

在这项工作中,我们证明了密集检索可以优于并有可能取代开放域问答中的传统稀疏检索组件。虽然简单的双编码器方法可以取得令人惊讶的效果,但我们表明,成功训练密集检索器有一些关键因素。此外,我们的实证分析和消融研究表明,更复杂的模型框架或相似函数不一定提供额外的价值。由于检索性能的提高,我们在多个开放域问答基准上获得了最新的结果。

参考资料

【1】non-iid:https://blog.csdn.net/Protocols7/article/details/108999935

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

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

相关文章

六、回归与聚类算法 - K-means算法

目录 1、K-means 聚类步骤 2、API 3、案例 4、性能评估指标 5、总结 线性回归欠拟合与过拟合线性回归的改进 - 岭回归分类算法&#xff1a;逻辑回归模型保存与加载无监督学习&#xff1a;K-means算法 1、K-means 聚类步骤 2、API 3、案例 4、性能评估指标 5、总结

【数据结构与算法初学者指南】【冲击蓝桥篇】String与StringBuilder的区别和用法

&#x1f389;&#x1f389;欢迎光临&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;特别推荐给大家我的最新专栏《数据结构与算法&#xff1a;初学者入门指南》&#x1f4d8;&am…

【 JS 进阶 】Web APIs (一)

“生命是一曲奇妙的交响&#xff0c;每一段都是挑战&#xff0c;每一个音符都是机遇。在激情的旋律中&#xff0c;用勇气弹奏&#xff0c;创造出属于自己的华彩人生。” - 贝多芬 了解 DOM 的结构并掌握其基本的操作&#xff0c;体验 DOM 的在开发中的作用 知道 ECMAScript 与 …

基于SpringBoot的家教管理系统

基于SpringBootVue的家教管理系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBootMyBatis工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 前台主页 家教 个人中心 管理员界面 摘要 本文介绍了基于SpringBoot框架开发的家…

【深度学习笔记】3_5 图像分类数据集fashion-mnist

注&#xff1a;本文为《动手学深度学习》开源内容&#xff0c;仅为个人学习记录&#xff0c;无抄袭搬运意图 3.5 图像分类数据集&#xff08;Fashion-MNIST&#xff09; 在介绍softmax回归的实现前我们先引入一个多类图像分类数据集。它将在后面的章节中被多次使用&#xff0c…

论文是怎么一回事

最近找到女朋友了&#xff0c;她还挺关心我毕业和论文的事情&#xff0c;我开始着手弄论文了~ 说来惭愧&#xff0c;我一直以为读研就是做东西当作工作来完成&#xff0c;结果一直陷入如何实现的问题&#xff0c;结果要论文时不知道怎么弄创新点&#xff0c;这才转过头来弄论文…

信号系统之线性图像处理

1 卷积 图像卷积的工作原理与一维卷积相同。例如&#xff0c;图像可以被视为脉冲的总和&#xff0c;即缩放和移位的delta函数。同样&#xff0c;线性系统的特征在于它们如何响应脉冲。也就是说&#xff0c;通过它们的脉冲响应。系统的输出图像等于输入图像与系统脉冲响应的卷积…

重点媒体如何投稿?考核稿件投稿指南

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 机构组织&#xff0c;国企央企都需要定期将相关新闻投递到央媒&#xff0c;官媒&#xff0c;或者地方重点媒体中&#xff0c;那么如何进行投稿了&#xff0c;今天就与大家分享下。 央媒投…

喝多少瓶汽水

喝多少瓶汽水 题目描述&#xff1a;解法思路&#xff1a;解法代码&#xff1a;运行结果: 题目描述&#xff1a; 水已知1瓶汽水1元&#xff0c;2个空瓶可以换⼀瓶汽水&#xff0c;输入整数n&#xff08;n>0&#xff09;&#xff0c;表示n元钱&#xff0c;计算可以多少汽水&a…

《Docker 简易速速上手小册》第2章 容器和镜像(2024 最新版)

文章目录 2.1 理解 Docker 容器2.1.1 重点基础知识2.1.2 重点案例&#xff1a;使用 Docker 运行 Python 应用2.1.3 拓展案例 1&#xff1a;Docker 中的 Flask 应用2.1.4 拓展案例 2&#xff1a;Docker 容器中的数据分析 2.2 创建与管理 Docker 镜像2.2.1 重点基础知识2.2.2 重点…

力扣 169. 多数元素

思路&#xff1a; 因为题目说一定存在多数元素&#xff0c;就说明一定有一个数的个数多于n/2 将数组采用冒泡从小到大排序&#xff0c;最中间的那个元素一定是多数元素&#xff08;因为在大小排好序后&#xff0c;中位数也一定是众数&#xff09; 答案&#xff1a; int maj…

Xcode中App图标和APP名称的修改

修改图标 选择Assets文件 ——> 点击Applcon 换App图标 修改名称 点击项目名 ——> General ——> Display Name

C++中的STL数据结构

内容来自&#xff1a;代码随想录&#xff1a;哈希表理论基础 1.常见的三种哈希结构 当我们想使用哈希法来解决问题的时候&#xff0c;我们一般会选择如下三种数据结构 数组 set &#xff08;集合&#xff09; map(映射) 在C中&#xff0c;set 和 map 分别提供以下三种数据结构…

C++ 学习之Map容器

C++ Map容器概念 C++的Map容器是一种关联容器,它提供了一种将键和值相关联的方式。它以键值对的形式存储数据,并根据键的顺序自动进行排序。 Map中的键是唯一的,而值可以重复。你可以使用键来访问对应的值,就像使用索引访问数组中的元素一样。 Map容器的特点如下: 按照…

leetcode单调栈

739. 每日温度 请根据每日 气温 列表&#xff0c;重新生成一个列表。对应位置的输出为&#xff1a;要想观测到更高的气温&#xff0c;至少需要等待的天数。如果气温在这之后都不会升高&#xff0c;请在该位置用 0 来代替。 例如&#xff0c;给定一个列表 temperatures [73, …

29. 【Linux教程】Linux 用户介绍

本小节介绍 Linux 用户的基础知识&#xff0c;了解 Linux 系统中有哪些用户&#xff0c;如何查看当前 Linux 系统中有哪些用户&#xff0c;每一个 Linux 用户的权限取决于这些账号登录时获取到的权限。 1. Linux 用户类型 Linux 系统是一个多用户多任务的操作系统&#xff0c;…

服务内存优化思路

【需求背景】 由于某个服务在访问量不大的情况下&#xff0c;出现频繁的 full gc&#xff0c;配置内存为 1.5g&#xff0c;但是还是不够用&#xff0c;经常占用在 1.3g 左右。 【内存分析】 1、使用 MAT 对 dump 日志进行分析 通过 dominator-tree 可以看出 java.lang.Thread…

145.二叉树的后序遍历

// 定义一个名为Solution的类&#xff0c;用于解决二叉树的后序遍历问题 class Solution { // 定义一个公共方法&#xff0c;输入是一个二叉树的根节点&#xff0c;返回一个包含后序遍历结果的整数列表 public List<Integer> postorderTraversal(TreeNode root) { /…

【开源】JAVA+Vue.js实现考研专业课程管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 考研高校模块2.3 高校教师管理模块2.4 考研专业模块2.5 考研政策模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 考研高校表3.2.2 高校教师表3.2.3 考研专业表3.2.4 考研政策表 四、系统展示五、核…

高级统计方法 第4次作业

作业评阅&#xff1a; 概念 2.问题 KNN分类和KNN回归都是KNN算法在不同类型数据上的应用&#xff0c;但它们之间存在明显的区别。 解决的问题类型不同&#xff1a;KNN分类适用于解决分类问题&#xff0c;而KNN回归则适用于解决回归问题。当响应变量是连续的&#xff0c;根据…