知行编程网知行编程网  2022-02-07 15:00 知行编程网 隐藏边栏 |   抢沙发  256 
文章评分 0 次,平均分 0.0
对比学习有多火?文本聚类都被刷爆了…

对比学习的大火🔥 越来越旺了,已然从CV蔓延到NLP了。今天给大家介绍的正是一篇将对比学习应用到文本聚类上的工作,NAACL21新鲜出炉的paper——《Supporting Clustering with Contrastive Learning》。该工作在8个短文本聚类数据集上取得了显著提升(比如正确率提升3%~11%)。

所谓对比学习,重点在于对比,那对比的对象是谁?
答曰:增强的数据。假设如果两个增强句子的原句子一样,那么拉近它们,否则推远它们。

在CV领域,对比学习是和携数据增强一起出道的。给定一张图片,生成不同的变体去增强它,然后用对比思想去学习。NLP领域也如法炮制。给一个句子,使用数据增强去生成和原句子语义相似的句子。比如下面的例子[1]:

对比学习有多火?文本聚类都被刷爆了…

如果两个增强句子来自同一个原句子,那么它们是同源的,否则是不同源的。本文发现,利用对比学习的特性,即拉近同源句子、拉远不同源句子,可以解决短文本聚类问题中一个令人头疼的问题——如果学习过程开始时,不同类别在表示空间中就彼此重叠,那么不管怎么学习都很难将各个类别区分开。

下图是原文中对比的原始数据的分布(Original) 和使用聚类(Clustering)模型学习后的分布。

对比学习有多火?文本聚类都被刷爆了…可以看到,Clustering整体效果还不错,但相邻类别黏在一起、无法区分的现象仍然是存在。

而本文发现,使用对比学习(Instance-CL)可以很好地解决该问题。对比学习可以将各个重叠的类别分散开。对比学习有多火?文本聚类都被刷爆了…

更进一步,本文发现将对Instance-CL和Clustering结合(SCCL),不仅可以可以更好地区分不同类别;而且通过显示地拉近同一类的数据的距离,可以促使类内分布更加紧凑,从而达到更优质的聚类效果。

对比学习有多火?文本聚类都被刷爆了…

简单讲,本文提出了一个训练框架SCCL,它结合了bottom-up的实例对比学习top-down的聚类学习,收获了更好的类内距离和类间距离。

论文题目:
Supporting Clustering with Contrastive Learning

论文链接:
https://arxiv.org/pdf/2103.12953.pdf

Arxiv访问慢的小伙伴也可以在 【夕小瑶的卖萌屋】订阅号后台回复关键词 【0422】 下载论文PDF~

对比学习有多火?文本聚类都被刷爆了…对比学习扫盲对比学习有多火?文本聚类都被刷爆了…

对比学习的目标是区分两个实例是否是由同一个源数据采样/增强得来,如果是,让它们在表示空间中越接近;如果不是,让它们在表示空间中远离。 早在2006年,Hadsell等人[2]就提出了通过对比正负例来学习表示的思想,但其真正火起来是始于谷歌在19年提出的SimCLR[3]框架。下图展示了SimCLR中对比学习思想的示例图,可以更加直观理解整个流程。对比学习有多火?文本聚类都被刷爆了…具体来说,对于一个源数据, 使用某种数据增强的方式,给它生成一对增强数据和,然后对它们哥俩进行编码、映射,接着最大化它们的相似度。

对比学习的一个关键点是如何生成增强数据。在CV中,数据增强依赖图片的空间不变性,通过旋转、缩放、裁剪等方式去给图片增强。在NLP领域中,数据增强主要依靠的是语义不变性,常用方法有词汇替换、回译、字面转换、随机噪声注入等等[3]。本文尝试了3种不同的替换方式,分别是:

  1. WordNet Augmenter:使用WordNet中的同义词对输入进行替换
  2. Paraphrase via back translation:使用回译的方式生成输入的复述
  3. Contextual Augmenter:对于输入, 利用预训练Transformer找到其中N个候选位置,对其进行插入或替换

说完了对比学习,接下来我们聊一聊本文是如何使用对比学习及它的效果如何。

对比学习有多火?文本聚类都被刷爆了…SCCL的训练框架对比学习有多火?文本聚类都被刷爆了…

对比学习有多火?文本聚类都被刷爆了…

上图展示了SCCL的训练框架,相比以前的聚类方法(蓝色部分),SCCL使用了数据增强,并利用了对比学习去优化增强的数据。相对应的,模型针对Clustering有一个损失函数对源数据进行优化,Instance-CL有一个损失函数对增强数据进行优化。

模型概念了解起来相对简单,就不放公式了。想看公式加深理解的朋友们可以去看原论文。下面看看实验结果如何。

对比学习有多火?文本聚类都被刷爆了…简单的模型,大大的提升对比学习有多火?文本聚类都被刷爆了…

