QA中的信息检索技术(IR)整理

Retriever-Reader       

        现代绝大多数QA系统都可以用“Retriever-Reader”架构来描述,如下图所示。Retriever是现代QA系统的主要组成部分,旨在检索与问题相关的文档 ,可以看作是一个 IR 系统。从广义上讲,目前的 Retriever 方法可以分为三类,即 Sparse Retriever、Dense Retriever 和 Iterative Retriever,下面将详细介绍。

Sparse Retriever

Sparse Retriever使用经典的IR方法来搜索相关文档,例如TF-IDF和BM25等,这些传统检索方法使用稀疏表示来衡量术语匹配,因此将其称为Sparse Retriever。

Chen, D., Fisch, A., Weston, J., & Bordes, A. (2017). Reading Wikipedia to Answer Open-Domain Questions. arXiv:1704.00051 [cs]. http://arxiv.org/abs/1704.00051

2017年提出的DrQA使用了 unigrams 和 bigrams 相结合的TF-IDF对维基百科文档进行检索。

Yadav, V., Sharp, R., & Surdeanu, M. (2018). Sanity Check: A Strong Alignment and Information Retrieval Baseline for Question Answering. https://arxiv.org/abs/1807.01836v1

2018年Yadav等人借助Glove词向量改进TF-IDF,可分为三个主要步骤:

1)预处理:去除停用词,计算查询Q中每个词q的逆文档频率idf;

2)对齐:对于一个查询Q和一篇文档A,分别计算Q中每一词q和A中每一词a的相似度(使用Glove词向量和余弦相似度),对于每个q,都找出A中与其最相似的topK+个a和最不相似的topK-个a;

3)候选答案评分:对于Q中的每一个q,计算q与A的对齐分数,最后以q的idf为权重加权得到最终分数s(Q,A)。

Dense Retriever 

稀疏检索不能解决术语不匹配问题,在问题与文档相似但不存在重复术语的情况下,稀疏检索会失去效果。过去几年,随着深度模型的发展,密集的语义表示逐渐用于检索,一定程度上解决了术语不匹配的问题。根据对问题和文档的编码方式以及对其相似性进行评分的不同,现代 OpenQA 系统中的密集检索器(Dense Retriever)大致可以分为三种类型:基于表示的检索器

Representation-based Retriever)、基于交互的检索器(Interaction-based Retriever)和表示-交互检索器(Representation-interaction Retriever),如下图所示。

1)基于表示的检索器

也称为双编码器或双塔检索器,采用两个独立或共享参数的编码器(如 BERT)分别对问题和文档进行编码,并通过计算两个表示之间的单个相似度得分来估计它们的相关性。例如:

Seo, M., Lee, J., Kwiatkowski, T., Parikh, A. P., Farhadi, A., & Hajishirzi, H. (2019). Real-Time Open-Domain Question Answering with Dense-Sparse Phrase Index. arXiv:1906.05807 [cs]. http://arxiv.org/abs/1906.05807

2019年Seo等人提出DENSPI(Dense-Sparse Phrase Index),采用了密集表示和稀疏表示相结合的方法进行检索。具体地,使用BERT-large对问题和所有可能的答案短语分开编码,问题的密集向量由BERT的CLS位置的输出隐向量构成,每个答案短语的密集向量只由该短语的起始token对应的BERT输出隐向量和结束token对应的隐向量以及一个衡量始末位置一致性的标量构成。问题和答案短语的稀疏表示则采用bigrams的TF-IDF得到,最终的向量表示由密集向量和稀疏向量拼接而成。因问题与答案短语是分开编码的,因此我们可以离线保存所有可能答案短语的向量表示,在推理时,只需计算出问题的向量表示,将其与候选短语向量做点积运算,取点积结果最大的短语作为答案即可,极大地提高了系统的响应速度。

Lee, K., Chang, M.-W., & Toutanova, K. (2019). Latent Retrieval for Weakly Supervised Open Domain Question Answering. arXiv:1906.00300 [cs]. http://arxiv.org/abs/1906.00300

