论文目的
SimCSE 使用dropout作为数据增强的最小方法,因为transformer使用位置embedding,句子的长度信息会被编码到句子embedding中,所以unsup-SimCSE的正对包含相同的长度信息。所以unsup-SimCSE训练的正样本对估计是有偏的,会倾向于将有相同或类似长度的句子是相似的,通过统计观察,发现unsup-SimCSE的确有这个问题。为了缓解它,使用一个简单的重复操作来修改句子,然后将句子和修改后的句子输入transformer来得到正对,且从CV中引入momentum contrast在不增加计算量的情况下来扩大负样本的数量,提出的两个方法分别用于政府样本,称为 Enhanced Unsup-SimCSE (ESimCSE)。
相关工作
在sts数据集上验证unsup-SimCSE训练的模型是有偏的,两个句子的长度差被模型学到了,所以句子差小于等于3的会比其它的效果好很多。
为了将句子的长度进行改变,常见的方法是随机插入和随机删除,但是这两种方法都有可能改变句子的语义,所以我们采取单词重复的方法,细节见下图。
对比学习中的负样本,理论上负样本越多,效果越好,但是unsupSimCSE-BERT_base中
batch_size=64时效果最好,因此我们希望找出如何能有效的扩展负样本数量。momentum contrast通过维护一个队列,重复利用之前计算好的embedding来作为负样本,同时在有新的batch进入时,删除最久的batch,并会使用momentum更新之前的向量。当使用momentum encoder时,会关闭dropout,减小训练和预测之间的gap。
Proposed ESimCSE: Enhanced unsup-SimCSE
Word Repetition
使用sub-word 重复举个例子
x = [ x 1 , . . . , x N ] x=[x_1,...,x_N] x=[x1,...,x