SimCSE: Simple Contrastive Learning of Sentence Embeddings

image-20220513104750108

论文地址:2104.08821.pdf (arxiv.org)

代码地址:https://github.com/princeton-nlp/SimCSE

最近想在RocketQA的基础上做一点改进工作,于是开始想从对比学习的角度去提升。找了些资料,发现了SimCSE这篇文章,发现又是Danqi Chen 大佬组的杰作,真是对大佬无限膜拜啊。

本文首先描述了一种无监督的方法,它只使用标准的Dropout作为噪声,并将其作为对比目标与其本身进行对比。本文还从理论上和经验上证明,对比学习目标规范化了预训练嵌入的各向异性空间,使其更加均匀,并且当监督信号可用时,它能更好地对齐正对。

换句话说,将相同的句子传递给预先训练过的编码器两次:通过应用标准(?)Dropout两次,我们可以得到两个不同的嵌入作为“positive pairs”。然后我们将同一batch中的其他句子作为负样本,然后使模型从这些样本中去预测正样本。

image-20220513112127457

通过实证分析,发现无监督SimCSE从本质上提高了均匀性,同时避免了通过dropout噪声导致的退化对齐,从而提高了表示的表达性。本文还将最近的发现联系起来,即预先训练的单词嵌入存在各向异性,并通过光谱视角证明了对比学习目标“扁平化”了句子嵌入空间的奇异值分布,从而提高了一致性。