自监督对比学习系列论文(一):无引导对比学习--MOCO,SimCLR

news2024/12/28 6:17:06

自监督对比学习

 对比学习(self-supervised learning)的应用场景是用无标记或者少标记的数据进行模型的预训练以得到一个较好的预训练模型,然后便可将该模型轻松的迁移到到下游任务上。显而易见的,对比学习的难点在于我们如何在没有标注的情况下来指导模型的训练,也就是如何设计pretext task。其中较为常用的一种就是实例自监督对比学习(instance-wise contrastive learning),这一场景下数据集中的所有的原始样本都被认为是彼此孤立的一类,而一张图片经过某种变换得到的新样本则被认为和原样本属于同类样本,这样原样本和变换后样本组成了一对正例、原样本和其他样本组成范例,网络训练的目的就变成了最大化反例对间的距离,同时最小化正例对间的距离。这一任务中三个要点:

  1. 反例的选取,由于每一个样本都被单独视作一类,均可构成反例,但全都用于训练训练开销过大,那么如何从中选取对于训练最有帮助的负类。
  2. 正例的构成,如何设计一个好的变换,使得变换后的样本和原始样本属于同类,但又不至于完全一致使得网络轻松过拟合。
  3. 损失函数的设计,问题的关键在于拉近正例对之间的距离,同时推开反例对,那么如何定义这一距离、如何实现这一目的就是损失函数应该考虑的部分。

无监督对比学习

 无监督对比学习走的是最传统的对比学习路线,也就是构建正负样本对,在instance-wise的层面上优化特征空间。代表性的工作有simCLR, MOCO以及BYOL,其思路是大差不差的,只是在反例的选取机制上存在着差异。

simCLR

 simCLR的整体思路就和之前介绍的一样,如下图所示
在这里插入图片描述

网络由四个部分组成,包括图像增强编码器映射头损失函数,其中映射头在训练完成后会被舍弃,仅仅留下编码器模块用于下游任务。simCLR首先将一个BATCH中的 N N N张图片通过两种不同的变换得到 2 N 2N 2N张变换后图片,对于某一张图片而言,和它具有相同来源的图片构成正例,其余的 2 ( N − 1 ) 2(N-1) 2(N1)张图片构成反例。由此,对于原始BATCH里的一张图片,我们可以得到1个正例和 2 ( N − 1 ) 2(N-1) 2(N1)个反例。网络训练的损失函数使用了infoNCE如下:
l i , j = − l o g e x p ( s i m ( z i , z j ) / τ ) ∑ k = 1 2 N l k ≠ i e x p ( s i m ( z i , z k ) / τ ) l_{i,j}=-log\frac{exp(sim(z_i,z_j)/\tau)}{\sum_{k=1}^{2N}\mathbf{l}_{k\neq i}exp(sim(z_i,z_k)/\tau)} li,j=logk=12Nlk=iexp(sim(zi,zk)/τ)exp(sim(zi,zj)/τ)
其中 z i , z j z_i,z_j zi,zj即对应同一张图片经变换得到两张图片网络提取出的特征, z K z_K zK为其余图片经网络提取出的特征, τ \tau τ为温度控制系数,,这里的 s i m sim sim函数使用了简单的余弦距离。这个infoNCE loss可以认为是交叉损失熵函数的变体,在对样本进行 2 N − 1 2N-1 2N1分类,也就是 ∑ i = 1 2 N − 1 y i l o g y i ^ , y i = e x p ( z i ) ∑ k = 1 2 N − 1 e x p ( z k ) \sum_{i=1}^{2N-1}y_ilog\hat{y_i},y_i=\frac{exp(z_i)}{\sum_{k=1}^{2N-1}exp(z_k)} i=12N1yilogyi^,yi=k=12N1exp(zk)exp(zi),更为详细的解释参考1
 simCLR整体而言非常的“朴素”,提出了一个基本的contrastive learning框架,论文主要关注的还是不同augment对于模型训练的影响。

MOCO

 MOCO想要解决的问题是反例的选取,如同simCLR一样使用同一个BATCH的样本作为反例不是不可以,但infoNCE loss的天然属性决定了负样本越多,模型训练的越好,但简单的增大BATCH数目又会带来巨大的计算开销和训练成本。因此MOCO提出了一种渐进式更新的解决方案,具体机制分为memory bank和动量更新两个部分,如下图所示:

