ACL2023:成分对比学习生成句子嵌入表示

news2024/11/26 16:39:27

title:Composition-contrastive Learning for Sentence Embeddings

        很多基于对比学习的方法用在无监督语料中,通过最大化对齐同一句子的最小扰动,并且鼓励向量在广泛文本语料中的均匀分布。本文方法提出最大化文本与其短语成分的组合之间的对齐。
        对比学习框架在计算机视觉中的成功很大程度上是由于用于创建正对时增强的多样性,这使得原始示例的身份保持不变,同时减少输入空间中的成对互信息。将相同的训练目标应用于句子的嵌入表示时,通过离散增强方法构造正向对没有效果。之前的研究通过消融实验可知,这样的增强对会损害相似性任务的下游性能。
        而据观察dropout噪声可用于动态创建正对,可生成更强的表示。这就是SimCSE提出的简单而有效的框架。本文将短语成分组合用作增强,探索它在语言中作为信号学习句子,实验证明是有效的。

        背景

        1.无监督对比学习:对比学习旨在不依赖标注,学习数据的向量表示。对比学习的学习目标是InfoNCE
        2.InfoNCE的缺点:同一批次中的不同示例可能与给定的锚点具有不同的相关相似性,所以生成的嵌入具有较差的组区分;维度崩溃,嵌入向量主要由一小部分特征轴区分,没有充分利用编码器的全部表达能力。最小增强与过度参数化的网络相结合,导致无监督对比目标的低秩性。我们猜测这和捷径学习(short-cut learning)密切相关,并且句子长度相关的虚假特征也可能被用于解决对比目标。这些不可泛化的特征不能很好的表示来自新领域的数据。
        3.评价表示空间:嵌入表示的质量可以用两个指标衡量,对齐性和均匀性。对齐度量应该靠近的正向对的距离。均匀性衡量嵌入表示在单位超球面上的分散程度。

        基于成分组合的对比学习
        保留SimCSE的简单和效率。将输入文本根据token一分为二,分成的左右两个短语进行独立编码,并通过编码器和线性投影,然后对两者的cls token进行聚合(聚合方法通过看具体实验,与模型类型和尺寸相关)。

        组合作为数据增强方法

        例子来自STS-B的标注语料,高相似性:
                A man is lifting weights in a garage.  
                A man is lifting weights.
        第一句话有两个原子语义,一个是A man is lifting weights,另一个是a man is in a garage.这在实际的对话场景中是很常见的。上面两句话只在第一个原子语义是相似的,而第二原子语义并没有太多的相关性。所以就需要句子编码器学习更通用的短语表示,至少隐含的遵守语义的组合型原则。
        分解输入下采样,本文实验了三种策略扩展数据:
        1.相邻片段 2.相邻片段+重叠 3.相邻片段+重叠+递归采样
        扩展数据的结果是 产生更难的批内负样本,这对对比学习是有益的。使用扩展训练集鼓励更均匀的嵌入分布,组合增强进行子采样也能获得更好的对齐。这是因为我们将自我预测目标保持不变,同时增加了难度:尽管子样本可能高度相关,但正对只能从完全相同的文本中挑选。因此,底层PLM被迫有效地区分词汇重叠高的例子。

        实验

        在BERT和RoBERTa两个预训练模型的base和large版本上进行实验,可以看到本文方法在不同模型和相同模型不同版本上表现不同。除了在RoBERTa-large版本上表现拉垮,在其他的模型版本下相对于SimCSE都有较明显优势,仅次于SNCSE(https://arxiv.org/pdf/2201.05979.pdf)。SNCSE采用显式构建负样本的方式发掘测试集偏差。

         消融实验和向量聚合方式实验结果分别如图。

 

 

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

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

相关文章

带你深入浅出SQL优化器原理

起源 1979年,第一款基于 SQL 的商业关系型数据库管理系统 Oracle V2 问世,也标志着第一款商用的 SQL 优化器诞生。理论上,成熟的优化器原型,更早可以追溯到 IBM 的 System-R 项目。现今,很多开源数据库和大数据优化器…

C++:模拟实现vector以及vector的迭代器失效和拷贝问题

文章目录 实现的功能模拟实现迭代器失效隐含浅拷贝问题 实现的功能 模拟实现 由于前面实现了string&#xff0c;因此这里实现过程不为重点&#xff0c;重点为关于迭代器失效和拷贝问题 template <class T> class vector { public:typedef T* iterator;typedef const T*…

【EM算法推导】

# 一、必备的基础知识 EM算法用到了大量的概率论与数理统计的知识&#xff0c;必须对基础有一定掌握才能完成EM算法的推导。 ## 1.1 最大似然估计 思想&#xff1a;我们观测到了一组样本&#xff0c;为什么我们能观测到这一组样本呢&#xff1f;因为这一组样本出现的概率比较大…

第十九章 重要HL7操作场景

文章目录 第十九章 重要HL7操作场景HL7确认(ACK)模式HL7双确认序列 第十九章 重要HL7操作场景 本章描述了一些影响选择配置设置的关键HL7场景。 HL7确认(ACK)模式 HL7确认(ACK)消息确认目的地已收到HL7消息。负ACK (NACK)消息承认目的地知道传输&#xff0c;但没有捕获该消息…

凭借这份python面试宝典,我成功拿到了字节跳动、腾讯、阿里巴巴等六家大厂offer!

前言 2023年&#xff0c;全新的一年开始&#xff0c;新一轮金三银四即将来临&#xff0c;可能还有很多python程序员还有准备转行python的朋友没有拿到理想的offer&#xff0c;而拿到大厂的offer一直是程序员朋友的一个目标&#xff0c;今天给大家分享我拿到大厂offer的利器&am…

计算机组成原理-笔记-第七章

目录 七、第七章——输入输出系统 1、IO设备与IO控制方式 &#xff08;1&#xff09;控制方式&#xff08;查询&#xff0c;中断&#xff0c;DMA&#xff09; &#xff08;2&#xff09;通道控制 &#xff08;3&#xff09;IO系统 &#xff08;4&#xff09;总结 2、外设…

【学习日记】【FreeRTOS】手动任务切换详解

前言 本文是关于 FreeRTOS 中实现两个任务轮流切换并执行的代码详解。目前不支持优先级&#xff0c;仅实现两个任务轮流切换。 一、任务的自传 任务从生到死的过程究竟是怎么样的呢&#xff1f;&#xff08;其实也没死&#xff09;&#xff0c;这个问题一直困扰着我&#xf…

Similarities:精准相似度计算与语义匹配搜索工具包,多维度实现多种算法,覆盖文本、图像等领域,支持文搜、图搜文、图搜图匹配搜索

Similarities&#xff1a;精准相似度计算与语义匹配搜索工具包&#xff0c;多维度实现多种算法&#xff0c;覆盖文本、图像等领域&#xff0c;支持文搜、图搜文、图搜图匹配搜索 Similarities 相似度计算、语义匹配搜索工具包&#xff0c;实现了多种相似度计算、匹配搜索算法&…

QT创建项目

可选择CMake或qmake

港科夜闻|香港科大(广州)熊辉教授、李佳教授分别荣获 ACM SIGKDD2023 服务奖与最佳论文奖(研究)...

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科大(广州)熊辉教授、李佳教授分别荣获 ACM SIGKDD2023 服务奖与最佳论文奖(研究)。第29届SIGKDD会议于2023年8月6日至10日在美国加州长滩举行。该会议是由ACM数据挖掘及知识发现专委会主办的数据挖掘研究领域顶级年…

面试热题(数组中的第K个最大元素)

给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。 请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。 输入: [3,2,1,5,6,4] 和 k 2 输出: 5提到数组中最大元素&#xff0c;我们往往想到就是先给数组…

云原生网关API标准背景及发展现状

Gateway API是一个开源的API标准&#xff0c;源自Kubernetes SIG-NETWORK兴趣组。从出身角度讲&#xff0c;可谓根正苗红&#xff0c;自从开源以来备受关注&#xff0c;被寄予厚望。Gateway API旨在通过声明式、可扩展性和面向角色的接口来发展Kubernetes服务网络&#xff0c;并…

Python教程(7)——一文弄懂Python字符串操作(上)|字符串查找|字符串分割|字符串拼接|字符串替换

Python字符串操作 字符串简介字符串查找使用 in 关键字使用 find() 方法使用 index() 方法使用正则表达式 字符串替换使用 replace() 方法使用正则表达式使用字符串模板 字符串分割字符串拼接使用加号 () 运算符使用字符串的格式化方法使用 f-string&#xff08;格式化字符串&a…

大模型训练时间估算

文章目录 开激活重计算不开激活重计算开激活重计算 GPU利用率一般在 0.3 - 0.55 之间,假定为0.45 4090 理论性能:FP16:82.58 TFLOPS 不开激活重计算 我们来说一下系数8或6是怎么来的: 对于每个模型参数,都进行2次浮点数计算,即计算Y = AB 时,先将元素按位相乘,再按位相…

【笔记】软件测试07——web自动化测试(unittest)

五)unittest框架 unittest框架是什么?为什么要使用unittest框架 在unittest框架中创建测试在脚本中添加断言通过unittest框架对脚本进行管理自定义测试报告unittest框架中的参数化操作python unittest: Selenium python unittest framework 01通过unittest框架创建测试 必须…

