Unsupervised Dense Information Retrieval with Contrastive Learning
Dec 2021 (v1), Aug 2022 (this version, v4)
Gautier Izacard, Mathilde Caron, Lucas Hosseini, Sebastian Riedel, Piotr Bojanowski, Armand Joulin, Edouard Grave
[Meta AI Research等]
https://arxiv.org/abs/2112.09118
https://openreview.net/forum?id=jKN1pXi7b0
Published in Transactions on Machine Learning Research (08/2022)
https://github.com/facebookresearch/contriever
(开源包含预训练模型、预训练和评估代码。使用一个简单的对比学习框架来预训练信息检索模型。Contriever无监督训练,在以下方面与BM25具有竞争力R@100在BEIR基准上。在对MSMMARCO进行微调后,Contriever获得了强大的性能,尤其是在100的召回方面。我们还训练了Contriever的多语言版本mContriever,实现了强大的多语言和跨语言检索性能。)
摘要:最近,信息检索出现了使用神经网络的密集检索器,作为基于术语频率(term-frequency)的经典稀疏方法的替代方案。这些模型在有大型训练集的数据集和任务上获得了最先进的结果。然而,在不训练数据的情况下,它们不能很好地迁移到新的应用程序中,并且被BM25等无监督的基于术语频率方法所打败。在这项工作中,我们探索了对比学习作为一种训练无监督密集检索器的方法的局限性,并表明它在各种检索环境中都能带来强大的性能。在BEIR基准上,我们的无监督模型的Recall@100指标在15个数据集中的11个数据集上优于BM25。当用作微调前的预训练时,无论是在数千个域内示例上,还是在大型MS MARCO数据集上,我们的对比模型都会导致BEIR基准的改进。最后,我们评估了我们的多语言检索方法,其中训练数据甚至比英语更稀缺,并表明我们的方法具有很强的无监督性能。当仅对监督英语数据进行微调并对斯瓦希里语等低资源语言进行评估时,我们的模型也表现出很强的跨语言迁移。我们表明,我们的无监督模型可以在不同的脚本之间执行跨语言检索,例如从阿拉伯语查询中检索英语文档,这在术语匹配方法中是不可能的。
1 引言
文档检索是在一个大型集合中查找相关文档以回答特定查询的任务。这本身就是一项重要任务,也是解决许多自然语言处理(NLP)问题的核心组件,如开放域问答(Chen et al.,2017a)或事实核查(Thorne et al.,2018)。传统上,检索系统或检索器利用词汇相似性来匹配查询和文档,例如使用TF-IDF或BM25加权(Robertson&Zaragoza,2009)。这些方法基于查询和文档的标记之间近乎精确的匹配,这会受到词汇差距的影响,并且不能很好地推广(Berger et al.,2000)。相比之下,基于神经网络的方法允许超越词汇相似性进行学习,从而在问答基准上获得最先进的性能,如MS MARCO(Nguyen et al.,2016)或NaturalQuestions(Kwiatkowski et al.,2019)。
神经网络的强大检索结果对于有大型训练数据集的领域和应用是可能的。在检索的情况下,创建这些数据集需要手动将查询与集合中的相关文档进行匹配。当集合包含数百万或数十亿个元素时,这几乎是不可能的,导致在许多情况下,只有少数域内示例(如果有的话)可用。一种潜在的解决方案是在大型检索数据集(如MS MARCO)上训练密集检索器,然后将其应用于新域,这种设置称为零样本。不幸的是,在这种情况下,基于术语频率的经典方法往往优于密集型检索器,而这些方法不需要监督(Thakur等人,2021)。此外,大型注释数据集通常无法以英语以外的语言提供。因此,使用大量受监督的数据集合不适合训练多语言检索系统。
迁移学习的一个自然替代方案是无监督学习,这提出了以下问题:是否有可能在没有监督的情况下训练密集的检索器,并与BM25的性能相匹配?在没有监督的情况下训练密集的检索器可以通过使用近似检索的辅助任务来实现。给定一个文档,可以生成一个合成查询,然后训练网络在给定查询的情况下检索原始文档等。Lee et al.(2019)为预训练检索器提出的反完形填空任务(inverse Cloze task,ICT),使用给定句子作为查询,并预测其周围的上下文。虽然在预训练中显示了有希望的结果(Chang et al.,2020;Sachan et al..,2021),但当用作零样本检索器时,这种方法仍落后于BM25。ICT与对比学习密切相关(Wu et al.,2018),对比学习已被广泛应用于计算机视觉(Chen et al.,2020;He et al.(2020))。特别是,使用最新对比学习方法训练的计算机视觉模型产生了非常适合检索的特征(Caron等人,2021)。因此,我们建议重新审视对比学习在无监督的情况下训练密集检索器的表现。
在本文中,我们做出了以下贡献。首先,我们证明了对比学习可以产生强大的无监督检索器:我们的模型在大多数BEIR基准上,Recall@100指标与BM25具有竞争力。其次,在few-shot设置中,我们表明我们的模型受益于少数训练示例,并且比从MS MARCO等大型数据集迁移模型获得更好的结果。第三,当作为微调前的在MS MARCO上预训练方法时,我们的技术在BEIR基准上具有很强的性能。我们进行消融来motivate我们的设计选择,并表明 cropping比反向Cloze任务效果更好。最后,我们通过对比学习训练了一个多语言密集检索器,并表明它实现了最先进的性能。此处提供代码和经过预训练的模型:https://github.com/facebookresearch/contriever
2 相关工作
在本节中,我们简要回顾了信息检索的相关工作,以及机器学习在这个问题上的应用。这并不是一篇详尽的综述,我们请读者参考Manning等人(2008)、Mitra等人(2018)和Lin等人(2020),以更完整地介绍该领域。
基于术语频率的信息检索。 历史上,在信息检索中,文档和查询被表示为稀疏向量,其中向量的每个元素对应于词汇表的一个术语。已经提出了不同的加权方案,以确定特定术语对大型数据集中的文档的重要性。最常用的加权方案之一被称为TF-IDF,它基于逆文档频率或术语特异性(Jones,1972)。今天仍然广泛使用的BM25扩展了TF-IDF(Robertson等人,1995)。这些方法的一个众所周知的局限性是,它们依赖于近乎精确的匹配来检索文档。这导致了潜在语义分析的引入(Deerwester et al.,1990),其中文档被表示为低维密集向量。
基于神经网络的信息检索。 随着深度学习方法在自然语言处理中的成功应用,神经网络技术被引入信息检索。Huang等人(2013)提出了一个深度词袋模型,其中查询和文档的表示是独立计算的。然后,通过在表示之间取点积来获得相关性得分,并对来自搜索引擎的点击数据进行端到端的训练。该方法后来被卷积神经网络(Shen et al.,2014)或递归神经网络(Palangi et al.,2016)取代了词袋模型。双编码器的一个限制是,查询和文档由单个向量表示,从而阻止模型捕获术语之间的细粒度交互。Nogueira&Cho(2019)在BERT模型(Devlin et al.,2019)的基础上引入了一种交叉编码器(cross-encoder)模型,该模型对查询和文档进行联合编码。强大的预训练模型的应用,以及交叉编码器架构,导致了MS MARCO基准的重要改进(Bajaj et al.,2016)。
上一段中描述的方法被应用于重新排列文档,这些文档是用传统的IR系统(如BM25)检索的。Gillick等人(2018)首次研究了基于双编码器神经模型的连续检索器是否是重新排序的可行替代方案。在回答问题的背景下,Karpukhin等人(2020)介绍了一种基于双编码器架构的密集passage检索器(DPR)。该模型使用BERT网络进行初始化,并使用查询对和相关文档进行有区别的训练,其中带有来自BM25的hard negatives。Xiong等人(2020)通过在优化过程中挖掘模型本身的hard negatives ,并在MS MARCO数据集上进行训练,进一步扩展了这项工作。一旦对维基百科文章等文档集合进行编码,就可以使用FAISS Johnson等人(2019)等快速k近邻库进行检索。为了缓解双编码器的局限性,Humau等人(2019)引入了多编码器架构,其中文档由多个向量编码。同样,Khattab等人(2020)提出了ColBERT模型,该模型为查询和文档的每个术语保留一个向量表示。为了便于检索,术语水平函数被近似为首先检索一组初始候选,然后用真实分数对其进行重新排序。在问答的背景下,知识蒸馏已被用于训练检索器,要么使用下游任务的读者的注意力得分作为合成标签(Izacard&Grave,2020a),要么使用交叉编码器的相关性得分(Yang&Seo,2020)。Luan等人(2020)从理论和经验上比较了稀疏和密集检索器的性能,包括双编码器、交叉编码器和多编码器。密集检索器,如DPR,在对维基百科等文档集进行编码时,可以产生近100GB的索引。Izacard等人(2020)展示了如何压缩这些指数,对性能的影响有限,使其更实用。
NLP的自监督学习。 随着word2vec的成功(Mikolov et al.,2013),人们提出了许多自监督技术来学习文本的表示。在这里,我们简要回顾一下与我们的方法最相关的方法:句子级模型和对比技术。Jernite等人(2017)引入了不同的目标函数来学习句子表征,包括下一句预测和句子顺序预测。这些目标后来被用于基于Transformer的预训练模型,如BERT(Devlin等人,2019)和AlBERT(Lan等人,2019年)。在检索的背景下,Lee等人(2019)引入了反完形填空任务(ICT),其目的是预测一段文本周围的上下文。Guu等人(2020)在BERT预训练方案中集成了双编码器检索器模型。检索到的文档被用作BERT任务中的附加上下文,并且整个系统以无监督的方式进行端到端的训练。同样,Lewis等人(2020)提出使用自监督训练,联合学习检索器和生成seq2seq模型。Chang等人(2020)比较了不同的检索预训练任务,包括反向完形填空任务。在自然语言处理的背景下,Fang等人(2020)提出应用MoCo,其中使用回译获得 positive pairs的句子。不同的作品通过对比度损失增强了掩码语言建模的目标(Giorgi等人,2020年;Wu等人,2020;Meng等人,2021)。SBERT(Reimers&Gurevych,2019)使用类似于对比学习的暹罗网络来学习类似BERT的模型,该模型适用于匹配句子嵌入。他们的公式与我们的工作类似,但需要对齐的成对句子来形成正对,而我们建议使用数据增强来利用大型未对齐的文本语料库。与此同时,Gao和Callan(2021)也展示了对比学习在信息检索中的潜力;基于相同的观察,即两个任务共享相似的结构。 Spider(Ram等人,2021)是一个同时期的工作,它利用文档中多次出现的spans来创建对比学习的伪示例,以训练无监督的检索器。最后,Chen等人(2021)训练一个密集的检索器模仿无监督的基于词汇(lexical-based)的方法。这提高了一系列任务的性能,并在将生成的密集检索器与Contriever相结合时获得了最先进的结果,Contriever是我们通过对比学习预先训练的模型。
3 方法
在本节中,我们将描述如何在没有监督的情况下训练密集的检索器。我们回顾了模型体系结构,然后描述了对比学习——它的训练的一个关键组成部分。
检索器的目标是在给定查询的大型集合中查找相关文档。因此,检索器将文档集和查询作为输入,并输出每个文档的相关性得分。一种标准方法是用神经网络对每个查询-文档对进行编码(Nogueira&Cho,2019)。此过程需要为任何新查询重新编码每个文档,因此不会扩展到大型文档集合。相反,我们在信息检索中遵循标准方法(Huang et al.,2013;Karpukhin et al.,2020),并使用双编码器架构,其中文档和查询是独立编码的。应用编码器后,查询和文档之间的相关性得分由它们的表示之间的点积给出。更准确地说,给定查询和文档,我们使用由参数化的相同模型对它们中的每一个进行独立编码。查询和文档之间的相关性得分是所得到的表示的点积:
在实践中,我们使用的Transformer网络来嵌入查询和文档。或者,可以使用两个不同的编码器分别对查询和文档进行编码,如DPR(Karpukhin等人,2020)。经验上,我们观察到,使用相同的编码器,如Xiong等人(2020年)和Reimers&Gurevych(2019年),通常可以提高zero-shot或few-shot迁移中的鲁棒性,而对其他设置没有影响。最后,通过对最后一层的隐藏表示进行平均来获得查询的表示和文档的表示。继之前使用神经网络进行密集检索的工作之后,我们使用了基于BERT的uncased架构,并请读者参考Devlin等人(2019)了解更多细节。
3.1 未对齐文件的无监督训练
在本节中,我们将描述我们的无监督训练方法。我们简要回顾了传统上用于对比学习和信息通信技术的损失函数(Lee et al.,2019)。然后,我们讨论从单个文本文档中获得positive pairs,这是这种训练范式的关键组成部分。
3.1.1 对比学习
对比学习是一种依赖于这样一个事实的方法,即每一份文档在某种程度上都是独一无二的。该信号是在没有人工监督的情况下唯一可用的信息。对比损失用于通过区分文档来学习。这种损失比较了正对(来自同一文档)或负对(来自不同文档)的文档表示。形式上,给定查询,其对应的正样本文档,一池负样本文档。对比InfoNCE损失定义为:
(1)
其中是一个温度参数。这种损失鼓励正对获得高分,而负对获得低分。该损失函数的另一种解释如下:给定查询表示,目标是在所有负样本中恢复或检索对应的正文档表示。在下文中,我们将分数中的左侧表示称为查询,将右侧表示称为键。
3.1.2 从单个文档构建正对
对比学习的一个关键要素是如何从单个输入中建立正对。在计算机视觉中,这一步骤依赖于对同一图像应用两个独立的数据增强,从而产生两个形成正对的“视图”(Wu et al.,2018;Chen et al.,2020)。在考虑类似的独立文本转换的同时,我们还探讨了旨在减少视图之间相关性的依赖转换。
反向克隆任务是一种数据扩充,它生成文档的两个互斥视图,由Lee等人在检索上下文中引入。(2019)。第一个视图是通过从一段文本中随机采样一段标记来获得的,而该段的补码形成第二个视图。具体而言,给定文本序列(w1,…,wn),ICT对跨度(wa,…,wb)进行采样,其中1≤a≤b≤n,使用跨度的标记作为查询,并使用补码(w1、…,wa−1,wb+1,…,own)作为关键字。在Lee等人(2019)的原始实现中,跨度对应于一个句子,并在文档中保留10%的时间,以鼓励词汇匹配。反向小丑任务与使用跨度补码(w1,…,wa−1,wb+1,…,wn)作为查询的小丑任务密切相关。
独立裁剪是一种常见的独立数据扩充,用于通过裁剪输入独立生成视图的图像。在文本的上下文中,裁剪相当于对一系列标记进行采样。因此,该策略从文档中独立地对两个跨度进行采样,以形成正对。与反向Cloze任务相反,在裁剪中,示例的两个视图都对应于原始数据的连续子序列。裁剪和ICT之间的第二个区别是,独立的随机裁剪是对称的:查询和文档都遵循相同的分布。独立裁剪也会导致数据的两个视图之间的重叠,从而鼓励网络学习查询和文档之间的精确匹配,这与BM25等词汇匹配方法类似。在实践中,我们可以固定查询和键的跨度长度,也可以对它们进行采样。
额外的数据扩充。
最后,我们还考虑额外的数据扩充,如随机单词删除、替换或掩码。除了随机裁剪之外,我们还使用这些扰动。
3.1.3建立大套负对
对比学习的一个重要方面是对大量的否定进行采样。大多数标准框架在如何处理阴性方面都有所不同,我们简要描述了其中两个框架,即我们在这项工作中使用的批量阴性采样和MoCo。
一批中的阴性。
第一个解决方案是通过使用同一批中的其他示例来生成负片:一个批中的每个示例被转换两次以生成正对,我们通过使用该批中其他示例的视图来生成负影。我们将这种技术称为“批量底片”。在这种情况下,梯度通过查询和键的表示进行反向传播。这种方法的一个缺点是,它需要非常大的批量才能很好地工作,Chen等人(2020年),Qu等人(2021)报告了信息检索方面的改进,最多8192个负片。该方法已被广泛用于训练具有监督数据的信息检索模型Chen等人(2017b);Karpukhin等人(2020),Lee等人在使用ICT对检索器进行预训练时也考虑了这一点。(2019)。
批次间的负对。
另一种方法是将以前批次的表示存储在队列中,并将其用作损失中的反例(Wu et al.,2018)。这允许更小的批处理大小,但通过使其在“查询”(从当前批处理的元素生成的视图之一)和“键”(存储在队列中的元素)之间不对称,略微改变了损失。渐变仅通过“查询”进行反向传播,并且“键”的表示被认为是固定的。在实践中,存储在队列中的来自先前批次的特征来自网络的先前迭代。当网络在训练过程中快速变化时,这会导致性能下降。相反,He等人(2020)提出从更新较慢的第二个网络生成密钥的表示。这种被称为MoCo的方法考虑了两个网络:一个用于密钥,由θk参数化,另一个用于查询,由θq参数化。查询网络的参数通过反向传播和随机梯度下降进行更新,类似于使用批内否定时,而密钥网络或动量编码器的参数通过使用指数移动平均从查询网络的参数进行更新:
其中m是动量参数,其取值为[0,1]。
4 实验
在本节中,我们根据经验评估了经过对比学习训练的最佳检索器,称为Contriever(对比检索器),它使用随机裁剪的MoCo。我们使用的对比学习程序与ICT(Lee et al.,2019)主要在三个方面有所不同。首先,使用随机裁剪对正对进行采样,并以10%的概率删除该对中每个元素的标记。其次,我们使用MoCo,其中负片由存储在队列中的先前批次的元素组成。这允许缩放到大量的负片。第三,我们使用维基百科和CCNet的数据(Wenzek et al.,2020)进行训练。激励这些技术选择的消融研究在第6节中进行。关于我们模型的更多技术细节见附录A.1。
4.1数据集
Contriever通过对比学习对从维基百科数据和CCNet数据混合中采样的文档进行训练(Wenzek et al.,2020),其中一半的批次是从每个来源采样的。
首先,我们在两个问答数据集上评估了我们的模型:NaturalQuestions(Kwiatkowski et al.,2019)和TriviaQA(Joshi et al.,2017)。对于这两个数据集,我们使用Lee等人介绍的开放域版本。(2019)和2018年12月20日的英语维基百科转储作为要检索的文档集合。我们报告了前k个检索的准确性,即前k个段落中至少有一个包含答案的问题的数量。
其次,我们使用由Thakur等人(2021)介绍的BEIR基准,该基准包含18个检索数据集,对应于9个任务,如事实检查或引用预测,并涵盖不同的领域,如维基百科或科学出版物。BEIR中的大多数数据集都不包含训练集,基准测试的重点是零样本检索。然而,大多数基于机器学习的检索器仍然在监督数据上进行训练,例如大规模检索数据集MS MARCO(Bajaj et al.,2016)。根据标准实践,我们报告了该基准的两个指标:nDCG@10和Recall@100.这个nDCG@10专注于检索到的前10个文档的排名,并擅长评估返回给人类的排名,例如在搜索引擎中。另一方面Recall@100与评估机器学习系统(如问答系统)中使用的检索器有关。事实上,这样的模型可以处理数百个文档,并忽略它们的排名(Izacard&Grave,2020b)。虽然nDCG@10是BEIR的主要指标,我们对Recall@100评估双编码器,因为我们的目标是开发可用于ML系统的检索器。此外,在许多设置中,可以使用更强大的模型(如交叉编码器)对检索到的文档进行重新排序,从而提高nDCG@10.
4.2基线
首先,我们将Contriever与BM25进行比较,后者不需要监督。在QA数据集上,我们将其与使用ICT和Sachan等人(2021)的Masked Salient Spans训练的稠密检索器进行了比较。在BEIR中,我们认为REALM(Guu等人,2020年)和RoBERTa大型与SimCSE(Gao等人,2021)微调的检索器是无监督的稠密检索器。我们还比较了在MS MARCO上训练的基于ML的检索器,它们分为三类:稀疏、密集和后期交互。对于稀疏方法,我们将其与Splade v2(Formal等人,2021)进行比较,后者使用BERT预处理模型计算文档的稀疏表示。对于密集方法,我们使用DPR(Karpukhin等人,2020)和ANCE(Xiong et al.,2020),它们是在NaturalQuestions或MS MARCO等监督数据上训练的双编码器。我们还将其与TAS-B(Hofstätter et al.,2021)和GenQ进行了比较,前者执行从交叉编码器到双编码器的蒸馏,后者使用生成模型创建合成查询-文档对。1对于后期交互,我们使用ColBERT(Khattab et al,以及用于对用BM25检索到的文档进行重新排序的交叉编码器。
4.3结果
首先,我们比较了完全无监督模型的性能,即在没有对MS MARCO或其他注释数据进行微调的情况下。在表1中,我们报告了两个问答数据集的检索性能:NaturalQuestions(Kwiatkowski et al.,2019)和TriviaQA(Joshi et al.,2017)。在这里,我们的模型具有强大的BM25基线竞争力(Ma等人,2021),例如,导致recall@100关于NaturalQuestions。它也优于之前提出的用ICT或显著跨度掩蔽训练的密集寻回器。在图1中,我们报告了recall@100BEIR基准上无监督模型的性能。有趣的是,我们观察到,在这种情况下,与BM25相比,Contriever在所有数据集上都具有竞争力,但TREC-COVID和Tóuche-2020除外。特别是,在针对recall@100.Contriever的性能也优于先前提出的无监督密集检索器,后者的性能通常低于BM25。对于nDCG@10,它更加强调最早检索到的文档,虽然Contriever在很大程度上缩小了无监督检索器和BM25之间的差距,但如表11所示,它仍然优于BM25。这种差异主要是由于BM25在两个具有特定特征的数据集上大大优于Contriever:Trec COVID和Tóuche-2020。Trec COVID是一个与COVID相关的信息检索数据集。然而,用于训练Contriever的数据是在新冠肺炎爆发之前收集的,因此可能无法进行调整。Tóuche-2020包含很长的文档,这些文档似乎没有得到密集的神经检索器的很好支持:即使经过监督训练,模型仍然落后于BM25。总的来说,这些结果显示了对比学习在训练完全无监督的密集检索器方面的潜力。
接下来,我们报告nDCG@10关于表2中在MS MARCO上训练的不同检索器的BEIR基准(recall@100见附录表10)。我们分别报告了每个数据集的结果,以及BEIR基准的14个数据集的平均值(不包括出于许可原因的3个数据集)。我们观察到,当用作预训练时,对比学习会带来强大的性能:contriever在密集双编码器方法中获得了最好的结果nDCG@10,是最先进的recall@100(提高平均水平recall@100从65.0到67.1)recall@100通过使用交叉编码器2对检索到的文档进行重新排序,可以进一步利用性能:这使BEIR基准的8个数据集达到了最先进的水平nDCG@10,以及平均值。需要注意的是,我们在MS MARCO上的微调程序比其他检索器更简单,因为我们使用了一种简单的负挖掘策略,而不使用蒸馏。我们的模型可能也会受益于这些检索器提出的改进,但这超出了本文的范围。
最后,我们在几个镜头设置中说明了与BM25相比,我们的检索器的优势,在这里我们可以访问少量的域内检索示例。这种设置在实践中很常见,基于词汇的方法,如BM25,无法利用小的训练集来调整其权重。在表3中,我们报告nDCG@10在来自BEIR的与最小训练集相关联的三个数据集上,范围从729到5500个查询。我们观察到,在这些小数据集上,我们的预训练比BERT预训练产生更好的结果,即使BERT作为中间步骤在MS MARCO上进行了微调。我们的预训练模型也优于BM25,显示了密集检索器在少数镜头设置中优于词汇方法的优势。更多细节见附录A.3。
5多语言检索
在本节中,我们说明了在执行多语言检索时,学习无监督密集检索器的另一个优势。虽然有英文的大型标记数据集,可以训练强大的密集检索器(如前几节所示),但不幸的是,低资源语言的情况并非如此。在这里,我们展示了无监督训练是一个很有前途的方向。首先,我们表明,无论是在完全无监督的环境中,还是通过对英语数据(如MS MARCO)的多语言模型进行微调,我们的方法都能带来强大的性能。其次,我们证明了我们的模型也可以通过从其他语言查询中检索英语文档来执行跨语言检索。基于词汇匹配的无监督检索器,如BM25,将获得较差的性能,尤其是对于具有不同脚本的成对语言,如英语和阿拉伯语。
5.1多语言预训练
我们的多语言模型mContriever是在29种语言上进行联合预训练的。多语言预训练在很大程度上遵循了前几节中讨论的方法,但它的不同之处在于与预训练数据和使用的超参数有关的一些特殊性。该模型使用在104种语言上训练的多语言版本的BERT mBERT进行初始化。对于预训练数据,我们考虑CCNet中包含的语言(Wenzek et al.,2020),这些语言也是我们评估数据集的一部分。这产生了一个包含29种语言的CCNet数据的训练集,详见表12。在预训练期间,对语言上的示例进行统一采样,即训练样本来自特定语言的概率对于所有语言都是相同的。我们观察到,如附录B.3所述,增加考虑进行预训练的语言数量通常会降低性能,这与多语言掩蔽语言模型的观察结果类似(Conneau等人,2019)。我们预先训练了我们的多语言mContriever,队列大小为32768。这通常提高了稳定性,并且能够补偿在多语言环境中观察到的额外不稳定性。附录B.1中给出了更详细的超参数。
5.2微调
用于信息检索的大型标记数据集通常只有英文版。因此,研究大型单语数据集是否可以用于多语言检索是很自然的。我们考虑在MS MARCO上微调我们预先训练的mContriever模型。这通常会提高所有语言的性能。在MS MARCO上训练的模型可以进一步微调,以使TyDi先生在该数据集上实现最先进的性能。关于微调的更多细节见附录B.2。
5.3评估
我们在两个不同的基准上对英语数据进行微调和不微调的情况下评估预训练模型的性能。首先,我们考虑TyDi先生(Zhang等人,2021),这是一个源自TyDiQA的多语言信息检索基准(Clark等人,2020)。给定一个问题,目标是在相同语言的维基百科文档库中找到相关文档。
在TyDi先生身上,文档库仅限于查询的语言。能够从另一种语言检索相关文档对于利用可能在所有语言中都不可用的大量信息源是可取的。为了评估跨语言检索性能,我们从MKQA中导出了一个评估设置(Longpre等人,2020)。给定一个特定语言的问题,我们在英文维基百科中进行检索,并评估检索到的文档中是否有英文答案。MKQA数据集通过用26种语言提供相同的问题和答案,实现了这一点。我们从原始MKQA数据集中删除了无法回答的问题、接受二进制是/否答案的问题以及答案较长的问题。
这将产生一组6619个查询的评估结果。应该注意的是,基于术语匹配(如BM25)的方法在这种跨语言检索环境中本质上是有限的,因为不同语言中的相似术语可能不匹配。
5.4基线
关于TyDi先生(Zhang等人,2021),我们报告了原始论文的结果。这包括一个BM25基线,一个使用DPR管道在NaturalQuestions上微调的模型,以及一个将两者结合的混合模型。
基于MKQA衍生的跨语言评估基准,我们考虑CORA问答管道的检索器(Asai等人,2021),该检索器基于包含英语自然问题和跨语言XOR-TyDi QA的数据集的组合进行训练,并基于翻译进行数据增强。
此外,为了隔离对比预训练的效果,我们还将在MS MARCO上微调的mContriever与其从mBERT初始化的未进行对比预训练时的对应物进行了比较。该模型在表格中被称为mBERT+MSMARCO。我们还报告了通过在MS-MARCO上微调XLM-R(Conneau等人,2019)获得的结果。对于这两个模型,除了温度之外,我们使用了用于在MS MARCO上微调mContriever的相同超参数,附录B.2中报告了更多细节。
5.5结果
我们在表4中报告了关于TyDi先生的结果。多语言预训练的有效性显而易见,因为在MS MARCO上微调的预训练模型在使用相同管道进行微调时,比没有预训练的模型取得了更好的性能。有趣的是,对这些纯英语数据集进行微调可以提高所有语言的性能。此外,我们的无监督mContriever在Recall@100,在对MS MARCO进行微调后,它实现了该度量的最先进性能。通过对TyDi先生的列车组进行微调,可以进一步提高性能。这对于MRR@100强调检索到的第一个文档的质量的度量。对于这个指标,我们的无监督模型仍然落后于BM25。
表5中报告了MKQA得出的跨语言检索基准的结果,以及Recall@100和Recall@20见附录表13和表14。有趣的是,我们只使用英语的监督训练数据,对MS MARCO进行微调的mContriever优于CORA检索器。此外,与TyDi先生报告的结果类似,在对MS MARCO进行微调之前添加多语言对比预训练,与没有预训练的对手相比,可以提高性能。在MKQA上,通过降低查询和文档的优先级来执行评估,我们观察到这提高了性能。这不会影响CORA检索器,它是基于mBERT的未封顶版本。
6消融研究
在本节中,我们将研究不同设计选择对我们的方法的影响。在这些消融中,所有模型都在英文维基百科上进行了200k梯度步的预训练,批量大小为2048(在32个GPU上)。MS MARCO上的每次微调都需要20k个梯度步长,批量大小为512(在8个GPU上),使用AdamW,没有硬底片。
MoCo与批量底片。
首先,我们比较了两种对比预训练方法:MoCo和批内否定。在批内负片中,负片的数量等于批大小,我们训练批大小为4096的模型,并将MoCo中的队列限制为相同数量的元素。该实验测量了对密钥使用动量编码器而不是对查询使用相同网络的效果。使用动量还可以防止通过关键点反向传播梯度。我们在表6中报告了未对MS MARCO进行微调的结果。我们观察到,两种方法之间的性能差异很小,尤其是在对MS MARCO进行微调之后。因此,我们建议使用MoCo作为我们的对比学习框架,因为它可以扩展到更多的负面例子,而不需要增加批量。
反面例子的数量。
接下来,我们通过改变MoCo算法的队列大小来研究对比损失中使用的否定数量的影响。我们考虑了2048到131072之间的值,并在图2中报告了结果。我们发现,平均而言,在BEIR基准测试中,增加否定的数量会带来更好的检索性能,尤其是在无监督的环境中。然而,我们注意到,这种影响并非对所有数据集都同样强烈。
数据扩充。
第三,我们比较了从单个文档或文本块生成成对正面示例的不同方法。特别是,我们比较了随机裁剪和反向完形填空任务,前者导致有重叠的配对,后者以前被认为是预训练检索器。有趣的是,如表7所示,在我们的设置中,随机裁剪策略优于反向完形填空任务。我们认为,与ICT相比,随机裁剪会导致密钥和查询的相同分布,从而使MoCo的训练更加稳定。这可能解释了这两种方法之间性能差异的部分原因。我们还研究了额外的数据扰动,如随机单词删除或替换,是否有利于检索。
训练数据。
最后,我们通过在维基百科、CCNet或两种数据源的混合上进行训练,研究了预训练数据对检索器性能的影响。我们在表8中报告了结果,并观察到两个数据源之间没有明确的赢家。不出所料,在更多样化的CCNet数据上进行训练,可以大大改进来自不同领域的数据集,如FiQA或Quora。另一方面,在像FEVER这样的数据集上,在维基百科上进行训练会带来更好的结果。为了两全其美,我们考虑了两种策略来混合这两个数据源。在“50/50%”策略中,示例是跨域统一采样的,这意味着一半的批次来自维基百科,另一半来自CCNet。在“统一”策略中,在数据集的并集上对示例进行统一采样。由于CCNet比维基百科大得多,这意味着大多数批次都来自CCNet。
微调对MS MARCO的影响。
为了将预训练的影响与微调对MS MARCO的影响隔离开来,我们将相同的微调应用于BERT基本无上限模型。我们在表9中报告了结果,并观察到当应用于BERT时,我们的微调会导致低于最先进的结果。因此,我们认为,与最先进的检索器相比,大部分改进都可以归因于我们的对比预训练策略。
7讨论
在这项工作中,我们建议探索对比预训练在学习密集文本检索器方面的局限性。我们使用MoCo技术,该技术允许训练具有大量反例的模型。我们做了几个有趣的观察:首先,我们表明,使用对比学习在没有监督的情况下训练的神经网络表现出良好的检索性能,这与BM25具有竞争力(尽管不是最先进的)。这些结果可以通过对监督的MS MARCO数据集进行微调来进一步改进,从而产生强有力的结果,特别是recall@100.基于这一观察结果,我们使用交叉编码器对使用我们的模型检索到的文档进行重新排序,从而在具有竞争力的BEIR基准上获得了新的最先进技术。我们还进行了广泛的消融实验,并观察到独立的随机裁剪似乎是训练寻回器的反向Cloze任务的有力替代方案。
A Contriever的技术细节
A.1对比预训练
对于在MS MARCO上进行微调的模型,我们使用MoCo算法He等人(2020),队列大小为131072,动量值为0.9995,温度为0.05。我们使用随机裁剪数据扩充,使用256个标记的文档,跨度大小在文档长度的5%到50%之间采样。文档只是从维基百科和CCNet数据中随机抽取的文本片段(Wenzek et al.,2020),其中一半的批次是从每个来源抽取的。我们还应用了概率为10%的令牌删除。我们使用AdamW(Loshchilov&Hutter,2019)优化器优化模型,学习率为5-10−5,批量大小为2048和500000步。我们使用公开可用的基于BERT的无上限模型来初始化网络。
A.2 MS MARCO的微调
对于MS MARCO的微调,我们不使用MoCo算法,只使用批量负片。我们使用ASAM优化器(Kwon等人,2021),学习率为10−5,批次大小为1024,温度为0.05,也用于预训练。我们用20000步的随机负例训练一个初始模型,用第一个模型挖掘硬负片,然后用这些负片重新训练第二个模型。每个查询都与一个金色文档和一个否定文档相关联,这在第一阶段是随机文档,在第二阶段是10%的时间的硬否定文档。对于每个查询,除了黄金文档之外,当前批次中的所有文档都将用作负数。
A.3很少进行射击训练
对于表3中给出的少数镜头评估,我们在每个数据集上训练500个时期,批次大小为256,批次内随机阴性。我们每100次梯度更新评估一次开发集的性能,并基于此指标执行早期停止。对于SciFact,我们随机保留10%的训练数据,并将其用作开发集,从而生成包含729个样本的训练集。
B使用mContriever的多语言检索
B.1多语言对比预训练的超参数
预训练的mContriever模型预训练500000步,队列大小为32768,温度为0.05,动量值为0.999。我们使用AdamW(Loshchilov&Hutter,2019)优化器对模型进行了优化,学习率为5-10−5。学习率遵循20000步的线性预热,然后线性衰减,直到训练结束。表12详细说明了用于预训练的语言。
B.2用于多语言微调的超参数
我们使用批内负片、AdamW优化器(Loshchilov&Hutter,2019)、10−5的学习率和1024个样本的批量大小(温度τ为0.05)对mContriever进行微调。在MS MARCO和TyDi先生的帮助下,对模型进行了20k梯度步的训练。我们注意到NaturalQuestions上的过度拟合,因此将训练减少到1k梯度步。在所有情况下,我们使用1000个梯度步长的预热,之后进行线性衰减。TyDi先生的硬底片是用MS MARCO训练的模型挖掘出来的。我们在MS MARCO和NaturalQuestions上使用硬否定并没有观察到显著的改进。
对于在没有对比预训练的情况下从mBERT(分别为XLM-R)初始化的模型的MS MARCO上的微调,我们使用1的温度τ(分别为5)。我们尝试了{10,5,2,1,0.1,0.05}的温度,并选择了能获得最佳性能的温度。我们观察到在较低的温度下性能有所下降。根据预训练期间使用的温度,我们将mContriever微调为τ=0.05。我们遵循用于Contriever训练的温度τ=0.05,并且没有测试用于多语言模型mContriever的对比预训练的其他温度。
B.3多语的诅咒
我们试图在不同的语言集合上预先训练模型。我们通常观察到,当扩展到更多语言时,性能会下降,这与Conneau等人(2019)在通用多语言掩码语言模型中观察到的情况类似。在表15中,我们报告了对TyDi先生的研究结果,该模型是在TyDi的11种语言上预先训练的,而本文其余部分使用的模型是在29种语言上预训练的,其中包括表12中详细描述的TyDi老师的11种语言。我们还报告了这些模型在MS MARCO上训练后的性能,最终对TyDi先生进行了进一步的微调。对于仅在11种语言上预训练的模型,无监督模型的性能和在MS MARCO上微调后的性能似乎更好。在对TyDi先生进行微调后,这种差异得到了缓解。
网友评论