对比学习笔记

这里写目录标题

  • 什么是对比学习
  • 计算机视觉中的对比学习
  • 对比学习在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.mzph.cn/news/837183.shtml

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

相关文章

用Arm CCA解锁数据的力量

安全之安全(security)博客目录导读 目录 CCA将如何改变Arm架构呢? 在实践中部署CCA 释放数据和人工智能的全部力量和潜力 早期计算中最大的挑战之一是管理计算资源,以最大化计算效率同时提供给不同程序或用户分配资源的分离。这导致了我们今天大多数使用的时间…

MinIO学习笔记

MINIO干什么用的: AI数据基础设施的对象存储 为人工智能系统提供数据支持,数据存储;对象存储(Object Storage)是一种数据存储架构,它以对象为单位来处理、存储和检索数据,每个对象都包含了数据本…

ModuleSim 仿真找不到模块 module is not defined

提示如下: # vsim -t 1ps -L altera_ver -L lpm_ver -L sgate_ver -L altera_mf_ver -L altera_lnsim_ver -L cycloneive_ver -L rtl_work -L work -voptargs""acc"" pulse_generator_tb # Start time: 14:26:25 on May 10,2024 # ** Note: (…

开关电源功率测试方法:输入、输出功率测试步骤

在现代电子设备中,开关电源扮演着至关重要的角色,其效率和稳定性直接影响到整个系统的性能。因此,对开关电源进行功率测试成为了电源管理的重要环节。本文将详细介绍如何使用DC-DC电源模块测试系统对开关电源的输入输出功率进行准确测量&…

网络安全之OSPF进阶

该文针对OSPF进行一个全面的认识。建议了解OSPF的基础后进行本文的一个阅读能较好理解本文。 OSPF基础的内容请查看:网络安全之动态路由OSPF基础-CSDN博客 OSPF中更新方式中的触发更新30分钟的链路状态刷新。是因为其算法决定的,距离矢量型协议是边算边…

Python | Leetcode Python题解之第87题扰乱字符串

题目: 题解: class Solution:def isScramble(self, s1: str, s2: str) -> bool:cachedef dfs(i1: int, i2: int, length: int) -> bool:"""第一个字符串从 i1 开始,第二个字符串从 i2 开始,子串的长度为 le…

Kubernetes中的RBAC

目录 1. Role2. ClusterRole3. RoleBinding4. ClusterRoleBinding5.启用 RBAC Kubernetes中的RBAC(Role-Based Access Control,基于角色的访问控制)是一种机制,用于控制集群内资源的访问权限。RBAC允许管理员通过定义角色&#xf…

5.13号模拟前端面试10问

1.介绍箭头函数和普通函数的区别 箭头函数和普通函数在JavaScript中有一些重要的区别。以下是关于这些区别的详细解释: 语法结构上的差异: 箭头函数使用更简洁的语法,它不需要使用function关键字,而是使用一个箭头(…

第三方组件element-ui

1、创建 选vue2 不要快照 vue2于vue3差异 vue2main。js import Vue from vue import App from ./App.vueVue.config.productionTip falsenew Vue({render: h > h(App), }).$mount(#app)vue3 main.js vue2不能有多个跟组件(div)

JavaCRUD模板参考

Mapper层 Mapper public interface ExCategoryMapper extends BaseMapper<ExCategory> { }Service层 package co.yixiang.exam.service;import co.yixiang.exam.common.R; import co.yixiang.exam.entity.ExStudent; import com.baomidou.mybatisplus.core.metadata.IP…

windows驱动开发-INF文件(二)

下面是INF文件中会出现的节的说明&#xff0c;我尽可能涵盖所有的部分。 inf-version [Version]Signature"signature-name" [Classclass-name] [ClassGuid{nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn}] [Provider%INF-creator%] [ExtensionId{xxxxxxxx-xxxx-xxxx-xxxx-…

牛客网刷题 | BC82 乘法表

目前主要分为三个专栏&#xff0c;后续还会添加&#xff1a; 专栏如下&#xff1a; C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读&#xff01; 初来乍到&#xff0c;如有错误请指出&#xff0c;感谢&#xff01; 描述 输出九九乘法表&am…

ASP.NET医药进销存系统

摘 要 目前&#xff0c;大中型城市的多数药品店已经实现了商品管理、客户管理、销售管理及销售管理等的信息化和网络化&#xff0c;提高了管理效率。但是&#xff0c;在大多数小药品店&#xff0c;药品店管理仍然以传统人工管理为主&#xff0c;特别是在药品的采购、销售、库…

污水设备远程监控

随着环保意识的日益增强&#xff0c;污水处理作为城市建设和环境保护的重要一环&#xff0c;越来越受到社会各界的关注。然而&#xff0c;传统的污水处理设备管理方式往往存在着效率低下、响应速度慢、维护成本高等问题。为了解决这些痛点&#xff0c;HiWoo Cloud平台凭借其强大…

【数据结构】栈和队列OJ面试题

20. 有效的括号 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;由于C语言没有栈的接口&#xff0c;所以我们需要自己造一个“模子”。我们直接copy之前的实现的栈的接口就可以了&#xff08;可以看我之前的博客【数据结构】栈和队列-CSDN博客copy接口&#xff09;&…

BGP基础配置实验

BGP基础配置实验 一、实验拓扑 初始拓扑&#xff1a; 最终拓扑&#xff1a; 二、实验要求及分析 实验要求&#xff1a; 1&#xff0c;R1为AS 100区域&#xff1b;R2、R3、R4为AS 200区域且属于OSPF协议&#xff1b;R5为AS 300区域&#xff1b; 2&#xff0c;每个设备上都有…

python中匿名函数简单样例

目录 一、匿名函数&#xff08;也称为 lambda 函数&#xff09;&#xff1a; 二、简单样例&#xff1a; 2.1 filter() 函数: 2.2 map() 函数: 2.3 sorted() 函数: 一、匿名函数&#xff08;也称为 lambda 函数&#xff09;&#xff1a; 简洁性&#xff1a;匿名函数通常比命…

全面监控:系统日志分析与记录

全面监控&#xff1a;系统日志记录 系统日志是记录计算机系统各种活动和事件的文件或数据库。它们包含了系统的运行状态、错误信息、警告、用户操作记录等。 系统管理员和软件开发人员经常使用系统日志来诊断问题、监视系统性能和跟踪用户活动。 日志记录通常包括时间戳、事…

I. Integer Reaction

Problem - I - Codeforces 看到最小值最大值&#xff0c;二分答案。 思路&#xff1a;每次二分时开两个集合&#xff0c;分别表示 0 0 0颜色和 1 1 1颜色。如果是 c c c颜色&#xff0c;先将值存入 c c c颜色&#xff0c;之后在 ! c !c !c颜色中找大于等于 m i d − a mid - a…

软件设计师笔记(三)-设计模式和算法设计

本文内容来自笔者学习zst 留下的笔记&#xff0c;都是零碎的要点&#xff0c;查缺补漏&#xff0c;希望大家都能通过&#xff0c;记得加上免费的关注&#xff01;谢谢&#xff01;本章主要以下午题出现形式为主&#xff01; 文章编辑于&#xff1a;2024-5-13 13:43:47 目录 1…