侯捷 C++ part2 兼谈对象模型笔记——5 三个C++11新特性

5 三个C11新特性 5.1 variadic templates 模板参数可变化&#xff0c;其语法为 ... (加在哪看情况) // 当参数pack里没有东西了就调用这个基本函数结束输出 void print() { }// 用于打印多个参数的可变参数模板函数 template <typename T, typename... Args> void pri…

10.多线程

文章目录 10.1简述线程、程序、进程的基本概念。以及他们之间关系是什么?10.2线程有哪些基本状态? 10.1简述线程、程序、进程的基本概念。以及他们之间关系是什么? 线程与进程相似&#xff0c;但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程…

在next中使用antd表格,表格使用render函数报错

Error: Functions cannot be passed directly to Client Components unless you explicitly expose it by marking it with "use server". {title: "姓名", dataIndex: "name", key: ..., render: function} 错误描述&#xff1a;使用antd的tabl…

cocos 导出微信小游戏没有app.json

app.json对应的是微信小程序 game.json对应的是微信小游戏 只需要导入项目时选择小游戏再导入项目即可

DRF的Serializer组件(源码分析)

1. 数据校验 drf中为我们提供了Serializer&#xff0c;他主要有两大功能&#xff1a; 对请求数据校验&#xff08;底层调用Django的Form和ModelForm&#xff09;对数据库查询到的对象进行序列化 示例一: 基于Serializer # models.py class UserInfo(models.Model):username…