ESimCSE
在本节中,我们首先介绍ESimCSE构建正例对的方法:Word Repetition(单词重复)和 Momentum Contrast(动量对比学习)扩展负样本对。
Word Repetition
Word Repetition单词重复机制会随机复制句子中的一些单词/子词。这里我们以子词重复为例,给定一个句子s,经过子词分词器处理后,我们得到一个子词序列 ,N是序列的长度。我们将重复标记的数量定义为:
其中dup_rat****e是最大重复率,这是一个超参数。dup_le****n是上面定义的集合中的随机采样数,这将在扩展序列长度时引入更多的多样性。确定dup_len后,我们使用均匀分布从序列中随机选择需要重复的dup_len子词,组成dup_set****。
例如,如果第一个子词在dup_set中,则序列 变为 ,不同于无监督的SimCSE需要通过两次BERT生成 和 ,ESimCSE生成的 和 是相互独立的。
Momentum Contrast
Momentun Contrast(动量对比)允许我们通过维护固定大小的队列来重用来自紧邻的前面mini-batch中编码的句子Embedding。具体来说,队列中的Embedding会被逐步替换。若当前mini-batch中输出句子的Embedding入队时,如果队列已满,则删除队列中“最旧”的句子Embedding。
我们使用动量更新编码器对排队的句子Embedding进行编码。编码器的参数为 ,动量更新编码器的参数为 ,我们按以下方式更新 :
其中 为动量系数参数。
这里只有参数 通过反向传播进行更新。在这里,我们引入 来为队列生成句子Embedding,因为动量更新可以使 比 变化更平滑。因此,尽管队列中的Embedding由不同的编码器编码(在训练期间的不同“步骤”中),但这些编码器之间的差异可以变小。
通过队列中的句子Embedding,ESimCSE的损失函数进一步修改如下:
其中 是表示在动量更新队列中Embedding的句子,M是队列。
实验结果
与Unsup-SimCSE相同,作者也使用了从英文维基百科中随机去的100万个句子进行训练,然后在7个STS任务上进行了实验。下图显示了在STS-B数据集上获得的最佳结果:
可以看出,ESimCSE在BERT_base_上优于Unsup-SimCSE**+2.40%,在 BERT_large_上+2.19%,在RoBERTa_base_上+1.19**%,在RoBERTa_large_上**+0.26%** 。
此外,作者进一步评估了ESimCSE在7个STS任务上的结果:
具体来说,ESimCSE 在 BERT_base_上的表现平均优于Unsup-SimCSE + 2.02%,在BERT_large_上**+0.90%,在 RoBERTa_base_上+0.87%,在 RoBERTa_large_上+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,是一篇非常不错的研究工作。








