作者 | 高超尘

来源 | 开放知识图谱

论文标题:

ESimCSE: Enhanced Sample Building Method for Contrastive Learning of Unsupervised Sentence Embedding

论文链接:

https://arxiv.org/pdf/2109.04380.pdf

代码链接:

https://github.com/caskcsg/ESimCSE

动机

对比学习在学习无监督句向量方面引起了广泛的关注。其中最受关注的无监督方法是 unsup-SimCSE(Gao et al., EMNLP 2021)。Unsup-SimCSE 使用 Dropout 作为数据增强方法,将相同的输入句子传递给 BERT 两次,获得两个对应的句向量来建立一对正例。

由于 BERT 使用了位置嵌入,一个句子的长度信息通常会被编码到句向量中,在 SimCSE 中的每对正例实际上包含相同长度的信息。因此,用这些正对训练的 unsup-SimCSE 会存在“长度偏置”,倾向于认为长度相同的或相似的句子在语义上更为相似。

通过统计观察,我们发现 unsup-SimCSE 确实存在这一现象,证明了我们的判断。为了解决这个问题,我们提出了一种改进方法 ESimCSE (Enhanced Unsup-SimCSE):首先通过一个简单的单词重复操作对输入句子进行修改,然后将输入句及其修改后的句子分别输入到 BERT,以得到长度不同的正对;此外,我们还从 CV 领域中引入动量对比,在不产生额外计算开销的同时,增加负对的数量。

在 STS 数据集上的实验表明:ESimCSE 相比于 SimCSE 有明显的性能提升,在 BERT-base 上平均提升了 2.02%。

亮点

我们观察到,无监督 SimCSE 每个正例对之间的长度都是相同的,这可能会使学习过程产生偏置(Bias)。我们提出了一种简单而有效的“单词重复”方法来缓解这个问题。

概念及模型

最近,研究人员提出使用对比学习来更好地学习无监督的句子嵌入。对比学习的目的是通过正负例的对比使相似的句子在空间上的距离更近,不相似的句子在空间上的距离更远。对比学习通常使用各种数据增强方法为每个句子生成两个互为正例的句子表示,并与其他句子表示互为负例。

在这些方法中,最具代表性的是 SimCSE (Gao et al., EMNLP 2021),它将 dropout 看成是构造正例对的一种数据增强方法,通过无监督训练取得了与之前有监督的训练方法相当的性能。具体来说,SimCSE 在 batch 中组成 N 个句子,并将每个句子输入预先训练过的 BERT 两次,以得到两个不同的句子表示。这样,来自同一个句子的表示构成了一个“正对”,而来自两个不同句子的表示构成了一个“负对”。

使用 dropout 作为数据增强方法虽然简单而有效,但也存在一个明显的弱点。由于 SimCSE 模型是建立在 Transformer 上的,而 Transformer 通过位置向量编码一个句子的长度信息,在一个正对中,两个来自同一句子的表示会包含相同长度的信息。相反,在一个负对中,两个表示来源于不同的句子,通常会包含不同长度的信息。

因此,正对和负对在长度信息上具有明显的差异,这可能会使模型将之作为区分二者的特征学习下来,造成“长度偏置”。在推理时,模型会容易为长度相同或者相似的句子对打出更高的分数,从而偏离真实分值。

为了分析长度差异的影响,我们使用 SimCSE 模型对 7 个标准语义文本相似度数据集进行了评估。我们根据句子对的长度差异将 STS 数据集分为两组,第一组句子间的长度差异小于等于 3,第二组的长度差异大于 3。我们使用无监督 SimCSE 模型预测分数,并计算了每一组的模型预测和真实标签之间的相似性差异。

如表 1 所示,我们观察到:当长度差为≤3 时,7 个数据集的平均相似度更大,验证了我们的“长度偏置”假设。数据集的比较细节参见表 4。

▲ 表1. 预测相似度和真实相似度的差异

为了缓解这一问题,对于每一对互为正例的句子,我们期望在不改变句子语义的情况下改变句子的长度。现有的改变句子长度的方法通常会采用随机插入或者随机删除的方法,但是在句子中插入随机选择的单词可能会引入额外的噪声,并扭曲句子的含义;从句子中删除关键词则会大幅改变它的语义。因此,我们提出了一种更安全的方法,称为“单词重复”,它随机重复一个句子中的一些单词。如表 2 所示,可以看出,单词重复的方法在改变句子长度的同时可以有效保留句子的语义。

