Press "Enter" to skip to content

ACL 2020 | 基于稠密段落检索的开放域问答系统技术

©PaperWeekly 原创 · 作者|蔡杰

 

学校|北京大学硕士生

 

研究方向|QA

 

 

论文标题: Dense Passage Retrieval for Open-Domain Question Answering

 

论文来源: ACL 2020

 

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

 

 

 

引言

 

Open-domain 的 Question Answering (QA) 一般需要先从大量的文档库中检索出一些和问题相关的文档(retrive),相关的方法有 TF-IDF 和 BM25。这篇文章发现学习 dense 的文档向量去替换 retrive 阶段的传统方法是可行的,并且本文提出的检索系统在 top-20 文章检索准确率上比 Lucene-BM25 系统高出 9%-19%。

 

 

介绍

 

近年来随着深度学习的兴起,目前大部分做 Open-domain 的 QA 使一般沿用两阶段框架:1)retriever 首先选择一小部分段落,其中一些包含问题的答案;2)reader 可以看到 retriever 检索到的上下文并从中识别正确的答案。

 

目前主流的 retriever 使用传统的信息检索(IR)方法,包括 TF-IDF unigram/bigram matching 或词权重支持 BM25 词权重的工具,如 Lucene 和 Elastic-search。

 

TF-IDF 和 BM25 将 query 和 context 用高维的 sparse 向量来表示,这些sparse向量可以通过倒排索引进行有效搜索,并且对于那些通常需要根据关键字显着缩小搜索空间的问题回答有效。

 

但是 TF-IDF 和 BM25 也有一些缺点就是无法很好的建模词与词之间的语义关系(两个同义词可能长的完全不一样),所以一些 encoding 文本为 dense 向量的方法给 TF-IDF 和 BM25 这一类方法做了补充。

 

本文通过学习 dense representations 代替传统的 IR 方法进行检索改进 Open-domain 的 Question Answering。

 

 

Dense Passage Retriever (DPR)

 

在检索之前先用一个 dense encoder 给文档库中的所有文档都进行 encoding。在检索的时候用另一个 dense encoder 给 question 进行 encoding,之后根据下图公式算两个 representation 的 similarity,取 top-k 作为结果。

 

 

公式(1)比较简单,但是作者说该方式是最有效的。作者用的 encoder 是 bert-base-uncased,然后拿 [CLS] 的 vector 作为 representation。由于文档库可能会很大,所以作者用了 FAISS(一个非常高效的开源库,用于 dense 向量的相似性搜索和聚类,可以很容易地应用于数十亿个向量)来索引 encode 之后的向量。

 

当然,为了让公式(1)的效果更好,对encoder的训练是不可避免的。每一个 example 由一个 question 和一堆 paragraph 组成,paragraph 中有一个是和 question 相关的,n 个和 question 无关的,loss 也就是对数似然:

 

 

一般情况下,正负例的比例会差很多,作者在选负例的时候也采用了一些 trick:

 

(1) Random: any random passage from the corpus;

 

(2) BM25: top passages returned by BM25 which don’t contain the answer but match question tokens heavily;

 

(3) Gold: positive passages paired with other questions which appear in the training set. (效果最好)

 

question 和 passage 在 encoding 之后,作者还采用了一种节省计算量的方法,称之为 In-batch negatives,原文描述如下:

 

 

 

Experiments: Passage Retrieval

 

 

Table 2 使用 top-k 精度(k 为 20 或 100)比较了五个 QA 数据集上不同的文章检索系统。除了 SQuAD,DPR 在所有数据集上都比 BM25 表现得更好。当k值较小时,差距尤其大(例如,NQ 的 top-20 78.4% vs 59.1%)。

 

当使用多个数据集进行训练时,TREC(五种数据集中最小的数据集)可以从更多的训练示例中获益。相比之下,NQ 和 WebQuestions 得到了适度的改进,而 TriviaQA 则略有下降。在某些情况下,可以通过在单数据集和多数据集设置中结合 DPR 和 BM25 进一步改进结果。

 

作者还探讨了需要多少训练实例才能获得一个良好的文章检索性能。

 

 

作者也尝试了不同的 DPR 训练方案。表 4 中总结了 NQ dev 集的结果。

 

 

最后,作者根据不同的DPR,对后续的 QA 的效果也做了对比:

 

 

 

结论

 

首先,本文演示了在适当的训练设置下,只需对现有 question and passage encoder 进行 fine-tuning 就足以在 top-k 检索精度方面大大超过强大的 Lucene-BM25 系统。

 

dense 表示法是 sparse 向量表示法的补充,将它们结合起来可以进一步提高性能。其次,我们验证了,在开放域 QA 的上下文中,较高的检索准确度确实可以转化为较高的 end-to-end QA 准确度。

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注