SimCSE: Simple Contrastive Learning of Sentence Embeddings
摘要
论文利用对比学习获得更优的句子向量,不管是用无标签数据还是有标签数据都取得了较好的效果。
无监督的方法预测输入数据本身,通过dropout引入噪声;也就是将同样的句子输入到encoder中两次,每次都用dropout得到同个句子的两个不同表征作为"positive pairs",将一个batch里的其他句子作为"negatives",模型在众多负样本中预测唯一的正样本。这里dropout可以看作是对于表征的最小的数据增强,移除dropout将导致表征的失效。
监督方法将NLI (natural language inference) 数据集的标签数据融入进对比学习,将entailment pairs作为正样本,contradiction pairs作为负样本。
分析表明,利用dropout噪声的无监督方法在不损害正样本之间的alignment的情况下,提升了表征空间整体的uniformity,并且NLI数据集进一步提升了正样本间的alignment。
背景: 对比学习
对比学习的目标是使得学习到的表征能够让语义相似的样本更接近,不相似的样本更分离。目标函数:
其中和
是样本
和
的表征,
是
的正样本,
是temperature超参数
它的两个性质可以被用来衡量表征的质量:
1. alignment: 给定正样本的分布,alignment计算两个样本对的 (normalized) embedding之间距离的期望
2. uniformity: 衡量样本表征被均匀分布的程度
非监督SimCSE
对于数据集中的样本,它们的正样本就是其本身,只不过对和
使用了独立采样的dropout mask。记
,
是一个dropout的随机mask。将同样的句子输入进encoder中两次,由于每次的dropout mask不同 (
和
),会得到两个不同的embedding。对于一个有
个句子的mini-bacth,训练目标函数为
为什么说dropout是一个最小的数据增强?因为即使经过了其他离散的数据增强方法,如增加、删除、替换字词,再输入encoder也会经过dropout (这里的dropout就是Transformer中最标准的dropout),最终的表征发生改变,而非监督SimCSE就是不对原始句子做任何其他的数据增强操作,单纯的通过dropout得到不同的表征。实验表明,不使用其他任何数据增强手段(单纯通过dropout)的效果最好,用一个encoder比用两个独立的encoder效果好。
监督SimCSE
使用NLI数据集作为有监督数据,NLI数据有三个标签,对于一个前提句子(premise),它对应的一定成立的假设句子为标签entailment,可能成立的句子为标签neutral,一定不成立的句子为标签contradiction。在有监督SimCSE中,一个样本(premise )的正样本是它的entailment (
),负样本是它的contradiction (
)。一个mini-batch的目标函数为