▲ 表2 多种数据增强方法对比

我们的重复策略如下公式 (1) 和公式 (2) 所示:

其中,dup_rate 是一个重复比例的超参数,N 为句子长度,之后会采样长度为 dup_len 的单词下标集合对原句进行采样。

除了对正例的改进之外,我们进一步探讨了如何优化负对的构造。由于对比学习是在正对和负对之间进行的,理论上讲,生成更多的负对,有利于更好地、更全面的的对比(SimCLR, Chen et al., ICML 2020)。因此,一个潜在的优化方向是通过生成更多的负对,鼓励模型走向更精细的学习。尽管增加 batch-size 可以帮助我们构造更多的负对,但是我们发现增大 batch-size 对 SimCSE (Gao et al., EMNLP 2021) 并不总是更好的选择,甚而会造成显著的性能下降。如图 1 所示。

▲ 图1 随batch_size改变SimCSE性能的变化

对于 unsup-SimCSE-BERT-base 模型,最优 batch-size 大小为 64,其他 batch-size 大小的变化都会带来性能的降低。值得注意的是,为了在扩展批量规模时,减轻 GPU 内存负担,以缓解性能下降的压力,CV 领域中会引入MoCO(He et al., CVPR 2020)中的动量对比来实现这一目标。同样,我们也将这种方法引入到了 SimCSE 中。具体的动量更新策略如下公式所示:

在引入更多的负例之后,我们将损失函数由公式:

改为公式:

经过两个方法的改进,形成了如图 2 所示的 ESimCSE 结构图:

▲ 图2 EsimCSE结构图

实验结果

为了进行公平的比较,我们主要沿用了 SimCSE 的实验设置。我们使用从英语维基百科中随机抽取的 100 万个句子来进行训练,并利用文本相似度任务来衡量句子表示能力,在 7 个标准语义文本相似度(STS)数据集上进行了实验。所有的实验都是在 Nvidia 3090 GPU 上进行的。

▲ 表3 在标准语义评估数据集上的性能对比

表 3 显示了模型在 7 个语义文本相似度(STS)测试集上的性能。我们主要选择 SimCSE 进行比较,并和我们的方法共享相同的设置。从表格可以看出,相比 SimCSE,ESimCSE 改进了不同模型设置下语义文本任务的性能,在 BERT-base 上最多有两个点的提升。

在消融试验中,我们探索了当只使用单词重复或动量对比时,可以给 SimCSE 带来的改进。如表 4 所示,无论是单词重复还是动量对比,都可以带来改进。这意味着所提出的两种增强正对和负对的方法都是有效的。此外,这两个模块可以叠加(ESimCSE)来获得进一步的性能提升。

▲ 表4 改进点之间的消融实验

我们进一步探讨了 ESimCSE 上句子对的相似性与长度差之间的关系,并与 SimCSE 进行了比较。因为 STS12-STS16 数据集没有训练集和验证集,所以我们在每个数据集的测试集上评估模型。我们根据句子对的长度差是否为≤3,将每个 STS 测试集分为两组。然后,我们计算了每一组的模型预测和真实分数之间的相似性差异。如表 5 所示:

▲ 表5 ESimCSE和SimCSE在多个数据集上的偏置(bias)对比

结果表明:ESimCSE 显著降低了>3 和≤3 之间的平均相似度差距,从 1.84 降低到 0.71,有效缓解了我们在引言中提到的长度偏差问题。

总结

本文提出了构造 unsup-SimCSE 的正负对的优化方法,称为 ESimCSE。通过实验,ESimCSE 在语义文本相似性任务上取得了明显的性能改进。

一起交流

想和你一起学习进步!『NewBeeNLP』目前已经建立了多个不同方向交流群(机器学习 / 深度学习 / 自然语言处理 / 搜索推荐 / 图网络 / 面试交流 / 等),名额有限,赶紧添加下方微信加入一起讨论交流吧!(注意一定o要备注信息才能通过)

