信息检索(40):Unsupervised Corpus Aware Language Model Pre-training for Dense Passage Retrieval


发布时间(2022)


无监督的密集检索预训练
1)condenser 预训练架构,会得到一个信息丰富的 cls 表示
ps:early 的 token 表示主要是局部信息,late 的 token 表示主要是全局信息。MLM 预训练目标是训练 token 表示,因为使用 late cls 和 early token,所以强迫 late cls 学习了更好的全局信息。
2)没有经过针对文本相似性的训练,所以两个文本相似不一定能够体现在cls相似上,所以补充针对文本相似性的训练,具体实验:同一文档的两个跨度的 CLS 嵌入接近,而来自不同文档的跨度相距较远

摘要

最近的研究表明,使用微调语言模型 (LM) 进行密集检索是有效的。然而,密集检索器很难训练,通常需要经过大量设计的微调管道才能充分发挥其潜力。在本文中,我们确定并解决了密集检索器的两个潜在问题:i) 易受训练数据噪声影响;ii) 需要大批量来稳健地学习嵌入空间。我们使用最近提出的 Condenser 预训练架构,该架构通过 LM 预训练学习将信息压缩到密集向量中。 在此基础上,我们提出了 coCondenser,它添加了无监督的语料库级对比损失来预热段落嵌入空间。 在 MS-MARCO、Natural Question 和 Trivia QA 数据集上的实验表明,coCondenser 消除了对增强、合成或过滤等繁重数据工程的需求,也消除了对大批量训练的需求。它的性能与 RocketQA 相当,后者是一款最先进的、精心设计的系统,使用简单的小批量微调

1 引言

基于预训练语言模型(LM;Devlin 等人(2019 年);Liu 等人(2019 年))的进步,密集检索已成为文本检索的有效范例(Lee 等人,2019 年;Chang 等人,2020 年;Karpukhin 等人,2020 年;Qu 等人,2021 年;Gao 等人,2021a 年;Zhan 等人,2022 年)。然而,最近的研究发现,微调密集检索器以实现其容量需要精心设计的微调技术。早期的工作包括迭代负挖掘(Xiong 等人,2021 年)和多向量表示(Luan 等人,2020 年)。 最近的 RocketQA 系统 (Qu et al, 2021) 通过设计优化的微调管道显著提高了密集检索器的性能,该管道包括 i) 去噪硬负样本,从而纠正错误标记,以及 ii) 大批量训练。虽然这非常有效,但整个管道的计算量非常大,对于没有大量硬件资源的人来说是不可行的,比如学术界的人。在本文中,我们问,我们能否利用 RocketQA 的见解来执行语言模型预训练,而不是直接使用管道,以便可以轻松地在任何目标查询集上对预训练模型进行微调。

具体来说,我们要问 RocketQA 中的优化训练解决了什么问题。我们假设典型的 LM 对错误标记很敏感,这可能会导致模型权重的有害更新。 去噪可以有效地去除坏样本及其更新。另一方面,对于大多数 LM,CLS 向量要么通过简单任务进行训练(Devlin 等人,2019 年),要么根本没有经过明确训练(Liu 等人,2019 年)。这些向量远远不能形成段落的嵌入空间(Lee 等人,2019 年)。RocketQA 中的大型训练批次有助于 LM 稳定地学习以形成完整的嵌入空间。为此,我们希望对 LM 进行预训练,使其具有局部抗噪声能力并具有结构良好的全局嵌入空间。为了抗噪,我们借用了 Condenser 预训练架构(Gao and Callan,2021),该架构对 CLS 向量进行主动调节,从而执行语言模型预训练。它生成信息丰富的 CLS 表示,可以稳健地压缩输入序列。然后,我们引入了一个简单的语料库级对比学习目标:给定要检索的目标文档语料库,在每个训练步骤中从一批文档中抽取文本跨度对,并训练模型,使来自同一文档的两个跨度的 CLS 嵌入接近,而来自不同文档的跨度相距较远。结合两者,我们提出了 coCondenser 预训练,它无监督地学习用于密集检索的语料感知预训练模型。

在本文中,我们在两个流行的语料库 Wikipedia 和 MSMARCO 上测试了 coCondenser 的预训练。这两个语料库都曾作为各种任务的信息来源。这种受欢迎程度证明了为它们各自专门设计预训练模型的合理性。我们直接使用小训练批次对预训练的 coCondenser 进行微调,而无需进行数据工程。在 Natural Question、TriviaQA 和 MS-MARCO 段落排名任务中,我们发现生成的模型的表现与 RocketQA 和其他当代方法相当甚至更好。

2 相关工作