2019年6月,Lee等人提出端到端的QA系统——ORQA,将检索器与阅读器联合学习,检索器采用BERT分别对问题和文档进行编码,取相应的[CLS]输出(降维后)作为各自的表征向量,问题与文档的相似度分数则由向量之间的点积结果表示。检索器挑选出得分最高的top k个文档将其送入阅读器(BERT)进行阅读理解,最终由某top k文档推理得到的答案的分数为问题-文档的相似性分数和答案分数加和。

论文指出,直接使用预训练BERT初始化的检索器进行微调会存在优化困难等问题,因此,额外设计了一个预训练任务(Inverse Cloze Task,ICT)来初始化检索器。给定一个句子,ICT需要预测它的上下文,其建模目标函数如下:

其中 q 是被视为伪问题的随机句子,b 是 q 周围的文本,BATCH 是批次中采样的(负)样本集。 

微调以及推理阶段,由于文档不变,我们可以预先计算语料库中的所有文档编码,并且可以使用现有的工具(例如Locality Sensitive Hashing)将其预编译为索引以进行快速的最大内积搜索。

Guu, K., Lee, K., Tung, Z., Pasupat, P., & Chang, M.-W. (2020). REALM: Retrieval-Augmented Language Model Pre-Training. https://arxiv.org/abs/2002.08909v1

2020年,Guu等人提出REALM,REALM是在ORQA的基础上的改进,将检索器的训练融入了预训练过程中。该模型的结构如下,左边是预训练时使用的框架,右边是微调时使用的框架。

其中,neural knowledge retriever可以看做检索器,Knowledge-Augmented Encoder可以看做阅读器。检索器需要对p(z | x)进行建模,使用的模型为BERT,公式描述如下:

其中,Embed_{input}(x)取自将x输入BERT后的[CLS]输出向量,Embed_{doc}(z)同理。检索器将检索到的top-k个文档送入阅读器,与问题x联合进行答案提取(微调阶段),或执行MLM任务(预训练阶段)。

需要指出的是:

  • 阅读器和检索器使用不同的BERT,两者不共享参数
  • 预训练阶段,问题和文档的表征向量每隔一定步数才更新。微调阶段,文档的表征向量不更新

Karpukhin, V., Oğuz, B., Min, S., Lewis, P., Wu, L., Edunov, S., Chen, D., & Yih, W. (2020). Dense Passage Retrieval for Open-Domain Question Answering. https://arxiv.org/abs/2004.04906v3

2020年4月,Karpukhin等人提出DPR,使用两个BERT分别编码问题和段落,最大內积搜索召回top k个相关段落。创新点主要有:

  • 将每个文档分成等长的文本段落作为基本检索单元,段落之间无重复片段
  • 训练检索器时,每个问题携带一个包含答案的相关段落作为正例,同一个batch中其他答案的相关段落作为负例(in-batch negatives),同时额外添加一个由BM25检索到高相关但不包含答案的段落作为负例。

P.S. 为了与其他检索系统作比较,DPR在检索器和阅读器之间添加了一个段落选择器,将检索器检索到的段落与问题合并输入到BERT中重排序。

Xiong, L., Xiong, C., Li, Y., Tang, K.-F., Liu, J., Bennett, P., Ahmed, J., & Overwijk, A. (2020). Approximate Nearest Neighbor Negative Contrastive Learning for Dense Text Retrieval. arXiv:2007.00808 [cs]. http://arxiv.org/abs/2007.00808

2020年10月,Xiong等人指出,Dense Retrieval (DR) 的一个关键挑战是在其表示学习期间构建适当的负面实例,采用in-batch negatives会导致梯度范数减小,导致高随机梯度方差和训练收敛缓慢,因此,论文提出了Approximate nearest neighbor Negative Contrastive Estimation (ANCE),使用正在优化的检索模型从整个语料库中检索负样本,即选取当前模型认为的最难区分的样本作为负样本。由于每一batch都从整个语料库中检索负样本成本太高,论文中采取了异步更新的方式,即每隔一定步数才更新文档的向量表示,异步训练框架如下图所示:

