• 【自然语言处理】【向量表示】AugSBERT:改善用于成对句子评分任务的Bi-Encoders的数据增强方法


    AugSBERT:改善用于成对句子评分任务的Bi-Encoders的数据增强方法
    《Augmented SBERT: Data Augmentation Method for Improving Bi-Encoders for Pairwise Sentence Scoring Tasks》

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

    相关博客:
    【自然语言处理】【对比学习】SimCSE:基于对比学习的句向量表示
    【自然语言处理】BERT-Whitening
    【自然语言处理】【Pytorch】从头实现SimCSE
    【自然语言处理】【向量检索】面向开发域稠密检索的多视角文档表示学习
    【自然语言处理】【向量表示】AugSBERT:改善用于成对句子评分任务的Bi-Encoders的数据增强方法
    【自然语言处理】【向量表示】PairSupCon:用于句子表示的成对监督对比学习

    一、简介

    ​ 句子对评分任务在 NLP \text{NLP} NLP中被广泛使用。其可以被用于信息检索、问答、重复问题检测和聚类。对于许多包含句子对评分任务达到sota的方法是使用 BERT \text{BERT} BERT。两个句子被传递至网络中,并且注意力机制被应用在所有的输入tokens中。这种两个句子被同时传递至网络中的方法称为cross-encoder

    cross-encoder的一个缺点是对于许多任务来说计算量太大。例如,对10000个句子进行聚类,cross-encoder需要 n 2 n^2 n2的复杂度,使用 BERT \text{BERT} BERT的话需要65个小时。端到端的信息检索也不太可能使用cross-encoder,因为其不能够为输入返回独立的表示,用于被索引。作为对比,像 Sentence BERT \text{Sentence BERT} Sentence BERT这样的bi-encoder独立编码句子,并将其映射至稠密向量空间。这样就可以有效的索引和比较。例如,10000个句子的聚类复杂度从65个小时减少到5秒。许多真实世界中的应用依赖于bi-encoders的质量。

    请添加图片描述

    bi-encoder的缺点是效果差于cross-encoder。上图是作者在流行的英文 STS \text{STS} STS基准数据集上比较微调的cross-encoder(BERT)和微调的bi-encoder(SBERT)

    ​ 当仅有很少训练数据可用时的效果差距最大。BERT cross-encoder能够同时比较两个输入,而SBERT bi-encoder必须要解决更具挑战性的任务,将输入独立映射至有意义的向量空间,这需要足够数量的训练样本进行微调。

    ​ 在本文中,作者呈现了一个数据增强方法,其称为 Augmented SBERT(AugSBERT) \text{Augmented SBERT(AugSBERT)} Augmented SBERT(AugSBERT),其使用BERT cross-encoder来改善SBERT bi-encoder的表现。具体来说,使用cross-encoder来标注新的输入样本对,其会被添加至bi-encoder的训练集合中。SBERT bi-encoder在更大的增强训练集上进行微调,其能够显著改善效果。正如作者所示,选择用于cross-encoder进行软标注的输入样本对,对改善效果来说至关重要。本文的方法可以简单的应用在许多成对分类任务和回归问题中。

    ​ 首先,作者在4个任务中评估了提出的 AugSBERT \text{AugSBERT} AugSBERT方法: Argument similarity \text{Argument similarity} Argument similarity semantic textual similarity \text{semantic textual similarity} semantic textual similarity duplicate question detection \text{duplicate question detection} duplicate question detection news paraphrase identification \text{news paraphrase identification} news paraphrase identification。可以观察到,相对于目前效果最好的 SBERT bi-encoder \text{SBERT bi-encoder} SBERT bi-encoder,能够增加百分之1到6个点。其次,作者展示了 AugSBERT \text{AugSBERT} AugSBERT在领域适应中的优势。由于bi-encoder不能将新的领域映射至可感知的空间,与 BERT cross-encoders \text{BERT cross-encoders} BERT cross-encoders相比, SBERT bi-encoder \text{SBERT bi-encoder} SBERT bi-encoder在目标域上的效果要下降的更多。在这种场景中, AugSBERT \text{AugSBERT} AugSBERT实现了37个百分点的效果增长。

    二、Augmented SBERT

    ​ 给定一个预训练的、且效果很好的cross-encoder,通过特定的采样策略来采样句子对并使用交叉编码器进行标注。将这些弱标注的样本称为silver dataset,并将它们合并至原始的训练数据集中。基于扩展后的训练集来训练bi-encoder。我们将这个模型称为 Augmented SBERT(AugSBERT) \text{Augmented SBERT(AugSBERT)} Augmented SBERT(AugSBERT)。整个过程如上图所示:

    1. 样本对采样策略

    ​ 使用cross-encoder标注的新样本对可以是新数据、也可以重新利用训练集中独立的句子来合成。在本文的实验中,重新利用原始训练集中的句子。这当然是在不是所有的组合都并标注的情况下才是可能的。然而,这种情况很少发生,因为对于 n n n个句子则有 n × ( n − 1 ) / 2 n\times (n-1)/2 n×(n1)/2种可能的合并方案。将所有可能的合并样本进行弱标注可能会带来极大的计算量,并且可能并不会带来效果改善。相反,采用正确的采样策略对于改善效果至关重要。

    • Random Sampling(RS)

      随机采样一个句子对并使用cross-encoder进行弱标注。随机采样两个句子通常会带来不相似样本对,正样本对非常的少。这种有偏标签分布使得silver dataset严重倾向于负样本。

    • Kernel Density Estimation(KDE)

      目标是使得silver dataset的标签分布类似于原始的训练集。为此,作者使用弱标注的方式标注了大量的随机采样样本对,然后仅保留其中的部分样本对。对于分类任务,作者保留所有的正样本对。随后从余下的随机负样本对中采样一部分负样本对,使其正负比例与原始训练集相一致。对于回归任务,使用核密度估计 (kernel density estimation,KDE) \text{(kernel density estimation,KDE)} (kernel density estimation,KDE)来估计针对分数 s s s的连续密度函数 F g o l d ( s ) F_{gold}(s) Fgold(s) F s i l v e r ( s ) F_{silver}(s) Fsilver(s)。然后,使用一个以概率 Q ( s ) Q(s) Q(s)保留采样分数 s s s的采样函数来最小化两个函数间的 KL \text{KL} KL散度。
      Q ( s ) = { 1 i f    F g o l d ( s ) ≥ F s i l v e r ( s ) F g o l d ( s ) F s i l v e r ( s ) i f    F g o l d ( s ) < F s i l v e r ( s ) Q(s)=

      {1ifFgold(s)Fsilver(s)Fgold(s)Fsilver(s)ifFgold(s)<Fsilver(s)" role="presentation" style="position: relative;">{1ifFgold(s)Fsilver(s)Fgold(s)Fsilver(s)ifFgold(s)<Fsilver(s)
      Q(s)={1ifFgold(s)Fsilver(s)Fsilver(s)Fgold(s)ifFgold(s)<Fsilver(s)
      注意, KDE \text{KDE} KDE采样策略的计算效率比较低,因为它需要标注许多随机样本,而这些样本随后可能被丢弃。

    • BM25 Sampling(BM25)

      在信息检索中, Okapi BM25 \text{Okapi BM25} Okapi BM25算法是基于词法重叠的,并且常被用于许多搜索引擎的评分函数。作者利用 ElasticSearch \text{ElasticSearch} ElasticSearch来创建索引,用来更快的检索query相关的结果。在作者的实验中,对每个句子都建立的索引,且每个query都会检索 top-k \text{top-k} top-k相似的句子。随后会使用cross-encoder来标注这些样本对。建立索引和检索相似句子效率高,并且所有弱标注的样本对都会被用于silver dataset

    • Sematic Search Sampling(SS)

      BM25 \text{BM25} BM25的一个缺点是,仅有单词覆盖的语句才会被发现。没有或者很少有重叠单词的同义句子并不会被返回,因此也不会称为silver dataset的一部分。作者在原始训练集上训练了一个bi-encoder,并使用其进一步采用相似句子对。作者使用 cosine \text{cosine} cosine相似度并检索最相似的 top k \text{top k} top k句子。对于规模较大的数据,则使用类似 Faiss \text{Faiss} Faiss的近似最近邻来快速检索最相似的 k k k个句子。

    • BM25+Semantic Search Sampling(BM25-S.S.)

      同时使用 BM25 \text{BM25} BM25和语言检索策略 SS \text{SS} SS。聚合两个策略有助于捕获词法和语义相似的句子,但会使标签分布倾向于负样本对。

    2. 种子优化

    Dodge \text{Dodge} Dodge等人的研究显示,像 BERT \text{BERT} BERT这样基于 Transformers \text{Transformers} Transformers的模型高度的依赖随机数种子,因为其收敛到不同的最小值,则会以不同的方式扩展至未见过的数据。在本文的实验中,作者应用了种子优化 (seed optimization) \text{(seed optimization)} (seed optimization):使用5个随机数种子训练模型,并选择在验证集上表现最好的模型。为了加速这个过程,在训练step的20%应用early stopping,仅继续训练表现最好的模型直至结束。

    三、 AugSBERT \text{AugSBERT} AugSBERT的领域适应

    ​ 目前为止,讨论 AugSBERT \text{AugSBERT} AugSBERT都是在领域内的设置中,即当训练集和测试集来自相同的领域。然而,作者期望 SBERT \text{SBERT} SBERT在领域外数据具有更高的表现。这是因为 SBERT \text{SBERT} SBERT不能将未见过的句子映射至有意义的空间。不幸的是,新领域的标注数据通常是不可用的。

    ​ 因此,作者评估了提出的数据增强策略对于领域适应的效果:先在包含标注数据的源领域数据上训练cross-encoder。在微调后,使用微调的cross-encoder来标注目标域。一旦标注完成,在标注的目标域句子对上训练bi-encoder

    四、实验

    请添加图片描述

  • 相关阅读:
    十大经典排序算法(java实现、配图解,附源码)
    【计网】(四)物理层、数据链路层
    什么是分布式软件系统
    nginx部署vue项目(访问路径加前缀)
    目标检测YOLO实战应用案例100讲-基于改进YOLO v5的排水管网缺陷智能识别(续)
    二叉树最大宽度 : 简单 DFS 运用题
    amd Ubuntu opencl 安装
    SpringMVC - 以 Servlet 3.0 的方式搭建 SSM 框架
    C++深入学习part_1
    Go语言 包管理
  • 原文地址:https://blog.csdn.net/bqw18744018044/article/details/125959975