论文标题:ConSERT: A Contrastive Framework for Self-Supervised Sentence Representation Transfer
论文链接:https://arxiv.org/abs/2105.11741
论文来源:ACL 2021
一、概述
通常,对于BERT模型来说,我们使用[CLS]
token的embedding向量或者最后几层的token embedding向量的平均来作为句子的sentence embedding。然而BERT的原生句子表示被证明是低质量的。如下图所示,当应用BERT的句子表示到STS(semantic textual similarity)任务上时,几乎所有句子对都达到了0.6~1.0的相似度得分,这就是BERT的原生句子表示的坍塌问题(collapse issue),这意味着几乎所有的句子表示被映射到一个局部小区域,因此产生了极高的相似度:
类似的现象在先前的研究中也有被观察到,研究人员发现BERT的词表示空间是各向异性的,高频词聚集到一起并且靠近坐标原点,而低频词则稀疏分散。当使用token embedding的平均作为句子表示时,高频词的就会起到主导地位,这就导致产生了对句子真实语义的偏置。因此,在下游任务中直接应用BERT的原生句子表示是不合适的。传统的方法通常使用额外的监督数据来微调BERT,不过由于人工标注是昂贵的,在真实场景中经常不可用。
为了解决坍塌问题并且减少对标注数据的需求,本文基于对比学习提出了一种新的句子级别训练目标,该方法能够有效地将句子表示迁移到下游任务。本文将提出的方法命名为Contrastive Framework for SEntence Representation Transfer(ConSERT)。
ConSERT提出了一种无监督的目标来微调BERT以获得更好的句子表示,另外研究表明Natural Language Inference(NLI)任务能够训练好的句子表示,因此ConSERT也可以采用一些有监督的NLI数据来进一步提升BERT句子表示的性能。
对比学习简介,参考以下链接:对比学习(Contrastive Learning)
二、方法
给定一个BERT-like预训练语言模型以及无监督数据集,我们的目标是在上对进行微调,使句子表示更加与任务相关,并适用于下游任务。
- 总体框架
下图展示了ConSERT的大体框架:
如上图所示,ConSERT主要包括三个部分:
①数据增强模块,生成输入样本在token embedding层的不同view;
②BERT encoder,计算句子表示,本文实验采用最后层的token embedding的平均来获得句子表示;
③对比loss层,它使样本增强之后的view之间相互接近,同一个batch的不同样本的view之间相互远离。
对于每个样本,首先将它通过数据增强模块,在这里使用两种数据增强的变换和来生成输入样本的两种不同的版本:,这里的,然后通过BERT并进行平均池化最终获得句子表示和。
ConSERT采用normalized temperature-scaled cross-entropy loss(NT-Xent)作为对比学习损失函数。在每个训练的step,会随机从中抽取个文本作为一个mini-batch,经过数据增强后得到个句子表示,每个数据点被训练来找出它的另一个增强view:
表示余弦相似度,控制temperature,表示指示函数。最后平均所有个batch内分类loss来获得最终对比loss。
- 数据增强策略
本文采用了四种数据增强的策略,分别是adversarial attack,token shuffling,cutoff 和dropout,大体操作如下图所示:
- Adversarial Attack
为样本添加对抗性的干扰(Adversarial Perturbations)来获得样本的新view,本文采用Fast Gradient Value(FGV)方法,直接使用梯度来计算干扰。注意此策略仅适用于与监督方法联合训练时,因为它依赖监督损失来计算对抗扰动。
- Token Shuffling
此方法随机打乱输入序列的token顺序。Transformer架构具有bag-of-words属性,序列的位置信息由位置编码唯一决定,因此在实现时会打乱位置id而不是打乱token的顺序。
- Cutoff
这种方法随机抹去特征矩阵的一些token(token cutoff)或者一些特征维度(feature cutoff)或者一些token span(span cutoff)。在本文实验中只采用token cutoff和feature cutoff。
- Dropout
依照一定概率随机丢弃token embedding层的一些元素,将它们的值设置为0。这种方法与Cutoff是不同的,因为每个元素被单独考虑。
- 结合监督方法
除了前述无监督迁移的方法,ConSERT也能结合有监督的方法来训练,本文结合NLI监督任务来继续提升ConSERT的性能。NLI是一个句子对分类任务,主要用来判断两个句子在语义上的关系,一般可以分为:Entailment(蕴含)、Contradiction(矛盾)、Neutral(中立)。分类目标损失可以表示为:
表示两个句子表示。本文提出了ConSERT结合监督信号的三种方式:
①联合训练(joint):在NLI数据集上联合训练监督与无监督目标,作为一个平衡参数;
②先监督训练再无监督迁移(sup-unsup):首先在NLI数据集上用训练模型,然后在目标数据集上用微调;
③联合训练再无监督迁移(joint-unsup):首先在NLI数据集上用训练模型,然后在目标数据集上用微调。
三、实验
- 实验设置
为了验证本文提出的方法的有效性,我们对语义文本相似度(STS)任务在无监督和有监督设置下进行了实验。采用的STS统计如下,实验时会采用这些数据集中的未标注数据来微调模型:
有监督数据集采用SNLI(570k samples)和 MNLI(430k samples)两个数据集,联合训练时也会将这些数据集里的文本应用于对比目标。
实验使用模型最后2层的token embedding的平均作为句子表示,使用句子表示余弦相似度与人工标注评分之间的斯皮尔曼相关系数(spearman correlation)作为评价指标。另外由于有数据增强模块的存在,因此移除了BERT中的dropout层。
- 无监督结果
下表展示了无监督训练的结果:
- 有监督结果
下表展示了有监督训练的结果:
四、定性分析
- BERT embedding空间分析
为了证明坍塌问题主要是由于对token词频敏感的各向异性空间的假设,本文设计实验在平均池化时mask掉几个出现最频繁的token。实验结果如下:
移除了部分最频繁token后,BERT的性能增长迅猛,而对于ConSERT则变化不大,这表明ConSERT重构了BERT的原始embedding空间,减少了频繁出现的token的影响。
- 数据增强策略的影响
考虑数据增强的5个设置:None,Shuffle,Token Cutoff,Feature Cutoff,Dropout。注意,这里不考虑Adversarial Attack策略,因为它需要额外的监督训练来生成对抗性样本。实验结果如下:
结果表明Shuffle和Token Cutoff是最有效的两个策略, Feature Cutoff和Dropout在于另外两个结合时也会产生比较好的效果。
- Few-shot条件下的影响
限制无标注样本数量分别为1,10,100,1000和10000,实验结果如下:
当训练样本增加到1000时,本文的方法基本上可以达到与在完整数据集上训练的模型相当的结果。结果表明,本文的方法在数据稀缺性场景下的鲁棒性和有效性,这在现实中是很常见的。
- Temperature的影响
设计不同的temperature对比实验结果:
- batch size的影响
设计不同的batch size对比实验结果:
实验表明batch size对模型性能影响不大。