每当训练了N步之后,模型使用最近的checkpoint进行推理,更新文档表示并构建索引,同时为每个问题分配新的负样本。 

2)基于交互的检索器

这种检索器同时将问题与文档一起输入模型,让它们之间进行令牌级的交互。但这种方法通常需要大量计算,有时成本高得令人望而却步,因此很难适用于大规模文档。

Nishida, K., Saito, I., Otsuka, A., Asano, H., & Tomita, J. (2018). Retrieve-and-Read: Multi-task Learning of Information Retrieval and Reading Comprehension. Proceedings of the 27th ACM International Conference on Information and Knowledge Management, 647–656. Retrieve-and-Read | Proceedings of the 27th ACM International Conference on Information and Knowledge Management

2018年,Nishida等人使用监督多任务学习结合了检索(IR)和阅读(RC)任务,通过最小化 IR 中相关性分数和 RC 中答案跨度的联合损失来共同优化检索器和阅读器,其模型结构如下图所示:

该模型基于BiDAF(双向注意流模型,BERT之前的常用RC模型),模型的前四层由 IR 和 RC 任务共享。

Nie, Y., Wang, S., & Bansal, M. (2019). Revealing the Importance of Semantic Retrieval for Machine Reading at Scale. arXiv:1909.08041 [cs]. http://arxiv.org/abs/1909.08041

2019年,Nie等人提出了由一个基于术语(TF-IDF和关键词)的检索模块、两个用于段落级检索和句子级检索的模块以及一个下游任务模块组成的系统。其中段落级和句子级检索均使用BERT对问题和段落或句子交互推理。

3)表示-交互检索器

将基于表示和基于交互的方法相结合,以实现高精度和高效率。

Zhang, Y., Nie, P., Geng, X., Ramamurthy, A., Song, L., & Jiang, D. (2020). DC-BERT: Decoupling Question and Document for Efficient Contextual Encoding. arXiv:2002.12591 [cs]. http://arxiv.org/abs/2002.12591

2020年2月,Zhang等人提出了 DC-BERT,一种具有双 BERT 模型的解耦上下文编码框架:一个在线 BERT 只对问题进行一次编码,一个离线 BERT 对所有文档进行预编码并缓存它们的编码。在 SQuAD Open 和 Natural Questions Open 数据集上,DC-BERT 在文档检索方面实现了 10 倍的加速,同时与最先进的开放域问答方法相比,保留了大部分(约 98%)的 QA 性能。DC-BERT的框架如下图所示:

DC-BERT 有两个独立的 BERT 模型:在线 BERT 只对问题编码一次,离线 BERT 预编码所有文档并缓存它们的编码。启用缓存后,DC-BERT 可以立即读出任何文档的编码。然后将问题和文档的解耦编码输入到具有全局位置和类型嵌入的 Transformer 层,用于问题-文档交互,从而生成(问题、文档)对的上下文编码。最后,将问题和文档的 [CLS] 标记的 Transformer 输出编码合并输入到二元分类器中,判断文档与问题是否相关。

Zhao, T., Lu, X., & Lee, K. (2020). SPARTA: Efficient Open-Domain Question Answering via Sparse Transformer Matching Retrieval. arXiv:2009.13013 [cs]. http://arxiv.org/abs/2009.13013 

2020年9月,Zhao等人提出SPARTA (Sparse Transformer Matching),同样是分别获取问题和文档的向量表示,但与上述的DC-BERT的不同,SPARTA不选择复杂的模型结构(如Transformer、MLP等),而是采用了一种简单的新策略(我将其称为token级别的点积)对问题和文档向量进行交互,其模型架构如下图所示:

由上图可知,SPARTA计算问题q与文档c的相似度分数主要可分为三步:

1)Term Matching(token级别的点积,并取最大值):

其中e_{i}是问题第i个token的embedding,s_{j}是文档第j个token的embedding。

2) Sparse Feature

