MoCo解读

news2024/11/19 4:39:33

MoCo方法由何凯明团队提出,是无监督对比学习的代表作。经过MoCo预训练的视觉表征迁移到各种下游任务时,其效果超过了有监督预训练模型。

两点创新

对比学习的思想是将相似的样本距离拉近,不相似的样本距离拉远。对比学习主要在两方面进行设计:

  • 代理任务
  • 损失函数

MoCo将对比学习当作字典查询任务,在字典中与query匹配的key视为正样本,否则为负样本:

1

损失函数InfoNCE为:
L q = − log ⁡ exp ⁡ ( q ⋅ k + / τ ) ∑ i = 0 K exp ⁡ ( q ⋅ k i / τ ) \mathcal{L}_q=-\log \frac{\exp \left(q \cdot k_{+} / \tau\right)}{\sum_{i=0}^K \exp \left(q \cdot k_i / \tau\right)} Lq=logi=0Kexp(qki/τ)exp(qk+/τ)
其中, τ \tau τ 是温度系数,该超参设置需要注意。太大会导致query与所有样本的相似度都很接近,太小会导致模型偏向学习区分度高的样本。

上式与多分类交叉熵损失函数非常相似,只不过前者 K K K 表示样本类别,而后者表示正样本与负样本的总个数。

与传统自监督学习对比

2

  • 图(a)中两个编码器同步更新,保证了样本特征的一致性,但负样本个数受限,即使能达到8000多,还是无法放下所有的负样本
  • 图(b)放下了所有的负样本,但bank中不同样本的特征是在不同时刻的编码器下获得的,牺牲了特征的一致性

3

  • 图©则是采样了动量更新key编码器的方式,解决了字典大小受限和特征不一致性问题:

θ k ← m θ k + ( 1 − m ) θ q \theta_{\mathrm{k}} \leftarrow m \theta_{\mathrm{k}}+(1-m) \theta_{\mathrm{q}} θkmθk+(1m)θq

伪代码解读

4

  1. 新的batch进行一轮前向传播

  2. 更新query编码器参数

  3. 动量更新key编码器参数

  4. 将该batch放入队列

    • 虽然同一队列的batch样本表征仍然是不同时刻的key编码器获得,但由于key编码器更新非常缓慢,样本表征的差异可以忽略不计:
      5
  5. 将老batch移出队列:这样MoCo就能无限扩展,预训练海量样本

实验结果

原始数据集ImageNet

6

下游任务

7

与传统自监督学习对比

8


参考

  • MoCo 论文逐段精读【论文精读】
  • 大概是全网最详细的何恺明团队顶作 MoCo 系列解读!(上)

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

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

相关文章

JavaEE13-MyBatis查询数据库

前言:前面已经学习了Spring,Spring Boot,Spring MVC这3个框架,接下来学习第4个框架MyBatis(国内):将前端传递的数据存储起来(前身IBatis)或者查询数据库里面的数据。PS:不同版本号区别3.5.1 -> 3.5的第一个版本3.5.10 -> 3.…

命令执行利用

数据来源 01 命令执行漏洞 命令执行漏洞- 例子1(无防御) 示例:(我这里使用dvwa靶场做演示) 解决靶场响应结果的中文乱码 charsetutf-8,修改为charsetgb2312 把安全等级调到:low&#xff0…

concat函数在mySQL和Oracle中的不同

在mysql中的使用1>.在该函数中传入两个值:22和33,得到结果为两个值的拼接效果如图所示2>.在该函数中传入两个及以上的值:22和33和44,得到结果为多个值的拼接效果如图所示3>.在该函数中传入两个及以上的值:null和22和33,得…

GitHub 上有哪些优秀的项目?

前言 各个领域模块的都整理了一下,包含游戏、一些沙雕的工具、实用正经的工具以及一些相关的电商项目,希望他们可以给你学习的路上增加几分的乐趣,我们直接进入正题~ 游戏 1.吃豆人 一款经典的游戏开发案例,包括地图绘制、玩家控…

车载网络 - BootLoader - CAN/CANFD刷写过程

