当前位置: 首页 > news >正文

大语言模型-对比学习-Contrastive Learning

一、对比学习概念

对比学习是一种特殊的无监督学习方法
旨在通过拉近相关样本的距离并且推远不相关样本的距离,来学习数据表示
通常使用一种高自由度、自定义的规则来生成正负样本。在模型预训练中有着广泛的应用。

二、对比学习小案例

对比学习主要分为三个模块:

  • 正负样本的定义

  • Encoder(编码器)的定义

  • 损失函数的定义

把这三个模块通过下面的例子进一步说明:
1、 正负样本的定义:例如可以把句子集中,把除了其自身通过增强以外的句子都当作负样本。
2、Encoder定义: 不同的数据通过Encoder获得向量表示,通过损失函数更新查询向量一侧的Encoder参数。
3、损失函数的定义: 于是对比学习的训练目标可以简化为
L C L = − log ⁡ e S i , i τ ∑ j = 1 , j ≠ i N e S i , j τ L_{CL} = -\log_{}{}\frac{e^{\frac{S_{i,i}}{\tau }} }{\sum_{j=1,j\ne i}^{N}e^{\frac{S_{i,j}}{\tau } }} LCL=logj=1,j=iNeτSi,jeτSi,i

其中 S i , i S_{i,i} Si,i指的是两个特征向量的余弦相似性, S i , i = s i m ( h i , h j ) = C o s i n e S i m ( h i , h j ) = h i T h j ∣ ∣ h i ∣ ∣ ⋅ ∣ ∣ h j ∣ ∣ S_{i,i} = sim(h_{i},h_{j})= CosineSim(h_{i},h_{j})=\frac{h_{i}^{T}h_{j}}{||h_{i}||\cdot ||h_{j}||} Si,i=sim(hi,hj)=CosineSim(hi,hj)=∣∣hi∣∣∣∣hj∣∣hiThj τ \tau τ是温度系数, τ = 0.05 \tau=0.05 τ=0.05

三、对比学习的评估

对齐性均匀性
对比学习一个重要的特点是它得到的特征向量具有对齐性和均匀性。

对齐性:

对齐性意义: 相似的特征向量的距离比较接近。
对齐性评估指标
L a l i g n = E ( x , x + ) ∼ p p o s ∥ f ( x ) − f ( x + ) ∥ L_{align} = E_{(x,x^{+})\sim p_{pos}}\left \| f(x) - f(x^{+}) \right \| Lalign=E(x,x+)ppos f(x)f(x+)
对齐性的量化指标通常是正样本对之间的期望距离

均匀性:

均匀性意义: 特征向量的分布更加符合均匀分布
对齐性评估指标:通常是径向基函数核(RBF kernel)

均匀性的一个极端反例是特征向量都映射到了超球面的一个点附近,此时特征向量的分布是极度不均匀的,一般将这种情况叫做模型坍塌(Collapse)

四、对比学习的正负样本

对比学习的正负样本也被称作是对比学习代理任务,通常有两种:

  • 个体判别:对于数据集中的任意一个句子而言,除了其自身通过增强获取到的句子正样本外,数据集内的其余句子都为负样本。

  • 数据聚类:对于不同视角、传感器、模式获取的同一对象数据,为正样本,其余数据都为负样本。

正负样本的定义就是在构建一套标注规则。

五、对比学习的损失函数

对比学习最底层的思想是在某个特征空间上拉近相关样本的距离并且推远不相关样本的距离。
InfoNCE loss是对比学习中比较常用的一种损失函数。
L N = − log ⁡ e S i , i τ ∑ j = 1 , j ≠ i N e S i , j τ L_{N} = -\log_{}{}\frac{e^{\frac{S_{i,i}}{\tau }} }{\sum_{j=1,j\ne i}^{N}e^{\frac{S_{i,j}}{\tau } }} LN=logj=1,j=iNeτSi,jeτSi,i

