对比学习笔记

news2024/10/6 10:38:26

这里写目录标题

  • 什么是对比学习
  • 计算机视觉中的对比学习
  • 对比学习在NLP中的应用

什么是对比学习

对比学习是在没有标签的前提下学习样本之间的是否相似,其实和二分类比较相似,判断两个图像是不是属于同一个类别。换句话来说就是把相近的分布推得更近,不相近的分布推得更远。对比学习是自监督学习的一种。自监督学习有着自己给没有标签添加标签的能力,置信度最高的标签将会成为下一轮的GT从而来监督模型训练。在对比学习中就是给让模型根据特征的相似程度来将输入标记成正样本或者是负样本。他和半监督和无监督有着明显的不同,这里需要稍微注意一下。

计算机视觉中的对比学习

简单来说,对比学习的目的是为了从原数据中提取出更加高质量和细致的特征,然后去做下游任务。对比学习可以刺激模型从数据中提取更多更细的特征。首先要做的是生成正样本和负样本。我们输入进去的图像我们叫做anchor, 这里的正样本就是通过输入数据进行增强得到的图像。负样本可以是任意其他在数据集中的图像。虽然视觉上经过增强的图像和原来输入的图像已经有了明显的区别,但是图像本身的信息是没有发生改变的。 将经过增强的图像输入进encoder中得到一个低纬度的向量,这个encoder可以是transformer或者是resnet等。将获得的特征经过mlp映射之后,比较两者之间的相似度即可。 为什么要用mlp映射之后在比较呢? 添加mlp是为了让特征更具有针对性,更加适合某一个特定的任务。从encoder中提取出来的特征往往泛化能力更好,但是针对性会相对差一些。因为需要通过比较来学习图像之间的相似和不同,对比学习对负样本以及batch size 相对比较敏感,如果学习的时候负样本很少,或者没有,会使得模型崩塌,偏离学习目标。如果batch size较少,则每一个batch的对比次数较少,会不太容易收敛。这里所说的负样本指出输入意外的所有样本。 例如如果一个batch 中有512个样本,每一个就会发成511次比较。

对比学习的学习objective,有很多不同的藐视,但是最基本的是Max margin Contrastive Loss。这个损失就是最大化不同样本之间的距离,最小化相同样本之间距离。
在这里插入图片描述
还有一个常见的损失叫做Triplet Loss,本质上和上述的损失原理差不多,不同在于上述损失没有将anchor考虑进来,Triplet Loss考虑进来了。 Triplet Loss 表示为:
在这里插入图片描述
从上述可以看出,对比学习中,负样本的重要性,但是早期也有模型声称可以不使用负样本进行对比学习。这个模型叫BYOL,前面的结构都差不多。和之前不同的是,这个模型不在比较输出两个向量的相似度了,然后将一个值看成预测值,一个看作GT,将这个任务变成了有点像回归任务,让这两个值之间的loss最小。 具体示意图:
在这里插入图片描述
根据后续的一些研究发现,这种方式之所以能行,是因为在映射的时候使用了batch normalization。因为BN它考虑的是整个batch里所有的样本,如果Batch够大的话,在计算的时候,也考虑进了负样本的均值和方差。所以让学习的效果很好。虽然表面上看来确实没有使用负样本,但是在后续计算的时候也考虑了负样本。

对比学习在NLP中的应用

NLP中的不相同的句子可能会表示一样的意思,同样的句子可能会表示不同的意思。 SIMCSE提供了一个简单的思想,那就是添加dropout. 因为dropout会随机的惩罚模型,也就是会随机的扔掉一些特征。 从另一个角度思考也就是,dropout 提供了一个集成模型(因为每一次dropout之后,模型的参数都会发生改变)。那么同一个句子就会产生不同的输出,但是归根揭底,不同的输出表示的确实同一句话的意思。那么我们就可以把通过dropout输出的看作是anchor的正样本。负样本和之前视觉中的定义差不多。

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

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

相关文章

深入学习心理学才知道以前高估了自己的交易能力

人的大脑总是能带来无限的惊喜。你能同时完成很多种工作而没有觉察你自己正在做这些事情。比如你一边开车一边打电话讨论着很严肃的事,边吃饭边用眼睛关心着后排坐着的孩子。除了这些外部的动作,你的内脏机能也在马不停蹄的工作着。这一切并不需要我们付…

如何在windows server下安装mysql5.7数据库,并使用Navicat Premium 15可视化工具新建数据库并读取数据库信息。

如何在windows server下安装mysql5.7数据库? MySQL :: Download MySQL Community Server (Archived Versions)https://downloads.mysql.com/archives/community/点击↑,然后选择对应版本和平台↓下载 将下载后的安装包放入固定目录(这里以D:…

Spring Cloud Alibaba 分布式配置中心(9)

项目的源码地址 Spring Cloud Alibaba 工程搭建(1) Spring Cloud Alibaba 工程搭建连接数据库(2) Spring Cloud Alibaba 集成 nacos 以及整合 Ribbon 与 Feign 实现负载调用(3) Spring Cloud Alibaba Ribbo…

SpringCloud------Eureka,Ribbon,Nacos

认识微服务 微服务技术栈 微服务概念 微服务结构 微服务技术对比 企业需求 SpringCloud 认识Springcloud 服务拆分及远程调用 每个服务只能查询自己数据库中的表,导致其他服务如果想使用别人的表数据,这就需要进行远程调用,这里使用RestTem…

资料如何打印更省钱

