Dense Passage Retrieval for Open-Domain Question Answering
Posted Facico
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dense Passage Retrieval for Open-Domain Question Answering相关的知识,希望对你有一定的参考价值。
Dense Passage Retrieval for Open-Domain Question Answering
段落检索是open domian QA的重要问题
- 传统方法是使用稀疏向量空间模型,如TF-IDF或BM25
- 本文重点研究室是密集向量空间模型,密集表示采用简单的双层编码器框架,同时采用了非常少的问题和段落对
传统检索器的问题
- 传统检索器不能很好匹配语义关系,只能关键词匹配
- 而密集向量检索器通过语义训练,可以更好捕获语义信息
Dense Passage Retriever(DPR)
要在M个文档中找到top-k个相关的段落
-
DPR采用多种编码器EQ,将输入段落映射到d维向量,并匹配与问题最接近的k个段落
-
问题和段落的编码器使用两个不同的BERT,[CLS]作为输出
-
问题和段落相似性度量,使用精度较高的点积(类似BERT[Rep]的方法)
-
推理时,将段落编码器应用所有段落,使用开源器FAISS来进行问题相关的段落检索。最后找到top-k最相关的段落
训练部分
采用一个正例段落,n个负例段落的方式训练
- 负例选择
- 1、随机选择
- 2、BM25获取top-n段落,去除正确答案
- 3、其他问题对应的正确段落
最后实验证明(2+3),采用其他n-1个问题对应的正确段落+一个BM25获取的top1段落进行组合,时间复杂度低,精度高
-
batch内负例方法
- 每个batch有B个问题,每个问题有对应的段落,构建B*B矩阵,则i≠j时是负例,i=j时是正例
- 这种方法是训练一个孪生网络结构的(如dual encoder)的有效策略,能极大提高训练实例的数量
-
有些数据集没有正例段落,或者正例段落不匹配
- 用BM25获取top-100的段落中排名靠前,且含有答案的段落作为(替换)正例段落;如果都没有则丢弃
实验
- 上面两个图都能看到DPR带来的提升,且混合数据集训练比单一数据集结果要好
- SQuAD因为question和passage存在较多重合的token,BM25效果较好
in-batch negative training
31+32 表示batch=32时,每个训练question除了原有31条In-batch negative,另外增加32条难度较大的负样本
- 这部分负样本是利用BM25,从passages中获取与每个训练question最相关、但不含answer的passage
- 可以看到增加难度较大负样本效果提升
泛化性更好
DPR比BM23泛化性更好
时间效率
- DPR要提前计算embedding,并用FAISS索引,耗时大,但是处理完可以离线并行处理
- 若提前有了上面的计算和索引,借助FAISS,DPR后续检索很高效,速度大致是BM25/Lucene的40倍
总结
- 1、DPR证明了这种检索方式提供更多的语义行,使用dual-encoder,利用预训练模型进行finetune,充分利用了预训练模型的海量知识
- 2、明显提升在线的处理速度,但预处理海量的passage的embedding是难点
- 3、用in-batch negative采样负样本,并用MB25增加难度较大的负样本,提升性能
以上是关于Dense Passage Retrieval for Open-Domain Question Answering的主要内容,如果未能解决你的问题,请参考以下文章
Dense Passage Retrieval for Open-Domain Question Answering
Dense Passage Retrieval for Open-Domain Question Answering
Dense Passage Retrieval for Open-Domain Question Answering
Approximate Nearest Neighbor Negative ContrastiveLearning for Dense Text Retrieval
Approximate Nearest Neighbor Negative Contrastive Learning for Dense Text Retrieval
Approximate Nearest Neighbor Negative Contrastive Learning for Dense Text Retrieval