论文链接:https://arxiv.org/pdf/2101.00774.pdf
目录
Abstract
1 简介
2 OPENQA的发展
2.1 OpenQA的起源
2.2 OpenQA的传统架构
2.2.1 问题分析
2.2.2文献检索
2.2.3 答案提取
2.3 深度神经网络在OpenQA中的应用
3 现代 OPENQA:检索和阅读
3.1 Retriever
3.1.1 Sparse Retriever
3.1.2 Dense Retriever
3.1.3 迭代检索器
3.2 Document Post-processing
3.3 Reader
3.3.2 Generative Reader
3.4 Answer Post-processing
3.5 End-to-end Methods
3.5.1 Retriever-Reader
3.5.2 Retriever-only
3.5.3 Retriever-free
4 挑战和基准
4.1 OpenQA 面临的挑战
4.1.1 远程监督
4.1.2 检索效果和效率
4.2 Benchmarks
Open-domain Question Answering (OpenQA) 是自然语言处理 (NLP) 中的一项重要任务,旨在基于大规模非结构化文档以自然语言的形式回答问题。最近,关于 OpenQA 的研究文献数量激增,特别是关于与神经机器阅读理解 (MRC) 集成的技术。虽然这些研究工作在基准数据集上将性能提升到了新的高度,但它们很少被现有的 QA 系统调查所涵盖。
在这项工作中,我们回顾了 OpenQA 的最新研究趋势,特别关注包含神经 MRC 技术的系统。具体来说,我们首先回顾 OpenQA 系统的起源和发展。然后,我们介绍了名为“Retriever-Reader”的现代 OpenQA 架构,并分析了遵循该架构的各种系统以及每个组件采用的具体技术。
然后,我们讨论开发 OpenQA 系统的主要挑战,并提供对常用基准的分析。我们希望我们的工作能够让研究人员了解 OpenQA 研究的最新进展和开放挑战,从而促进该领域的进一步发展。
索引词——文本问答、开放领域问答、机器阅读理解、信息检索、自然语言理解、信息抽取
问答 (QA) 旨在以自然语言对用户的问题做出准确的回答。这是一项可追溯到 1960 年代的长期任务 [1]。与搜索引擎相比,问答系统旨在直接呈现问题的最终答案,而不是返回相关片段或超链接列表,从而提供更好的用户友好性和效率。如今,许多网络搜索引擎(如 Google 和 Bing)通过将 QA 技术纳入其搜索功能 [2],已经朝着更高智能的方向发展。借助这些技术,搜索引擎现在能够准确响应某些类型的问题,例如:
—— Q: “When was Barack Obama born?”
—— A: “4 August 1961”
根据从中得出答案的信息源类型,整个 QA 领域大致可以分为两部分:文本 QA 和知识库 (KB)-QA。文本 QA 从非结构化文本文档中挖掘答案,而 KB-QA 从通常手动构建的预定义结构化 KB 中挖掘答案。文本 QA 通常比后者更具可扩展性,因为它用来获取答案的大多数非结构化文本资源都相当普遍且易于访问,例如维基百科 [3]、新闻文章 [4] 和科学书籍 [5] 等。
具体来说,基于上下文信息的可用性,在两个任务设置下研究文本 QA,即机器阅读理解(MRC)和开放域 QA(OpenQA)。 MRC 最初是从语言能力考试中获得灵感,旨在让机器能够阅读和理解特定的上下文段落来回答给定的问题。相比之下,OpenQA 试图在没有任何特定上下文的情况下回答给定的问题。它通常需要系统首先搜索相关文档作为上下文 w.r.t。从本地文档库或万维网 (WWW) 中获取给定的问题,然后生成答案,如图 1 所示。因此,OpenQA 享有更广泛的应用范围,更符合现实世界的 QA 行为人类,而 MRC 可以被认为是 OpenQA [6] 的一个步骤。事实上,构建一个能够回答任何输入问题的 OpenQA 系统被认为是 QA 研究的最终目标。
在文献中,OpenQA 已通过自然语言处理 (NLP)、信息检索 (IR) 和信息提取 (IE) [7]、[8]、[9]、[10] 的研究得到密切研究。传统的 OpenQA 系统大多遵循由三个阶段组成的管道,即问题分析、文档检索和答案提取 [6]、[9]、[11]。给定一个自然语言的输入问题,问题分析旨在重新制定问题以生成搜索查询以促进后续的文档检索,并对问题进行分类以获得其预期的答案类型,以指导答案提取。
在文档检索阶段,系统使用生成的搜索查询搜索与问题相关的文档或段落,通常使用现有的 IR 技术,如 TF-IDF 和 BM25,或为 Web 搜索引擎开发的特定技术,如 Google.com 和 Bing .com。之后,在答案提取阶段,从前一阶段接收到的相关文档中提取最终答案。
深度学习技术在许多领域取得了显着进步,也已成功应用于 OpenQA 系统的几乎每个阶段 [12]。
例如,[13] 和 [14] 分别使用基于 CNN 的模型和基于 LSTM 的模型开发问题分类器。
在 [15]、[16]、[17] 中,他们提出了神经检索模型来在潜在空间中搜索相关文档。
近年来,随着一些大规模 QA 数据集的出现 [18]、[19]、[20]、[21]、[22]、[23],神经 MRC 技术得到了极大的进步 [18]、[ 24]、[25]、[26]、[27]。
通过采用流行的神经 MRC 方法从相关文档中提取给定问题的答案,传统的 OpenQA 系统已经发生了革命性的变化 [3]、[28]、[29]、[30],并演变成现代的“ Retriever-Reader”架构。
Retriever 负责检索相关文件 w.r.t.(关于)一个给定的问题,可以看作是一个 IR 系统,而 Reader 旨在从接收到的文档中推断出最终答案,通常是一个神经 MRC 模型。(w.r.t.:with respect to:关于;谈及,谈到)
少数作品 [3]、[31]、[32] 甚至将 OpenQA 重新命名为大规模机器阅读理解(MRS)。遵循这种架构,已经在各个方向进行了广泛的研究,例如在将检索到的文档输入神经 MRC 模型之前对它们进行重新排序 [28]、[33]、[34],在给定问题的情况下迭代检索相关文档 [ 29]、[35]、[36],并以端到端的方式训练整个 OpenQA 系统 [15]、[30]、[37]、[38] 等。
基于上述观察和见解,我们认为是时候对 OpenQA 系统进行全面的文献综述,特别关注包含神经 MRC 模型的技术。我们的审查预计将承认迄今为止取得的进展,并总结当前的挑战,以促进该领域的进一步发展。在本次调查的其余部分,我们将介绍以下内容。在第 2 节中,我们回顾了 OpenQA 系统的发展,包括起源、传统架构以及使用深度神经网络的最新进展。在第 3 节中,我们总结并阐述了 OpenQA 的“Retriever-Reader”架构,然后详细分析了所采用的各种技术。在第4节中,我们首先讨论了OpenQA面临的一些突出挑战,确定了研究差距,并希望加强这一领域的进一步研究,随后提供了适用于MRC或OpenQA的QA基准的总结和分析。最后,我们根据第5节的内容得出结论。
在本节中,我们首先简要介绍开放域问答(OpenQA)的起源,然后依次回顾 OpenQA 的传统和深度学习方法,以描述其在过去二十年中取得的显着进步。
问答 (QA) 系统的开创性研究是在信息检索 (IR) 的范围内进行的,重点是受限域或封闭域设置。
众所周知,最早的 QA 系统是 Baseball [1],它于 1961 年设计,用于回答有关美国棒球比赛的问题,例如比赛时间、地点和球队名称。在这个系统中,所有的相关信息都存储在一个定义明确的字典中,用户的问题通过语言学的方法被翻译成查询语句,从字典中提取最终的答案。 1973 年,另一个著名的 QA 系统 LUNAR [39] 被开发出来,作为辅助月球地质学家研究工作的有力工具,其中从阿波罗登月任务中获得的关于月球岩石和土壤的化学分析数据存储在由NASA MSC 供每位科学家方便查看和分析。 1993 年,MURAX [40] 旨在基于英语学术百科全书回答简单的学术问题,主要采用语言分析和句法模式匹配技术。
1999 年,OpenQA 首次被定义为从 Text REtrieval Conference (TREC) [4] 发起的 QA track 中的新闻文章集合中提取包含正确答案的前 5 个可能片段。
与以往的 QA 研究相比,在开放域环境中,大量非结构化文档被用作信息源,从中提取给定问题的正确答案。
在后来的几年中,一系列 TREC QA Tracks 显着推进了 OpenQA [41]、[42]、[43] 的研究进展。值得注意的是,从2002年[42]举行的trc -11开始,系统被要求对给定的问题返回准确的简短答案。
TREC 活动提供本地文档集合作为生成答案的信息源,但万维网 (WWW) 的普及,尤其是搜索引擎的日益成熟,激发了研究人员构建基于 Web 的 OpenQA 系统[40]、[44]、[45]、[46] 使用 IR 技术从 Google.com 和 Ask.com 等在线资源获取答案。网络搜索引擎能够持续有效地收集海量网页,因此能够提供更多信息来帮助找到答案以响应用户问题。
2001 年,一个名为 MULDER [44] 的 QA 系统被设计为使用搜索引擎(例如 Google.com)自动回答开放域的事实性问题。它首先使用多个自然语言解析器将用户的问题翻译成多个搜索查询,并将它们提交给搜索引擎以搜索相关文档,然后使用答案提取组件从返回的结果中提取答案。
在这条管道之后,开发了一个著名的 QA 系统 AskMSR [45],它主要依赖于数据冗余,而不是对问题或候选答案进行复杂的语言分析。它首先根据一组预定义的重写规则将用户的问题转化为查询,从搜索引擎收集相关文档,然后采用一系列基于 n-gram 的算法来挖掘、过滤和选择最佳答案。对于这样的 OpenQA 系统,搜索引擎能够提供对信息海洋的访问,显着扩大了找到用户问题的精确答案的可能性。然而,如此丰富的信息源也带来了相当大的噪音内容,挑战 QA 系统过滤掉。
OpenQA系统的传统架构如图2所示,主要包括三个阶段:问题分析、文档检索和答案提取[6]、[11]。给定一个自然语言问题,问题分析的目的是首先理解问题,以便于在后续阶段进行文档检索和答案提取。发现该阶段的性能对后续阶段的性能有显着影响,因此对系统的最终输出很重要[47]。然后,文档检索阶段使用问题分析生成的搜索查询,基于自建的 IR 系统 [4] 或 Web 搜索引擎 [44]、[45] 搜索与问题相关的文档。最后,Answer Extraction 负责从上一步收到的相关文档中提取用户问题的最终答案。下面,我们将对每个阶段一一进行分析。
问题分析阶段的目标有两个。一方面,它旨在促进与问题相关的文档的检索,为此通常采用查询公式模块来生成搜索查询。另一方面,通过使用问题分类模块来预测给定问题的类型,从而得到一组预期的答案类型,从而提高答案抽取阶段的性能。图2最左边的灰框中给出了这一阶段的简单说明。
在查询公式中,通常使用词性标记 [40]、[44]、词干提取 [40]、解析 [44] 和停用词去除 [45]、[48] 等语言技术来提取关键字进行检索。但是,问题中使用的术语通常与包含正确答案的文档中出现的术语不同。这个问题被称为“术语不匹配”,是 IR 中长期存在的关键问题。为了解决这个问题,查询扩展[49]、[50]和释义技术[51]、[52]、[53]、[54]经常被用来产生额外的搜索词或短语,以检索更多相关的文档.
问题分类是问题分析阶段经常采用的另一个模块,旨在根据一组问题类型(例如,地点、时间、谁、什么)或分类法 [55],[ 56] 由语言专家手动定义。在获得问题的类型后,可以使用基于规则的映射方法 [9] 轻松确定预期的答案类型。例如,给定一个问题“Barack Obama born?”,当知道问题类型是“When”时,答案类型将被推断为“Date”。识别问题类型可以对答案提取提供约束,并显着降低找到正确答案的难度。问题分类在文献 [44]、[55]、[57]、[58]、[59] 中引起了很大兴趣。例如,[59] 提出从给定问题中提取相关词,然后根据将这些词与概念相关联的规则对问题进行分类; [57] 在 [55] 提出的分层分类法之上,使用支持向量机 (SVM)、最近邻和决策树等各种机器学习技术训练了一系列问题分类器。
此阶段旨在从一组非结构化文档中获取可能包含给定问题正确答案的少量相关文档,这通常依赖于 IR 引擎。它可以显着减少得出最终答案的搜索空间。在过去的几十年中,针对文档检索开发了各种检索模型,其中一些流行的模型有布尔模型、向量空间模型、概率模型、语言模型[60]等,下面简要回顾一下。
• 布尔模型:布尔模型是最简单的检索模型之一。将问题转化为术语的布尔表达式形式,结合“AND”、“OR”、“NOT”等运算符与文档精确匹配,每个文档被视为一组单词。
• 向量空间模型:向量空间模型将问题和每个文档表示为d 维词空间中的词向量,其中d 是词汇表中的词数。当搜索与给定问题相关的文档时,每个文档的相关性分数是通过计算其向量与问题向量之间的相似性(例如,余弦相似性)或距离(例如,欧氏距离)来计算的。与布尔模型相比,这种方法即使问题提出的约束只得到部分满足,也会返回问题的文档,但牺牲了精度。
概率模型:概率模型提供了一种将单词之间的概率关系集成到模型中的方法。 Okapi BM25 [61] 是一种对词频和文档长度敏感的概率模型,是最成功的检索模型之一,广泛应用于当前的搜索引擎。
• 语言模型:语言模型[62]也很流行,其中查询似然模型[60]应用最广泛。它为每个文档 d 构建一个概率语言模型 LMd,并根据语言模型生成给定问题 q 的概率 P (q | LMd) 对文档进行排序。
在实践中,收到的文档通常包含不相关的文档,或者文档数量太多以至于答案提取模型的容量不堪重负。为了解决上述问题,非常需要对检索到的文档进行后处理。广泛使用的处理检索到的文档的方法包括文档过滤、文档重新排序和文档选择[9]等。文档过滤用于识别和去除噪声w.r.t。给定的问题;开发文档重排序,进一步按照包含正确答案的可信度降序对文档进行排序;文档选择就是选择最上面的相关文档。经过后处理后,只保留最相关的文档,并将其馈送到下一阶段以提取最终答案。
OpenQA 系统的最终目标是成功回答给定的问题,答案提取阶段负责向用户返回问题的最精确答案。该阶段的性能取决于问题的复杂性、问题分析阶段的预期答案类型、文档检索阶段检索到的文档以及采用的提取方法等。有这么多的影响因素,研究人员需要多加注意,并特别重视这一阶段。
在传统的 OpenQA 系统中,事实问题和列表问题 [63] 已经被广泛研究了很长时间。事实型问题(例如,何时、何地、谁……),其答案通常是文档中的单个文本范围,例如实体名称、词标记或名词短语。 While 列出问题,其答案是出现在同一文档中或从不同文档中聚合的一组事实。从问题分析阶段收到的答案类型起着至关重要的作用,特别是对于答案为命名实体的给定问题。因此,早期系统严重依赖命名实体识别 (NER) 技术 [40]、[46]、[64],因为比较识别的实体和答案类型可能很容易得出最终答案。在[65]中,答案提取被描述为一个统一的过程,首先分别从问题和答案中揭示潜在或隐藏的信息,然后使用一些匹配方法来检测答案,例如表面文本模式匹配[66] ,[67],单词或短语匹配[44],句法结构匹配[40],[48],[68]。
在实践中,有时提取的答案在呈现给最终用户之前不够自信时需要进行验证。此外,在某些情况下,一个问题可能会产生多个候选答案,我们必须从中选择一个。应用答案验证来解决此类问题。一种广泛应用的验证方法是采用额外的信息源,如网络搜索引擎来验证每个候选答案的置信度。原则是系统应该返回足够多的文档,其中包含问题和答案术语。此类返回文档的数量越多,它越有可能是正确答案。尽管简单 [9],但该原理已被研究并证明相当有效。
近十年来,深度学习技术也成功应用于 OpenQA。特别是,深度学习几乎被用于OpenQA系统的每个阶段,而且,它使OpenQA系统成为端到端可训练的.
对于问题分析,一些作品开发了神经分类器来确定问题类型。例如,[13] 和 [14] 分别采用基于 CNN 和基于 LSTM 的模型对给定问题进行分类,均取得了有竞争力的结果。
对于文档检索,已经提出了基于密集表示的方法 [16]、[29]、[30]、[35] 来解决“术语不匹配”,这是一个长期存在的问题,会损害检索性能。与使用稀疏表示的传统方法(如 TF-IDF 和 BM25)不同,深度检索方法学习将问题和文档编码到潜在向量空间中,在该空间中可以测量超出术语匹配的文本语义。例如,[29] 和 [35] 训练自己的编码器将每个文档和问题独立编码为密集向量,并使用向量的内积计算它们之间的相似度得分。次线性最大内积搜索 (MIPS) 算法 [69]、[70]、[71] 用于提高给定问题的检索效率,尤其是当文档存储库规模较大时。
Answer Extraction作为OpenQA系统得出最终答案的决定性阶段,也可以应用神经模型。从一些相关文档中提取给定问题的答案本质上是机器阅读理解 (MRC) 的任务。近年来,随着CNN/Daily Mail[18]、MS MARCO[20]、RACE[21]和SQuAD 2.0[22]等一些大规模数据集的出现,神经MRC的研究取得了显着进展[24]、[25]、[26]、[27]。例如,BiDAF [24] 通过由字符嵌入层、词嵌入层和上下文嵌入层组成的多级层次结构表示不同粒度级别的给定文档,并利用双向注意流机制在没有早期总结的情况下获得问题感知文档表示。 QANet [26] 采用 CNN 和自我注意机制 [72] 分别对局部交互和全局交互进行建模,其执行速度明显快于通常的循环模型。
此外,应用深度学习使 OpenQA 系统能够进行端到端训练 [15]、[30]、[37]。例如,[37] 认为将独立的 IR 系统合并到 OpenQA 系统中是次优的,他们开发了一个 ORQA 系统,将来自信息源的文档检索视为潜在变量,并仅从问题中训练整个系统- 基于 BERT [27] 的答案字符串对。 REALM [30] 是一种预训练语言模型,包含知识检索器和知识增强编码器。它的检索器和编码器都是可微的神经网络,能够计算梯度 w.r.t。要在整个网络中一直反向传播的模型参数。与其他预训练语言模型类似,它也有两个阶段,即预训练和微调。在预训练阶段,模型以无监督的方式进行训练,使用掩码语言建模作为学习信号,而在微调阶段使用监督示例对参数进行微调。
在早期的 OpenQA 系统中,能否成功回答问题在很大程度上取决于问题分析的性能,尤其是问题分类,它提供了预期的答案类型 [47]。然而,无论是问题的类型还是问题的分类,都是语言学家手工制定的,这是不理想的,因为现实中不可能涵盖所有的问题类型,尤其是复杂的问题。此外,分类错误很容易导致答案提取失败,从而严重损害系统的整体性能。根据 [47] 中的实验,早期 OpenQA 系统中约有 36.4% 的错误是由问题类型的错误分类引起的。神经模型能够自动将问题从自然语言转换为机器更容易识别的表征.此外,神经 MRC 模型为 OpenQA 中的答案提取提供了前所未有的强大解决方案,在很大程度上抵消了将传统语言分析技术应用于问题的必要性,并为 OpenQA 系统带来革命 [3]、[28]、[29] , [37].
将神经 MRC 模型纳入 OpenQA 系统的第一个工作是由 [3] 提出的 DrQA,演化为“Retriever-Reader”架构。它结合了基于 TF-IDF 的 IR 技术和神经 MRC 模型来回答维基百科上的开放域事实问题,并取得了令人印象深刻的性能。在[3]之后,许多作品相继发表[28]、[30]、[33]、[34]、[37]、[73]、[74]、[75]。如今,遵循“Retriever-Reader”架构构建OpenQA系统已被广泛认为是最有效和最有前途的方式,这也是本文的主要关注点。
在本节中,我们将介绍 OpenQA 系统的“Retriever-Reader”架构,如图 3 所示。Retriever 旨在检索相关文档 w.r.t。一个给定的问题,可以看作是一个 IR 系统,而 Reader 旨在从接收到的文档中推断出最终答案,通常是一个神经 MRC 模型。它们是现代 OpenQA 系统的两个主要组成部分。此外,图 3 中虚线标记的其他一些辅助模块也可以合并到 OpenQA 系统中,包括 Document Post-processing,它以细粒度的方式对检索到的文档进行过滤和重新排序,以选择最相关的,以及答案后处理,即在多个候选答案中确定最终答案。遵循这种架构的系统可以分为两组,即管道系统和端到端系统。在下文中,我们将介绍管道系统中的每个组件和各自的方法,然后是端到端的可训练方法。在图 4 中,我们提供了现代 OpenQA 系统的分类法,以使我们的描述更易于理解。
检索器通常被视为一个 IR 系统,其目标是检索可能包含给定自然语言问题的正确答案的相关文档或段落,并根据它们的相关性对它们进行降序排列。从广义上讲,目前的 Retriever 方法可以分为三类,即 Sparse Retriever、Dense Retriever 和 Iterative Retriever,下面将详细介绍。
它是指采用2.2.2节中介绍的经典IR方法搜索相关文档的系统,例如TF-IDF [3],[34],[76],[77]和BM25 [78] ], [79]。
DrQA [3] 是现代 OpenQA 系统的第一种方法,它通过结合经典 IR 技术和神经 MRC 模型来回答开放域事实性问题而开发。特别是,给定一个自然语言问题,DrQA 中的检索器采用二元语法哈希 [80] 和 TF-IDF 匹配来搜索维基百科。
BERTserini [78] 使用 Anserini [81] 作为它的检索器,它是一个基于 Lucene 的开源 IR 工具包。在[78]中,实验研究了文本的不同粒度,包括文档级、段落级和句子级,结果表明段落级索引达到了最佳性能。传统的检索方法,如 TF-IDF 和 BM25 使用稀疏表示来衡量术语匹配。
但是,用户问题中使用的术语通常与文档中出现的术语不同。近年来开发了基于密集表示 [16]、[29]、[30]、[35] 的各种方法,这些方法学习将问题和文档编码到潜在向量空间中,在该空间中可以测量超出术语匹配的文本语义。
随着提供语义表示的深度学习的成功,过去几年开发了各种深度检索模型,大大提高了检索效率,从而提高了最终的 QA 性能。根据对问题和文档进行编码以及对它们的相似性进行评分的不同方式,现有 OpenQA 系统中的密集检索器可以大致分为三种类型:基于表示的检索器[16]、[30]、[37]、[ 73]、Interaction-based Retriever [15]、[32] 和 Representation-interaction Retriever [17]、[82]、[83],如图 5 所示。
Representation-based Retriever:Representation-based Retriever,也称为双编码器或双塔检索器,采用两个独立的编码器,如 BERT [27] 分别对问题和文档进行编码,并通过计算单个相似度得分来估计它们的相关性- 两个表示之间。例如,ORQA[37]采用两个独立的BERT-based编码器分别对一个问题和一个文档进行编码,它们之间的相关性分数由它们向量的内积计算。为了获得足够强大的检索器,他们使用 Inverse Cloze Task (ICT) 对检索器进行预训练,即在给定句子的情况下预测其上下文。 DPR [16] 也采用了两个独立的 BERT 编码器,如 ORQA,但否认了昂贵的预训练阶段的必要性。相反,它专注于使用成对的问题和答案来学习强大的检索器。 DPR 精心设计了为问题选择负样本的方法,包括来自语料库的任何随机文档、BM25 返回的不包含正确答案的顶级文档,以及批内负样本,即同一批次中与其他问题配对的文档。值得一提的是,他们的实验表明内积函数对于计算双编码器检索器的相似性分数是最优的。基于表示的方法 [16]、[16]、[30]、[37] 可以非常快,因为文档的表示可以提前离线计算和索引。但它可能会牺牲检索效率,因为问题和文档的表示是独立获得的,导致它们之间仅捕获浅层交互。
基于交互的检索器:这种检索器将问题与文档同时作为输入,并且通常通过对它们之间的令牌级交互进行建模而变得强大,例如基于transformer的编码器[27],[72] ]. [15] 建议使用有监督的多任务学习 [24] 联合训练 Retriever 和 Reader。在 BiDAF [24] 的基础上,增加了一个检索层来计算问题和文档之间的相关性得分,而在 [15] 中采用理解层来预测答案范围的开始和结束位置。 [32] 基于 BERT [27] 开发了段落级密集检索器和句子级密集检索器。他们将密集检索的过程视为二元分类问题。特别是,他们将每对问题和文档作为输入,并使用 [CLS] 标记的嵌入来确定它们是否相关。他们的实验表明,段落级和句子级检索对于获得系统的良好性能都是必要的。基于交互的方法 [15]、[32] 非常强大,因为它允许在问题和文档之间进行非常丰富的交互。然而,这种方法通常需要大量计算,有时代价高得令人望而却步,因此很难适用于大规模文档。
表示-交互检索器:为了同时实现高精度和高效率,最近的一些系统[17]、[82]、[83]结合了基于表示和基于交互的方法。例如,ColBERT- qa[17]基于ColBERT[84]开发了它的检索器,它通过在问题和文档表示上执行一个简单的令牌级交互步骤来计算相似度分数,从而扩展了双编码器架构。类似于 DPR [16],ColBERT-QA 首先使用两个 BERT 编码器对问题和文档进行独立编码。形式上,给定一个问题q和一个文档d,对应的向量记为Eq(长度n)和Ed(长度m),它们之间的相关性得分计算如下:
然后,ColBERT 首先计算问题的每个标记嵌入在文档的所有标记上的分数,然后将所有这些分数相加作为 q 和 d 之间的最终相关性分数。作为另一个例子,SPARTA [82] 开发了一个神经排序器,使用非上下文编码(例如 BERT 词嵌入)问题和上下文编码(例如 BERT 编码器)文档之间的点积来计算令牌级匹配分数.具体来说,给定问题和文档的表示,每个问题标记的权重按最大池化、ReLU 和 log 顺序计算;最终的相关性分数是每个问题标记权重的总和。由于其在有效性和效率之间的良好权衡,表示交互方法是一种很有前途的密集检索方法,但仍需进一步探索。
尽管有效,但 Dense Retriever 在应用于大型文档时通常会承受沉重的计算负担。为了加快计算速度,一些工作提出提前离线计算和缓存所有文档的表示[16]、[29]、[30]、[35]、[37]。这样,这些表示一旦计算就不会改变,这意味着文档的编码与问题无关,在某种程度上牺牲了检索的有效性。
Iterative Retriever 的目标是在给定一个问题的情况下,通过多个步骤从大量集合中搜索相关文档,也称为 Multi-step Retriever。在过去的几年里,它得到了广泛的探索 [29]、[35]、[36]、[85]、[86]、[87]、[88]、[89],尤其是在回答诸如此类的复杂问题时那些需要多跳推理的[90],[91]。为了获得足够数量的相关文档,搜索查询需要针对不同的步骤而变化,并根据前一步骤中的上下文信息重新制定。
下面,我们将根据迭代检索器的工作流程对其进行详细说明:1)文档检索:在每个检索步骤中用于检索文档的IR技术; 2) Query Reformulation:用于为每次检索生成查询的机制; 3)检索停止机制:决定何时终止检索过程的方法。
文档检索:我们首先重新审视在给定查询的每个检索步骤中用于检索文档的 IR 技术。一些作品[36]、[86]、[89]迭代地应用了Sparse Retriever,而一些[29]、[35]、[85]、[88]则迭代地使用了Dense Retriever。在使用稀疏检索器的作品中,GOLDEN Retriever [36] 采用 BM25 检索,而 Graph Retriever [89] 和 DDRQA [86] 使用 TF-IDF 检索前 K 个文档。对于那些使用 Dense Retriever 的系统,包括 Multi-step Reasoner [29]、MUPPET [35] 和 MDR [85] 在内的大多数现有系统都使用 MIPS 检索来获得在给定问题表示的情况下语义最相似的文档;路径检索器 [88] 开发了一种递归神经网络 (RNN) 检索来学习检索维基百科图上问题的推理路径,该图旨在基于维基百科超链接和文章结构对段落之间的关系进行建模。
Query Reformulation:为了获得足够数量的相关文档,用于每个检索步骤的搜索查询通常会根据先前的查询和检索到的文档而变化和生成。生成的查询分别采用两种形式:1)显式形式,即自然语言查询[36]、[86]、[87]; 2)隐式形式,即密集表示 [29]、[35]、[85]。一些作品以自然语言的形式产生了一个新的查询。例如,GOLDEN Retriever [36] 将查询重构任务重铸为 MRC 任务,因为它们都将问题和一些上下文文档作为输入并旨在生成自然语言的字符串。查询重组的目标不是在 MRC 中寻求答案,而是一个新查询,它有助于在下一个检索步骤中获得更多支持文档。 GAR [87] 使用预训练的 Seq2Seq 模型 BART [92] 开发了一个查询扩展模块,它将初始问题作为输入并生成新的查询。它是通过将各种生成目标作为输出来训练的,这些目标包括答案、答案所属的句子以及包含答案的段落的标题。
其他一些作品产生用于在潜在空间中搜索的密集表示。例如,Multi-step Reasoner [29] 采用 Gated Recurrent Unit (GRU) [93] 从 Reader 和问题中获取标记级隐藏表示作为输入来生成一个新的查询向量,该向量使用强化学习 (RL) 进行训练通过测量阅读器在阅读新问题检索到的新段落集后提取的答案与基本事实的匹配程度。 MUPPET [35] 将改编自 [94] 的双向注意层应用于新的查询表示 ̃q,将每个获得的段落 P 和初始问题 Q 作为输入。 MDR [85] 使用预训练的掩码语言模型(例如 RoBert)作为其编码器,它将问题表示的串联以及所有先前的段落编码为新的密集查询。 相比之下,显式查询易于人类理解和控制,但受到词汇表中术语的约束,而隐式查询是在语义空间中生成的,可以摆脱词汇表的限制但缺乏可解释性。
检索停止机制:迭代检索方式产生更大的可能性来收集更多相关段落,但检索效率会随着迭代次数的增加而急剧下降。关于停止迭代检索的机制,大多数现有系统选择指定固定的迭代次数[29]、[36]、[85]、[86]、[89]或检索文档的最大数量[35] ], [87], 很难保证检索的有效性。 [77] 认为为所有输入问题设置固定数量的文档是次优的,相反他们基于 DrQA [3] 中的文档检索器开发了自适应检索器。他们提出了两种方法来动态设置每个问题的检索文档数量,即简单的基于阈值的启发式方法以及使用序数岭回归的可训练分类器。由于对于需要任意跳跃推理的问题,很难指定迭代次数,路径检索器 [88] 只有在其循环检索器检测到证据结束标记(例如 [EOE])时才终止检索.这允许它执行自适应检索步骤,但在每个步骤只获得一个文档。据我们所知,在不牺牲准确性的情况下开发高效的迭代检索器仍然是一个关键的挑战。
此外,典型的 IR 系统追求两个优化目标,即精度和召回率。前者计算返回的相关文档占返回文档总数的比率,而后者是返回的相关文档数量占基础存储库中相关文档总数的比例。然而,对于 OpenQA 系统,召回率比精度重要得多,因为后处理通常应用于返回的文档 [95],如下所述。
由于检索到的文档中不可避免地包含不相关的文档,因此经常需要对检索到的文档进行后处理,有时返回的文档数量非常大,超出了Reader的能力。现代 OpenQA 架构中的文档后处理与传统架构中的类似,如第 2.2.2 节所述。它旨在减少候选文档的数量,只允许将最相关的文档传递到下一阶段。
在过去的几年里,人们对该模块进行了非常感兴趣的探索 [28]、[33]、[34]、[79]、[96]、[97]、[98]、[99]。例如,R3 [28] 采用神经 Passage Ranker,并通过强化学习 (RL) 与 Reader 联合训练。 DS-QA [33] 添加了一个段落选择器,通过测量每个段落在所有候选段落中包含答案的概率,从检索到的文档中删除嘈杂的段落。 [96] 探索两种不同的段落排序器,它们根据包含给定问题答案的可能性为检索到的段落分配分数。一个是 InferSent Ranker,这是一种前向神经网络,它使用 InferSent 句子表示 [100],根据与问题的语义相似性对段落进行排名。
另一个是采用关系网络[101]的Relation-Networks Ranker,专注于衡量问题和段落之间的词级相关性。他们的实验表明,词级相关性匹配显着提高了检索性能,语义相似性更有利于整体性能。 [34] 在双编码器架构之后使用两个独立的 RNN 开发段落排序器。每对问题段落被送入 Ranker 以独立获得它们的表示,并应用内积来计算相关性分数。 [98] 提出了一个时间感知的重新排序模块,它结合了来自不同方面的时间信息,以对候选文档在新闻文章的时间集合上进行排序。该模块的研究重点是学习进一步对检索到的文档进行重新排序 [28]、[33]、[34]、[79]。然而,随着 Dense Retriever 的发展,最近的 OpenQA 系统倾向于开发一种可训练的检索器,该检索器能够同时学习排序和检索最相关的文档,这将导致该模块的缺失。
Reader 是现代 OpenQA 系统的另一个核心组件,也是 QA 系统区别于其他 IR 或 IE 系统的主要特征,通常实现为神经 MRC 模型。它旨在从一组有序文档中推断出对问题的回答,与原始 MRC 任务相比更具挑战性,后者在大多数情况下只给出一段文章 [18]、[19]、 [90]、[102]、[103]。从广义上讲,现有的阅读器可以分为两种类型:从检索到的文档中预测答案范围的提取阅读器,以及使用序列到序列(Seq2Seq)模型以自然语言生成答案的生成阅读器。大多数先前的 OpenQA 系统都配备了提取阅读器 [3]、[16]、[28]、[29]、[30]、[33]、[35]、[78]、[89],而最近的一些开发生成阅读器 [38]、[85]、[104]。
Extractive Reader 基于上下文中肯定存在给定问题的正确答案的假设,通常侧重于学习从检索到的文档中预测答案范围的开始和结束位置。根据检索到的文档是独立处理还是联合处理以提取答案,这些方法可以分为两种类型。
许多现有系统 [16]、[33]、[86]、[88]、[89] 通过包含答案的概率对检索到的文档进行排序,并从问题和最可能的文档(秒)。例如,DS-QA [33] 通过测量每个段落在所有候选段落中包含答案的概率,从专用段落选择器模块选择的段落中提取答案跨度。 DPR [16] 使用 BERT Reader 计算包含答案的段落和标记作为答案跨度的开始和结束位置的概率,并在将它们组合后选择概率最高的答案。一些系统开发基于图形的阅读器 [88]、[89] 来学习从检索到的图形中提取答案范围。例如,Graph Reader [89] 以图为输入,首先主要使用图卷积网络 [105] 学习段落表示,然后从最可能的答案中提取答案范围。 Path Retriever [88] 利用 BERT Reader 同时对推理路径进行重新排序,并使用多任务学习从包含正确答案的概率最高的路径中提取答案范围。然而,在独立处理检索到的文档的情况下,该模型无法利用长叙述文档或多个文档中的不同证据来提取答案,从而损害了性能,尤其是在给定问题需要多跳推理的情况下。
相比之下,一些系统 [3]、[78]、[82]、[94] 以联合方式基于所有检索到的文档提取答案范围。例如,DrQA [3] 将检索到的文档分解为段落,并提取由词性 (POS)、命名实体 (NE) 和词频 (TF) 等组成的各种特征。然后是 DrQA 阅读器,它是使用多层 Bi-LSTM 实现,将问题和段落作为输入,并预测答案跨度。在这个过程中,为了使答案分数在段落之间具有可比性,它采用非归一化指数函数,并在所有答案跨度上取 argmax 以获得最终结果。BERTserini [78] 通过删除softmax层来开发基于BERT的阅读器,以使答案得分在不同段落之间进行比较和汇总。[94] 对所有答案跨度使用非归一化分数 (例如,exponential分数或logits分数) 争论是次优的,并通过修改目标函数来标准化所有段落的开始和结束分数,提出共享归一化机制,实现一致的性能增益。之后,许多OpenQA系统 [17],[29],[35],[36],[79],[82] 通过基于BiDAF [24],BERT [27] 和SpanBERT [106] 等原始MRC模型应用此机制来开发其读者。
Generative Reader 旨在尽可能自然地生成答案,而不是提取答案跨度,通常依赖于 Seq2Seq 模型。例如,S-Net [107] 是通过结合提取和生成方法相互补充而开发的。它采用证据提取模型来预测文本跨度的边界作为答案的证据,然后将其输入到 Seq2Seq 答案合成模型中以生成最终答案。最近,一些 OpenQA 系统 [38]、[85]、[104] 采用预训练的 Seq2Seq 语言模型来开发它们的阅读器,如 BART [92] 和 T5 [108]。例如,RAG [38] 采用预训练的 BART 模型作为其阅读器,通过获取输入问题以及 DPR [16] 检索到的文档来生成答案。 FID [104] 首先使用 T5 或 BART 编码器对每个检索到的文档进行独立编码,然后使用解码器对所有输出表示进行关注以生成最终答案。然而,当前生成的结果经常出现语法错误、不连贯或不合逻辑 [109]。 Generative Reader 需要进一步探索和推进。
神经 MRC 技术近年来发展迅速,但大多数现有 MRC 模型仍然专注于仅从单个或多个短段落中提取答案,并且在正确答案来自叙述文档或多个文档中的各种证据的情况下往往会失败[110]。 Answer Post-processing 模块的开发是为了帮助从读者提取的一组候选答案中检测最终答案,同时考虑到它们各自的支持事实。现有系统采用的方法可以分为两类,即基于规则的方法[34],[110]和基于学习的方法[76],[110]例如,[110]提出了两个答案重新排序器,一个“基于强度的重新排序器”和一个“基于覆盖率的重新排序器”,以汇总来自不同段落的证据来决定最终答案。 “strength-based re-ranker”是一种基于规则的方法,它只是根据候选预测进行计数或概率计算,不需要任何训练。
“基于覆盖的重新排序器”是使用基于注意力的匹配 LSTM 模型开发的 [111]。它首先将包含相同答案的段落连接成一个伪段落,然后测量这个伪段落对给定问题的回答有多好。 [110] 中的实验表明,上述不同重新排序器的输出的加权组合在多个基准测试中实现了最佳性能。
RankQA [76] 开发了一个答案重新排序模块,包括三个步骤:特征提取、答案聚合和重新排序。首先,以 Reader 的前 k 个候选答案作为输入,该模块从 Retriever 和 Reader 中提取一组特征,如文档-问题相似度、问题长度和段落长度,如候选答案的原始分数、候选答案的词性标签和答案的命名实体。其次,模块将所有具有相同答案跨度的候选分组,生成一组集合特征,如跨度分数的和、均值、最小值和最大值等。基于这些特征,使用重排序网络(如前馈网络或RNN)学习进一步对答案进行重排序,以选择最佳答案作为最终答案。
近年来,开发了各种 OpenQA 系统 [15]、[30]、[37],其中 Retriever 和 Reader 可以端到端的方式进行训练。此外,还有一些系统只有 Retriever [73],还有一些系统可以在没有检索阶段的情况下回答开放式问题,这些系统大多是预训练的 Seq2Seq 语言模型 [92],[108],[112] ,[113]。下面分别介绍这三种系统,即Retriever-Reader、Retriever-only和Retriever-free。
深度学习技术使 OpenQA 系统中的 Retriever 和 Reader 能够进行端到端训练 [15]、[30]、[37]、[38]。例如,[15] 提出使用基于 BiDAF 模型的多任务学习联合训练 Retriever 和 Reader [24],同时计算段落与给定问题的相似度并预测答案跨度的开始和结束位置。 [37] 认为将独立的 IR 系统合并到 OpenQA 系统中并开发 ORQA 是次优的,该 ORQA 从问答对中联合训练 Retriever 和 Reader,两者都使用 BERT [27] 开发。 REALM [30] 是一个预训练的掩码语言模型,包括一个神经检索器和一个神经阅读器,它能够计算梯度 w.r.t模型参数并在整个网络中一直反向传播梯度。由于这两个模块都是使用神经网络开发的,因此对问题的响应速度是推理过程中最关键的问题,尤其是在处理大量文档时。
为了提高答题效率,一些系统的开发只采用了Retriever,而忽略了Reader,而Reader通常是其他现代OpenQA系统中最耗时的阶段。 DenSPI [73] 在给定维基百科文章等文档集合的情况下,离线构建一个与问题无关的短语级嵌入索引。在索引中,语料库中的每个候选短语都由两个向量的串联表示,即稀疏向量(例如 tf-idf)和密集向量(例如 BERT 编码器)。在推理中,给定的问题以相同的方式编码,并使用 FAISS [114] 搜索最相似的短语作为最终答案。实验表明,它在保持准确性的同时获得了显着的效率提升并显着降低了计算成本。然而,系统独立计算每个短语和问题之间的相似度,忽略了通常对回答问题至关重要的上下文信息。
预训练 Seq2Seq 语言模型(例如 GPT-2 [112]、GPT-3 [113]、BART [92] 和 T5 [108])的最新进展为下游 NLG 任务带来了大量改进,其中大部分是使用基于 Transformer 的架构构建。其中,GPT-2和GPT-3采用Transformer从左向右解码器,BART和T5采用Transformer编码器-解码器,保持原有形式[72]。先前的研究[115]、[116]表明,从大规模文本数据中学习到的大量知识可以存储在底层参数中,因此这些模型能够在不获取任何外部知识的情况下回答问题.例如,GPT-2 [112] 能够在没有微调的情况下仅给出自然语言问题就可以正确生成答案。之后,GPT-3 [113] 与之前最先进的微调方法相比,通过少样本学习实现了竞争性能,其中在推理时给出了几个演示作为条件 [112],而权重更新是不允许。最近,[116] 全面评估了语言模型在不获取任何外部知识的情况下回答问题的能力。他们的实验表明,预训练语言模型能够在各种基准测试中获得令人印象深刻的性能,并且这种无检索方法为构建 OpenQA 系统提供了一种根本不同的方法。
在表 1 中,我们总结了现有的现代 OpenQA 系统以及不同组件采用的方法。
在本节中,我们首先讨论构建 OpenQA 系统的主要挑战,然后分析现有的 QA 基准,这些基准不仅常用于 OpenQA,也常用于 MRC。
构建一个能够回答任何输入问题的OpenQA系统被视为QA研究的最终目标。然而,研究界还有很长的路要走。在这里,我们讨论了一些需要在此过程中解决的突出挑战。通过这样做,我们希望可以使研究差距更加清晰,从而加速该领域的进步。
在 OpenQA 设置中,几乎不可能创建一个包含“足够”的高质量训练数据的集合来提前开发 OpenQA 系统。因此,远程监督被广泛使用,它能够根据现有的语料库(例如维基百科)自动标记数据。然而,远程监督不可避免地会遇到标签错误的问题,并且往往会导致大量的噪声数据,显着增加建模和训练的难度。因此,总是需要能够容忍这种噪声的系统。
检索有效性是指系统将给定问题的相关文档与不相关文档分开的能力。系统经常遭受 “术语不匹配” 的困扰,这导致无法检索相关文档; 另一方面,系统可能会收到嘈杂的文档,这些文档包含问题中的确切术语甚至是正确答案范围,但与问题无关。
这两个问题都增加了在答案推理过程中准确理解上下文的难度。最近提出了一些神经检索方法[15]、[16]、[30]、[37]、[73]、[117],以提高检索效率。例如,[37] 和 [30] 联合训练检索和阅读器模块,它们利用预训练的语言模型并将检索模型视为潜在变量。然而,这些神经检索方法往往效率低下。一些作品 [15]、[16]、[37]、[117] 建议为每个文档或短语预先计算与问题无关的嵌入,并仅构建一次嵌入索引。高级次线性最大内积搜索 (MIPS) 算法 [69]、[70]、[71] 通常用于获取给定问题的前 K 个相关文档。然而,当系统面对海量文档时,响应速度与典型的IR技术仍有很大差距。
在过去的十年中已经发布了大量的 QA 基准,总结在表 2 中。这里我们对它们进行简要分析,重点是它们各自的特征,数据集分布 w.r.t.背景信息领域、问题数量、发布年份。正如本文所述,MRC 任务的成功是更先进的 OpenQA 的关键一步,我们相信 MRC 方法的未来进步将显着促进 OpenQA 系统。不仅包括OpenQA的数据集,还包括MRC的数据集,以使我们的调查更加全面。
判断 QA 数据集是否适用于开发 OpenQA 系统的主要标准是它是否涉及一个单独的文档集(通常是大规模的)[90],或者它是否相对容易访问这样的信息源 [18] , [22] 哪里可以推断出问题的答案。例如,HotpotQA [90] 本身提供了一个全维基设置,要求系统在整个维基百科的范围内找到问题的答案。 [3] 通过使用整个维基百科作为其信息源,将 SQuAD [19] 扩展到 SQuADopen。我们总结并说明了表 2 w.r.t. 中列出的数据集的分布。图 7 发布年份,图 8 背景信息域图6中的问题数量。此外,我们在表 3 中总结了适用于开发 OpenQA 系统的数据集的信息源类型。
(表 2:数据集:数据集的名称。域:数据集中背景信息的域。 #Q(k):数据集中包含的问题数,单位(k)表示“千”。答案类型:数据集中包含的答案类型。 MRC 中的上下文:为在 MRC 任务中生成答案而给出的上下文文档或段落。 OpenQA:这一列表示该数据集是否适用于开发OpenQA系统,勾号表示是)
(适用于开发OpenQA系统的数据集的信息来源。来源类型:背景信息来源的类型。来源:OpenQA设置中的背景信息来源)