领域适应

领域适应的目标是在无需标注训练数据的情况下,使文本嵌入模型适应您的特定文本领域。

领域适应仍然是一个活跃的研究领域,目前还没有完美的解决方案。然而,在我们最近的两篇论文 TSDAEGPL 中,我们评估了几种将文本嵌入模型适应特定领域的方法。您可以在我关于无监督领域适应的演讲中找到这些方法的概述。

领域适应 vs. 无监督学习

存在用于无监督文本嵌入学习的方法,但它们通常表现不佳:它们无法真正学习领域特定的概念。

一种更好的方法是领域适应:您将拥有来自特定领域的无标签语料库以及一个现有的有标签语料库。您可以在此处找到许多合适的有标签训练数据集:Embedding Model Datasets Collection

自适应预训练

使用自适应预训练时,您首先使用例如掩码语言建模TSDAE在您的目标语料库上进行预训练,然后在一个现有训练数据集上进行微调(参见Embedding Model Datasets Collection)。

Adaptive Pre-Training

在我们的 TSDAE 论文中,我们评估了四项领域特定句子嵌入任务上的几种领域适应方法

方法 AskUbuntu CQADupStack Twitter SciDocs 平均
零样本模型 54.5 12.9 72.2 69.4 52.3
TSDAE 59.4 14.4 74.5 77.6 56.5
MLM 60.6 14.3 71.8 76.9 55.9
CT 56.4 13.4 72.4 69.7 53.0
SimCSE 56.2 13.1 71.4 68.9 52.4

正如我们所见,当您首先在特定语料库上进行预训练,然后在使用提供的标注训练数据进行微调时,性能可以提高多达 8 个百分点。

GPL 中,我们评估了这些方法在语义搜索中的表现:给定一个短查询,找到相关的段落。在这里,性能可以提高多达 10 个百分点。

方法 FiQA SciFact BioASQ TREC-COVID CQADupStack Robust04 平均
零样本模型 26.7 57.1 52.9 66.1 29.6 39.0 45.2
TSDAE 29.3 62.8 55.5 76.1 31.8 39.4 49.2
MLM 30.2 60.0 51.3 69.5 30.4 38.8 46.7
ICT 27.0 58.3 55.3 69.7 31.3 37.4 46.5
SimCSE 26.7 55.0 53.2 68.3 29.0 37.9 45.0
CD 27.0 62.7 47.7 65.4 30.6 34.5 44.7
CT 28.3 55.6 49.9 63.8 30.5 35.9 44.0

自适应预训练的一个主要缺点是计算开销大,因为您必须首先在您的语料库上运行预训练,然后在一个带标签的训练数据集上进行有监督学习。带标签的训练数据集可能非常大(例如,all-*-v1 模型已在超过 10 亿个训练对上进行过训练)。

GPL:生成式伪标签

GPL 克服了上述问题:它可以应用于微调模型之上。因此,您可以使用其中一个预训练模型并将其适应您的特定领域

GPL_Overview

训练时间越长,您的模型效果越好。在我们的实验中,我们在 V100-GPU 上训练模型大约 1 天。GPL 可以与自适应预训练结合使用,这可以进一步提升性能。

GPL_Steps

GPL 步骤

GPL 分三个阶段进行

GPL Architecture
  • 查询生成:对于我们领域中的给定文本,我们首先使用 T5 模型为给定文本生成一个可能的查询。例如,当您的文本是“Python 是一种高级通用编程语言”时,模型可能会生成一个像“什么是 Python”这样的查询。您可以在我们的doc2query-hub上找到各种查询生成器。

  • 负例挖掘:接下来,对于生成的查询“什么是 Python”,我们从语料库中挖掘负例段落,即与查询相似但用户不会认为相关的段落。这样的负例段落可能是“Java 是一种高级、基于类、面向对象的编程语言。”。我们使用稠密检索进行挖掘,即我们使用现有文本嵌入模型之一并检索给定查询的相关段落。

  • 伪标签:在负例挖掘步骤中,我们可能会检索到实际与查询相关的段落(例如“什么是 Python”的另一个定义)。为了解决这个问题,我们使用Cross-Encoder对所有(查询,段落)对进行评分。

  • 训练:一旦我们有了三元组(生成的查询、正例段落、挖掘的负例段落)以及 Cross-Encoder 对(查询,正例)和(查询,负例)的评分,我们就可以开始使用MarginMSELoss训练文本嵌入模型。

伪标签步骤非常重要,与之前将段落仅视为正例(1)或负例(0)的 QGen 方法相比,它带来了性能的提升。正如我们在下图中看到的,对于生成的查询(“什么是期货合约”),负例挖掘步骤会检索到部分或高度相关于生成查询的段落。使用 MarginMSELoss 和 Cross-Encoder,我们可以识别这些段落,并教导文本嵌入模型这些段落也与给定查询相关。

GPL Architecture

下表概述了 GPL 与自适应预训练(MLM 和 TSDAE)的比较。如前所述,GPL 可以与自适应预训练结合使用。

方法 FiQA SciFact BioASQ TREC-COVID CQADupStack Robust04 平均
零样本模型 26.7 57.1 52.9 66.1 29.6 39.0 45.2
TSDAE + GPL 33.3 67.3 62.8 74.0 35.1 42.1 52.4
GPL 33.1 65.2 61.6 71.7 34.4 42.1 51.4
TSDAE 29.3 62.8 55.5 76.1 31.8 39.4 49.2
MLM 30.2 60.0 51.3 69.5 30.4 38.8 46.7

GPL 代码

您可以在此处找到 GPL 的代码:https://github.com/UKPLab/gpl

我们使代码易于使用,您只需传递您的语料库,其余所有都由训练代码处理。

引用

如果您觉得这些资源有帮助,请随时引用我们的论文。

TSDAE:使用基于 Transformer 的序列去噪自编码器进行无监督句子嵌入学习

@inproceedings{wang-2021-TSDAE,
    title = "TSDAE: Using Transformer-based Sequential Denoising Auto-Encoderfor Unsupervised Sentence Embedding Learning",
    author = "Wang, Kexin and Reimers, Nils and Gurevych, Iryna", 
    booktitle = "Findings of the Association for Computational Linguistics: EMNLP 2021",
    month = nov,
    year = "2021",
    address = "Punta Cana, Dominican Republic",
    publisher = "Association for Computational Linguistics",
    pages = "671--688",
    url = "https://arxiv.org/abs/2104.06979",
}

GPL:用于稠密检索无监督领域适应的生成式伪标签:

@inproceedings{wang-2021-GPL,
    title = "GPL: Generative Pseudo Labeling for Unsupervised Domain Adaptation of Dense Retrieval",
    author = "Wang, Kexin and Thakur, Nandan and Reimers, Nils and Gurevych, Iryna", 
    journal= "arXiv preprint arXiv:2112.07577",
    month = "12",
    year = "2021",
    url = "https://arxiv.org/abs/2112.07577",
}