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

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

ESimCSE


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


11.png


Word Repetition


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


12.png


其中dup_rat****e是最大重复率,这是一个超参数。dup_le****n是上面定义的集合中的随机采样数,这将在扩展序列长度时引入更多的多样性。确定dup_len后,我们使用均匀分布从序列中随机选择需要重复的dup_len子词,组成dup_set****。


13.png


例如,如果第一个子词在dup_set中,则序列 变为 ,不同于无监督的SimCSE需要通过两次BERT生成 和 ,ESimCSE生成的 和 是相互独立的。


Momentum Contrast


‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍Momentun Contrast(动量对比)允许我们通过维护固定大小的队列来重用来自紧邻的前面mini-batch中编码的句子Embedding。具体来说,队列中的Embedding会被逐步替换。若当前mini-batch中输出句子的Embedding入队时,如果队列已满,则删除队列中“最旧”的句子Embedding。


我们使用动量更新编码器对排队的句子Embedding进行编码。编码器的参数为 ,动量更新编码器的参数为 ,我们按以下方式更新 :‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍


14.png


其中 为动量系数参数。


‍‍‍‍‍‍‍‍‍‍这里只有参数 通过反向传播进行更新。在这里,我们引入 来为队列生成句子Embedding,因为动量更新可以使 比 变化更平滑。因此,尽管队列中的Embedding由不同的编码器编码(在训练期间的不同“步骤”中),但这些编码器之间的差异可以变小。‍‍‍‍‍‍‍‍‍‍


通过队列中的句子Embedding,ESimCSE的损失函数进一步修改如下:


15.png


其中 是表示在动量更新队列中Embedding的句子,M是队列。


实验结果


与Unsup-SimCSE相同,作者也使用了从英文维基百科中随机去的100万个句子进行训练,然后在7个STS任务上进行了实验。下图显示了在STS-B数据集上获得的最佳结果:


16.png


可以看出,ESimCSE在BERT_base_上优于Unsup-SimCSE**+2.40%,在 BERT_large_上+2.19%,在RoBERTa_base_上+1.19**%,在RoBERTa_large_上**+0.26%** 。


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


17.png


具体来说,ESimCSE 在 BERT_base_上的表现平均优于Unsup-SimCSE + 2.02%,在BERT_large_上**+0.90%,在 RoBERTa_base_上+0.87%,在 RoBERTa_large_上+0.55%**。


作者还探讨了仅使用Word Repetition或Momentum Contrast时可以为 unsup-SimCSE带来多少改进。如下图所示,无论是Word Repetition还是Momentum Contrast都可以为unsup-SimCSE带来实质性的改进。这意味着所提出的增强正例对和负对的方法都是有效的。更好的是,这两个修改可以叠加(ESimCSE)以获得进一步的改进。


18.png

19.png


总结


本文提出了两种优化方法来构建 unsup-SimCSE 的正负例对,并将它们与 unsup-SimCSE 相结合,称为ESimCSE。通过大量实验,所提出的 ESimCSE 在标准语义文本相似性任务上比 unsup-SimCSE 取得了相当大的改进。


这篇文章对SimCSE遗留的问题都进行了改进,并且效果上也取得了非常显著的提升,最后通过消融研究合理地解释了每一个改进点为什么work,是一篇非常不错的研究工作。


相关文章
|
9月前
|
数据采集 自然语言处理 监控
《一文破解!自然语言处理论文实验复现秘籍》
在自然语言处理(NLP)领域,复现学术论文实验是将理论转化为实践的关键。前期需深入研读论文、收集数据与代码资源;搭建环境时要配置开发工具和预处理数据;模型训练中注重架构实现、优化器选择及训练监控;最后通过评估指标、结果对比与可视化分析确保复现成功。这一过程不仅验证研究成果,还提升技术能力,推动NLP领域的发展。
242 16
|
12月前
|
机器学习/深度学习 人工智能 自然语言处理
探索量子计算在人工智能领域的应用####
本文深入探讨了量子计算技术在人工智能领域的潜在应用及其革命性影响。文章首先概述了量子计算的基本原理,随后分析了其在机器学习、优化算法及模式识别等AI子领域中的具体应用实例,最后讨论了当前面临的挑战与未来发展趋势。通过对比经典计算与量子计算在处理复杂问题上的差异,揭示了量子计算加速AI进程的可能性。 ####
|
存储 PyTorch 网络安全
Transformers 4.37 中文文档(十九)(5)
Transformers 4.37 中文文档(十九)
301 2
|
机器学习/深度学习 存储 人工智能
ACL 2024|D2LLM:将Causal LLM改造成向量搜索模型的黑科技
D2LLM:一种针对语义搜索任务的新颖方法,它结合了大语言模型(LLM)的准确性与双编码器的高效性。实验表明,D2LLM在多项任务上的性能超越了五个领先基准模型,尤其是在自然语言推理任务中,相对于最佳基准模型的提升达到了6.45%
300 1
|
并行计算 PyTorch 算法框架/工具
Transformers 4.37 中文文档(八)(5)
Transformers 4.37 中文文档(八)
732 2
|
机器学习/深度学习 算法 PyTorch
【从零开始学习深度学习】25.卷积神经网络之LeNet模型介绍及其Pytorch实现【含完整代码】
【从零开始学习深度学习】25.卷积神经网络之LeNet模型介绍及其Pytorch实现【含完整代码】
|
PyTorch TensorFlow API
Transformers 4.37 中文文档(七)(4)
Transformers 4.37 中文文档(七)
451 0
|
NoSQL Java Redis
Redis分布式锁和Java锁的区别
Redis分布式锁和Java锁的主要区别在于它们的适用范围和实现机制。
205 2
|
Linux Shell 网络安全
如何从命令行关闭或重启远程 Linux 主机?
如何从命令行关闭或重启远程 Linux 主机?
618 0
如何从命令行关闭或重启远程 Linux 主机?
|
Nacos Docker 容器
解决docker启动时报‘Error response from daemon: network xxx not found‘问题
解决docker启动时报‘Error response from daemon: network xxx not found‘问题
5146 0
下一篇
开通oss服务