其中 S i , i S_{i,i} Si,i指的是两个特征向量的余弦相似性, S i , i = s i m ( h i , h j ) = C o s i n e S i m ( h i , h j ) = h i T h j ∣ ∣ h i ∣ ∣ ⋅ ∣ ∣ h j ∣ ∣ S_{i,i} = sim(h_{i},h_{j})= CosineSim(h_{i},h_{j})=\frac{h_{i}^{T}h_{j}}{||h_{i}||\cdot ||h_{j}||} Si,i=sim(hi,hj)=CosineSim(hi,hj)=∣∣hi∣∣∣∣hj∣∣hiThj τ \tau τ是温度系数。

  • 对比学习损失则给相似度更高的负样本更高的惩罚,可以通过对比损失的负样本的惩罚梯度得到。
  • 对比损失具有将所有特征拉倒同一个超球面上的作用。
  • τ \tau τ趋近于无限大时,对比损失失去对困难负样本的关注能力。
  • 随着 τ \tau τ 的减小,难样本的权值会越来额越高。

对比学习作为无监督学习中的一种,因为其高自由度的正负样本定义、出色的性能成为无监督学习中重要的研究方向,极大地推动了无监督学习的发展。

Reference

1、大师兄-对比学习之SimCSE
2、对比学习(Contrastive Learning)概述
3、Representation Learning with Contrastive Predictive Coding

相关文章:

大语言模型-对比学习-Contrastive Learning

一、对比学习概念 对比学习是一种特殊的无监督学习方法。 旨在通过拉近相关样本的距离并且推远不相关样本的距离,来学习数据表示。 通常使用一种高自由度、自定义的规则来生成正负样本。在模型预训练中有着广泛的应用。 二、对比学习小案例 对比学习主要分为三个…...

C++ 封装的用法

C(七)封装 封装,可以达到,对外提供接口,屏蔽数据,对内开放数据。 权限控制 struct 中所有行为和属性都是 public 的(默认),此举也是为了 C兼容 C 语言, 因为 C 语言中没有权限的概念。 C中的 class 可以…...

【C++11:异常】

目录 抛异常标准书写格式 抛异常如何执行? 指定抛出异常类型: noexcept 关键字:throw 抛异常标准书写格式 抛异常如何执行? 当212行的异常被抛出,程序会重新返回函数func中,在函数中去寻找catch 语句的…...

Dify中HTTP请求节点的常见操作

