论文浅尝 | ESimCSE:无监督句子表示对比学习的增强样本构建方法

8fdd6e98bbf1ef7ec08cf25e541268e0.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%。

亮点

我们观察到,无监督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 预测相似度和真实相似度的差异

8512348257bc820f5323f446721a0e54.png

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

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

71d1fd56981a9235d94e3af2020894c0.png

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

9a1171aabf741a7d210b2420e9a82bfc.png

aea56130a88a04bc7273e34f0682c212.png

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

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

c3642c7392364c09e6dd7c40b651c979.png

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

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

ad7515db7c73d26ce09c7fe9604b7b68.png

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

70b2f0e87e1fae7991cc4a1086051b7a.png

改为公式

f9659d6460b98a095883a9ac6bfecb13.png

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

dfb42c456e4fee26f020f22b622215f2.png

图2 EsimCSE结构图

实验

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

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

ed62e68d1577892705536bcd5776cdbc.png

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

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

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

fa212b46ba1edf79465c244218902d5a.png

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

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

318f40404482f8b502568d4a414dd8fe.png

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

结论

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


OpenKG

OpenKG(中文开放知识图谱)旨在推动以中文为核心的知识图谱数据的开放、互联及众包,并促进知识图谱算法、工具及平台的开源开放。

64fba57c6b6af4d20d5b5c5247b895b9.png

点击阅读原文,进入 OpenKG 网站。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/477553.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一份北大信科内部流传的 “CS 自救指南”

本文转载自公众号“夕小瑶的卖萌屋”,专业带逛互联网算法圈的神操作 -----》我是传送门 关注后,回复以下口令: 回复【789】 :领取深度学习全栈手册(含NLP、CV海量综述、必刷论文解读) 回复【入群】&#xf…

LeetCode 678. 有效的括号字符串(栈)