密集检索
Transformer LM 推动了许多 NLP 任务 (Devlin et al, 2019; Liu et al, 2019; Yang et al, 2019; Lan et al, 2020) 的最新进展,包括密集检索。Lee 等人 (2019) 是首批展示 Transformer 密集检索器有效性的人之一。他们提出了一种简单的逆完形填空任务 (ICT) 方法来进一步预训练 BERT (Devlin et al, 2019)。后续工作探索了其他预训练任务 (Chang et al, 2020) 以及读者和检索器的端到端协同训练 (Guu et al, 2020)。Karpukhin 等人 (2020) 首次发现仔细的微调可以直接从 BERT 中学习有效的密集检索器。随后,研究者开始研究进一步改进微调的方法(Xiong 等人,2021 年;Qu 等人,2021 年)。其中,Qu 等人(2021 年)提出了 RocketQA 微调流程,极大地提高了密集检索器的性能。
直到最近,密集检索的预训练才被探索。一项同时进行的工作 DPR-PAQ (Oguz et al ˘ , 2021) 重新审视了预训练并提出了领域匹配的预训练,使用预训练的 Natural Question 和 Trivia QA 管道生成的 6500 万大小的合成 QA 对数据集来预训练密集检索器。 本文使用最近提出的密集检索预训练架构 Condenser (Gao and Callan, 2021)。与以前设计预训练任务的工作不同,Condenser 探索了设计一种特殊的预训练架构来提高表示有效性的想法。
密集检索具有直接重要价值的原因之一是,有大量文献研究第一阶段检索的高效密集检索 (Johnson et al, 2017; Guo et al, 2020)。 还有成熟的密集检索库,例如 FAISS (Johnson et al, 2017)。通过将语料库预编码为 MIPS 索引,检索可以以毫秒级延迟在线运行 (Johnson et al, 2017; Guo et al, 2020)。

对比学习
对比学习已成为计算机视觉领域中非常热门的话题(Chen et al, 2020; He et al, 2020)。最近的研究将这一想法引入自然语言处理,以学习高质量的句子表征(Giorgi et al, 2020; Wu et al, 2020)。在这项工作中,我们使用对比学习进行密集检索的预训练。与之前的工作不同,我们感兴趣的不是单个表示(Giorgi et al, 2020),而是完整的学习到的嵌入空间,我们将使用它来热启动检索器。 在资源有限的设置下,当 GPU(加速器)内存不够大时,大批量要求一直是对比学习(Chen et al, 2020)的一个限制因素。一般来说,这扩展到任何使用对比损失的训练程序,包括密集检索预训练(Guu 等人,2020 年;Chang 等人,2020 年)。Gao 等人(2021b)最近设计了一种梯度缓存技术,将对比学习的峰值内存使用上限设置为几乎恒定。在第 3.3 小节中,我们展示了如何将其调整为 coCondenser 预训练。

3 方法

在本节中,我们首先简要回顾一下 Condenser。然后讨论如何将其扩展到 coCondenser 以及如何执行内存高效的 coCondenser 预训练。

3.1 Condenser

在本文中,我们采用了一种特殊的预训练架构 Condenser(Gao and Callan,2021 年)。Condenser 是 Transformer 块的堆栈。如图 1 所示,这些 Transformer 块分为三组,即早期骨干编码器层、晚期骨干编码器层和头层。输入 x = [x1; x2; ::] 首先添加 CLS、嵌入,然后贯穿骨干层。

头部从后期层获取 CLS 表示,但使用短路从早期层获取 token 表示。然后,这个后期-早期对穿过头部的 Transformer 块

然后使用头部的输出进行掩蔽语言模型 (MLM;Devlin et al (2019)) 训练。

为了利用后期层的容量,Condenser 被迫学习将信息聚合到 CLS 标记中,然后该标记将参与 LM 预测。利用 MLM 产生的丰富而有效的训练信号,Condenser 学习利用强大的 Transformer 架构来生成密集的 CLS 表示。我们假设,将通常用于训练标记表示的 LM 目标放在密集的 CLS 表示上,学习到的 LM 可以提高对噪声的鲁棒性

3.2 coCondenser

虽然可以在多样化的语料库上训练 Condenser 以生成通用模型,但它无法解决嵌入空间问题:虽然嵌入在 CLS 中的信息可以由头部非线性解释,但这些向量之间的内积仍然缺乏语义。 因此,它们不能形成有效的嵌入空间。为此,我们用对比损失增强了 Condenser MLM 损失。与以前在人工查询段落对上进行预训练的工作不同,在本文中,我们建议以查询无关的方式简单地预训练段落嵌入空间,使用在目标搜索语料库上定义的对比损失。具体来说,给定 n 个文档的随机列表 [d1; d2; :::; dn],我们从每个文档中随机提取一对跨度 [s11; s12; :::; sn1; sn2]。然后,这些跨度形成 coCondenser 的训练批次。给定跨度 sij 对应的后期 CLS 表示 hij,其语料库感知对比损失在批次上定义如下所示。

