对比学*之经典模型

对比学*的一个关键思想:

  如何构建对比的数据对,更细致的如何构建正样本和负样本,更好的正样本和负样本能够帮助模型更好的理解数据。

 

一、CIEAR

  • 预训练模型主要解决的是token级别的特征抽取,很少做句子级别的特征抽取。BERT仅仅在词嵌入的表现优秀,但是在句子级别的建模任务表现不一定会有多优秀。本文提出的方法CLRAR是针对句子级别特征抽取任务做的工作。
  • 设计了四种数据增强的方式:
    • random-words-deletion随机词语删除;
    • spans-deletion随机连续token删除;
    • synonym-substitution同义词替换;
    • reordering重新排序。
  • CLEAR设计了mask language modal去表征词级别的特征,用对比学*表征句子级别的特征。对比学*将相同句子数据增强以后的结果拉*(作为正例),将不同句子以及不同句子的数据增强拉远(作为负例)。通过将句意相似的句子彼此拉*的方式,更好的学*句子级别的语义信息。
  • Model:首先输入句子经过数据增强之后,分别送给一个 Transformer encoder,然后得到的输出经过一个映射函数 g 映射到同一个表示空间,最后就是一个对比学*的损失约束整个模型进行训练。
  • 针对每个 minibatch,随机选择两种数据增强的方法。经过数据增强之后,两个来自同一个句子的增强句子就认为是正样本,其他所有来自同一个 minibatch 的增强样本就认为是这两个正样本的负样本。
  • 损失函数:
    • 正样本的损失函数:
    • 所有正样本对的损失函数之和(m(i,j)是一个函数,当i和j是一个正对时,返回1,否则返回0。):
    • 整个方法的损失函数(融合原来的 Mask Language Model(MLM)的损失函数):
  • 模型:

      

 

二、DeCLUTR

  • 一些预训练模型可以在无监督的场景下进行学*,以往的预训练任务都是token-leval的编码,注重编码token-level的特征,但是对句子级的特征编码效果不是很好。该文章采用对比学*的方法拉*相同文章中句子embedding之间的距离,拉远不同文章之间句子embedding之间的距离。
  • 同一个文章中抽样出的几个句子互为正样本,不同文章中抽样出的句子互为负样本。
  • 数据集都是一个一个的文档,设一个batchsize是 N(表示文档的数目),其中每一个文档有 A个锚点,再从每一个文章中抽取出 P个正样本。因此对于每一个batch,其中有 AN个锚点 ,每个锚点有P个正样本将anchor span及其相应的positive spans 分别表示为si 和si+pAN
  • 模型流程:对锚点和正样本进行编码f(),对所有的正样本进行均值化g()。利用对比学*的损失,约束整个模型进行训练。
  • 损失函数:
    • 对所有正样本进行均值化:
    • 每一个正样本的损失:
    • 模型的对比损失(将每一个锚点的loss加在一起):
    • 整个方法的损失(加上 MLM loss):
  • 模型:

      