1. 题目 给定一个只包含三种字符的字符串:( ,) 和 *,写一个函数来检验这个字符串是否为有效字符串。有效字符串具有如下规则: 任何左括号 ( 必须有相应的右括号 )。任何右括号 ) 必须有相应的左括号 ( 。…

Spring Cloud实战小贴士:Ribbon的饥饿加载(eager-load)模式

我们在使用Spring Cloud的Ribbon或Feign来实现服务调用的时候,如果我们的机器或网络环境等原因不是很好的话,有时候会发现这样一个问题:我们服务消费方调用服务提供方接口的时候,第一次请求经常会超时,而之后的调用就没…

图谱实战 | 图谱问答在小米小爱中的实践探索

转载公众号 | DataFunTalk分享嘉宾:代文博士 小米 高级算法工程师编辑整理:何雨婷 湖北工业大学出品平台:DataFunTalk导读:今天的介绍会围绕以下三点展开:小爱同学应用场景信息抽取图谱问答01小爱同学应用场景介绍首先…

稀疏大模型简述:从MoE、Sparse Attention到GLaM

文 | 唐工源 | 知乎Sparsity, ..., is another important algorithmic advance that can greatly improve efficiency. 稀疏性,是(神经架构搜索)之外另一个重要的算法进步,可以大大提高效率。The use of sparsity in models is .…

LeetCode 777. 在LR字符串中交换相邻字符(双指针)

1. 题目 在一个由 ‘L’ , ‘R’ 和 ‘X’ 三个字符组成的字符串(例如"RXXLRXRXL")中进行移动操作。一次移动操作指用一个"LX"替换一个"XL",或者用一个"XR"替换一个"RX"。现给定起始字符…

Spring Cloud构建微服务架构:服务网关(过滤器)【Dalston版】

在前两篇文章:服务网关(基础)、服务网关(路由配置)中,我们了解了Spring Cloud Zuul作为网关所具备的最基本功能:路由。本文我们将具体介绍一下Spring Cloud Zuul的另一项核心功能:过…

图谱实战 | 美团基于知识图谱的个性化新闻推荐系统

转载公众号 | DataFunTalk分享嘉宾:刘丹阳博士 美团 实习生编辑整理:毛佳豪 中国平安浙江分公司(实习)出品平台:DataFunTalk导读:新闻阅读是人们日常生活中必不可少的活动,随着新闻逐渐从纸质端转变到电子端&#xff0…

为了养成NLP卷王,我画了一张路线图

又到了一年一度的校招季,与往年不同,受各种事件综合作用的影响,今年的校招季让很多应届生感到额外的寒冷和不安。但换个角度来说,企业主每年都会嚷嚷着算法岗人才供不应求。当然这里不是说应聘的人不够多,而是能过及格…

LeetCode 870. 优势洗牌(贪心 二分查找)

1. 题目 给定两个大小相等的数组 A 和 B,A 相对于 B 的优势可以用满足 A[i] > B[i] 的索引 i 的数目来描述。 返回 A 的任意排列,使其相对于 B 的优势最大化。 示例 1: 输入:A [2,7,11,15], B [1,10,4,11] 输出&#xff1…

Spring Cloud构建微服务架构:服务网关(路由配置)【Dalston版】

在上一篇《Spring Cloud构建微服务架构:服务网关(基础)》一文中,我们通过使用Spring Cloud Zuul构建了一个基础的API网关服务,同时也演示了Spring Cloud Zuul基于服务的自动路由功能。在本文中,我们将进一步…

技术动态 | Neo4j知识图谱的技术解析及案例分享

转载公众号 | DataFunTalk 合作分享:Jesus Barrasa-Neo4j-欧洲区售前和技术总监合作分享:丁可-Neo4j-亚太区高级技术顾问编辑整理:吴祺尧-加州大学圣地亚哥分校出品平台:DataFunTalk导读:Neo4j近年来与众多公司合作&am…

哈工大博士历时半年整理的《Pytorch常用函数函数手册》开放下载!内含200余个函数!...

近期有很多小伙伴在公众号后台咨询有没有关于Pytorch函数使用的学习资料。Pytorch是目前常用的深度学习框架之一,深受学生党的喜爱,小白本人也是使用的Pytorch框架。为了帮助更多小伙伴,小白学视觉团队整理了这份目前最全的Pytorch常用函数手…

LeetCode 984. 不含 AAA 或 BBB 的字符串(贪心)

1. 题目 给定两个整数 A 和 B,返回任意字符串 S,要求满足: S 的长度为 A B,且正好包含 A 个 ‘a’ 字母与 B 个 ‘b’ 字母;子串 ‘aaa’ 没有出现在 S 中;子串 ‘bbb’ 没有出现在 S 中。 示例 1&…

Spring Cloud构建微服务架构:服务网关(基础)【Dalston版】

通过之前几篇Spring Cloud中几个核心组件的介绍,我们已经可以构建一个简略的(不够完善)微服务架构了。比如下图所示: 我们使用Spring Cloud Netflix中的Eureka实现了服务注册中心以及服务注册与发现;而服务间通过Ribbo…

论文浅尝 | PASSLEAF:基于样本池的不确定性知识图谱嵌入半监督学习框架

笔记整理:陈一林,东南大学硕士,研究方向为不确定性知识图谱规则与推理。论文引用:Citation: Chen, Z.M., Yeh, M.Y. and Kuo, T.W., 2021, May. PASSLEAF: A Pool-bAsed Semi-Supervised LEArning Framework for Uncertain Knowle…

扔掉老破V100、A100,英伟达新一代计算卡H100来了

本文转载自公众号“夕小瑶的卖萌屋”,专业带逛互联网算法圈的神操作 -----》我是传送门 关注后,回复以下口令: 回复【789】 :领取深度学习全栈手册(含NLP、CV海量综述、必刷论文解读) 回复【入群】&#xf…

LeetCode 725. 分隔链表

1. 题目 给定一个头结点为 root 的链表, 编写一个函数以将链表分隔为 k 个连续的部分。 每部分的长度应该尽可能的相等: 任意两部分的长度差距不能超过 1,也就是说可能有些部分为 null。 这k个部分应该按照在链表中出现的顺序进行输出,并且排在前面的…

会议交流 | 知识工程/知识图谱教学研讨会 暨 知识工程课程群虚拟教研室第一次教学研讨会...

日程安排时 间:2022年10月11日(周二)19:40-21:00地 点:虚拟教研室(B版)/ 腾讯会议:287 808 963主持人:知识工程课程群虚拟教研室带头人 天津大学教授 王鑫教学研讨会会议议程&#x…

@FeignClient中的@RequestMapping也被SpringMVC加载的问题解决

问题描述 在之前发布的《Spring Cloud实战小贴士:Feign的继承特性(伪RPC模式)》一文中,我们介绍了如果使用Feign的继承特性来完成服务的提供以及服务的消费,实现了类似RPC的编程模式。但是,仔细一些的读者可能已经发现一个问题&a…