熟悉的读者可能会认出这是来自 SimCLR(Chen et al, 2020)的对比损失,我们使用随机跨度采样作为增强。其他人可能会看到它与噪声对比估计 (NCE) 的联系。在这里,我们提供了一个 NCE 叙述。遵循分布假设的精神,相邻的段落应该具有相似的表示,而不同文档中的段落应该具有不同的表示。在这里,我们使用随机跨度作为段落的替代,并通过 NCE 强制执行分布假设,就像 Word2Vec(Mikolov et al, 2013)中的词嵌入学习一样。我们也可以将其识别为跨度级语言模型目标,或“跳过跨度”。将跨度 sij 表示为冷凝器 MLM 损失 L mlm ij 。批次的损失定义为 MLM 和对比损失的平均和,或者从另一个角度来看,定义为单词和跨度 LM 损失。

3.3 内存高效的预训练

RocketQA 管道使用监督和大批量训练来学习嵌入空间。我们还想运行大批量无监督预训练,以构建有效的随机梯度估计器,用于公式 6 中的对比损失。 提醒一下,这种大批量预训练只对目标搜索语料库进行一次。我们将展示这允许对任务查询集进行有效的小批量微调

3.4 微调

在预训练结束时,我们丢弃 Condenser 头,仅保留骨干层。 因此,该模型简化为其骨干,或实际上是 Transformer 编码器。我们使用骨干权重来初始化查询编码器 fq 和段落编码器 fp。每个输出最后一层 CLS。回想一下,它们已经在预训练中预热过了。(查询 q,段落 p)对相似度定义为内积。
查询和段落编码器在目标任务的训练集上进行监督微调。我们使用监督对比损失进行训练,并计算查询 q 的正文档 d + 对一组负文档 fd − 1 ; d− 2 ; ::d− l ::g 的负对数似然。

我们按照 DPR(Karpukhin 等人,2020 年)工具包中的描述进行两阶段训练。如图 2b 所示,在第一阶段,检索器使用 BM25 负样本进行训练。然后使用第一阶段检索器挖掘硬负样本以补充负样本池。第二阶段检索器使用第一轮生成的负样本池进行训练。这与图 2a 中所示的 RocketQA 的多阶段流程形成对比。

4 实验

在本节中,我们首先描述 coCondenser 预训练的实现细节。然后,我们进行密集检索实验来测试微调 coCondenser 检索器的有效性。

4.1 预训练

4.2 密集文章检索

表 1 显示了 MS-MARCO 段落排名的开发 (dev) 集性能以及 Natural Question 和 Trivia QA 的测试集性能。 在三个查询集中,密集系统表现出比稀疏系统更好的性能。我们还看到,与早期密集系统相比,涉及仔细微调或预训练的系统 (RocketQA、DPR-PAQ、Condenser、coCondenser) 之间存在很大的性能差距。这一结果证实了最近的发现,即低维嵌入具有强大的密集检索能力,但这种能力很难天真地利用。
coCondenser 比 RocketQA 略有改进。重要的是,这是通过大大减少微调中的计算和数据工程工作量来实现的。值得注意的是,在 MS-MARCO 上,coCondenser 将 RocketQA 的 4096 批次大小减少到 64(表 5)。图 2 中可以找到 RocketQA 和 coCondenser 的两个训练管道的比较。

与 DPR-PAQ 的比较显示出几个有趣的发现。将大型半监督预训练与更好、更大的 LM RoBERTalarge 相结合,DPR-PAQ 在 Natural Question 上取得了最佳效果。另一方面,从 BERT(base/large)开始时,DPR-PAQ 表现出与基于 BERTbase 的 coCondenser 相似的性能。这表明,大规模半监督预训练仍然是获得最佳性能的途径。然而,当计算资源有限且缺少大型预训练集时,无监督 coCondenser 是一个强有力的替代方案。另一方面,随着它转向 MS-MARCO,DPRPAQ 的预训练监督变得遥远,我们观察到 DPR-PAQ 的效果不如 RocketQA 和 coCondenser

Condenser 和 coCondenser 之间的比较证明了 coCondenser 中对比损失的重要性:coCondenser 可以通过其预先构造的嵌入空间进行稳健的微调,从而让它在所有数据集上具有更好的召回率(更少的假阴性)。