在这里插入图片描述

 对于输入 N N N张图片,我们仍然是进行两种不同的变换得到了 2 N 2N 2N张变换后的图片,对于某一个样本而言,同样构成了1个正例,但反例的数目不再是 2 N − 1 2N-1 2N1,而是由memory bank所确定,memory bank是一个存有过去 K ( K > > N ) K(K>>N) K(K>>N)张图片的队列,由此可以形成 K K K个反例,经过这一个batch训练后,memory bank使用这一个batch的图片进行更新。
 到此为止的话,我们解决了负例数目的问题,但是没有解决负例过多带来的开销问题。moco进一步固定住了momentum encoder的更新,禁止了momentum encoder中权重经过反向传播来更新,改为每个batch结束使用endoer的值(encoder和momentum encoder架构一致)进行动量更新:
θ k ← m θ k + ( 1 − m ) θ m \theta_k\leftarrow m\theta_k+(1-m)\theta_m θkmθk+(1m)θm
 其背后的灵感是认为momentum encoder是在进行模版提取的工作,而模版提取应该是稳定的,不应该剧烈变化2,同时作为视觉特征提取模块,encoder和momnetum encoder的作用是一致的,因此可以用encoder的权重来对momentum encoder进行动量更新。

论文

A Simple Framework for Contrastive Learning of Visual Representations
Momentum Contrast for Unsupervised Visual Representation Learning

参考


  1. 对比学习损失(InfoNCE loss)与交叉熵损失的联系 ↩︎

  2. Self-Supervised Learning 超详细解读 (四):MoCo系列解读 (1) ↩︎

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

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

相关文章

【论文下饭】PatchTST中的channel-independence

PatchTST中的channel-independence 总结PatchingChannel-independence A Time Series is Worth 64 Words: Long-term Forecasting with Transformers 时间:2022 引用:8 ICLR 2023 代码:https://github.com/yuqinie98/PatchTST 中文参考&#…

软件开发人技能变现方案来啦~

java单体服务Uniapp客户端 欢迎大家来关注java单体服务Uniapp客户端模式开发应用程序这个模式下产品的特点互联网大厂产品特点小服务小产品-存在价值普通人慢慢挣小钱 欢迎大家来关注 你好! 这可能是你第一次来“莹未来”这里,郑重欢迎您。如果你想学习…

firewalld防火墙详细介绍

