SimCSE 论文笔记

单位:普林斯顿大学计算机科学系、清华大学跨学科信息科学研究所
时间:2021.09
发表:EMNLP
论文链接: https://arxiv.org/pdf/2104.08821.pdf

一、前言

1. SimCSE想做些什么?

学习通用句向量是自然语言处理中一个基本的问题,在sentence-bert中已经证明过原始bert生成的句向量在语义相似度任务中表示非常差,但在经过孪生网络的训练后就能生成很好的句向量表示,后续的研究如bert-flow等又对bert生成的句向量存在各向异性问题进行了改良尝试。

SimCSE想要通过在CV里大放异彩的对比学习方法使Bert学习到更好的句向量表示,进一步提升bert在统一性(Alignment)和均匀性(Uniformity)指标上的性能表现。

2. SimCSE做到了什么?

提出了一个简单的对比学习框架,它可以从未标记或标记的数据中产生更好的句向量,极大地改善了最先进的句子嵌入的语义文本相似性任务。

通过实验分析和与其它baseline模型对比,发现无监督和有监督的SimCSE在均匀性和统一性指标上都有所提升。

以BERT-base模型为基准,在STS任务上SimCSE无监督和有监督模型与之前的最佳结果相比,有4.2%和2.2%的提高。

SimCSE 论文笔记_第1张图片

并且在迁移任务上也有一定的提升。

SimCSE 论文笔记_第2张图片

然而其无监督模型的正负对样本构造方法却极其简单,非常值得学习和思考背后的原理。

二、SimCSE: Simple Contrastive Learning of Sentence Embeddings

SimCSE 论文笔记_第3张图片

1. 无监督模型

1.1 方法

训练方法如图1(a)所示。训练数据集是从英语维基百科中随机抽取100万个句子,正样本对使用同一句话经过不同dropout mask编码器的两个略有区别的句向量,负样本使用同一batch内的其它句子的不同dropout mask的编码器句向量。公式如下所示。

SimCSE 论文笔记_第4张图片

其它的构造正样本的方法,作者也做了多种实验,具体效果如下,都不如上述提出的方法。

SimCSE 论文笔记_第5张图片

1.2 实验

batch_size=64,lr=3e-5,epoch=3,t=0.05,微调bert-base模型。dropout率用的是transformer预设值0.1,使用数据增强方法或dropout值在训练过程中均匀性都有所提升,即不相似样本间的距离都会分散开,但统一性即相似对聚类程度dropout=0.1是最好的,删除一个单词会影响均匀性的提升,如下图所示。

SimCSE 论文笔记_第6张图片

2. 有监督模型

2.1 方法

训练方法如图1(b)所示。训练集使用NLI数据集(SNLI + MNLI),正样本使用数据集给出的蕴含句子,负样本是该句的矛盾句子和同一Batch内的其它句子的蕴含句和矛盾句。公式如下所示。

SimCSE 论文笔记_第7张图片

作者也比较了使用其它数据集来构造正样本的效果,如下图所示。可以看到因为NLI数据标注质量更高,词汇重叠量小等原因达到了最好的效果。

SimCSE 论文笔记_第8张图片

2.2 实验

batch_size=512,lr=5e-5,epoch=3,t=0.05,微调bert-base模型。

三、总结

SimCSE无监督和有监督方法均没有用上STS数据集,而是通过其它数据集来进行对比学习训练,就能极大提升文本语义相似性任务的表现。特别是无监督的目标,在NLP中可能有更广泛的应用,它为文本输入的数据扩充提供了一个新的视角,并且可以扩展到其他的连续表征,并整合到语言模型预训练中。

四、值得思考的地方

1. 汇聚方法

无监督模型发现使用cls向量表现最好,有监督模型发现使用pooler向量表现最好,与之前的工作使用first-last average有区别。我个人猜测,可能是在经过大量的对比学习训练后,cls向量比先前的first-last average pooler方法更能代表一句话的语义,之前的只是没有经过大量对比训练,使得cls向量更倾向于分类的语义。

SimCSE 论文笔记_第9张图片

2. 数据增强方法

我们可以从作者做的实验看到同义词替换方法也有很大提升,那么是不是两次dropout + 同义词替换一起用会不会更好呢?

3. 无监督和有监督结合

作者提到了将有监督方法和无监督方法结合使用,但没有什么效果。那这意思可能是两次dropout仅仅单纯只是一个数据增强,而不是强化了模型的健壮性,通过人工构造正对就能达到更好的效果。

你可能感兴趣的:(论文阅读,深度学习)