4.3 在 MS-MARCO Eval 上重新排名

5 分析

回想一下,coCondernser 的两个理想属性是局部抗噪声性,以防止错误标记和结构良好的预训练嵌入空间。在本节中,为了研究前者,我们引入并比较了知识蒸馏(Hinton 等人,2015)设置,其中我们用来自交叉编码器的软标签替换嘈杂的硬标签。 对于后者,我们测量第一阶段检索器挖掘的负样本的质量,以查看 coCondenser 嵌入是否有助于找到相关但不相关的硬负样本。我们还提供了损失组件以及预训练和微调阶段的消融研究。

5.1 使用软标签学习

为了分析 coCondenser 的局部鲁棒性,我们引入了一个知识蒸馏上界模型:我们首先训练一个交叉编码器,然后使用从交叉编码器生成的软标签对 coCondenser 模型进行微调,而不是使用噪声标签进行训练。与 Qu et al (2021) 使用交叉编码器进行过滤不同,这里我们直接将 logits 公开为软标签。具体来说,给定交叉编码器 g,一批 M 个查询 fq1; q2; ::; qMg,每个查询与 N 个段落(正样本和硬负样本)配对 fp11; ::; p1N; ::; pMN g,对于查询 ql,我们定义其软目标分布 T,
即,软标签是局部段落中来自 g 的归一化逻辑值,其余段落为 0。令 Sij = softmaxij (s(q; pij )),归一化的双编码器相似度。损失定义为 S 和 T 之间的 KullbackLeibler 散度,
此设置 a) 专注于改进局部难样本负样本和正样本的标签,同时 b) 避免评估批次内负样本的交叉编码器 g。 在表 3 中,我们比较了使用 coCondenser 训练的
原始硬标签和交叉编码器生成的软标签。使用软标签确实带来了一些改进。另一方面,在没有交叉编码器帮助的情况下,coCondenser 仍然在小范围内取得了性能,显示出 coCondenser 卓越的局部抗噪性

5.2 挖掘硬负例的质量

直观地看,全局结构更好的嵌入空间崩溃的可能性更小,从而为第二阶段检索器生成一组更准确的挖掘负样本以供其学习。换句话说,第二阶段检索器将产生更少的意外顶级(硬)负样本。为了定量衡量这一点,我们提出了一个新的指标,即深度 k 的前 n 个邻域召回率(nb-recalln@k):对于一个查询,第一阶段检索器的前 k 个候选对第二阶段检索器的前 n 个候选的覆盖率,

5.3 预训练损失消融

在本节中,我们进行消融研究,以了解第二阶段预训练损失组件对最终质量的影响。具体来说,我们考虑仅使用对比损失进一步预训练的 Condenser 模型。

在表 4 中,我们看到,仅使用对比损失对 Condenser 进行进一步的预训练可获得更好的召回率,但 MRR 相似。对比损失可以学习更好的嵌入空间,但本身无法保持 CLS 的局部判别性。原始 Condenser 能够在局部排名更好,以更少的召回段落产生相似的 MRR。当同时使用对比损失和 Condenser MLM 损失时,我们会看到所有指标都有所改善。这再次强调了 Condenser MLM 损失在第二个对比学习阶段的重要性。

5.4 训练阶段

我们力求了解 coCondenser 检索器的每个预训练和微调阶段的贡献。我们考虑第一阶段的预训练 Condenser 和第二阶段的 coCondenser。对于每个阶段,我们考虑使用和不使用硬负样本 (HN) 训练的检索器。作为参考,我们还与各种 RocketQA 训练阶段进行了比较。结果如表 5 所示。

6 结论

本文介绍了一种无监督的语料感知语言模型预训练方法 coCondenser。
我们证明适当的预训练不仅可以建立语言理解能力,还可以建立语料级的表征能力。利用 Condenser 架构和语料感知对比损失,coCondenser 获得了密集检索的两个重要属性:抗噪性和结构化嵌入空间。
这种语料感知预训练需要针对搜索语料库进行一次,并且与查询无关。学习到的模型可以在各种类型的最终任务查询之间共享。 实验表明,coCondenser 可以大大降低微调强大的密集检索器的成本。我们还发现 coCondenser 的性能接近或类似于大几倍的半监督预训练模型。 重要的是,coCondenser 提供了一种无需干预的方式来预训练非常有效的密集检索 LM。尤其是,它有效地消除了设计和测试预训练以及微调技术的工作量。借助我们的模型,从业者可以使用有限的资源来训练具有最先进水平性能的密集检索系统。未来的研究还可能研究整合额外的预训练和/或微调方法以进一步提高性能。

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值