内部RocketQA:人工智能为搜索引擎提供最佳答案

来源:百度研究

搜索引擎是用户在线获取信息的首选,正在经历从关键字匹配系统到问答机的转变。如今,用户几乎没有耐心来滚动浏览搜索页面,特别是当他们在手机上输入查询或在数字个人助理上提问时。一个简短的,简明的答案通常就足够了。

为了增强搜索引擎的功能,研究人员正在研究开放域问答(QA),这是一门长期的研究学科,它教计算机从大量文档中返回答案。

我们很高兴为您介绍RocketQA,这是一种用于开放域问答的密集段落检索的新颖训练方法,其性能明显优于先前在来自搜索引擎的两个最大的开放域QA公开数据集上的最新模型。它也高居Microsoft持有的MSMARCO Passage排行榜的榜首。RocketQA现在已应用于百度的核心业务(例如搜索和广告),并将在更多应用程序中发挥关键作用。

论文:https : //arxiv.org/abs/2010.08191

Le Aderboard:https ://microsoft.github.io/msmarco/#ranking

端到端检索器模型的挑战

传统的QA系统通常构建为复杂的管道,包含多个组件,包括问题理解,文档检索,段落排名和答案提取。在过去的几年中,由于最近基于深度学习的机器阅读理解,端到端的培训方法越来越受欢迎。端到端方法通过消除传统QA管道中的冗余模块来保证更高的效率,并实现更好的性能,因为整个QA系统可以自我学习并从用户的实时反馈中进行改进。

当今最受欢迎的质量检查系统之一是两阶段检索器-读取器。检索器模型从大量文档中查找包含答案的段落,然后是用于确定答案的阅读器模型。在我们的研究中,我们主要关注端到端检索器模型。

新兴的双编码器体系结构逐渐使传统的检索器黯然失色,该体系以端到端的方式学习问题和段落的密集表示。它首先分别编码问题和段落,然后使用相似度函数计算密集表示之间的相似度。

然而,有效训练双编码器进行密集通道检索仍然面临三个挑战:

l  双编码器检索器的训练和推理之间的差异;

l  大量未标记的阳性;

l  获取用于开放域质量检查的大规模培训数据的高昂成本。

为了解决这些挑战并有效地训练开放域QA的双编码器检索器,我们提出了RocketQA作为优化的训练方法,以改进密集通道检索,并使用了ERNIE 2.0,这是一种连续的预训练框架,可逐步学习预训练任务通过持续的多任务学习作为预训练的语言模型。

RocketQA及其三种训练技巧

在RocketQA中,我们提出了三种改进的培训策略来应对上述挑战。

跨批次阴性:以前,批次内阴性成为一种常见的技巧,可以在不对新阴性进行采样的情况下为QA生成更多训练对。我们首先通过计算每个GPU内的通道嵌入,然后在所有GPU之间共享这些通道嵌入,来对训练进行更多的否定优化。我们从其他GPU收集了示例(它们的密集表示),作为每个问题的附加否定词。

假设单个GPU上的迷你批处理中存在B个问题,并且以数据并行方式训练A个GPU:

l  对于批处理否定题,每个问题可以与B − 1否定词进一步配对;

l  使用跨批次负数,对于给定的问题,我们可以获得A×B − 1负数。

在实验中,当随机负数的数量变大时,模型性能会显着提高。

1.png

跨批次负片

2.png

去噪硬负采样:事实证明,“硬负”对于训练双编码器比“易负”更为关键。通常,获得硬底片的方法是选择排名最高的段落作为底片,这很可能包含假底片。

我们的解决方案是首先根据原始训练数据训练交叉编码器。所学的交叉编码器可以测量问题和段落之间的相似度。然后,当通过密集的检索器从排名靠前的段落中抽取硬否定样本时,我们删除了交叉编码器以高置信度得分预测为阳性的段落。跨编码器体系结构在捕获双向语义交互方面更强大,并且比双编码器体系结构表现出更好的性能。

数据扩充:我们使用交叉编码器为未标记的问题添加注释,从而进一步增强了训练数据。 

我们从Yahoo!收集了150万个未标记的问题。答案和ORCAS,然后使用学习过的交叉编码器来预测新问题的段落标签。为了确保自动标记的数据质量,我们仅选择由交叉编码器估计的具有高置信度得分的预测正数和负数段落。自动标记的数据用作增强训练数据,以学习双编码器。

3.png

RocketQA对MS-MARCO通道等级的消融研究

我们将以上三种策略组织成一个有效的双编码器训练管道,类似于多级火箭,其中双编码器的性能在三个步骤上得到了连续改善。这就是为什么我们将我们的方法称为RocketQA。

4.png

优化培训方法RocketQA的流程

数据集和评估

我们根据两个受欢迎的质量检查基准进行了实验:MSMARCO段落排名和自然问题。这两个数据集分别由Bing和Google搜索日志构建而成。我们的主要实验结果表明,RocketQA在包括DPR和ME-BERT在内的两个数据集上均明显优于所有基线。

5.png

段落检索的性能比较

我们还参加了Microsoft举办的MSMARCO Passage排名共享任务。先前的性能记录是评估集上的42.4。我们的解决方案的性能于2020年9月18日发布,确保了MRR @ 10的新纪录42.6,并在104个提交中名列第一。

6.png

MSMARCO Passage排名排行榜

同样值得注意的是,我们的实现基于FleetX,它是百度深度学习平台PaddlePaddle的高度可扩展的分布式培训引擎。我们在FleetX中使用了自动混合精度和梯度检查点功能,以有限的资源使用大批量批量训练模型。跨批次负采样是通过FleetX中提供的可区分的全采集操作实现的。

FleetX GitHub: https://github.com/PaddlePaddle/FleetX

发表评论

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