前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ESimCSE:无监督语义新SOTA,引入动量对比学习扩展负样本,效果远超SimCSE

ESimCSE:无监督语义新SOTA,引入动量对比学习扩展负样本,效果远超SimCSE

作者头像
zenRRan
发布2021-10-08 11:28:13
9970
发布2021-10-08 11:28:13
举报

本文看完,相信你会掌握这个无监督语义新SOTA模型ESimCSE。

从论文标题中可以看出,应该是对4月份丹琦女神发表的新作SimCSE的增强版(Enhance),并且也用到了对比学习来构建正负样本,那么效果是否优于SimCSE呢?

抱着这个好奇的心态,于是完整的读了一遍该论文。好家伙!在语义文本相似性(STS)任务上效果竟然还真的优于BERT base版的SimCSE有2个点(Spearman相关系数),并且提出了两大优化方法,解决了SimCSE遗留的两个问题:

1、SimCSE通过dropout构建的正例对包含相同长度的信息(原因:Transformer的Position Embedding),会使模型倾向于认为相同或相似长度的句子在语义上更相似(insight很合理);

2、更大的batch size会导致SimCSE性能下降(这点确实很困扰);

所以从以上可以看出,ESimCSE并没有使用最小的数据增强方法drouput构建正例对(毕竟有利也有弊哈),并且还扩展了负例对的构建,鼓励模型进行更精细的学习。这点SimCSE并没有考虑,而是直接将一个batch内与自己不同的样本都作为负样本了。

那么ESimCSE到底是如何构建正负样本并且效果还优于SimCSE的呢?让我们接着往下看~

Unsupervised SimCSE

我们首先来回顾一下无监督版的SimCSE。

给定一组成对的句子 ,其中 和 是语义相关的,将被作为一个正例对。无监督SimCSE 的核心思想是使用相同的句子来构建正例对,即 。在 Transformer中,在Feed Forword Network全连接层和Multi-head Attention中间放置了一个dropout mask。因此,SimCSE是通过应用不同的 dropout mask 和 将相同的输入 两次输入给Transformer,并输出两个单独的句子Embedding 和 ( 为正样本)以构建正例对,如下所示:

对于batch size大小为 N 的mini-batch中每个句子的 和 ,对比学习的训练目标为:

其中 τ 是温度超参数, 是相似度度量,通常是余弦相似度函数,如下所示:

SimCSE的缺点(一)

在讲解ESimCSE之前,我们一定要搞清楚SimCSE的缺点以及作者的intuition是如何产生的。

使用 dropout 作为最小数据增强方法简单有效,但是预训练语言模型如BERT是建立在Transformer上,它将通过position embedding对句子的长度信息进行编码。因此,同一个句子通过BERT产生的正例对具有相同的长度,而来自两个不同句子的负例对通常包含不同长度的信息

因此,正例对和负例对所包含的长度信息是不同的,可以作为特征来区分它们。具体来说,由于这样的差异,会导致模型训练时出现偏差,让模型自动认为相同或相似长度的两个句子在语义上更相似。

因此作者根据句子对的长度差异将 STS 任务数据集划分为组,并分别使用 Spearman相关系数计算相应的语义相似度。随着长度差异的增加,无监督SimCSE 的性能变差。无监督SimCSE在长度相似(≤3)的句子上的性能远远超过在长度差异较大(>3)的句子上的性能,如下图所示:

为了缓解这个问题,作者提出了一种简单但有效的样本增强方法。对于每个正例对,我们期望在不改变其语义的情况下改变句子的长度。现有的改变句子长度的方法一般采用随机插入和随机删除。但是,在句子中插入随机选择的词可能会引入额外的噪音,这可能会扭曲句子的含义;从句子中删除关键字也会大大改变其语义。因此,我们提出了一种更安全的方法,称为“Word Repetition”,它随机复制句子中的一些单词,如下图所示:

原句翻译为“我喜欢这个苹果,因为它看起来很新鲜,我认为它应该很好吃”。

随机插入可能会产生“我不喜欢这个苹果,因为它看起来很不新鲜,我认为它应该是狗的美味”;随机删除可能会产生“我这个苹果,因为它看起来如此,我认为它应该如此”。两者都偏离了原句的意思。

相反,“Word Repetition”的方法可能会得到“我喜欢这个苹果,因为它看起来很新鲜,我认为它应该很好吃。”或“我喜欢这个苹果,因为它看起来很新鲜”我认为它应该很好吃。”两者都很好地保持了原句的意思。

SimCSE的缺点(二)

由于对比学习是在正例对和负例对之间进行的,理论上更多的负例对可以导致更好的比较。因此一个潜在的优化方向是利用更多的负例对,鼓励模型进行更精细的学习。然而在SimCSE中,更大的batch size并不总是更好的选择。例如,如下图所示, 对于无监督的SimCSE-BERTbase模型,最佳batch size大小为 64,batch size大小的其他设置会降低性能

在计算机视觉中,为了缓解扩展batch size时GPU内存的限制,一个可行的方法是引入动量对比,这也是通过维护一个队列,重用来自前一个mini-batch的编码Embedding来扩展负例对:它总是将当前mini-batch的句子Embedding入队,同时将“最旧”的句子Embedding出队。由于入队的句子Embedding来自前面的mini-batch,我们通过取其参数的移动平均值来保持动量更新模型,并使用动量模型生成入队的句子Embedding。请注意,作者在使用动量编码器时关闭了dropout,这可以缩小训练和预测之间的差距。

上述两种优化分别是作者提出用于构建正负对的新方法。将两者与 unsup-SimCSE结合起来,就得到了ESimCSE。

ESimCSE

在本节中,我们首先介绍ESimCSE构建正例对的方法:Word Repetition(单词重复)和 Momentum Contrast(动量对比学习)扩展负样本对。

Word Repetition

Word Repetition单词重复机制会随机复制句子中的一些单词/子词。这里我们以子词重复为例,给定一个句子s,经过子词分词器处理后,我们得到一个子词序列 ,N是序列的长度。我们将重复标记的数量定义为:

其中dup_rate是最大重复率,这是一个超参数。dup_len是上面定义的集合中的随机采样数,这将在扩展序列长度时引入更多的多样性。确定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在BERTbase上优于Unsup-SimCSE+2.40%,在 BERTlarge+2.19%,在RoBERTabase+1.19%,在RoBERTalarge+0.26%

此外,作者进一步评估了ESimCSE在7个STS任务上的结果:

具体来说,ESimCSE 在 BERTbase上的表现平均优于Unsup-SimCSE + 2.02%,在BERTlarge+0.90%,在 RoBERTabase+0.87%,在 RoBERTalarge+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,是一篇非常不错的研究工作。


本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-09-26 19:45:58,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 深度学习自然语言处理 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
批量计算
批量计算(BatchCompute,Batch)是为有大数据计算业务的企业、科研单位等提供高性价比且易用的计算服务。批量计算 Batch 可以根据用户提供的批处理规模,智能地管理作业和调动其所需的最佳资源。有了 Batch 的帮助,您可以将精力集中在如何分析和处理数据结果上。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档