HTTP节点包括API请求类型(GET、POST、HEAD、PATCH、PUT、DELETE),鉴权类型(无、API-Key基础、API-Key Bearer、API-Key自定义),HEADERS键值设置,PARAMS键值设置,BODY(non…...

《大语言模型(赵鑫)》知识框图

...

【Android】性能实践—编码优化与布局优化学习笔记

编码优化 使用场景 如果需要拼接字符串,优先使用StringBuffer和StringBuilder进行凭借,他们的性能优于直接用加号进行拼接,因为使用加号连接符会创建多余的对象一般情况下使用基本数据类来代替封装数据类型(比如int优于Integer&…...

如何合规与安全地利用专业爬虫工具,构建企业数据竞争优势

摘要: 本文深入探讨了在当今大数据时代,企业如何通过合规且安全的方式运用专业爬虫工具,有效收集并分析海量信息,进而转化为企业独有的数据优势。我们不仅会介绍最佳实践,还会讨论关键技术和策略,帮助企业…...

自动驾驶三维车道线检测系列—OpenLane数据集介绍

文章目录 1. 背景介绍2. OpenLane数据集详细描述2.1 数据集特点2.2 坐标系定义 3. 使用方法4. 结论 1. 背景介绍 自动驾驶技术的发展日新月异,而3D车道感知是其核心之一。本文将深入介绍OpenLane数据集——迄今为止规模最大、最接近真实世界的3D车道数据集。我们将…...

CMakeList学习笔记

设置项目:project project(planning VERSION 1.0.0 LANGUAGES CXX) # 项目的名字 版本 1.1.0 编程语言 CXX 设置包含目录:include_directories、targer_include_directories 设置编译类型:add_executable、add_library add_executable(demo d…...

将git默认的编辑器设置为vin

git默认编辑器现状 如下&#xff0c;很多linux发行版&#xff0c;未加修改的情况下&#xff0c;git的默认编辑器使用起来不太方便 Signed-off-by: root <rootxxx.COM># Please enter the commit message for your changes. Lines starting # with # will be ignored, a…...

ros2_control 6 自由度机械臂

系列文章目录 前言 ros2_control 是一个实时控制框架&#xff0c;专为普通机器人应用而设计。标准的 c 接口用于与硬件交互和查询用户定义的控制器命令。这些接口增强了代码的模块化和与机器人无关的设计。具体的应用细节&#xff0c;例如使用什么控制器、机器人有多少个关节以…...

Python 在自动化中的实际应用:用 Python 简化繁琐任务

文章目录 1、概述2、自动化文件和目录管理3.数据处理与分析4.网页爬虫5. 系统管理6。定时任务7.结语 1、概述 这篇文章将深入探讨Python在自动化中的实际应用&#xff0c;帮助您用Python简化繁琐任务。 我们将从多个方面入手&#xff0c;展示如何利用Python进行文件管理、数据…...

解释 Spring 框架的核心模块(如 IoC 容器、AOP )及其工作原理。描述如何使用 Spring Boot 快速搭建一个 RESTful Web服务?

Spring框架是一个广泛使用的Java企业级应用程序开发框架&#xff0c;它提供了一系列的模块来帮助开发者构建健壮、可测试、可维护的应用程序。 其中&#xff0c;最核心的模块包括IoC容器和AOP&#xff08;Aspect Oriented Programming&#xff0c;面向切面编程&#xff09;。 …...

数据分析详解

一、数据分析教程 1. 入门教程 在线课程&#xff1a;如Coursera、Udemy、网易云课堂等平台提供了大量数据分析的入门课程&#xff0c;涵盖统计学基础、Python/R语言编程、数据可视化等内容。书籍推荐&#xff1a;《Python数据分析实战》、《R语言实战》等书籍是数据分析入门的…...

SpringCloud之@FeignClient()注解的使用方式

FeignClient介绍 FeignClient 是 Spring Cloud 中用于声明一个 Feign 客户端的注解。由于SpringCloud采用分布式微服务架构&#xff0c;难免在各个子模块下存在模块方法互相调用的情况。比如订单服务要调用库存服务的方法&#xff0c;FeignClient()注解就是为了解决这个问题的…...

20.rabbitmq插件实现延迟队列

问题 前面谈到基于死信的延迟队列&#xff0c;存在的问题&#xff1a;如果第一个消息延时时间很长&#xff0c;而第二个消息延时时间很短&#xff0c;第二个消息并不会优先得到执行。 下载插件 地址&#xff1a;https://github.com/rabbitmq/rabbitmq-delayed-message-excha…...

TS如何处理js模块的类型?

现在很多插件都直接用ts开发了&#xff0c;本身包含了类型定义常见的第三方插件&#xff0c;都有’types/xxx’包&#xff0c;安装即可使用其他的&#xff0c;可通过declare module定义类型 比如&#xff1a; // someModule.js export function greet(name) {return Hello, $…...

GPS定位系统(VUE框架)

源码下载&#xff1a;小宅博客网 博主之前写的《GPS定位系统&#xff08;MVC框架&#xff09;》版本&#xff0c;并没有做到前后端分离&#xff0c;不太适合多人协作开发&#xff0c;这边博主分享一个基于asp.net web api vue3的GPS定位系统框架&#xff0c;本框架继承了MVC框…...

分布式光伏并网AM5SE-IS防孤岛保护装置介绍——安科瑞 叶西平

产品简介 功能&#xff1a; AM5SE-IS防孤岛保护装置主要适用于35kV、10kV及低压380V光伏发电、燃气发电等新能源并网供电系统。当发生孤岛现象时&#xff0c;可以快速切除并网点&#xff0c;使本站与电网侧快速脱离&#xff0c;保证整个电站和相关维护人员的生命安全。 应用…...

神奇的方法解决Navicat闪退

原因 打开Navicat操作上面的工具等就会闪退&#xff0c;原因竟然是屏幕划词&#xff01;&#xff01;&#xff01; 解决方法 看别人提到有道词典的划词功能的原因 我没有安装有道词典&#xff0c;但我安装豆包&#xff0c;它也有划词翻译的功能&#xff0c;关闭即可...

DASD-4B-Thinking部署教程:Docker镜像内vLLM服务健康检查脚本编写与自动重启

DASD-4B-Thinking部署教程&#xff1a;Docker镜像内vLLM服务健康检查脚本编写与自动重启 1. 项目背景与需求 DASD-4B-Thinking是一个专门针对数学、代码生成和科学推理任务优化的40亿参数语言模型。它通过vLLM框架部署&#xff0c;配合chainlit前端提供交互式体验。但在实际使…...

OpenCV图像拼接避坑指南:为什么你的特征点总是匹配失败?

OpenCV图像拼接避坑指南&#xff1a;为什么你的特征点总是匹配失败&#xff1f; 当你第一次尝试用OpenCV实现图像拼接时&#xff0c;可能会遇到一个令人沮丧的问题&#xff1a;明明按照教程一步步操作&#xff0c;特征点匹配的结果却惨不忍睹。要么匹配点对寥寥无几&#xff0c…...

Tauri开发手记——1.从零到一:环境搭建与首次构建实战

1. 环境准备&#xff1a;从零搭建Tauri开发环境 第一次接触Tauri开发时&#xff0c;环境搭建往往是最让人头疼的环节。作为一个跨平台桌面应用框架&#xff0c;Tauri需要同时处理前端和后端&#xff08;Rust&#xff09;的依赖关系。我在Windows系统上踩过不少坑&#xff0c;现…...

MCP服务弹性伸缩失效导致预算超支?从冷启动延迟到空闲实例回收的7步精准控费法

第一章&#xff1a;MCP服务弹性伸缩失效的根本归因诊断MCP&#xff08;Microservice Control Plane&#xff09;服务在生产环境中频繁出现弹性伸缩延迟、扩缩容不触发或缩容后 Pod 持续残留等异常现象&#xff0c;其表象背后往往隐藏着多层耦合的系统性缺陷。深入诊断需穿透监控…...

macOS专属方案:OpenClaw+nanobot镜像的5个效率技巧

macOS专属方案&#xff1a;OpenClawnanobot镜像的5个效率技巧 1. 为什么选择OpenClawnanobot组合 作为一个长期使用macOS的开发者&#xff0c;我一直在寻找能够提升日常工作效率的自动化工具。直到遇到OpenClaw和nanobot这个组合&#xff0c;才真正找到了适合个人使用的智能助…...

免费开源策略卡牌:如何在无名杀中创造你的专属三国战场

免费开源策略卡牌&#xff1a;如何在无名杀中创造你的专属三国战场 【免费下载链接】noname 项目地址: https://gitcode.com/GitHub_Trending/no/noname 在当今数字游戏世界中&#xff0c;有一款独特的开源策略卡牌游戏正悄然改变着玩家与游戏的关系。这款名为"无…...

BetterGI完整指南:原神自动化助手的功能解析与使用教程

BetterGI完整指南&#xff1a;原神自动化助手的功能解析与使用教程 【免费下载链接】better-genshin-impact &#x1f368;BetterGI 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动派遣 | 一键强化 - UI Automation Testing Tools Fo…...

轮速计里程计:从后轮速差模型到精准定位的实现与挑战

1. 轮速计里程计&#xff1a;为什么后轮速差模型是机器人的“起点”&#xff1f; 如果你刚开始接触机器人定位&#xff0c;面对IMU、激光雷达、视觉这些五花八门的传感器&#xff0c;可能会有点懵。别急&#xff0c;绝大多数轮式机器人的定位之旅&#xff0c;都是从脚下开始的&…...

Janus-Pro-7B实战案例:电商商品图识别+营销图自动生成

Janus-Pro-7B实战案例&#xff1a;电商商品图识别营销图自动生成 1. 项目背景与价值 电商行业每天都需要处理海量的商品图片和营销素材。传统方式需要人工识别商品信息、手动设计营销图片&#xff0c;不仅效率低下&#xff0c;成本也很高。Janus-Pro-7B作为统一多模态理解与生…...

华为交换机VRRP实战:用eNSP模拟一个部门隔离、主备网关自动切换的企业网

华为eNSP实战&#xff1a;VRRP高可用网关设计与故障模拟全解析 当市场部的同事正在视频会议时突然断网&#xff0c;而技术部的代码提交也因网络抖动失败——这类因单点故障引发的业务中断&#xff0c;在企业网中绝非个例。本文将用华为eNSP模拟器&#xff0c;带您构建一个具备毫…...