DPR向量检索在QA中的应用

1、摘要

  开放域问题回答依赖于高效的文本检索来选择候选段落,传统的稀疏向量空间模型用的较多的有TF-IDFBM25算法,但这些算法仅仅是在词的匹配上进行检索,并未考虑语义的相关性,有很大的局限性。因此,论文提出了一种新的算法来检索候选段落,称之为:DPR算法。DPR算法在 top-20段落文本检索准确率方面比 Lucene-BM25系统高出9%-19% ,这非常有利于后续的QA任务的性能表现。

2、拟解决问题

  提高QA领域中问题段落检索准确性

3、Dense Passage Retriever (DPR)

  • 基本框架
      DPR方法的基本思路如下图所示。首先,将问题输入BERT得到d维的向量Q,将段落输入另外一个BERT得到d维的向量P,然后将Q和P计算余弦相似度,即可得到两个向量之间的距离。其中问题和段落使用的BERT参数是不共享的。 在这里插入图片描述
  • 训练
      由于原始的BERT预训练模型很通用,而且得到的句向量是不具备相似性计算要求的,也就是说,相似的两句话输入BERT得到的两个向量并不一定很近。因此,本论文基于Natural Questions (NQ),TriviaQA (Trivia),WebQuestions (WQ),CuratedTREC (TREC),SQuAD v1.1等数据集重新训练了一个BERT,专门用来生成问题段落的句向量表示。

  • 数据构造
      在QA数据集中,一般都会有答案所在的段落标记,这个就可以用来作为训练的正样本,但是负样本呢?似乎有很多中可选择的段落,最简单的就是把剩下的没有答案的段落作为负样本,但是有的数据集只有一个正样本段落,这个就比较麻烦。在论文中,针对这个问题,也做了一系列的实验,最后提出了一个比较好的负样本构造方法,同时也可以加速训练。
    负样本构造方法:
      Random:从语料中随机抽取;
      BM25:使用BM25检索的不包含答案的段落;
      Gold:训练集中其他问题的答案段落
    正样本构造方法:
      因为数据集如TREC, WebQuestions 和 TriviaQA中只包含问题和答案,没有段落文本,因此,论文通过BM25算法,在Wikipedia中进行检索,取top-100的段落,如果答案没有在里面,则丢掉这个问题。对于 SQuAD 和 NQ数据集,同样使用问题在Wikipedia检索,如果检索到的正样本段落能够在数据集中匹配则留下,否则丢掉。

  • Loss函数设计
      论文选择了1个正样本和n个负样本,其loss函数如下: 在这里插入图片描述   其中: 在这里插入图片描述

  最终的数据情况如下:Train的第二列表示根据以上的方法过滤之后的数据量。 在这里插入图片描述

4、结论

  • 数据量对准确率的影响
      论文接下来在NQ数据集上试验了数据量对DPR准确性的影响。如下图所示,DPR算法模型使用仅仅1k的数据的时候就已经全面超越了BM25算法的准确性。当训练的数据量逐渐增加时,准确性逐渐提升。当使用全量数据时,DPR算法的准确性超越了BM25算法你10个点以上,top-n的数量越少,DPR算法的优势越大。 在这里插入图片描述

  • 不同数据和不同算法组合的影响
      下表显示了在DPR训练时使用的训练数据源和不同的算法组合的结果。Single表示仅使用对应的数据集进行训练,Multi表示将表中的4个数据集全部加入训练。可以看到,大部分的情况下,将其他类型的问题段落数据加入训练时有利于当前数据集的准确率的。   BM25+DPR:BM25(q, p) + λ · sim(q, p),其中λ = 1.1 在这里插入图片描述

  • 不同的负样本数量及IB策略的影响
      IB策略:In-Batch,表示负样本是否在当前batch选取。    #N:负样本数量; 在这里插入图片描述

论文链接https://arxiv.org/abs/2004.04906

李省平

继续阅读此作者的更多文章