PAIR: Leveraging Passage-Centric Similarity Relation for Improving Dense Passage Retrieval
发布时间(2021)
利用以段落为中心的相似关系来改进密集段落检索
1)预训练阶段,知识蒸馏生成伪标签
使用两种损失
2)微调阶段,使用传统的对比损失
消融实验结论:
1)段落中心损失,要在预训练阶段用,而不应该在微调阶段用
2)知识蒸馏伪标签很有用
3)对于本文,passage和query共享encoder很有用
摘要
最近,密集段落检索已成为各种自然语言处理任务中查找相关信息的主流方法。许多研究致力于改进广泛采用的双编码器架构。然而,大多数先前的研究在学习双编码器检索器时仅考虑以查询为中心的相似关系。为了捕获更全面的相似关系,我们提出了一种新方法,该方法利用以查询为中心和以段落为中心的相似关系(称为 PAIR)进行密集段落检索。为了实现我们的方法,我们做出了三大技术贡献:引入两种相似关系的形式化公式、通过知识蒸馏生成高质量的伪标记数据,以及设计一个包含以段落为中心的相似关系约束的有效两阶段训练程序。大量实验表明,我们的方法在 MSMARCO 和 Natural Questions 数据集上的表现明显优于之前最先进的模型1
1 引言
随着预训练语言模型的最新进展,密集段落检索技术(在低维语义空间中表示查询和段落)的表现已显著优于传统的基于术语的技术(Guu et al, 2020; Karpukhin et al, 2020)。作为查找相关信息的关键步骤,密集段落检索已被证明可以有效提高各种任务的性能,包括问答(Lee et al, 2019; Xiong et al, 2020b)、信息检索(Luan et al, 2021; Khattab and Zaharia, 2020)、对话(Ji et al, 2014; Henderson et al, 2017)和实体链接(Gillick et al, 2019; Wu et al, 2020)。
通常,双编码器架构用于学习查询和段落的密集表示,并且查询和段落表示之间的点积相似度成为检索的排名度量。许多研究致力于改进这种架构(Guu et al, 2020; Karpukhin et al, 2020; Xiong et al, 2020a)以用于密集段落检索。先前的研究主要考虑学习以查询为中心的相似关系,其中它试图增加查询与正(即相关)段落之间的相似度 s(q; p+) 同时降低查询与负(即不相关)段落之间的相似度 s(q; p−)。我们认为以查询为中心的相似关系忽略了段落之间的关系,并且它给区分正段落和负段落带来了困难。
为了说明这一点,我们在图 1 中给出了一个示例,其中给出了一个查询 q 和两个段落 p + 和 p −。从图 1(a) 中可以看出,尽管以查询为中心的相似性关系可以强制 s(q; p+) > s(q; p−) 并识别出此情况下的正段落,但正段落和负段落之间的距离(即差异性)很小。当发出新查询时,很难区分正段落 p + 和负段落 p −。
考虑到这个问题,我们建议进一步学习以段落为中心的相似关系,以增强双编码器架构。基本思想如图 1(b) 所示,其中我们设置了一个额外的相似关系约束 s(p +; q) > s(p +; p−):查询 q 与正段落 p + 之间的相似度应大于正段落 p + 与负段落 p − 之间的相似度。这样,它能够更好地学习查询、正段落和负段落之间的相似关系。虽然这个想法很有吸引力,但由于三个主要问题,它并不容易实现。首先,目前还不清楚如何形式化和学习以查询为中心和以段落为中心的相似关系。其次,它需要大规模和高质量的训练数据来纳入以段落为中心的相似关系。然而,手动标记数据的成本很高。此外,即使在现有的手动标记数据集 (Qu et al, 2020) 中也可能存在大量未标记的正样本,并且在对困难负样本进行采样时可能会带来假负样本。最后,学习以段落为中心的相似关系(辅助任务)与以查询为中心的相似关系(目标任务)没有直接关系。从多任务的角度来看,多任务模型的表现通常比单任务模型更差(Alonso and Plank,2017;McCann et al,2018;Clark et al,2019)。 因此,需要更精细的训练过程设计。
为此,在本文中,我们提出了一种新方法,利用以查询为中心和以段落为中心的相似关系(称为 PAIR)进行密集段落检索。为了解决上述问题,我们做出了三个重要的技术贡献。首先,我们设计了正式的损失函数来表征以查询为中心和以段落为中心的相似关系。其次,我们提出通过知识蒸馏生成伪标记数据。第三,我们设计了一个两阶段的训练程序,该程序在预训练期间利用以段落为中心的相似关系,然后根据任务目标对双编码器进行微调。这三个方面的改进使得可以有效利用两种相似关系来改进密集段落检索。
本文的贡献可以总结如下:
我们提出了一种同时学习以查询为中心和以段落为中心的相似关系的方法,用于密集段落检索。这是首次将以段落为中心的相似关系用于此任务。
我们通过引入形式化公式、生成高质量伪标记数据和设计有效的训练程序做出了三大技术贡献。
大量实验表明,我们的方法在 MSMARCO 和 Natural Questions 数据集上的表现明显优于之前最先进的模型。
2 相关工作
最近,密集段落检索已表现出比传统稀疏检索方法(例如 TF-IDF 和 BM25)更好的性能。与稀疏检索不同,密集段落检索将查询和段落表示为低维向量(Guu et al, 2020; Karpukhin et al, 2020),通常采用双编码器架构,并使用点积作为检索的相似性度量。现有的密集段落检索方法可分为两类:(1)无监督预训练检索(2)仅对标记数据进行微调。
在第一类中,提出了不同的检索预训练任务。Lee 等人(2019 年)提出了一种使用无监督任务对检索器进行预训练的具体方法,即逆完形填空任务 (ICT),然后在标记数据上联合微调检索器和阅读器。REALM(Guu 等人,2020 年)提出了一种新的预训练方法,该方法联合训练了掩码语言模型和神经检索器。与它们不同的是,我们提出的方法在预训练阶段通过知识蒸馏利用伪标记数据,生成的数据质量很高(参见第 4.6 节)。
在第二类中,现有方法在标记数据上微调预训练语言模型(Karpukhin 等人,2020;Luan 等人,2021)。 DPR(Karpukhin 等人,2020)和 MEBERT(Luan 等人,2021)都使用了 BM25 的批量随机采样和硬负采样,而 ANCE(Xiong 等人,2020a)、NPRINC(Lu 等人,2020)和 RocketQA(Qu 等人,2020)探索了更复杂的硬负采样方法。Izacard 和 Grave(2020)和 Yang 等人(2020)分别利用读取器和交叉编码器对标记数据进行知识蒸馏。RocketQA 发现大批量可以显着提高双编码器的检索性能。 ColBERT(Khattab 和 Zaharia,2020)采用了基于轻量级注意力机制的重新排序,同时增加了空间复杂度。
现有的研究主要侧重于学习查询和段落之间的相似关系,而忽略了段落之间的关系。这使得模型很难区分正段落和负段落。本文提出了一种同时学习以查询为中心和以段落为中心的相似关系的方法。
3 方法
在本节中,我们提出了一种利用以查询为中心和以段落为中心的相似关系(称为 PAIR)进行密集段落检索的方法。
3.1 概述
密集段落检索 (Karpukhin et al, 2020) 的任务描述如下。给定一个查询 q,我们的目标是从大量的 M 个段落中检索出 k 个最相关的段落 fpjg k j=1。 对于这个任务,双编码器架构被广泛采用 (Karpukhin et al, 2020; Qu et al, 2020),其中两个独立的编码器 EQ(·) 和 EP (·) 用于将查询 q 和段落 p 表示为不同表示空间中的 d 维向量。然后执行点积以基于它们的嵌入来测量 q 和 p 之间的相似性:
先前的研究主要捕捉以查询为中心的相似关系。如图 1 所示,以段落为中心的相似关系是提高检索性能的重要证据。 因此,我们利用以段落为中心的相似关系扩展了原来的以查询为中心的学习框架。 为了开发我们的方法,我们需要解决第 1 节中描述的问题,并考虑三个方面进行扩展。首先,我们设计了一个同时考虑以查询为中心和以段落为中心的相似关系的新损失函数。其次,我们利用知识蒸馏来获得大规模和高质量的伪标记数据,以捕捉更全面的相似关系。第三,我们设计了一个两阶段的训练程序来有效地学习以段落为中心的相似关系并提高最终的检索性能。
3.2 定义损失函数
我们的方法考虑了两种损失,即以查询为中心损失和以段落为中心损失,如图 2 所示。两种损失由两种不同的相似关系来表征,即以查询为中心的相似关系和以段落为中心的相似关系。
以查询为中心的损失以查询为中心的相似关系以查询 q 为中心,将负段落 p − 推得比正段落 p + 更远。即:
其中 s (Q) (q; p+) 和 s (Q) (q; p−) 表示与查询 q 相关和不相关段落的相似度,它们的定义与公式 (1) 中的 s(q; p) 相同。按照 (Karpukhin et al, 2020; Qu et al, 2020) 的方法,我们通过优化以查询为中心的损失(即正向段落的负对数似然)来学习以查询为中心的相似度关系:
如图 1 所示,对于给定的查询,可能存在一些与正文段落相似的负文段落,这使得区分正文段落和负文段落变得困难。 因此,我们进一步结合以段落为中心的损失来解决这个问题。
以段落为中心的损失学习以段落为中心的相似关系的目的是使反例段落 p − 离正例段落 p + 更远,并使正例段落 p + 与查询 q 之间的相似度大于正例段落 p + 与反例段落 p − 之间的相似度。正式地,我们引入以下以段落为中心的相似关系:
其中 s § (p +; q) 和 s § (p +; p−) 分别定义为 EP (p +) > ·EQ(q) 和 EP (p +) > ·EP (p −)。同样,我们通过优化以段落为中心的损失函数(即查询的负对数似然)来学习以段落为中心的相似关系:
通过比较式(3)和式(5),我们可以观察到两种损失的区别在于归一化部分(下划线)。
组合损失
我们在图 2 中给出了上述两个损失函数的示意图。 接下来,我们提出同时学习公式 (2) 和公式 (4) 中的以查询为中心和以段落为中心的相似性关系。因此,我们将公式 (3) 和公式 (5) 中定义的以查询为中心和以段落为中心的损失函数结合起来,得到最终的损失函数
其中 α 是一个超参数,在实验中进行调整。通过考虑以段落为中心的相似关系,我们的方法将更有能力区分正段落和高度相似但不相关的段落(参见图 1(b))。
共享参数的双编码器
现有研究(式 (2))大多为双编码器配备两个独立的编码器(EQ 和 EP ),分别用于查询和段落。在这种情况下,不同的编码器可能会将查询和段落投射到两个不同的空间。然而,为了同时建模以查询为中心的相似关系和以段落为中心的相似关系,查询和段落的表示应该在同一个空间。否则,段落之间的相似度和查询与段落之间的相似度是无法比较的。因此,我们建议对查询和段落使用共享相同参数和结构的编码器,即 EQ(·)=EP (·)。
3.3 通过知识蒸馏生成伪标记训练数据
通过优化以查询为中心的损失和以段落为中心的损失,我们可以捕获更全面的相似关系。然而,更多的相似关系约束需要大规模和高质量的训练数据来进行优化。此外,即使在现有的人工标记数据集中也可能存在大量未标记的正例(Qu et al,2020),并且在对困难负例进行采样时很可能带来假负例。因此,我们提出通过知识蒸馏生成伪标记训练数据
跨编码器教师模型 教师模型用于生成大规模伪标记数据。我们遵循 RocketQA(Qu et al,2020)的方法,采用跨编码器架构来实现教师模型,该模型将查询和段落的连接作为输入,并对查询和段落表示之间的语义交互进行建模。事实证明,这种架构在表征查询段落相关性方面比双编码器架构更有效(Yang et al,2020)。我们遵循 Qu et al(2020)的方法,使用标记数据训练跨编码器教师模型
跨编码器教师模型
教师模型用于生成大规模伪标记数据。我们遵循 RocketQA(Qu et al,2020)的方法,采用跨编码器架构来实现教师模型,该模型将查询和段落的连接作为输入,并对查询和段落表示之间的语义交互进行建模。事实证明,这种架构在表征查询段落相关性方面比双编码器架构更有效(Yang et al,2020)。我们遵循 Qu et al(2020)的方法,使用标记数据训练跨编码器教师模型
生成伪标签
在本文中,我们遵循 Qu et al (2020) 的方法,为未标记查询3 获取正样本和硬样本2。首先,我们使用高效的检索器 DPR (Karpukhin et al, 2020) 从语料库中检索未标记查询的前 k 个候选段落,并通过训练有素的交叉编码器(即教师模型)对其进行评分。我们设置两个值 spos 和 sneg (spos > sneg) 作为正样本和硬样本阈值
然后,对于每个查询,得分高于 spos 或低于 sneg 的候选段落将被视为正或负。请注意,我们也将此应用于标记语料库,以获得更多的正样本和可靠的硬负样本。 因为即使在现有的手动标记数据集中也可能存在大量未标记的正样本(Qu et al,2020),并且很可能在硬负样本采样中带来假负样本。
3.4 两阶段训练流程
尽管以段落为中心的相似关系式 (5) 能够纳入额外的相关性证据,但它与最终的任务目标(即以查询为中心的相似关系)并不直接相关。 因此,我们设计了一个两阶段训练程序,在预训练阶段纳入以段落为中心的损失,然后在微调阶段仅优化特定于任务的损失(即以查询为中心的损失)。我们在图 3 中展示了两阶段训练过程的图示。 接下来,我们介绍详细的训练过程。
预训练在预训练阶段,我们通过优化公式 (6) 中的损失函数 L(即以查询为中心损失和以段落为中心损失的组合)来训练双编码器。采用来自无标记语料库的伪标记数据作为预训练数据(第 3.3 节)。
微调 在微调阶段,我们仅根据公式 (3) 中的以查询为中心的损失 LQ 对双编码器(在第一阶段进行了预训练)进行微调。通过这种方式,我们的方法专注于学习特定于任务的损失,从而获得更好的检索性能。在此阶段,我们使用来自标记语料库的真实标签和伪标签进行训练。
4 实验
4.1 实验设置
4.2 实现细节
α 是一个超参数,用于平衡以查询为中心的损失和以段落为中心的损失(公式(6))。我们通过设置 0.1 的等间隔搜索 α,范围从 0 到 1,当 α 设置为 0 时,模型性能最佳
4.3 主要实验结果
表 2 列出了主要的实验结果。 (1)我们可以看到 PAIR 在 MSMARCO 和 NQ 数据集上的表现都明显优于所有基线。我们的方法与基线的主要区别在于,我们结合了以查询为中心和以段落为中心的相似性关系,这可以捕捉更全面的语义关系。同时,我们通过知识蒸馏整合了增强数据。
(2) 我们注意到,基线方法使用不同的预训练 LM,如表 2 第二列所示。在 PAIR 中,我们使用 ERNIE-base。 为了检验 ERNIE-base 的效果,我们通过将 DPR 中使用的 BERT-base 替换为 ERNIE-base 来实现 DPR-E。从表 2 中,我们可以观察到,尽管 PAIR 使用相同的预训练 LM,但其表现明显优于 DPR-E。 (3)另一个观察结果是,密集检索器总体上比稀疏检索器更好。 先前的研究也报告了这一发现(Karpukhin 等人,2020 年;Xiong 等人,2020a 年;Luan 等人,2021 年),这表明密集检索方法的有效性。
4.4 消融研究
在本节中,我们进行消融研究以检验我们提出的方法中每种策略的有效性。我们仅报告 NQ 上的结果,而 MSMARCO 上的结果类似,由于篇幅有限,此处省略。 在这里,我们考虑了基于我们的方法的五种变体进行比较:(a)w/o PSR 在预训练阶段消除了以段落为中心的相似关系的损失;(b)w/o KD 消除了获取伪标记数据的知识蒸馏,并且仅在预训练阶段和微调阶段使用标记数据(MSMARCO 和 NQ);
(c)w/PSR FT 在微调阶段增加了以段落为中心的相似关系的损失;(d)w/o SP 对查询和段落使用单独的编码器,而不是使用具有共享参数的编码器;(e)w/o PT 删除了预训练阶段。
表 3 展示了消融研究的结果。我们可以观察到以下发现:• 在 w/o PSR 中性能下降,证明了学习以段落为中心的相似关系的有效性;• 在 w/o KD 中性能下降,证明了知识蒸馏对于获得大规模高质量伪标记数据的必要性和有效性,因为以段落为中心的损失试图区分高度相似但语义不同的段落;• 在 w/ PSR FT 中性能略有下降,因为以段落为中心的损失与目标任务(即基于查询的检索)没有直接关系,这表明以段落为中心的损失应该只在预训练阶段使用;• 在 w/o SP 中性能下降,证明了具有共享参数的双编码器的有效性;• 在 w/o PT 中性能显着下降,证明了我们的预训练程序的重要性。
4.5 以段落为中心的相似关系分析
先前的结果证明了我们提出的方法 PAIR 的有效性。在这里,我们以更直观的方式进一步分析以段落为中心的损失(等式 (5))的影响。为了检验这一点,我们准备了我们方法的两个变体,即完整的 PAIR 和删除以段落为中心的损失的变体(等式 (5)),记为 PAIR:PSR。
我们首先分析以段落为中心的相似度关系 (PSR) 如何影响查询、正段落和负段落之间的相似度关系。图 4 展示了 PAIR 与 PAIR:PSR 在计算 s(p +; p−) 和 s(p +; q) 相似度时的比较。我们通过对 Natural Questions 的测试数据中每个查询的前 100 个检索到的段落的相似度取平均来获得 s(p +; p−) 和 s(p +; q)。我们可以看到,在加入以段落为中心的相似度关系 (PSR) 之前,s(p +; p−) 高于 s(p +; p−),因此负段落接近正段落。加入 PSR 之后,s(p +; p−) 变得低于 s(p +; q),这表明以段落为中心的损失在表示空间中将正段落拉近查询,而将其推远负段落。比较结果与公式 (3) 中的段落级相似度关系一致。 (4)。
接下来,我们进一步在表 4 中给出两个示例,以了解 PAIR 和 PAIR:PSR 之间的性能差异。在第一个示例中,PAIR 检索到的 top-1 段落具有与查询相同的主题“H1N1”。相比之下,PAIR:PSR 检索到的 top-1 段落具有不正确但高度相关的主题“H5N1”。实际上,正向段落(由 PAIR 检索到)和负向段落(由 PAIR:PSR 检索到)中的句子共享许多常用词。这样的负向段落很可能会误导检索器得出错误的排名。因此,这两个段落在表示空间中应该彼此相距甚远。在现有研究中,仅考虑查询-段落相似性无法很好地解决这个问题。从第二个示例中可以发现类似的观察结果。
PAIR 检索到的 top-1 段落与查询的主题相同,为“胆囊”,而 PAIR:PSR 检索到的 top-1 段落则与“膀胱”有关。 这些结果表明,以段落为中心的相似性关系对于区分正段落和硬负段落(与正段落高度相似)特别有用。
4.6 知识蒸馏分析
本节我们考察阈值对知识蒸馏后的伪标记数据的影响,包括数据质量和检索性能。我们使用不同的正阈值spos和负阈值sneg进行分析(见第3.3节)。
我们首先通过知识蒸馏来手动评估伪标记数据的质量,这些知识蒸馏针对不同的阈值设置(即 sneg 和 spos 的组合)。对于每个阈值设置,我们随机选择 100 个查询,每个查询对应一个正段落和一个硬负段落。总共有 4 个阈值设置(如表 5 所示)和 800 个查询段落对。我们请两位专家手动注释查询段落对并评估伪标记数据的质量,专家的 Cohen’s Kappa 为 0.9。
如表 5 的前两列所示,我们可以观察到,当 spos = 0:9 和 sneg = 0:1 时,数据质量相对较好。 此外,当设置较低的 spos 值和较高的 sneg 值时,数据质量会变差。 表 5 的最后三列还显示了不同阈值设置下的检索性能。当选择较低的 spos 值和较高的 sneg 值时,检索性能会下降。因此,我们的方法在实验中配置了严格的阈值设置(spos = 0.9,sneg = 0.1)以获得良好的性能。
5 结论和未来工作
本文提出了一种新颖的密集段落检索方法,该方法利用以查询为中心和以段落为中心的相似关系来捕获更全面的语义关系。为了实现我们的方法,我们在损失公式、训练数据增强和有效训练程序方面做出了三项重要的技术贡献。大量结果证明了我们方法的有效性。据我们所知,这是第一次将以段落为中心的相似关系考虑用于密集段落检索。我们相信这种想法本身值得在设计新的排名机制时进行探索。在未来的工作中,我们将设计更多主要的排名函数,并将当前的检索方法应用于问答和段落重新排名等下游任务。