领域自适应

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

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

领域自适应 vs. 无监督学习

存在 无监督文本嵌入学习 的方法,然而,它们的表现通常相当差:它们实际上无法学习特定领域的概念。

一个更好的方法是领域自适应:在这里,您拥有来自您特定领域的未标注语料库以及现有的标注语料库。您可以在这里找到许多合适的标注训练数据集:嵌入模型数据集集合

自适应预训练

当使用自适应预训练时,您首先在目标语料库上使用例如 Masked Language ModelingTSDAE 进行预训练,然后在现有的训练数据集上进行微调(参见 嵌入模型数据集集合)。

Adaptive Pre-Training

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

方法 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 训练文本嵌入模型。

伪标签步骤非常重要,这导致了相对于之前的方法 QGen 的性能提升,QGen 只是将段落视为正样本 (1) 或负样本 (0)。正如我们在下图中所看到的,对于生成的查询(“什么是期货合约”),负样本挖掘步骤检索到的段落部分或高度相关于生成的查询。使用 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",
}