OpenQA论文阅读(九) Dense Passage Retrieval for Open-Domain Question Answering
2022-04-03 12:14:37

image-20220403121624651

Abstract

​ 目前,开放域问答的文本的检索主要依赖于 TF-IDF和BM25算法,本文提出了一种使用稠密向量进行表示的方法,在进行测试时,本文提出的方法得到了很好的实验结果。

1 Introduction

​ [p1]目前抽取式的开放域问答主要采用两步的框架,首先是进行检索,之后是对检索的内容进行答案的抽取。目前的研究表明,检索对提高问答的准确度有很大的影响。[P2]目前开放域对话系统常用的检索方式是TF-IDF和BM25算法,但是他们均采用的是关键字匹配的方式,并未包含必要的语义信息,甚至当时用同义词时,也无法进行较好的匹配。

​ [P3]ORQA这个模型首先采用了密集向量对文本进行表示,并采用了ICT的方式进行了预训练。尽管这种方法比TF-IDF、BM25的结果都要好,但是他也有两点不足:首先,ICT预训练是计算密集型的,在目标函数中,常规句子是否是目标函数中很好的替代问题还不是完全清楚的。其次,因为上下文编码器没有使用成对的问题和答案进行微调,相应的表示可能是次优的。

​ [P4]本文解决了这样一个问题:我们能否只根据问题对进行训练而无需预训练呢?通过一系列仔细的消融研究,我们的最终解决方案令人惊讶地简单:嵌入被优化,以最大限度地提高问题和相关段落向量的内积,目的是比较一个batch中的所有对问题和段落。

​ [P5]本文的贡献有两方面。首先,我们证明了通过适当的训练设置,简单地在现有的问题-通道对上微调问题和通道编码器就足以大大优于BM25。我们的实证结果还表明,可能不需要额外的预训练。其次,我们验证了,在开放域问题回答的背景下,更高的检索精度确实转化为更高的端到端QA精度。

2 Background

​ 什么是Open-domain QA?以及对一些术语的定义。

3 Dense Passage Rretriver

​ 本文主要聚焦于实现检索器的方法。

3.1 Overview

​ DPR模型能够使用一个EPE_P编码器将任何文本编码到一个dd维的向量。在运行时DPR使用另外一个编码器DQD_Q对问题进行编码,同样将其编码成一个dd维的向量,本根据下式计算问题qq与文章pp的相似度:

sim(p,q)=EQ(q)EP(p).sim(p,q) = E_Q(q)^{\top}E_P(p).

尽管还存在其他很多问题与句子间进行相似度匹配的方式,但是这种方法可以实现文本向量的提前计算

Encoders

​ 两个encoder采用了独立的模型,并各自取[CLS][CLS]对应的输出,所以d=768d=768.

Inference

​ 在进行推理阶段,使用FAISS这个工具进行相似度计算。

3.2 Training

​ 损失函数如下:

L(qi,pi+,pi,1,pi,2,...pi,n)=logesim(qi,pi+)esim(qi,pi+)+j=1nesim(qi,pi,j)L(q_i,{p_i}^{+},{p_{i,1}}^{-},{p_{i,2}}^{-},...,{p_{i,n}}^{-})=-log\frac{e^{sim(q_i,{p_i}^{+})}}{e^{sim(q_i,{p_i}^{+})}+\sum\nolimits_{j=1}^{n}e^{sim(q_i,{p_{i,j}}^{-})}}

正负样本的选择

​ 我们考虑三种不同类型的否定:(1)Random:从语料库中的任何随机段落;(2)BM25:BM25返回的顶部段落,它不包含答案,但匹配大多数问题标记;(3)Gold:出现在训练集中的其他问题的正确段落。之后会在在第5.2节中讨论不同类型的负样本的影响。我们最好的模型使用来自同一小批的Gold负样本和一个BM25负通道。特别是,重用来自同一批的Gold负样本,可以提高计算效率,同时获得良好的性能。下面讨论这个方法。

In-batch negatives

​ 这个想法很巧妙。简单表示一下就是:

image-20220403144001882

​ 经下文验证,这种方法会提高训练的结果。

实验以及结果部分