ReLU 层强制只有 y_{i} > 0 的问题token对最终得分有影响,从而实现稀疏激活。 

3)Final Score

对经过ReLU处理的所有y_{i}取对数后加和,即可获得问题q与文档c的相似度分数。

需要注意的是:

  • 负样本的选择对检索器的训练至关重要, SPARTA中50%的负样本来自随机采样,50%来自靠近基本事实答案的句子
  • 问题直接使用词向量进行表示,而不经过BERT等上下文编码器,因此,可以提前计算问题中每个token embedding与文档向量的分数,推理阶段只需根据问题token查表后相加即可获得最终的相似度分数。

Khattab, O., & Zaharia, M. (2020). ColBERT: Efficient and Effective Passage Search via Contextualized Late Interaction over BERT. Proceedings of the 43rd International ACM SIGIR Conference on Research and Development in Information Retrieval, 39–48. ColBERT | Proceedings of the 43rd International ACM SIGIR Conference on Research and Development in Information Retrieval

2020年,Khattab等人提出ColBERT,其后期交互框架如下图所示:

  • ColBERT在问题和文档编码器之间共享一个 BERT 模型,但通过在问题前添加一个特殊标记 [Q] 和在文档前添加另一个标记 [D] 来区分与问题和文档。
  • 使用一个没有激活函数的线性层对BERT输出进行降维,同时每个输出embedding被归一化,使其L2 范数等于 1,目的是使得任何两个embedding的点积等价于它们的余弦相似度。
  • 过滤掉文档中标点符号对应的embedding,不参与后期交互计算。
  • 交互过程与SPARTA类似,只不过去除了ReLU和log部分。
  • 推理阶段,ColBERT使用一个两阶段的方法加速检索过程:第一步,根据问题中每个token embedding(假设有N个token),检索回top-k'个文档token embedding,这一步一共检索到N x k'篇文档,但因为token embedding可能来自同一篇文档,所以只有K <= N x k'篇文档是唯一的。第二步,对检索到的K篇文档,分别与问题进行完全交互,最后根据相似度得分对K篇文档进行重排序。

Iterative Retriever 

迭代检索器(Iterative Retriever)的目的是在给定问题时分多步从大集合中搜索相关文档,也称为多步检索器(Multi-step Retriever)。为了获得足够数量的相关文档,搜索查询需要针对不同的步骤进行变化,并根据上一步中的上下文信息进行重新制定。主要工作流程可分为三步:

1)文档检索:在每个检索步骤中用于检索文档的 IR 技术;

2)查询重构(Query Reformulation):用于为每次检索生成查询的机制;每个检索步骤所使用的搜索查询通常是根据先前的查询和检索到的文档而变化和生成的。生成的查询采用两种形式:1)显式形式,即自然语言查询;比如,GOLDEN Retriever将查询重构任务重铸为MRC任务,因为它们都将问题和一些上下文文档作为输入并旨在生成自然语言的字符串。GAR使用预训练的  Seq2Seq 模型BART生成新查询。和 2) 隐式形式,即密集向量表示。

3)检索停止机制:决定何时终止检索过程的方法。

迭代检索方式产生了更大的可能性来收集更多相关的段落,但检索效率会随着迭代次数的增加而急剧下降。关于停止迭代检索的机制,大多数现有系统选择指定固定数量的迭代或最大检索文档数,但这些方法难以保证检索的有效性。

Das, R., Dhuliawala, S., Zaheer, M., & McCallum, A. (2019). Multi-step Retriever-Reader Interaction for Scalable Open-domain Question Answering. arXiv:1905.05733 [cs]. http://arxiv.org/abs/1905.05733

2019年,Das等人提出检索器与阅读器的多步交互框架,利用前一步阅读器的输出给检索到的段落重排序,其大体框架如下图所示:

算法流程如下:

