标题
基于对比学习的无监督密集信息检索
作者和出处
Meta AI Research(Meta AI研究所)
摘要
近年来,信息检索领域出现了基于神经网络的密集检索器,作为基于词频的经典稀疏方法的替代。这些模型在有大训练数据的数据集和任务上取得了最先进的结果。然而,它们在新应用中没有训练数据时迁移效果较差,并且在诸如 BM25 等无监督词频方法的性能面前落败。在这项工作中,我们探讨了对比学习作为一种训练无监督密集检索器的方法,并表明它在各种检索设置中导致了强大的性能。在我们的 BEIR 基准测试中,我们的无监督模型在 15 个数据集中有 11 个在 Recall@100 上优于 BM25。当使用我们的对比模型作为微调前的预训练,无论是使用领域内几千个示例,还是使用大型 MS MARCO 数据集,都可以在 BEIR 基准测试中取得改进。最后,我们评估了我们的方法在多语言检索中的应用,在这种情况下,训练数据甚至比英语更少,并表明我们的方法导致了强大的无监督性能。我们的模型在仅使用监督英语数据进行微调并在斯瓦希里语等低资源语言上进行评估时,也表现出强大的跨语言转移。
引言和结论
文档检索是一个在大量集合中寻找相关文档来回答特定查询的任务。
传统的检索系统依赖查询和文档之间的近乎精确的匹配,导致其泛化效果不佳。
神经网络具有强大的检索能力,但是创建数据集需要手动匹配。在大型数据集上几乎不可能做到。所以,基于神经网络的稠密检索器的效果往往不如基于词频的做法,因为基于词频的做法是无监督的。此外,大型数据集通常不包含除英语以外的其他版本,因此,使用大量的监督数据集不适合训练多语言的检索系统。
在本文中,我们做出了以下贡献。首先,我们证明了对比学习可以导致强大的无监督检索器:我们的模型在 BEIR 基准测试的 most 数据集上取得了与 BM25 竞争的 Recall@100 结果。其次,在少量示例(few-shot)设置中,我们证明了我们的模型可以从少量训练示例中受益,并获得了比从诸如 MS MARCO 之类的大型数据集中转移的模型更好的结果。第三,当我们使用 MS MARCO 进行微调之前,我们的技术在 BEIR 基准测试中导致了强大的性能。我们进行了一些 ablation 以激发我们的设计选择,并表明裁剪比反向 Cloze 任务效果更好。最后,我们使用对比学习训练了一个多语言密集检索器,并表明它取得了最先进的性能。
方法
用一个Transformer架构的编码器同时对query和doc分别进行编码,最后一层取平均,然后点积求相似性。
$$s(q,d)=\langle f_\theta(q),f_\theta(d)\rangle $$
如果对query和doc分别设计不同的编码器进行编码,可能会降低零样本和少样本情况下的鲁棒性。
在未标注的文档上进行无监督学习
对比学习
对比学习是基于每个文档都是独一无二的事实来实现的。对比损失通常是通过对文件进行区分来学习。这种损失比较正样本对(来自同一个文档)或者负样本对(来自不同文档)的文件表示。
给定一个查询q,一个与q相关的正样本文档k+,一个负文档池,contrastive InfoNCE loss被定义为$\mathcal{L}(q,k_+)=-\frac{\exp(s(q,k_+)/\tau)}{\exp(s(q,k_+)/\tau)+\sum_{i=1}^K\exp(s(q,k_i)/\tau)}$,τ是一个温度参数。这种损失鼓励正样本取得高分,负样本取得低分。这种损失也有另一种含义,就是通过查询在所有负样本中尝试取出正样本。
从单个文档中构建正对
反完形填空(Inverse Cloze Task),完型填空任务是根据上下文预测给定位置文本,而反向完型填空是根据给定文本预测上下文。
构建大量的负样本对
第一种方法是使用同一批次的其他示例来生成负样本