COLING 2022 | ESimCSE:无监督句子表示对比学习的增强样本构建方法

2265598a88b004219dedaaff63b2eda2.gif

©作者 | 高超尘

单位 | 中国科学院信息工程研究所

来源 | 开放知识图谱

1575cbf8865b37e5983abf242444a1bc.png

论文标题:

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

论文链接:

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

代码链接:

https://github.com/caskcsg/ESimCSE

6d14a8de51b5c39540427965de036737.png

动机

对比学习在学习无监督句向量方面引起了广泛的关注。其中最受关注的无监督方法是 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%。

ecc806bbd3f8d414d01ac4486cf9edbf.png

亮点

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

78f885d4b2e74f18ce1818c352b601d6.png

概念及模型

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

在这些方法中,最具代表性的是 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。

26c77ab2b5618deb80fc0f955dcb4fb3.png

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

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

5529d6204e54bab90eef6c09f2c96cf8.png

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

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

9b20d25b0040c036e9e7c39634fa8de4.png

4913d0a38b9f9e21621ad0cb3b53ea1d.png

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

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

3dfb94c413f0774822dd4c5e28762bce.png

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

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

4ad1633f4ceded5773b383ca57f6a7e9.png

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

3b72835ed823aab55e1dc287cd34201e.png

改为公式:

e076d09f54733b8b3386204751d93447.png

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

1057063b9afb8c94956450765f2420f2.png

▲ 图2 EsimCSE结构图

00641fede5fd094e05cf81e6b3400c7c.png

实验结果

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

28c31d53c50dd04dffcfe29cb8e83805.png

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

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

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

ef40d75b0b587bd6832167c6372cdebd.png

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

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

e21cca5529b8956c7ba3c9edb785a525.png

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

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

736415103577a628ee8166c85cf6852c.png

总结

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

更多阅读

c28784f160ff87cfee78b9031eb95e1f.png

33f54185d8f047ee3c5462a9802b5f1f.png

4405aab303b4372aca677fc7cc4bd053.png

77174ce2ae004524fefcb4f6787ab47d.gif

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算

📬 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿

c6a367d4afd9924ec8f1e96ca3c50903.png

△长按添加PaperWeekly小编

🔍

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

·

14742c99cd56186857962f49590b5dd7.jpeg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于PyTorch的Embedding和LSTM的自动写诗实验LSTM (Long Short-Term Memory) 是一种特殊的循环神经网络(RNN)架构,用于处理具有长期依赖关系的序列数据。传统的RNN在处理长序列时往往会遇到梯度消失或梯度爆炸的问题,导致无法有效地捕捉长期依赖。LSTM通过引入门控机制(Gating Mechanism)和记忆单元(Memory Cell)来克服这些问题。 以下是LSTM的基本结构和主要组件: 记忆单元(Memory Cell):记忆单元是LSTM的核心,用于存储长期信息。它像一个传送带一样,在整个链上运行,只有一些小的线性交互。信息很容易地在其上保持不变。 输入门(Input Gate):输入门决定了哪些新的信息会被加入到记忆单元中。它由当前时刻的输入和上一时刻的隐藏状态共同决定。 遗忘门(Forget Gate):遗忘门决定了哪些信息会从记忆单元中被丢弃或遗忘。它也由当前时刻的输入和上一时刻的隐藏状态共同决定。 输出门(Output Gate):输出门决定了哪些信息会从记忆单元中输出到当前时刻的隐藏状态中。同样地,它也由当前时刻的输入和上一时刻的隐藏状态共同决定。 LSTM的计算过程可以大致描述为: 通过遗忘门决定从记忆单元中丢弃哪些信息。 通过输入门决定哪些新的信息会被加入到记忆单元中。 更新记忆单元的状态。 通过输出门决定哪些信息会从记忆单元中输出到当前时刻的隐藏状态中。 由于LSTM能够有效地处理长期依赖关系,它在许多序列建模任务中都取得了很好的效果,如语音识别、文本生成、机器翻译、时序预测等。
CSDN IT狂飙上传的代码均可运行,功能ok的情况下才上传的,直接替换数据即可使用,小白也能轻松上手 【资源说明】 基于MATLAB实现的这个代码主要是研究手写数字的识别效率,用卷积神经网络算法来实现,用的是官方手写字体数据,能够显现百分之九十以上的识别率+使用说明文档 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2020b;若运行有误,根据提示GPT修改;若不会,私信博主(问题描述要详细); 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可后台私信博主; 4.1 期刊或参考文献复现 4.2 Matlab程序定制 4.3 科研合作 功率谱估计: 故障诊断分析: 雷达通信:雷达LFM、MIMO、成像、定位、干扰、检测、信号分析、脉冲压缩 滤波估计:SOC估计 目标定位:WSN定位、滤波跟踪、目标定位 生物电信号:肌电信号EMG、脑电信号EEG、心电信号ECG 通信系统:DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测识别融合、LEACH协议、信号检测、水声通信 5、欢迎下载,沟通交流,互相学习,共同进步!
基于LSTM+CNN的自然语言处理,基于单维LSTM、多维LSTM时序预测算法和多元线性回归算法的预测模型LSTM (Long Short-Term Memory) 是一种特殊的循环神经网络(RNN)架构,用于处理具有长期依赖关系的序列数据。传统的RNN在处理长序列时往往会遇到梯度消失或梯度爆炸的问题,导致无法有效地捕捉长期依赖。LSTM通过引入门控机制(Gating Mechanism)和记忆单元(Memory Cell)来克服这些问题。 以下是LSTM的基本结构和主要组件: 记忆单元(Memory Cell):记忆单元是LSTM的核心,用于存储长期信息。它像一个传送带一样,在整个链上运行,只有一些小的线性交互。信息很容易地在其上保持不变。 输入门(Input Gate):输入门决定了哪些新的信息会被加入到记忆单元中。它由当前时刻的输入和上一时刻的隐藏状态共同决定。 遗忘门(Forget Gate):遗忘门决定了哪些信息会从记忆单元中被丢弃或遗忘。它也由当前时刻的输入和上一时刻的隐藏状态共同决定。 输出门(Output Gate):输出门决定了哪些信息会从记忆单元中输出到当前时刻的隐藏状态中。同样地,它也由当前时刻的输入和上一时刻的隐藏状态共同决定。 LSTM的计算过程可以大致描述为: 通过遗忘门决定从记忆单元中丢弃哪些信息。 通过输入门决定哪些新的信息会被加入到记忆单元中。 更新记忆单元的状态。 通过输出门决定哪些信息会从记忆单元中输出到当前时刻的隐藏状态中。 由于LSTM能够有效地处理长期依赖关系,它在许多序列建模任务中都取得了很好的效果,如语音识别、文本生成、机器翻译、时序预测等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值