文字描述: 给定一个大型文本语料库(作为段落列表),相应的段落编码和超参数(Tk),模型 M 返回一个文本跨度 a 作为答案。 初始查询 q_{0} 首先用于对语料库中的所有段落进行排名(第 3 行),然后是顶部 k 个段落被发送给阅读器(第 4 行)。阅读器返回答案跨度(与跨度相关的分数)及其内部状态(第 5 行)。然后 GRU 网络接收当前查询和读取器状态以生成更新的查询,然后将其传递给检索器(第 6 行)。检索器使用这个更新的查询再次对段落重新排序,整个过程重复 T 步。在 T 步结束时,模型返回阅读器模型返回的具有最高分数的跨度。阅读器使用监督学习(使用正确的跨度作为监督)进行训练,GRU 网络的参数使用强化学习进行训练。在训练期间,首先通过设置多步推理步骤的数量 (T = 1) 来预训练阅读器模型。训练收敛后,冻结阅读器模型的参数,并使用策略梯度训练 GRU 网络的参数。阅读器模型的输出用于生成用于训练策略网络的奖励。

一些细节: 

  • 使用不同的多层bilstm分别对问题和段落进行编码
  • 在检索器返回的所有段落上,对开始/结束位置的分数进行标准化。推理阶段,段落中每个span的分数为它的start token和end token的分数的和(span最长限制为15),每个段落取评分最高的前10个span与其他段落进行聚合(比如在其他段落重复出现的span,分数会叠加),最后取评分最高的span作为答案。
  • 获取阅读器的内部状态的公式如下:

       其中,m_{j}是段落中第j个token的embedding,L是处理后的问题embedding,S则是阅读器的内部状态。

  • 给多步推理器设计了一个预训练任务:给定问题编码q,使用远程监督召回一个包含正确答案的段落,并获取其编码p^{*},随机选取一个段落编码p^{'},训练多步推理器使最大化。

Feldman, Y., & El-Yaniv, R. (2019). Multi-Hop Paragraph Retrieval for Open-Domain Question Answering. arXiv:1906.06606 [cs]. http://arxiv.org/abs/1906.06606

2019年,Feldman等人提出MUPPET,框架如下图所示,主要结构有问题编码器、段落编码器、检索器、重制层和阅读器。

与之前工作不同,MUPPET的段落编码器会为段落中每一个句子都学习一个表示,重制层的作用同样是接收问题编码和检索回的段落编码以生成新的问题编码。由于段落中每个句子都有自己的编码,因此MUPPET采用了以下方式来计算问题与段落的相关性分数,其中

是段落 P 中的句子编码,q 是问题 Q 的编码。 

该论文实验设置非常复杂,不想看了。 

Qi, P., Lin, X., Mehr, L., Wang, Z., & Manning, C. D. (2019). Answering Complex Open-domain Questions Through Iterative Query Generation. arXiv:1910.07000 [cs]. http://arxiv.org/abs/1910.07000

2019年,Qi等人指出,「检索+阅读理解」模式的系统没法高效地处理复杂的需要多步推理的开放领域问题,原因有:1,这些问题需要有多个支撑线索才能回答,2,只根据原来那个问题通常都很难找到所有必须的支撑线索。一个理想的系统应当能够迭代进行「阅读理解找到的信息」以及「寻找更多的支撑线索」这两件事,就像人类一样。作者们的方法基于一个重要的观察:如果一个问题能根据语料回答,那么其中就会存在一个可以追踪的过程链条(或者图)。换句话说,在寻找支撑线索的过程中的任意时刻,都需要在「已知的」(问题文本、已经找到的线索)和「要找的」(其余的支撑线索)之间存在强语义重叠。基于上述讨论,作者们提出GoldEn Retriever,大体架构如下:

创新之处在于提出了问题生成器, 将原始问题与检索到的上下文拼接送入检索式阅读器提取span,然后将提取到的span作为新的问题进行下一步检索,最后将所有检索到的上下文与原始问题拼接送入阅读器提取最终答案。不足之处在于,论文中将跳数固定为2,模型没有确定何时停止检索的能力,不能自适应多步检索。此外,论文还使用了一些启发式的方法为生成的问题提供监督信号,感兴趣的同学可以进一步阅读。

Min, S., Chen, D., Zettlemoyer, L., & Hajishirzi, H. (2020). Knowledge Guided Text Retrieval and Reading for Open Domain Question Answering. arXiv:1911.03868 [cs]. http://arxiv.org/abs/1911.03868

2020年,Min等人提出一种使用知识引导检索的方法来提高相关文档的召回率,同时允许知识引导关段落融合信息来提高阅读理解的准确性,其大体框架如下:

一些符号: 

迭代次数:M_{ret} ,知识库:K ,语料库:C ,最大检索段落数:n ,第m次迭代检索到的段落(多个):P^{(m)}  ,种子段落(多个):P^{(0)}  ,问题:q ,  段落:p_{i}

检索流程:

1)检索第一步,获取种子段落:(1)使用实体链接系统,返回与问题中实体相关的文档;(2)TF-IDF返回topk个文档;取这些文档的第一段作为种子段落。