三、SCCL

  • 结合聚类算法与样例级的对比学*,同时优化intra-cluster与inter-cluster
  • 文章致力于解决无监督聚类任务。所谓无监督聚类任务是在表征空间内通过特定的相似度量方法区分不同的语义簇。
  • SCCL结合了bottom-up的实例对比学*和top-down的聚类,取得了更好的聚类结果。
  • SCCL由3部分组成:神经网络特征抽取层、clustering head 和 Instance-CL head。
  • 神经网络特征抽取层
    • 将输入映射到向量表示空间。
  • clustering head
    • 是一个线性映射层。
    • 聚类任务:假设有K个类别(簇),每个类别用其类心来表示: [公式] 。原始实例 [公式] 在表示空间中的表征如下: [公式] 。SCCL使用t分布计算原始实例[公式]被分为第k个类别的概率:
    • SCCL 使用一个线性映射层(cluster head ),来*似每个类别的中心,并利用一个辅助分布对其进行迭代优化。辅助概率:
      •        其中 [公式] 可以视为soft簇频率的一个mini-batch *似。该目标分布首先通过一项二阶的soft分配概率 [公式] 使其变得尖锐,然后通过相关类别频率对其归一化。如此可以促使从高置信的类别中进行学*,并同时减缓类别不平衡所造成的偏差。
    • 通过KL散度将类别分布概率( [公式] )向目标分布( [公式] )靠*:
    • clustering loss
  • Instance-CL head
    • 由单层MLP组成,其激活函数使用的是ReLU。
    • 先用数据扩增方法对样本数据进行增强得到一个辅助数据集,再基于此数据集进行优化。一个batch size为M 的每个实例通过数据扩增方法得到2个扩增的实例(此时扩增数据集有2M个实例)。相同扩增源的实例对视为一对正样本,剩余的2M-2个实例则视为负样本。在优化过程使用 contrastive loss 使来自相同实例的增强样本在表示空间上彼此靠*,而来自不同实例的增强样本在表示空间上彼此远离。
    • 每一对正样本的损失:
    • Instance-CL loss(整个扩增数据集上的损失):
  • 总的loss:
  • 在SearchSnippets数据集上TSNE可视化结果:(其中Clustering和 Instance-CL 分别指只使用SCCL中一种head的结果。结合2种head的SCCL聚类结果更优~即使用对比学*的SCCL可以将各个重叠的类别分散开。)
  • 模型:

     

 

四、SimCSE

  • 随机dropout两次构造正样本对,用dropout替换了传统的数据增强方法。
  • 提出了两种SimCSE变体,有监督和无监督,主要不同在于对比学*的正负例的构造
  • 无监督:
    • 一个句子通过encoder得到sentence embedding。同一个句子输入两遍,通过不同的drop mask机制得到的sentence embedding为正例;而其他句子得到的sentence embedding是作为负例。
    • loss:
  • 有监督:
    • 利用标注数据来构造对比学*的正负例子。为了探究哪种标注数据更有利于句子向量的学*,文中在多种数据集上做了实验,最后发现NLI数据最有利于学*句子表示。
    • NLI数据集,有三个标签,entailment(蕴涵),neutral(中立),contradiction(相反)。使用entailment作为正例,contradiction作为负例。
    • loss:
  • 模型:

      

 

五、BERT-CT

  • 通过同一个句子在不同预训练模型中的embedding构造正样本对。

 

六、ConSERT

  • 无监督场景下使用多种数据增强方式构造样本进行对比学*。
  • 比SimCSE稍晚几个月发,主要关注在embeddings层的不同的数据增强方式。ConSERT性能要比SimCSE差,两篇论文用dropout的方式是不同的。SimCSE 用的是预训练模型自带的dropout,是把text输入模型两次,得到两个随机dropout的表示;此外没有再额外增加dropout层。ConSERT是将预训练得到的embeddings送入自己添加的dropout层,得到一个增广的数据。(这就导致了性能差别这么大)
  • 数据增强策略,选用了4种方式来构建对比学*的正负例(都是在embedding层做的,而不是在原始的文本上做,避免其带来的语义变化问题。):
    • 对抗攻击:利用梯度反传加入对抗扰动,需要有监督;

    • Token Shuffling:打乱句子中tokens的顺序;

    • Cutoff:随机删除横向或者纵向的特征;

    • Dropout:和SimCSE一样,做dropout。

        

  •  loss:
  •  模型:
    •  

七、CIL

  • 对比学*与远距离监督关系抽取。
  • 文中的重点是在有噪声的情况下,如何构造正负例。
  • 正例:对于一个实例 的正例只要从同一个bag中随机sample一个就好,或者使用bag的整体表示。但因为是远距离监督,无法保证任意两个实例之间都一定表达了同一种关系,同样也无法保证样例和bag的整体表示一定关系相同。如果这样强行构造正负例的话,必然会引入噪声。文中采用的一种方式是,对于si插入/替换掉 不重要的词语(还是数据增强)。
  • 负例:同样因为是远距离监督,不能随便从一个别的bag中采样一个实例sj作为si的负例,那样噪声会比较大。因此文中采用了使用整个别的bag的表示作为负例,能相对更好地降噪。
  • loss(InfoNCE对比损失和MLM损失的加权和):
    •            -----InfoNCE对比损失
    •                          ------总的损失

       