目录 一、firewalld概述 二、firewalld与iptables的区别 1.位置不同 2.配置存储位置不同 3.规则运行不同 4.防火墙类型不同 三、firewalld区域的概念 四、firewalld防火墙9个区域 1、trusted(信任区域) 2、public(公共区域&#xf…

JavaScript中的tab栏切换制作(排他思想)

文章目录 实现效果图排他思想tab栏切换制作思路代码部分 实现效果图 整个页面分为2个部分,tab_list部分(上半部分)和tab_con部分(下半部分) tab_list部分包含5个li,它们分别与tab_con部分的5个div盒子一一…

Eyeshot Fem 2023.1 你选Fem还是Ultimate Crack

Eyeshot Fem--当然选Fem Everything in Ultimate, plus Geometry meshing and Finite Element Analysis. Scope Modules Image Gallery Features Scope Eyeshot Fem edition is designed for Geometry meshing and Finite Element Analysis. Modules Geometric modules includ…

《终结拖延症》重新拥有计划每天的自信和控制力

关于作者 威廉区瑙斯, 美著名心理治疗 专家 , 拥有 超过 30 年 心的 理治疗 经 ,验 他 专 精的研究 领域 , 是 为 代 都 市 群提 供负 面 心 理 引 导 和 治疗 , 比 如 抑郁 、 心 理 亚健 康 、 拖 延 症 等 等 。 除…

redis未授权访问漏洞利用+redis日志分析

redis未授权访问漏洞利用redis日志分析 redis未授权访问 远程连接redis kali: redis-cli -h IP redis常用语句 set key “value” 设置键值对 get key 获得值 incr intkey 数字类型值加1 keys * 获取当前数据库中所有的键 config set dir /home/test 设置工作目录 config set…

VMware ESXi 6.5 U3 Final - ESXi 6 系列最终版下载

VMware ESXi 6.5 U3 Final - ESXi 6 系列最终版下载 VMware ESXi 6 Standard 请访问原文链接:https://sysin.org/blog/vmware-esxi-6/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org VersionRelease NameRelease …

weblogic CVE-2014-4210 SSRF漏洞

CVE-2014-4210 SSRF漏洞 Weblogic 中存在一个SSRF漏洞,利用该漏洞可以发送任意HTTP请求,进而可以攻击内网中Redis、Fastcgi等脆弱组件 该漏洞存在于/uddiexplorer/SearchPublicRegistries.jsp SSRF:服务端请求伪造,伪造存在该漏洞…

Spring : XML配置 JavaBean源码解析

文章目录 前言一、xml 加载 Bean 对象总结XML加载Bean对象 前言 跟着大佬走!!!! https://github.com/DerekYRC/mini-spring 提示:以下是本篇文章正文内容,下面案例可供参考 一、xml 加载 Bean 对象 大家先…

企业型OV,增强型EV证书开通审核流程

选购 OV、EV型证书需要是企业用户,申请过程中需要提交企业资料。 选择证书品牌及型号 管理中心补全审核资料 下载“确认函”签字盖章并扫描,再上传。 审核部门联系确认企业信息,(过需要7-10个工作日) 审核通过&…

单商户高级版商城系统v2.3.0更新啦~

​likeshop单商户高级版商城系统更新至v2.3.0版本~主要更新内容如下: 新增 商品增加限购功能 小程序新版本更新提示 商品分类创建后可以显示该分类下有多少商品 积分商品列表新增封面图 商品支持批量移动分类 后台产品正版检测 优化 分销功能关闭时&#xff…

网络安全 2023 年为什么如此吃香?事实原来是这样....

前言 “没有网络安全就没有国家安全”。当前,网络安全已被提升到国家战略的高度,成为影响国家安全、社会稳定至关重要的因素之一。 网络安全行业特点 1、就业薪资非常高,涨薪快 2021年猎聘网发布网络安全行业就业薪资行业最高人均33.77万…

机器学习基础知识之预测性能评价指标

文章目录 预测性能评价思路1、均方误差(Mean Square Error,MSE)2、均方根误差(Root Mean Square Error,RMSE)3、平均绝对误差(Mean Absolute Error,MAE)4、平均绝对百分比…

多线程-线程创建方式1:继承Thread类

线程创建方式1:继承Thread类 概述 Java语言的JVM允许程序运行多个线程,使用java.lang.Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例。Thread类的特性 每个线程都是通过某个特定Thread对象的run()方法来完成操作的&#…

LeetCode:1049.最后一块石头的重量II 494.目标和 474.一和零

1049.最后一块石头的重量II 题目 有一堆石头&#xff0c;用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 y&#xff0c;且 x < y。那么粉碎的可能…

pygam第5课——自制音乐播放器

前言&#xff1a;前几节课我们已经学会了很多知识点&#xff0c;欢迎大家可以去考古一下 今天我们将学习加载音乐&#xff0c;并且自制一个音乐播放器&#xff0c;界面功能包括&#xff1a; 加载背景封面上一首开始\暂停下一首重播随机播放快进 效果展示(GIF所以你们听不到声…

day6 广播及实现

什么是广播 数据包发送方式只有一个接受方&#xff0c;称为单播 如果同时发给局域网中的所有主机&#xff0c;称为广播 只有用户数据报(使用UDP协议)套接字才能广播 广播地址&#xff1a; 一个网络内主机号全为1的IP地址为广播地址 发到该地址的数据包被所有的主机接收 255…

MT6833(天玑 700)处理器参数_芯片规格_性能介绍

MT6833&#xff08;天玑700&#xff09;是一款出色的基带处理器&#xff0c;具有许多优秀的功能&#xff0c;并且采用了强大的八核CPU&#xff0c;其中包括两个主频高达2.2GHz的Arm Cortex-A76核心。此外&#xff0c;他还配备了LPDDR4X内存和UFS 2.2存储&#xff0c;大大提高了…

MyBatis中的#{}和${}有什么区别?

首先#{} 和 ${} 都是参数占位符&#xff0c;其中#{}是预编译处理&#xff0c;${}是字符直接进行替换。预编译处理是指&#xff1a;MyBatis 在处理#{}时&#xff0c;会将 SQL 中的 #{} 替换为?号&#xff0c;使⽤ PreparedStatement 的 set ⽅法来赋值。直接替换是指MyBatis 在…