2)开始迭代,每一步迭代中获取相关段落的方法:(1)依靠知识图谱中存在的关系,具体地,在第m步迭代中,如果段落p_{i}\in P^{(m-1)}中存在实体 e_{p_{i}} ,知识图谱中存在关系对(e_{p_{i}}, r_{i,j},e_{p_{j}})\in K,那么对于包含实体 e_{p_{j}} 的段落 p_{j} ,如果它是符合上述关系对的第一条段落(如何判定是不是第一条,使用什么技术?),就将其添加到检索到的段落集合中,并以关系 r_{i,j} 与 p_{i} 链接构建段落图。(2)其他与有关 p_{i} 但排名不是第一的段落,使用BM25进行重排序,并选择top k段落加入段落图中。此外,如果段落 p_{i} 和 p_{j} 同属于一篇文章中,而且p_{i} 是文章的第一段,p_{j} 是随后的其他段落,那么关系 r_{i,j} 为 childr_{j,i} 为 parent

3)最后,在达到最大检索数 n时,停止检索,此时检索到的段落集合为\left \{ {p_{1},...,p_{n}} \right \},段落之间两两的关系定义为\left \{ r_{i,j} | 1 \leq i,j\leq n \right \},其中 r_{i,j} 可以是一个知识图谱中的关系,childparent或者norelation

阅读理解流程:

1)获取question-aware的段落表示  \textbf{P}_{i} : 

其中L是段落最长长度。

2)获取关系表示 \textbf{r}_{i,j}

3)初始化段落表示 z_{i}^{(0)}  :

第 m(1\leq m\leq M) 层fusion layer的段落表示: z_{i}^{(m)},graph-aware fusion layers层数:M

4)论文使用了两种方法来融合不同段落之间的表示:

(1)只考虑二元关系,当其他段落与当前段落相关时,将它们融合,而不考虑它们之间具体是什么关系;

(2) 将关系考虑在内;

其中, 

5)M 层跑完后,得到融合了各自信息的 n 个段落的表示 z_{1}^{(M)},...,z_{n}^{(M)},令,送入全连接层:

最后,根据softmax结果选出最有可能包含正确答案的段落 i^{*} ,  选取段落 i^{*} 的question-aware的段落表示\textbf{P}_{i^{*}},在此基础上做MRC任务。作者指出,他们尝试直接使用 \textbf{Z} 进行跨度预测,但没有看到有意义的改进。他们假设这是因为与选择正确的证据段落相比,给定正确段落的跨度预测是一项更容易的任务(超过 80% 的基线模型的错误案例是由于段落选择不正确造成的)。

Xiong, W., Li, X. L., Iyer, S., Du, J., Lewis, P., Wang, W. Y., Mehdad, Y., Yih, W., Riedel, S., Kiela, D., & Oğuz, B. (2021). Answering Complex Open-Domain Questions with Multi-Hop Dense Retrieval. arXiv:2009.12756 [cs]. http://arxiv.org/abs/2009.12756

2021年2月,Xiong等人提出了一种多跳密集检索方法MDR,并声称不需要访问任何特定于语料库的信息,例如文档间超链接或人工注释的实体标记,可以适用于任何非结构化文本语料库。