话接上回,我们继续分享刷写流程。 刷写Boot到RAM(如果ECU中有独立的boot代码,无需执行此段) 9、获取单次刷写的最大长度(参考https://mp.csdn.net/mp_blog/creation/editor/127720716) Request:34 00 44 + 地址 + 长度 Response:74 00 44 + Maxlength 10、进行刷写传…

Netty之DefaultAttributeMap与AttributeKey的机制和原理

为什么要分析DefaultAttributeMap和AttributeKey呢?我自己对Netty也是一个不断的学习过程,从前面几篇Netty分析的博客中,可以看出,Netty是比较博大精深的,很像java.util.concurrent.*包中的源码,如果只是看…

【微电网】微电网的分布式电源优化配置研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

企业工程管理系统源码-专注项目数字化管理

高效的工程项目管理软件不仅能够提高效率还应可以帮你节省成本提升利润 在工程行业中,管理不畅以及不良的项目执行,往往会导致项目延期、成本上升、回款拖后,最终导致项目整体盈利下降。企企管理云业财一体化的项目管理系统,确保项…

关于卷积过程中通道数如何变化问题

以RGB图像为例。 一个12*12的像素图,对其进行5*5的卷积,最后得到一个8*8【计算过程:(12-5)/118】的像素图。 RGB图像有3个通道(12*12*3),所以卷积核也要有3个通道(5*5*3)&am…

第一章 隐私计算科普与解读

前言 提醒:全文10千字,预计阅读时长15分钟;读者:对隐私计算感兴趣的小伙伴;目的:读者利用15~30 分钟对本文沉浸式阅读理解,能够掌握隐私计算 80% 的概念;关键词 :隐私计算…

好用的搜索工具listary

发现一个好工具记录一下。以后好好用起来。 这个工具我安装后,跟着引导教程,学做了一些操作立马就爱上了。 Listary:大幅度提高本地文件浏览与搜索速度效率的「超级神器」 百度安全验证https://baijiahao.baidu.com/s?id17127561426219890…

【Python】基于you-get下载网页视频

文章目录1 前言2 you-get2.1 安装2.2 简单使用2.3 扩展3 下载网页视频3.1 概述3.2 下载网页4 代码1 前言 过年了,想给家里长辈下几首戏曲,于是找到一个发布戏曲的网站,虽然可以通过IDM插件的资源嗅探来一一下载,但是内容太多&…

【JavaScript】数据劫持详解

💻 【JavaScript】数据劫持 🏠专栏:JavaScript 👀个人主页:繁星学编程🍁 🧑个人简介:一个不断提高自我的平凡人🚀 🔊分享方向:目前主攻前端&#…

这就是传说中超难的N皇后?——详细图解!

✔️本文主题:回溯算法之N皇后 算法 ✔️题目链接:N皇后 详解N皇后一、前言二、题目信息三、解题思路四、参考代码五、结语一、前言 大家好久不见,今天我们一起来学习一道很经典、也很有难度的一道题目——N皇后 二、题目信息 按照国际象棋…

Spring-基础知识二

Spring9.Spring JdbcTemplate的使用9.1 JdbcTemplate入门9.1.1 需要的包9.1.2 代码测试9.2 将数据源和jdbcTemplate交给Spring来管理9.2.1 druid连接池9.2.2 使用外部文件配置数据连接信息9.3 基于JdbcTemplate实现DAO9.Spring的事务管理机制9.1 PlatformTransactionManager 事…

第十章 面向对象编程(高级)

一、类变量和类方法(P374) 1. 类变量 定义语法: 访问修饰符 static 数据类型 变量名; 类变量也叫静态变量/静态属性,是该类的所有对象共享的变量,任何一个该类的对象去访问它时&…

微服务 热点流控 规则-授权 系统规则 自定义返回

微服务 热点流控 规则-授权 系统规则 自定义返回Sentinel-热点流控操作示例Sentinel规则-授权操作示例Sentinel规则-系统规则Sentinel自定义异常返回Sentinel-热点流控 拿商品举例,当一个商品的查询请求量异常火爆的时候,应该对该商品的查询请求进行限流…

FineReport使用

目录报表命名规范数据集命名规则参数命名规则条件属性命名规则超链接命名规范决策报表组件命名规则普通报表悬浮元素命名规则用户权限模版版本管理FineDB内置数据库外置数据库配置外接数据库新建数据库外接数据库配置入口配置外接数据库数据表权限控制:用户-部门职位…

【JavaEE】锁策略 + synchronized原理 + CAS + JUC下常用类和接口 + 死锁

目录 锁策略 乐观锁VS悲观锁 轻量级锁VS重量级锁 自旋锁VS挂起等待锁 互斥锁VS读写锁 公平锁VS非公平锁 可重入锁VS不可重入锁 synchronized原理 synchronized特性 synchronized优化机制 加锁过程优化 锁消除 锁粗化 CAS CAS概念 CAS原理 CAS应用 自旋锁的实…

Vite+Vue3+TypeScript 搭建开发脚手架

Vite前端开发与构建工具 开发环境中,vite无需打包,可快速的冷启动 真正的按需编译,不需要等待整个应用编译完成 一个开发服务器,它基于原生ES模块 提供了丰富的内建功能,速度快模块热更新(HMR&#xff0…