ESimCSE:无监督语义新SOTA,引入动量对比学习扩展负样本,效果远超SimCSE
本文看完,相信你会掌握这个无监督语义新SOTA模型ESimCSE。
从论文标题中可以看出,应该是对4月份丹琦女神发表的新作SimCSE的增强版(Enhance),并且也用到了对比学习来构建正负样本,那么效果是否优于SimCSE呢?
抱着这个好奇的心态,于是完整的读了一遍该论文。好家伙!在语义文本相似性(STS)任务上效果竟然还真的优于BERT base版的SimCSE有2个点(Spearman相关系数),并且提出了两大优化方法,解决了SimCSE遗留的两个问题:
1、SimCSE通过dropout构建的正例对包含相同长度的信息(原因:Transformer的Position Embedding),会使模型倾向于认为相同或相似长度的句子在语义上更相似(insight很合理);
2、更大的batch size会导致SimCSE性能下降(这点确实很困扰);
所以从以上可以看出,ESimCSE并没有使用最小的数据增强方法drouput构建正例对(毕竟有利也有弊哈),并且还扩展了负例对的构建,鼓励模型进行更精细的学习。这点SimCSE并没有考虑,而是直接将一个batch内与自己不同的样本都作为负样本了。
那么ESimCSE到底是如何构建正负样本并且效果还优于SimCSE的呢?让我们接着往下看~
Unsupervised SimCSE
SimCSE的缺点(一)
在讲解ESimCSE之前,我们一定要搞清楚SimCSE的缺点以及作者的intuition是如何产生的。
使用 dropout 作为最小数据增强方法简单有效,但是预训练语言模型如BERT是建立在Transformer上,它将通过position embedding对句子的长度信息进行编码。因此,同一个句子通过BERT产生的正例对具有相同的长度,而来自两个不同句子的负例对通常包含不同长度的信息。
因此,正例对和负例对所包含的长度信息是不同的,可以作为特征来区分它们。具体来说,由于这样的差异,会导致模型训练时出现偏差,让模型自动认为相同或相似长度的两个句子在语义上更相似。
因此作者根据句子对的长度差异将 STS 任务数据集划分为组,并分别使用 Spearman相关系数计算相应的语义相似度。随着长度差异的增加,无监督SimCSE 的性能变差。无监督SimCSE在长度相似(≤3)的句子上的性能远远超过在长度差异较大(>3)的句子上的性能,如下图所示:
原句翻译为“我喜欢这个苹果,因为它看起来很新鲜,我认为它应该很好吃”。
随机插入可能会产生“我不喜欢这个苹果,因为它看起来很不新鲜,我认为它应该是狗的美味”;随机删除可能会产生“我这个苹果,因为它看起来如此,我认为它应该如此”。两者都偏离了原句的意思。
相反,“Word Repetition”的方法可能会得到“我喜欢这个苹果,因为它看起来很新鲜,我认为它应该很好吃。”或“我喜欢这个苹果,因为它看起来很新鲜”我认为它应该很好吃。”两者都很好地保持了原句的意思。
SimCSE的缺点(二)
由于对比学习是在正例对和负例对之间进行的,理论上更多的负例对可以导致更好的比较。因此一个潜在的优化方向是利用更多的负例对,鼓励模型进行更精细的学习。然而在SimCSE中,更大的batch size并不总是更好的选择。例如,如下图所示, 对于无监督的SimCSE-BERTbase模型,最佳batch size大小为 64,batch size大小的其他设置会降低性能。
在计算机视觉中,为了缓解扩展batch size时GPU内存的限制,一个可行的方法是引入动量对比,这也是通过维护一个队列,重用来自前一个mini-batch的编码Embedding来扩展负例对:它总是将当前mini-batch的句子Embedding入队,同时将“最旧”的句子Embedding出队。由于入队的句子Embedding来自前面的mini-batch,我们通过取其参数的移动平均值来保持动量更新模型,并使用动量模型生成入队的句子Embedding。请注意,作者在使用动量编码器时关闭了dropout,这可以缩小训练和预测之间的差距。
上述两种优化分别是作者提出用于构建正负对的新方法。将两者与 unsup-SimCSE结合起来,就得到了ESimCSE。
ESimCSE
在本节中,我们首先介绍ESimCSE构建正例对的方法:Word Repetition(单词重复)和 Momentum Contrast(动量对比学习)扩展负样本对。
其中dup_rate是最大重复率,这是一个超参数。dup_len是上面定义的集合中的随机采样数,这将在扩展序列长度时引入更多的多样性。确定dup_len后,我们使用均匀分布从序列中随机选择需要重复的dup_len子词,组成dup_set。
实验结果
与Unsup-SimCSE相同,作者也使用了从英文维基百科中随机去的100万个句子进行训练,然后在7个STS任务上进行了实验。下图显示了在STS-B数据集上获得的最佳结果:
具体来说,ESimCSE 在 BERTbase上的表现平均优于Unsup-SimCSE + 2.02%,在BERTlarge上+0.90%,在 RoBERTabase上+0.87%,在 RoBERTalarge上+0.55%。
作者还探讨了仅使用Word Repetition或Momentum Contrast时可以为 unsup-SimCSE带来多少改进。如下图所示,无论是Word Repetition还是Momentum Contrast都可以为unsup-SimCSE带来实质性的改进。这意味着所提出的增强正例对和负对的方法都是有效的。更好的是,这两个修改可以叠加(ESimCSE)以获得进一步的改进。
总结
本文提出了两种优化方法来构建 unsup-SimCSE 的正负例对,并将它们与 unsup-SimCSE 相结合,称为ESimCSE。通过大量实验,所提出的 ESimCSE 在标准语义文本相似性任务上比 unsup-SimCSE 取得了相当大的改进。
这篇文章对SimCSE遗留的问题都进行了改进,并且效果上也取得了非常显著的提升,最后通过消融研究合理地解释了每一个改进点为什么work,是一篇非常不错的研究工作。