大语言模型-对比学习-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

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

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

相关文章

02 MySQL数据库管理

目录 1.数据库的结构 sql语言主要由以下几部分组成 2. 数据库与表的创建和管理 1,创建数据库 2,创建表并添加数据 3,添加一条数据 4,查询数据 5,更新数据 6,删除数据 3.用户权限管理 1.创建用户 …

js轮播图制作

实现一个简单的JavaScript轮播图可以通过以下步骤完成: 创建HTML结构,包括轮播图容器和图片列表。 使用CSS进行样式设置,包括隐藏多余的图片。 使用JavaScript编写函数来控制图片的切换。

C#中栈和堆以及修饰符

关于堆中字符串的存放 string s1"123" string s2"123" string s1"456" 此时s1输出为456 而s2仍然为123 因为在使用 String str "字符串" 的方式来创建String变量的时候,那么String的值便会存储在String常量池中&#x…

Keepalived和Haproxy

Keepalived和Haproxy 一、Keepalived 1、keepalived概念 调度器的高可用 vip地址主备之间的切换,主在工作时,vip地址值在主上,主停止工作,vip飘移到备服务器 在主备的优先级不变的情况下,主恢复工作,v…

C++——编译报重复定义错误的解决办法

原因: 头文件被多次编译。 解决办法: 找到包含头文件的地方,仔细检查。 比如: 这两句话是包含关系,写了第一句就不用第二句了。 因为:第一句是编译 tracker/detector/rknn_model_zoo/examples/yolov5/c…

【MySQL进阶之路 | 高级篇】简谈redo日志

1. 前言 事务有四种特性:原子性,一致性,隔离性和持久性。那么事务的四种特性到底是基于什么机制实现呢? 事务的隔离性由锁机制实现。而事务的原子性,一致性和持久性由事务的redo日志和undo日志来保证。 REDO LOG称为…

云计算实训13——DNS域名解析、ntp时间服务器配置、主从DNS配置、多区域DNS搭建

一、DNS域名解析 1.正向解析 将域名解析为IP地址 DNS正向解析核心配置 (1)安装bind [rootdns ~]# yum -y install bind (2)编辑配置文件 编辑named.conf文件,限定访问权限 [rootdns ~]# vim /etc/named.conf 编辑named.rfc文件,指定要访问的域名 [ro…

【数据结构】:用Java实现链表

在 ArrayList 任意位置插入或者删除元素时,就需要将后序元素整体往前或者往后搬移,时间复杂度为 O(n),效率比较低,因此 ArrayList 不适合做任意位置插入和删除比较多的场景。因此:java 集合中又引入了 LinkedList&…

一步一步测试DNS隧道

目录 0、前言 1、DNS解析 1.1 DNS简介 1.2 DNS查询类型 1.3 DNS解析过程 2、DNS隧道准备工作 2.1 DNS隧道介绍 2.1.1 什么是DNS隧道? 2.1.2 DNS隧道的原理 2.2 客户端、服务端准备 2.3 域名准备 2.4 连接隧道 2.5 遇坑 3、隧道确认和利用…

Windows本地启动Redis

找到本地redis目录 输入cmd,然后输入redis-server.exe redis.windows.conf,默认端口为6379 再新打开一个cmd,输入redis-cli.exe -p 6379 -a (你在redis.windows.conf中设置的密码)

如何做好服务器的安全管理

以下是一些服务器安全防护措施: 1、安装杀毒软件:安装杀毒软件是保护服务器免受病毒和恶意软件攻击的基本措施之一。保持杀毒软件更新至最新版本,定期扫描检测服务器以确保其不被病毒、蠕虫等恶意软件入侵。保护服务器免受侵害。像360杀毒&am…

HarmonyOS NEXT星河版零基础入门到实战

文章目录 一、HarmonyOS NEXT介绍学习内容1、鸿蒙APP开发2、能力套件开发3、全场景开发适合人群 持续更新中✒️总结 一、HarmonyOS NEXT介绍 放弃安卓框架之后,HarmonyOS NEXT成为真正独立于安卓、iOS的操作系统,堪称是一场史无前例的脱胎换骨。在其众多…

服务器利用宝塔面板部署Django项目

目录 1. 使用命令启动Django项目1.1 使用 Xshell 连接服务器1.2 安装Anaconda1.3 启动Django项目1.4 使用tmux实现项目的后台运行 2. 使用Python项目管理器部署项目2.1 安装宝塔面板和软件2.2 添加站点2.3 上传项目文件2.3.1 收集静态文件2.3.2 生成依赖文件 2.4 安装安装Pytho…

【周记】2024暑期集训第二周(未完待续)

文章目录 日常刷题记录合并果子题目解析算法思路代码实现 中位数题目解析算法思路代码实现 C学习笔记队列queue双端队列 deque优先队列 priority_queue定义常见操作 upper_bound 日常刷题记录 合并果子 题目解析 有一堆果子,每次可以将两小堆合并,耗费…

人的心体本乐,回归自己,清静快乐

94天 孔颜之乐,乐是心的本体;真乐,常人所共有; 人心本体,原来就没有什么不快乐的 - 陆元静问:孔颜之乐与七情之中的“ 乐 ”是否相同呢?我经常愁闷,未曾体会过“真乐”的感受&#x…

classfinal太强了,再也不怕被反编译了

这段时间在辛辛苦苦的编写一个算法程序,担心部署到客户服务器,客户反编译jar包,破解程序,那努力就白费了! 在网上查询,发现个好东东,classfinal可以加密jar包,防止反编译&#xff0…

华杉研发九学习日记18 集合 泛型

华杉研发九学习日记18 一,集合框架 1.1 集合和数组的区别 集合就是在java中用来保存多个对象的容器 集合是数组的升级版,集合中只能放置对象[object]. 数组: 在java中用来保存多个具有相同数据类型数据的容器 数组弊端: 1.数组只能保存…

【计算机网络】网络层——IPv4地址(个人笔记)

学习日期:2024.7.24 内容摘要:IPv4地址,分类编址,子网,无分类编址 IPv4地址概述 在TCP/IP体系中,IP地址是一个最基本的概念,IPv4地址就是给因特网上的每一台主机的每一个接口分配一个在全世界…

C语言 之 理解指针(4)

文章目录 1. 字符指针变量2. 数组指针变量2.1 对数组指针变量的理解2.2 数组指针变量的初始化 3. 二维数组传参的本质4. 函数指针变量4.1 函数指针变量的创建4.2 函数指针变量的使用 5. 函数指针数组 1. 字符指针变量 我们在前面使用的主要是整形指针变量,现在要学…

实战练习之Linux上实现shell脚本自动化编程

实验拓扑要求 主机环境描述 注意: 172.25.250.101-172.25.250.105 共 5 个 IP 地址由servera.exam.com服务器进行提供。172.25.250.106 由 serverb.exam.com 服务器进行提供。 需求描述 1. 172.25.250.101 主机上的 Web 服务要求提供 www.exam.com Web站点&#…