本文对MS MARCO Passage Ranking 榜单的榜12 (截止至2022/4/12)—— RocketQA 进行解读,原文地址请点击此处。
1. 背景介绍
在开放域问答中,密集段落检索已成为检索相关段落以寻找答案的新范式。通常,采用双编码器架构来学习问题和段落的密集表示以进行语义匹配。然而,由于以下三大挑战,仍然难以有效地训练用于密集段落检索的双编码器。
首先,双编码器检索器的训练和推理之间存在差异。在推理过程中,检索器需要从包含数百万候选者的大型集合中识别每个问题的正面(或相关)段落。然而,在训练过程中,由于单个 GPU(或其他设备)的内存有限,该模型被学习来估计每个问题的小候选集中的正样本概率。为了减少这种差异,以前的工作试图设计特定的机制来从前 k 个检索到的候选者中选择一些硬负样本。但是,它存在假阴性问题(即第二个挑战)。
其次,可能存在大量未标记的阳性结果。通常,完整地注释一个问题的所有相关段落是不可行的。通过仅检查特定检索方法(例如 BM25)检索到的前 K 个段落,注释者可能会错过问题的相关段落。以 MSMARCO 数据集为例,每个问题平均只有 1.1 个带注释的正面段落,而整个集合中有 880 万个段落。正如我们的实验所示,我们手动检查原始 MSMARCO 数据集中未标记为阳性的顶部检索的段落,我们发现其中 70% 实际上是阳性的。因此,在从 top-k 检索到的段落中采样 hard negative 时,很可能会带来假阴性。
第三,为开放域 QA 获取大规模训练数据的成本很高。 MSMARCO 和 Natural Questions (Kwiatkowski et al., 2019) 是开放域 QA 的两个最大数据集。它们由商业搜索引擎创建,分别有 516K 和 300K 个带注释的问题。但是,仍然不足以覆盖用户向搜索引擎提出的所有问题。
为了解决这些挑战,我们提出了一种优化的训练方法,称为 RocketQA,以改进密集段落检索。我们在 RocketQA 中做出了三大技术贡献,分别是跨批次负样本、去噪硬负样本和数据增强。实验结果表明,RocketQA 在 MS-MARCO 和 Natural Questions 上都显着优于以前的SOTA模型。开源代码点击此处
2. 三种策略
-
Cross-batch Negatives
具体来说,并行训练时首先计算每个 GPU 内的段落embedding,然后共享这些embedding到所有 GPU 中。即通过从其他 GPU 收集段落来作为每个问题的附加负样本以增加负样本的规模。单 GPU 和多 GPU 都可以应用Cross-batch Negatives。只有一个 GPU 可用时,可以通过累加的方式实现,同时权衡训练时间。Cross-batch Negatives通过 FleetX 中提供的可微分全聚集操作实现。 -
Denoised Hard Negatives
虽然Cross-batch Negatives可以增加负样本的数量,但大多数负样本都是容易的,很容易被区分。同时,困难负样本被证明对训练双编码器很重要,但直接在检索回的Top-k段落中选取负样本可能会造成假阴性问题。为了缓解这个问题,论文采用交互式编码器对Top-k段落进行预测,只选择预测为负样本且具有高置信度的段落作为负样本。 -
Data Augmentation
利用交互式编码器给无标签数据打标,喂给双编码器训练。
3. 训练步骤
约定的符号:段落集合
C
C
C ,在
C
C
C 中具有对应相关段落的问题集合
Q
L
Q_{L}
QL ,在
C
C
C 中没有对应相关段落的问题集合
Q
U
Q_{U}
QU 。由
C
C
C 和
Q
L
Q_{L}
QL 组成的数据集
D
L
D_{L}
DL,由
C
C
C 和
Q
U
Q_{U}
QU 组成的数据集
D
U
D_{U}
DU。
- step 1,在 D L D_{L} DL 上训练双编码器 M D ( 0 ) M_{D}^{(0)} MD(0),使用Cross-batch Negatives策略。
- step 2,在 D L D_{L} DL 上训练交叉式编码器 M C M_{C} MC ,每个问题的负样本从 M D ( 0 ) M_{D}^{(0)} MD(0) 在 C C C 中检索回的 top-k 个段落中(除去标记相关段落)随机采样。论文指出,这种设计是为了让交叉编码器适应双编码器检索到的结果的分布。
- step 3,在 D L D_{L} DL 上进一步引入去噪硬负样本来训练双编码器 M D ( 1 ) M_{D}^{(1)} MD(1)。对于每个问题 q ∈ Q L q ∈ Q_{L} q∈QL,从 C C C 中 M D ( 0 ) M_{D}^{(0)} MD(0) 检索到的顶部段落中采样硬负样本,并且只有被交叉编码器 M C M_{C} MC 预测为具有高置信度分数的负样本才会被选择。
- step 4,使用 M D ( 1 ) M_{D}^{(1)} MD(1) 为 Q U Q_{U} QU 中的每个问题检索回 top-k 个段落,并用 M C M_{C} MC 打好伪标签,构造数据集 D U D_{U} DU,最后使用数据集 D L D_{L} DL 和 D U D_{U} DU 共同训练双编码器 M D ( 2 ) M_{D}^{(2)} MD(2) 。
4. 实验结果分析
注意表 3 中的第三行,在不去噪的情况下引入硬负样本,检索器的性能显着降低。论文推测这是由于存在大量未标记的阳性样本造成的结果。因此,如果简单地从检索到的top-k段落中采样硬负例,可能会带来噪音。
可以看到,当随机负样本的数量变大时,模型的性能会提高。在某个点之后,模型性能开始下降,因为大批量可能会给有限大小的训练数据带来优化困难。
图6显示了数据增强带来的提升,但很有限,增加了约600k训练数据才带来0.5的提升。
使用RocketQA+现成的reader进行阅读理解,其中 RocketQA + re-trained DPR reader 是使用相同的设置根据 RocketQA 的检索结果训练一个新的抽取式阅读器(除了我们选择前 50 个段落进行训练而不是 100 个)。目的使 reader 适应 RocketQA 的检索分布。相比于DPR可以提高1.3个点。