开放领域问答的生成模型已被证明具有竞争力,无需借助外部知识。虽然很有希望,但这种方法需要使用具有数十亿参数的模型,这对于训练和查询来说是昂贵的。在本文中,我们研究了这些模型可以从检索文本段落中受益多少,可能包含证据。我们在自然问题和 TriviaQA 开放基准测试中获得了最先进的结果。有趣的是,我们观察到,当增加检索段落的数量时,这种方法的性能会显着提高。这证明序列到序列模型提供了一个灵活的框架来有效地聚合和组合来自多个段落的证据。
在本文中,我们研究了一种开放域问答的简单方法,该方法依赖于在使用生成模型处理它们之前检索支持段落。我们表明,虽然概念上很简单,但这种方法与现有方法相比具有竞争力,并且它可以很好地与检索到的段落数量相适应。在未来的工作中,我们计划使这个模型更有效,特别是在扩展到大量支持通道时。我们还计划将检索集成到我们的模型中,并端到端学习整个系统
在本文中,我们探索了一种兼具两全其美的简单方法,建立在生成建模和检索开放域问答的激动人心的发展之上。此方法分两个步骤进行,首先使用稀疏或密集表示。然后,一个序列到序列的模型生成答案,除了问题之外,还将检索到的段落作为输入。虽然概念上很简单,但这种方法在 TriviaQA 和 NaturalQuestions 基准上设置了新的最先进的结果。特别是,我们表明,当检索到的段落数量增加时,我们的方法的性能会显着提高。我们认为,与提取模型相比,这证明生成模型擅长结合来自多个段落的证据。
在本节中,我们将描述我们的开放域问答方法。它分两个步骤进行,首先检索支持段落,然后使用序列到序列模型处理它们。
检索器。对于支持通道的检索,我们考虑了两种方法:BM25 (Robertson et al., 1995) 和 DPR (Karpukhin et al., 2020)。在 BM25 中,段落表示为词袋,排名函数基于术语和逆文档频率。我们使用带有默认参数的 Apache Lucene1 实现,并使用 SpaCy.2 标记问题和段落。在 DPR 中,段落和问题表示为密集向量表示,使用两个 BERT 网络计算。排名函数是查询和段落表示之间的点积。使用 FAISS 库的近似最近邻进行检索
阅读器。我们的开放域 QA 生成模型基于序列到序列网络,并在 T5 或 BART 等无监督数据上进行了预训练(Raffel 等人,2019;Lewis 等人,2019)。该模型将问题以及支持段落作为输入,并生成答案。更准确地说,每个检索到的段落及其标题都与问题连接,并由编码器独立于其他段落进行处理。我们在每个段落的问题、标题和文本之前添加特殊标记 question:、title: 和 context:。最后,解码器对所有检索到的段落的结果表示的串联执行attention 。因此,该模型仅在解码器中执行证据融合,我们将其称为 Fusion-in-Decoder。通过在编码器中独立处理段落,但在解码器中联合处理,这种方法不同于 Min 等人。 (2020)和刘易斯等人。 (2020 年)。在编码器中独立处理段落允许扩展到大量上下文,因为它一次只对一个上下文执行自我注意。这意味着模型的计算时间随着通道的数量线性增长,而不是二次增长。另一方面,在解码器中联合处理段落可以更好地聚合来自多个段落的证据。
数据集:
NaturalQuestions (Kwiatkowski et al., 2019) 包含与 Google 搜索查询相对应的问题。该数据集的开放域版本是通过丢弃超过 5 个标记的答案获得的
TriviaQA (Joshi et al., 2017) 包含从琐事和问答联盟收集的问题 网站。 TriviaQA 的未过滤版本用于开放域问答。
SQuAD v1.1 (Rajpurkar et al., 2016) 是一个阅读理解数据集。给定从维基百科中提取的一段,注释者被要求写问题,答案是相应段落的一个跨度。
继李等人之后。 (2019) 我们使用验证作为测试,并保留 10% 的训练集进行验证。我们将 2018 年 12 月 20 日的维基百科转储用于 NQ 和 TriviaQA,从 2016 年 12 月 21 日开始用于 SQuAD。我们应用与 Chen 等人相同的预处理。 (2017);卡尔普欣等人。 (2020),导致100个单词的段落,不重叠。
评估。正如 Rajpurkar 等人介绍的那样,使用标准精确匹配度量 (EM) 评估预测的答案。 (2016 年)。如果生成的答案与标准化后可接受答案列表中的任何答案匹配,则认为它是正确的。这个规范化步骤包括小写和删除文章、标点符号和重复的空格
技术细节。我们使用 HuggingFace Transformers 库中提供的预训练 T5 模型 (Raffel et al., 2019) 初始化我们的模型。4 我们考虑两种模型大小,基本和大型,分别包含 220M 和 770M 参数。我们使用 Adam (Kingma and Ba, 2014) 对每个数据集上的模型进行独立微调,学习率为 10-4,dropout 率为 10%。我们使用 64 Tesla V100 32Gb 为 10k 梯度步长训练模型,批量大小为 64。我们每 500 步评估模型,并根据精确匹配分数在验证集上选择最佳模型。在 NaturalQuestions和 SQuAD 的训练期间,我们在答案列表中对目标进行抽样,而对于 TriviaQA,我们使用独特的人工生成答案。对于 TriviaQA,大写的答案通过使用标题 Python 字符串方法将除每个单词的第一个字母之外的所有字母转换为小写来规范化。对于训练和测试,我们检索 100 篇文章(除非另有说明),并将它们截断为 250 个单词。根据 Karpukhin 等人的结果。 (2020 年),使用 DPR 检索 NQ 和 TriviaQA 检索段落,使用 BM25 检索 SQuAD。我们使用贪婪解码生成答案
与最先进的比较。在表 1 中,我们将 Fusion-in-Decoder 获得的结果与现有的开放域问答方法进行了比较。我们观察到,虽然概念上很简单,但这种方法优于 NaturalQuestion 和 TriviaQA 基准上的现有工作。特别是,与提取方法相比,当需要汇总来自多个段落的证据时,生成模型似乎表现良好。我们的方法也比其他生成模型表现更好,表明缩放到大量段落并联合处理它们可以提高准确性。其次,我们观察到通过使用检索在生成模型中使用额外的知识会带来重要的性能提升。在 NaturalQuestions 上,封闭式 T5 模型在 11B 参数下获得 36.6% 的准确率,而我们的方法在 770M 参数加上 BM25 检索的维基百科上获得 44.1% 的准确率。两种方法都使用大致相同的内存量来存储信息,这表明基于文本的显式记忆对于知识检索任务具有竞争力。
在图3,检索器中文章的数量。特别是,我们观察到将段落数量从 10 增加到 100 会导致 TriviaQA 提高 6% 和 NaturalQuestions 提高 3.5%。另一方面,大多数提取模型的性能似乎在 10 到 20 段左右达到峰值(Wang 等人,2019;Yang 等人,2019)。我们认为这证明了序列到序列模型擅长结合来自多个段落的信息。
训练通道数的影响。在上一节中,模型使用相同的段落数进行了训练和评估。为了减少训练计算预算,一个简单的解决方案是用更少的通道训练模型。在表 2 中,我们报告了通过训练不同数量的段落获得的性能,同时测试了 100 个段落。我们观察到减少训练通道的数量会导致准确性下降。此外,我们建议使用 100 个段落 1000 个步骤来微调以前的模型。这可以减少准确率差距,同时使用显着更少的计算资源:我们可以在 NaturalQuestions 上达到 46.0 EM,使用 147 个 GPU 小时,而在 100 次训练时需要 425 个 GPU 小时