论文指出,回答多跳开放域问题的主要问题是搜索空间随着每个检索跳呈指数增长。最近的工作通过利用底层维基百科语料库中的实体链接或现有超链接结构构建文档图来解决这个问题,然后问题就变成了在该图中寻找最佳路径,其中搜索空间受每个段落中超链接数量的限制。但是,此类方法可能无法推广到新领域,其中实体链接可能表现不佳,或者超链接可能不像维基百科那样丰富。

论文提出的方法仍然属于查询重制的范畴,迭代地将查询和先前检索到的文档编码为查询向量,并使用高效的 MIPS 方法检索下一个相关文档。与之前的工作不同在于使用了BERT等预训练模型作为编码器。大体框架如下:

一些符号:

查询:q, 语料库:C ,检索器检索到的一个段落序列:\textbf{P}_{seq}:\left \{ p_{1},p_{2},...,p_{n} \right \},检索器返回的 k 个得分最高的候选段落序列:\left \{ \textbf{P}_{seq}^{1}, \textbf{P}_{seq}^{2},..., \textbf{P}_{seq}^{k} \right \}\left ( k\ll |C| \right )

检索器的训练类似于Karpukhin等人提出的DPR,训练样本输入包括查询(随迭代步数变化)、1个正例段落(随迭代步数变化,在第 t 步就是包含第 t 步所需证据的段落)以及m个负例段落,以近似所有段落上的softmax。负例段落来自in-batch方法和TF-IDF返回的高分段落。此外,还使用了类似于这篇论文提出的memory bank机制来进一步扩充负样例的数量。具体来说,在训练到共享编码器收敛之后,将编码器的副本冻结成为新的段落编码器,并跨多个批次收集一组段落表示以作为一组负例段落,这样就可以从这组段落直接选取负例表示,而无需前向推理,节省内存。

推理阶段,使用宽度为 k 的波束搜索,每一轮维持分数最高的 top\ k 个段落(路径分数计算使用加和的方式),最后,将得分最高的 k 个段落序列 \left \{ \textbf{P}_{seq}^{1}, \textbf{P}_{seq}^{2},..., \textbf{P}_{seq}^{k} \right \}\left ( k\ll |C| \right )(即路径)送入阅读器(或者先经过一个重排序模型,论文中最优结果是经过重排序的)执行阅读理解任务。

一些细节:

  • 查询与段落简单拼接以重构查询
  • 查询和段落编码共享一个编码器
  • 数据集都只需要2跳,模型跳数固定为 n= 2

论文还对最近一些建议使用显式问题分解来简化问题的研究进行了分析:Wolfson等人提出了一个人工标注的可分解多跳数据集——QDMR,并声称使用TF-IDF对分解后的问题进行检索可以提高检索的性能。因此,作者讨论了这种分解的方法是否仍然适用于更强的密集检索,论文中的实验结果表明,在使用密集检索时,分解问题不能得到明显的提升。(这个结论有待进一步考量,等我看了QDMR的论文再说~

Nie, P., Zhang, Y., Ramamurthy, A., & Song, L. (2021). Answering Any-hop Open-domain Questions with Iterative Document Reranking. arXiv:2009.07465 [cs]. http://arxiv.org/abs/2009.07465

2021年5月,Nie等人指出现有的多跳QA方法还存在以下几个挑战:1) 迭代检索迅速增加了检索到的文档总数,但同时也给下游阅读器模块引入了很多噪音,这需要 QA 系统减少输入阅读器模块的相关但非支持性文档; 2) 现有的多跳 QA 方法大多执行固定数量的检索步骤,而在实际场景中,开放域问题可能需要不同数量的推理步骤; 3) 独立考虑每个检索到的文档与问题的相关性。

因此,他们提出了一种自适应检索的算法,该算法流程如下:

