文本匹配——【NAACL 2021】AugSBERT

背景与挑战

论文地址:https://arxiv.org/abs/2010.08240

目前,最先进的 NLP 架构模型通常重用在 Wikipedia 和 Toronto Books Corpus 等大型文本语料库上预训练的 BERT 模型作为基线 。通过对深度预训练的 BERT 进行微调,发明了许多替代架构,例如 DeBERT、RetriBERT、RoBERTa ……它们对各种语言理解任务的基准进行了实质性改进。在 NLP 中的常见任务中,成对句子评分在信息检索、问答、重复问题检测或聚类等方面有广泛的应用。通常,提出了两种典型的方法:Bi-encoders 和 Cross-encoders。

  • Cross-encoders:对给定的输入和标签候选执行完全(交叉)self-attention,并且往往比它们的 Bi-encoders 获得更高的准确度。但是,它必须重新计算每个输入和标签的编码;结果,它们无法检索端到端信息,因为它们不会为输入产生独立的表示,并且在测试时速度非常慢。例如,10,000 个句子的聚类具有二次方复杂度,需要大约 65 小时的训练。

  • 文本匹配——【NAACL 2021】AugSBERT_第1张图片

  • Bi-encoders:分别对输入和候选标签执行 self-attention,将它们映射到密集向量空间,然后在最后将它们组合起来以获得最终表示。因此,Bi-encoders 能够索引编码的候选并比较每个输入的这些表示,从而加快预测时间。在聚类 10,000 个句子的相同复杂度下,时间从 65 小时减少到大约 5 秒。先进的 Bi-encoder Bert 模型的性能由 Ubiquitous Knowledge Processing Lab (UKP-TUDA) 提出,称为 Sentence-BERT (SBERT)。

  • 文本匹配——【NAACL 2021】AugSBERT_第2张图片

另一方面,没有一种方法在所有方面都是完美的,Bi-encoders 也不例外。与 Cross-encoders 方法相比,Bi-encoders 方法的性能通常较低,并且需要大量的训练数据。原因是Cross-encoders 可以同时比较两个输入,而Bi-encoders 必须独立地将输入映射到有意义的向量空间,这需要足够数量的训练示例进行微调。

为了解决这个问题,发明了“Poly-encoders”。 “Poly-encoders”使用两个独立的转换器(类似于 cross-encoders),但只在顶层的两个输入之间应用注意力,导致比 Bi-encoders 更好的性能增益和比 Cross-encoders 更大的速度增益。然而,“Poly-encoders”仍然有一些缺点:由于不对称的得分函数,它们不能应用于具有对称相似性关系的任务,并且“Poly-encoders”的表示不能被有效地索引,导致大语料库大小的检索任务出现问题。
文本匹配——【NAACL 2021】AugSBERT_第3张图片

在本文中,我想介绍一种可以有效地同时使用Cross-encoders 和 Bi-encoders 的新方法——数据增强。这种策略被称为增强 SBERT (AugSBERT) ,它使用 BERT Cross-encoders 来标记更大的输入对集,以增强 SBERT Bi-encoders 的训练数据。然后,SBERT Bi-encoders 在这个更大的增强训练集上进行微调,从而显着提高性能。这个想法与计算机视觉中《Self-Supervised Learning by Relational Reasoning》非常相似。因此,简单来说,我们可以认为它是自然语言处理中的自监督学习。有关详细信息,将在下一节中介绍。

技术亮点

用于成对句子回归或分类任务的增强 SBERT 方法存在三种主要场景。

场景 1:完整的注释数据集(所有标记的句子对)

在这种情况下,应用直接的数据增强策略来准备和扩展标记的数据集。共有三个最常见的级别:字符,单词,句子:
文本匹配——【NAACL 2021】AugSBERT_第4张图片
但是,单词级别是最适合句子对任务的级别。基于训练 Bi-encoders 的性能,推荐的方法很少:通过上下文词嵌入(BERT、DistilBERT、RoBERTA 或 XLNet)插入/替换词或通过同义词替换词(WordNet、PPDB)。创建增强文本数据后,将其与原始文本数据组合并放入 Bi-Encoders。

然而,在标记数据集很少或特殊情况下,所示的简单单词替换或增量策略对句子对任务中的数据增强没有帮助,甚至与没有增强的模型相比导致性能更差。

简而言之,直接的数据增强策略涉及三个步骤:

  • 第 1 步:准备完整标记的语义文本相似性数据集(gold data)
  • 第 2 步:替换成对句子中的同义词(silver data)
  • 第 3 步:在扩展(gold + silver)训练数据集上训练双编码器 (SBERT)
    文本匹配——【NAACL 2021】AugSBERT_第5张图片

场景 2:有限或少的注释数据集(很少有标签的句子对)

在这种情况下,由于标记数据集(gold data)有限,因此使用预训练的 Cross-encoders 对未标记数据(相同域)进行弱标记。然而,随机选择两个句子通常会导致不同的(否定)对;而阳性对极为罕见。这使 silver dataset 的标签分布严重偏向负对。因此,建议采用两种适当的抽样方法:

BM25 Sampling (BM25):该算法基于词汇重叠,通常被许多搜索引擎用作评分函数。从唯一索引的句子中查询和检索前 k 个相似句子。

语义搜索采样 (SS):预训练的 Bi-Encoders (SBERT) 用于检索我们集合中前 k 个最相似的句子。对于大型集合,可以使用像 Faiss 这样的近似最近邻搜索来快速检索 k 个最相似的句子。它能够解决 BM25 在没有或很少词汇重叠的同义句上的缺点。

之后,采样的句子对将通过预训练的 Cross-encoders 进行弱标记,并与黄金数据集合并。然后,在这个扩展的训练数据集上训练双编码器。这种模型称为增强 SBERT (AugSBERT)。AugSBERT可能会提高现有Bi- encoders 的性能并减少与Cross-encoders 的差异。

总之,针对有限数据集的AugSBERT涉及三个步骤:

  • 第 1 步:在小型(gold dataset)上微调 Cross-encoders (BERT)
  • 步骤 2.1:通过重组创建对并通过 BM25 或语义搜索减少对
  • 步骤 2.2:使用 Cross-encoders(silver dataset)弱标记新对
  • 第 3 步:在扩展(gold + silver)训练数据集上训练 bi-encoder (SBERT)
    文本匹配——【NAACL 2021】AugSBERT_第6张图片

场景 3:没有带注释的数据集(只有未标记的句子对)

当我们希望 SBERT 在不同的域数据(没有注释)中获得高性能时,就会发生这种情况。基本上,SBERT 无法将带有没见过的术语的句子映射到合理的向量空间。因此,提出了相关的数据增强策略域适配:

第 1 步:在源数据集上从头开始训练 Cross-encoders (BERT)。
第 2 步:使用这些 Cross-encoders (BERT) 标记您的目标数据集,即未标记的句子对
第 3 步:最后,在标记的目标数据集上训练 Bi-encoders (SBERT)
一般来说,当源域相当通用而目标域相当具体时, AugSBERT 会受益很多。反之,当它从特定域转到通用目标域时,性能只略有提高。
文本匹配——【NAACL 2021】AugSBERT_第7张图片

你可能感兴趣的:(自然语言处理,深度学习,搜索推荐中的深度匹配,机器学习,聚类,python)