ESimCSE:无监督句子表示对比学习的增强样本构建方法相关推荐

  1. 【论文】开放域段落检索的句子感知对比学习

    Sentence-aware Contrastive Learning for Open-Domain Passage Retrieval 论文链接:https://arxiv.org/pdf/211 ...

  2. 2022TGRS/云检测:用于遥感图像云检测的无监督域不变特征学习Unsupervised Domain-Invariant Feature Learning for Cloud Detection

    2022TGRS/云检测:Unsupervised Domain-Invariant Feature Learning for Cloud Detection of Remote Sensing Im ...

  3. 知识图谱-生物信息学-医学顶刊论文(Bioinformatics-2022)-SGCL-DTI:用于DTI预测的监督图协同对比学习

    14.(2022.5.21)Bioinformatics-SGCL-DTI:用于DTI预测的监督图协同对比学习 论文标题: Supervised graph co-contrastive learni ...

  4. 【ICLR 2023】RankCSE:基于排序学习的无监督句子表示学习

    本次介绍一篇 Sentence Embedding 对比学习算法-- RankCSE ,也是当前句子表示的 SOTA 方法. 论文:<RankCSE:Unsupervised Sentence ...

  5. 论文浅尝 - AAAI2021 | 基于对比学习的三元组生成式抽取方法

    作者 | 叶宏彬,浙江大学博士研究生,研究方向:知识图谱.自然语言处理 接收会议 | AAAI2021 论文链接 | https://arxiv.org/pdf/2009.06207.pdf 摘要 在 ...

  6. 推荐系统中不得不学的对比学习(Contrastive Learning)方法

    作者 | 对白 出品 | 公众号:对白的算法屋 大家好,我是对白. 今天我们来聊一聊推荐系统中不得不学的Contrastive Learning方法,近年来Contrastive Learning在C ...

  7. cvpr 深度估计_无监督单目视频深度估计中的uncertainty方法(CVPR#x27;20)

    Contribution 对11种使用uncertainty方法的全面评估 深度挖掘uncertainty对depth estimation起到的作用 提出一个新颖的self-teaching方法去m ...

  8. 深度学习数据增强数据扩增方法

    随机裁剪 对图片随机0.6~1.0比率大小的区域进行裁剪. 然后resize到固定大小. torch.API torchvision.transforms.RandomCrop(size,paddin ...

  9. 软件工程作业-方舟学习笔记07-方舟构建方法

    这一篇比较一下SSA构建方法与传统编译器的区别和优化,先来看一组比较实例: 一般方法 SSA方法 a=b+c: a1=b1+c1: a=a+b: a2=a1+b1: b=a+c: b2=a2+c1: ...

最新文章

  1. 将文本随意插入网页表单的 textarea
  2. 应用软件(E-MAIL-FTP-WEB)
  3. 文化之旅(dijstra)
  4. 可能是性价比最高的,0-180度乐高舵机解决方案
  5. SWIG:SWIG的简介、安装、使用方法之详细攻略
  6. Leet Code OJ 136. Single Number [Difficulty: Medium]
  7. Linux提权:常用三种方法
  8. 无限循环python代码_python - 代码遇到意外的无限循环? - SO中文参考 - www.soinside.com...
  9. 夯实基础开新局--全国乡镇党委换届工作进展顺利
  10. .Net 1.1 到 .Net 2.0 开发日志
  11. 46.网络安全与主机基本防护:限制端口、网络升级与 SELinux
  12. Excel的窗口如何冻结与拆分?
  13. 6 生僻字_教改后注音书还有必要读吗?别纠结,6-8岁注音书我推荐这10套
  14. 别错过他们砍预算留给你的机会
  15. linux drm 源码,Linux DRM那些事-内核代码
  16. 速卖通AliExpress绑定连连跨境支付收款教程!
  17. c 语言爱心告白代码,c语言心形告白代码实现
  18. linux 创建dat文件‘,DAT 文件是什么
  19. 【网络爬虫教学】一分钟带你快速寻找JS加密入口(二)
  20. 无线网络呗主服务器限制网速怎么办,怎么设置限制别人wifi网速,wifi限制网速设置多少...

热门文章

  1. Linux 基础实战(二)
  2. 币泳金:理安全的储存数字货币,冷钱包与热钱包的管理
  3. 物联网设备数据流转之告警信息推送:TDengine-alert
  4. 白盒测试方法-静态结构分析法
  5. 大数据 客户标签体系_大数据场景营销之标签体系、用户分群、用户画像
  6. 智能手机Web开发笔记
  7. android 強制屏幕方向,今日精品安卓App推荐:锁定屏幕旋转方向
  8. qlv如何转换为mp4格式?怎样将qlv转换成mp4格式?
  9. 我看车展感(tu)想(cao)
  10. 2020-27th-07 蒟蒻团 【陈睿的考验】详解