文中使用 ACC(Accuracy)和 NMI(Normalized Mutual Information)两个评价指标来衡量聚类性能。下图展示了SCCL在8个短文本聚类的数据集上的实验结果(几乎完爆所有数据集):

对比学习有多火?文本聚类都被刷爆了…

除了大规模的SOTA外,文中还总结了SCCL相比其它模型的优点:

  1. 训练更简单:SCCL只需要端到端的训练,有的模型(STCC)却需要分多步训练,或者使用了垂直领域的特征进行增强(比如HAC-SD)。
  2. 对数据噪声更鲁棒:SCCL不需要任何的数据预处理,其它大部分模型都对数据进行了预处理,比如移除停用词、标点符号、小写化处理。

对比学习有多火?文本聚类都被刷爆了…对比学习加在什么阶段?对比学习有多火?文本聚类都被刷爆了…

SCCL模型包含了两个损失函数:一个负责Clustering的优化,一个负责Instance-CL的优化。那么对于有多个损失函数时,是选择pipeline的方式去一个一个训练呢?还是使用jointly训练的方式更好呢

本文对比了两种方式的区别,并与单独使用其中一个进行对比。下图显示了使用Accuracy作为指标时各个模型的表现:对比学习有多火?文本聚类都被刷爆了…

可以看出,相比单独使用Instance-CL或者Clustering,结合两者使用的两个模型在各个数据集上都取得了提升,而且jointly训练(SCCL)取得的提升一致优于pipeline训练(SCCL-Seq,先训练Instance-CL在训练Clustering)。

对比学习有多火?文本聚类都被刷爆了…数据增强哪家好?对比学习有多火?文本聚类都被刷爆了…

上文提到,本文使用了三种数据增强的方法,那么哪一种最优? 下图展示了三种方法在各个数据集上的实验结果:

对比学习有多火?文本聚类都被刷爆了…

整体来讲,Ctxt在各个数据集上的性能都是最好的,也就是说利用预训练Transformer作为增强器是最好的。同时也可看到,有一部分数据集在不同增强方法下表现差别很大,比如SearchSnippers和GooglenewsS,而有一部分的敏感度则较低,比如AgNews、Biomedical和GooglenewsTS。

说明在我们实际使用过程中,到底使用哪种增强方式有效还是需要做做对比实验才晓得

这里我们接着问一个问题。要是我们使用多个增强器呢?效果会变得更好吗?文中对比了使用1个增强器和2个增强器的区别,以及当选择替换不同比例的源句子时的区别。

对比学习有多火?文本聚类都被刷爆了…上图中蓝色表示使用1个增强器橘色表示使用2个增强器。可以看出:

  1. 2个增强器在GoogleNewTS上有轻微的提升,并且没有随着增强数据中被替换词的比例上升而下降;
  2. stackoverflow上的表现却截然不同,随着替换比例的增高,使用两个增强器反而导致性能大幅度下降。

为了探究原因,文中对比了在不同替换比例和不同增强器下(1个或2个),原始文本和增强文本在训练之初时的cosine相似度:

对比学习有多火?文本聚类都被刷爆了…

可以看出,当使用2个增强器(橘色)时,增强文本与原始文本之间的相似度逐渐降低,从而解释了为什么使用2个增强器并不一定能使模型性能变好。

对比学习有多火?文本聚类都被刷爆了…小结一下对比学习有多火?文本聚类都被刷爆了…

本文提出了一种简单、有效的无监督聚类的模型SCCL,在基于距离的聚类方法上,使用逐例对比学习区分不同类别。通过联合优化逐例对比学习的损失和聚类的损失,使得模型在拉开距离的同时保证类内距离更近。SCCL在8个短文本聚类数据集上进行测试,大部分实验结果都取得了SOTA,Accuracy提升了3% ~ 11%,NMI提升了4%~15%,证明了模型的有效性。

最后的最后,大家不妨思考下,为什么聚类+对比学习可以带来如此大的提升呢?小花的理解是,聚类关注高层级的语义概念,而实例对比的研究对象往下渗透了一层,它的目标是让相似的实例距离更近,不同的实例距离更远。将它们结合起来,可以:

  1. 增加细粒度的对比。
  2. 数据增强带来了更多的数据,将更多先验知识告诉了模型。
  3. 顶层抽象和底层细节的结合,就像我们人学习的时候既需要具体案例的学习,又需要抽象理解。二者搭配,效果更佳。

有趣的是,在CV中,对比学习是为了让模型不关注像素细节,学习高级特征来区分不同对象。但是在NLP中却是反过来了,希望模型学习实例级别的特征。

对比学习有多火?文本聚类都被刷爆了…

[1].A Visual Survey of Data Augmentation in NLP https://amitness.com/2020/05/data-augmentation-for-nlp/

[2].Dimensionality Reduction by Learning an Invariant Mapping https://cs.nyu.edu/~sumit/research/assets/cvpr06.pdf

[3].A Simple Framework for Contrastive Learning of Visual Representations. https://arxiv.org/pdf/2002.05709.pdf

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享