八、SimCLS

  • 对比学*在生成式摘要的应用。生成多个摘要,通过对比学*在多个候选摘要中进行选择。
  • 文章旨在解决序列生成问题(abstractive summarization)中训练目标和评估指标不一致的问题(teacher-forcing要求模型准确估计下一个token,是token-level的损失函数。而评测指标如ROUGE 会在全局对比生成的句子和基准的差异),作者提出了SimCLS框架,把seq2seq学*框架转换为基于对比学*的reference-free evaluation的文本生成问题。
  • 模型流程:
    • 候选句子生成阶段:按照原有序列生成的模型训练模式,利用原文档D、目标摘要S^和MLE损失,训练seq2seq生成模型g。利用训练好的g,生成候选摘要集合S1,...,Sn。
    • 候选句子评估阶段:利用预训练语言模型(如RoBERTa),评估候选摘要和源文档的相似度。该评估模型记作h,评估分数记作r*=h(S*,D)。最终生成的摘要为所有候选摘要中分数最高的。
  • 正负样本:没有直接构建正负样本,而是利用生成阶段的MLE的分数,构建了对比损失
  • loss:
    • 其中,S˜*表示利用生成阶段的评测分数M排序后的摘要,λij = (j−i)∗λ是依据排序差得到的margin,是模型的超参数,用来调节每两个相邻位置的位置差会带来多大的间隔。
  • model:

      

 

九、UNIMO

  • 对比学*在多模态学*的应用。现有的预训练方法或侧重于单模态任务,或侧重于多模态任务,不能有效地相互适应,只能利用单模态数据或有限的多模态数据。该文提出了统一模态预训练体系架构UNIMO,可以有效地适应单模态和多模态的理解生成任务
  • UNIMO利用大规模自由文本语料库和图像集来提高视觉文本理解能力,利用跨模态对比学*(CMCL)将文本和视觉信息整合到统一语义空间中,形成一个由图像和文本组成的“图像-文本对”语料库。UNIMO借助丰富的非配对单模态数据,通过允许文本视觉知识在统一语义空间中相互增强,从而学*到更泛化的表示。
  • 通过对比学*拉*对应的文本与图片对的表示,拉远不对应的文本图片对。
  • 统一模态学*必要性的示例(文本信息有助于确定视觉问题,视觉信息也有助于理解文本所描述的场景。):
  • 统一模态预训练体系架构(统一模态体系架构UNIMO,旨在用一个模型处理多场景、多模态的文本、视觉、视觉-语言数据。UNIMO采用多层自注意力Transformers来学*文本视觉数据的统一语义表征。):
  • 跨模态对比学*(为了促进视觉和语言在不同层面上的语义对齐,作者设计了几种新颖的文本重写技术,在单词、短语或句子层面对图像原始标题进行重写,并创建正、负图像文本对。作者利用图像文本检索技术从单模态数据中获取相关的图像和文本,在跨模态学*时将其作为单模态正样本处理。):

    

 

 

参考:

1、CIEAR:https://blog.csdn.net/c9yv2cf9i06k2a9e/article/details/113009494

2、DeCLUTR:https://zhuanlan.zhihu.com/p/453353459

3、SCCL:https://zhuanlan.zhihu.com/p/380220711

4、SimCSE:http://www.360doc.com/content/21/0507/23/5315_976089937.shtml

5、BERT-CT:

6、ConSERT:https://blog.csdn.net/weixin_42294274/article/details/123572555

7、CIL:https://blog.csdn.net/Kaiyuan_sjtu/article/details/119431652

8、SimCLS:https://www.sohu.com/a/477039200_121119001

9、UNIMO:https://blog.csdn.net/weixin_51697828/article/details/119027940

posted @ 2022-03-31 10:20  NLP的小Y  阅读(508)  评论(0编辑  收藏  举报
/*粒子线条,鼠标移动会以鼠标为中心吸附的特效*/