流程描述的很清楚,其中包括了三个主要组件:基于图的重排序模型、阅读器模型和查询重构模型。基于图的重排序模型利用段落中的实体信息,使用图注意力机制将共享实体的段落进行信息融合,以达到联合段落进行重排序的目的。阅读器模型除了执行传统的MRC任务外,还要判断输入的段落是否能提供答案。查询重构模型将原始查询与段落拼接执行MRC任务,将提取到的span与原始查询拼接用作下一步的查询。

为了保持训练和测试数据的分布一致,在基于图的重新排序模型和阅读器训练过程中,训练数据都需要精心设计,但作者在论文中并没有说得太明白,有空阅读源码再把它理清吧。这个系统的优缺点都很明显,优点就是它可以实现任意跳数的检索,结合重排器降低过多检索步数可能带来的噪声。缺点是检索算法只使用了TF-IDF,而TF-IDF是不可训练的,这有可能导致整个系统的性能受到TF-IDF性能的牵制,同时,标注段落中的实体需要用到额外的实体标注系统,这有可能带来额外的误差。

Mao, Y., He, P., Liu, X., Shen, Y., Gao, J., Han, J., & Chen, W. (2021). Generation-Augmented Retrieval for Open-domain Question Answering. arXiv:2009.08553 [cs]. http://arxiv.org/abs/2009.08553

2021年8月,Mao等人提出生成增强检索(GAR),与之间的检索式重构查询的方法不同,GAR利用预训练模型生成上下文以扩展查询(不改变原有查询,只扩展)。主要思想是:使用seq2seq模型(如BART),以原始查询为输入,以各种相关上下文作为输出目标,例如答案、包含答案的句子以及包含答案的段落的标题,进行训练。使用训练完成的模型对问题进行推理,然后将生成的上下文作为用于检索的生成增强查询附加到原始查询中。论文中的实验表明,将GAR与DPR结合使用,可以实现最佳的检索性能。

Qi P., Lee H., Sido O. 《TG》, & Manning C. D. (2020). Answering Open-Domain Questions of Varying Reasoning Steps from Text. https://arxiv.org/abs/2010.12527v4

2020年10月,Qi等人指出,现有检索系统大多都只针对单跳数据集或者多跳数据集来开发模型,但是在实际应用中,作者认为不能简单地将问题划分为单跳或者多跳,因为有些问题虽然表面上是单跳问题,但它的答案无法在单个英文维基百科页面的正文中找到,因此可靠地判断一个问题是否需要一个或多个证据来回答更加重要。因此,作者提出Iterative Retriever, Reader and Reranker(IRRR),该系统在检索到足以回答问题的文档时,会自动停止检索,返回答案,大体框架如下图所示:

算法流程:

1)给定问题 q,首先以问题本身初始化推理路径 p_{0} = \left [ q \right ] ,使用检索器根据问题 q 生成新的查询,并根据此查询召回文档集 D_{1}(使用了现成的Elasticsearch)。

2)阅读器结合当前推理路径,对文档集 D_{1} 中的每一个文档进行答案预测,若有答案,则输出可能性最高那个,若无答案,则进入重排器。 

3)重排器计算文档集 D_{1} 中每个文档与推理路径的相关性,取top k 个加入推理路径: 

4)检索器根据更新的推理路径再次生成新的查询(从推理路径中抽取,不要求是连续字符串),然后根据此查询再次召回文档,重复步骤2/3,直到生成答案或推理路径中的文档达到阈值。 

可以看到,大体框架与Nie等人提出的自适应检索算法有些相似,都是使用是否可以预测出答案这一条件来决定是否停止检索,主要组件也大概相同,只是顺序发生了变化,只不过Nie等人的检索器、阅读器和重排器是三个不同的模型,三者分开训练,而本篇论文中的三者用的是同一个模型,采用的是多任务学习的训练方式。具体来说,检索器采用的是token级别的二分类预测任务,用于从推理路径中抽取token组成新查询;阅读器需要区分是否有答案以及HotpotQA中的非抽取式问题(YES/NO),因此设计了一个4分类任务:,使用[CLS] token进行预测,同时进行传统的MRC任务,对最可能的span进行预测;重排器使用[CLS] token进行预测。

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值