在日常工作和学习中,我们经常需要打印各种资料。然而,随着打印成本的不断提高,如何更省钱地打印资料成为了大家关注的焦点。今天,就为大家分享一些资料打印的省钱技巧,并推荐一个省钱又省心的打印平台。 首先&#xff…

【Qt】常用控件(一)

文章目录 一、核心属性1、enabled代码示例: 通过按钮2 切换按钮1 的禁用状态 2、geometry代码示例: 控制按钮的位置代码示例:window frame 的影响代码示例: 感受 geometry 和 frameGeometry 的区别 3、windowTitle4、windowIcon代码示例: 通过 qrc 管理图片作为图标…

windows安装DrawDB

下载 新建一个目录drawdb,使用git下载,如果没有安装git的话,进入git官网进行下载windows版本 https://git-scm.com/downloads。 空白地方鼠标右键,打开git终端 执行命令: git clone https://github.com/drawdb-io/drawdb 安装依…

服务攻防——数据库安全

第一步: 端口扫描:nmap 扫不到端口:端口被修改,防护软件,放在内网环境 mysql 内置端口3306 第一种官方漏洞 第一步:先扫描有什么端口开发 用这个错误密码一直访问,最终就进去了 弱口令猜解 不可以直接猜解&#x…

STM32(开篇总结)

STM32介绍 STM32是意法半导体公司基于ARM Cortex-M内核开发的32位微控制器 STM32常应用在嵌入式领域,如智能车、无人机、机器人、无线通信、物联网、工业控制、娱乐电子产品等 STM32功能强大、性能优异片上资源丰富、功耗低,是一款经典的嵌入式微控制器…

PSRAM是什么?

1.PSRAM是什么? PSRAM,全称 伪静态随机存储器,它是采用动态随机存储器的工艺和技术,实现类似于静 态随机存储器一样的存储器件。静态随机存储器采用6T架构,而动态随机存储器采用1T(晶体管)1C&a…

2024年区块链、信号处理与航空航天国际学术会议(ICBSPA 2024)

2024年区块链、信号处理与航空航天国际学术会议(ICBSPA 2024) 2024 International Conference on Blockchain, Signal Processing, and Aerospace 一、【会议简介】 随着科技的飞速发展,区块链、信号处理与航空航天等领域的交叉融合正成为推动科技进步的…

栈与队列OJ题【括号适配问题】【用队列实现栈】【用栈实现队列】【设计循环队列】

一.有效的括号 ​​​OJ链接 这一道题我们就可以用栈来解决: 不了解栈的可以看我的上一篇博客。 typedef char STDataType; //用数组来实现栈 typedef struct stack {STDataType* a;int capacity;int top; }ST; void STInit(ST* pst) {assert(pst);pst->a NU…

STK12 RPO模块学习(2)

一、Coast RPO Sequence 这个序列运行卫星直到它达到了下面三个条件之一。 1)截至时间。2)圈数到达了限制。3)其他条件,比如近地点。 默认情况下,Astrogator使用“Earth HPOP Default v10”预报器。你能够修改呈其他修改器。下…

Mysql与Java连接----JDBC

前言: 当将Java与MySQL数据库连接时,JDBC(Java Database Connectivity)是一种重要的技术。JDBC允许Java应用程序通过标准的数据库访问方式与不同的关系型数据库进行通信,其中包括MySQL。通过使用JDBC,Java开发人员可以…

如何查看centos7是否安装nginx

要查看 CentOS 7 系统上是否安装了 Nginx,您可以使用多种方法来检查。以下是一些常见的方法: 通过 RPM 包管理器查询 在 CentOS 系统上,可以使用 RPM 包管理器来查询已安装的软件包。要查看是否安装了 Nginx,您可以在终端中运行以…

宁夏银川市起名专家的老师颜廷利:死神(死亡)并不可怕,可怕的是...

在中国优秀传统文化之中,汉语‘巳’字与‘四’同音,在阿拉伯数字里面,通常用‘4’来表示; 湖南长沙、四川成都、重庆、宁夏银川最靠谱最厉害的起名大师的老师颜廷利教授指出,作为汉语‘九’字,倘若是换一个…

【GD32】03 - EXTI外部中断

EXTI EXTI,全称External Interrupt/Event Controller,即外部中断/事件控制器,是微控制器中的一个重要组成部分。它主要用于管理来自外部设备的中断和事件请求。以下是关于EXTI的详细介绍: 功能概述: EXTI管理了控制器的…

非常简单的长期兼职,无脑复制粘贴,每天稳定200-300+

带货这个概念已经不再陌生,许多人对此产生了浓厚的兴趣。今天,我将向大家介绍一个百家号带货项目,这是我一位朋友正在操作的项目。最近与他交流后,我觉得这个项目具有相当的操作性。他并非只运营了一个账号,而是同时管…

经典权限五张表案例分析

文章目录 模块分析模块分析 描述五张表的关系重要知识讲解抽取成一个BaseServletSpringIOC思想(底层)实现代码IOC概述 SPI机制(为学习框架做思想和技术铺垫)SPI引入1. 标准/规范2. 具体的实现3. 调用 SPI介绍SPI练习JDBC4.0免注册驱动原理Servlet实现方式三 ServletContainerIn…

卷积神经网络边缘识别

为什卷积神经网络能够识别图片呢?是基于图片相似度比较,两张图片的点击越大说明两张图片越像,比如我们那狗胡子的图片去比较,如果相似度很高,就是认为这个动物更像狗。点积越大,图片越相似,这个…