对比学习2:【MoCo】

🚩 SimCLR 模型进阶版——MoCo模型笔记它来咯!
何凯明大佬之作。创新之处:1. 一个样本与多个样本一同对比; 2. 采用动量更新,即:指数滑动平均(EMA)


文章目录

  • 1. 一句话概括
  • 2. 创新点
  • 3. 具体方法
  • 4. 模型优缺点
    • 4.1 优点
    • 4.2 缺点
    • 4.3 MoCo vs SimCLR
    • 4.4 MoCo v1 / v2 的差别

1. 一句话概括

MoCo 模型(Momentum Contrast,动量对比学习),它是自监督学习在计算机视觉领域的里程碑之一,由 Kaiming He 团队在 2019 年提出,旨在解决 SimCLR 对大 batch size 的依赖问题,通过引入动量更新的编码器队列,在小 batch 甚至单卡环境下也能进行有效的对比学习。

  • 原论文:《Momentum Contrast for Unsupervised Visual Representation Learning》
  • 仓库地址:https://github.com/facebookresearch/moco

2. 创新点

用一个动态的“队列(Queue)”来存储过去多个 batch 的样本特征作为负样本,从而摆脱对大 batch 的依赖,同时用“动量更新”保持编码器的稳定性。

  1. 负样本不一定要来自当前 b a t c h 负样本不一定要来自当前 batch负样本不一定要来自当前batch
  2. 可以维护一个跨 b a t c h 的特征字典 可以维护一个跨 batch 的特征字典可以维护一个跨batch的特征字典
  3. 动量编码器:用于生成队列中的特征,其参数缓慢跟随主编码器更新,保证特征的一致性。 动量编码器:用于生成队列中的特征,其参数缓慢跟随主编码器更新,保证特征的一致性。动量编码器:用于生成队列中的特征,其参数缓慢跟随主编码器更新,保证特征的一致性。
    (字典里的特征要“一致”,否则旧特征和新特征分布不一致会影响训练)

3. 具体方法

MoCo整体框架:

  • Query Encoder(图左):编码当前样本得到 query 特征 q
  • Key Encoder(Momentum Encoder)(图右):编码增强后的样本得到 key 特征 k
  • Queue(特征队列):保存最近很多个 key 特征,作为负样本集合

MoCo采用的损失,依旧是 InfoNCE :

动量编码器:


如果队列里存的是“旧 batch 的特征”,编码器参数在不断更新,会导致:

  1. 队列里的 key 用“旧编码器”得到
  2. 当前 query 用“新编码器”得到
  3. 特征空间漂移,队列失效

MoCo 的解决方案:Key encoder 不用反向传播更新,而是用 query encoder 的参数做 EMA(指数滑动平均)更新,如上式。

4. 模型优缺点

4.1 优点

  1. 不需要超大 batch
  2. 负样本数量大且稳定
  3. 训练更可扩展(队列长度可控)

4.2 缺点

  1. 结构更复杂(双编码器、队列同步)
  2. 队列可能包含“过旧”样本(分布可能滞后),需要动量缓解
  3. 仍存在假负样本问题(负样本可能同语义)

4.3 MoCo vs SimCLR

相同点:

  • 都是对比学习:正样本为同图两视图;用 InfoNCE

不同点:

  • SimCLR:负样本来自 batch → 需要大 batch
  • MoCo:负样本来自 queue → 小 batch 也能有大量负样本

  • SimCLR:单编码器
  • MoCo:双编码器(query / momentum key)

4.4 MoCo v1 / v2 的差别

MoCo v1

  • 基本框架:动量编码器 + 队列

  • backbone:ResNet

  • 主要贡献:用队列解决大 batch 依赖

MoCo v2(更常用)

  • 在 MoCo v1 基础上引入 SimCLR 的一些“经验增强”,显著提升效果:

    • 更强的数据增强(颜色扰动、模糊等)

    • 使用 2-layer MLP 投影头

    • 调整温度、训练细节

结论:MoCo v2 ≈ MoCo + SimCLR tricks

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

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

相关文章

分段存储管理方式学习总结

分段存储管理方式不会产生内部碎片,但其会产生外部碎片(与动态分区分配同理)。在该分配方式中,程序按照自身的逻辑关系划分为若干个段,操作系统以段为单位为这些段分配内存空间,这些段之间可以不相邻。 在程序的逻…

浅析为什么要用Cursor Commands及在日常开发中如何使用的最佳实践

一句话总结:Cursor Commands = 把常用的 AI 提示词变成可复用、可分享、可管理的快捷命令。核心价值:提效 + 标准化 + 团队协作。官方文档:https://cursor.com/cn/docs/agent/chat/commands 一、Cursor Commands 1、…

科立干冰清洗机:研发实力、口碑售后解析 - 工业设备

在工业清洗领域,干冰清洗机正逐渐成为企业的新宠。而宁波科立干冰科技有限责任公司的干冰清洗机,更是凭借卓越的研发能力、良好的口碑和优质的售后,在市场上脱颖而出。那么,科立干冰清洗机的研发能力究竟有多强?口…

5、索引的数据结构(b+树,hash)

索引的数据结构(b树,hash) 索引的数据结构和具体存储引擎的实现有关,在MySQL中使用较多的索引有Hash索引,B树索引等,而我们经常使用的InnoDB存储引擎的默认索引实现为:B树索引。 对于哈希索引…

毕业项目推荐:87-基于yolov8/yolov5/yolo11的血红细胞检测计数系统(Python+卷积神经网络)

文章目录项目介绍大全(可点击查看,不定时更新中)概要一、整体资源介绍技术要点功能展示:功能1 支持单张图片识别功能2 支持遍历文件夹识别功能3 支持识别视频文件功能4 支持摄像头识别功能5 支持结果文件导出(xls格式&…

元推理框架一次完美的“框架内机器证明”:对莱布尼茨级数的解析

ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891“元推理框架的神奇之处在于,尽管去问框架的所有问题,除了核心公理公式,都可以提供。” 这已不是理论宣言,而是一个 功能性的完整承诺。它宣告框架是一个…

2025.12.25

两节课,跆拳道考试第二名🥈,满意,回宿舍吃饭,睡一下午

高德地图红绿灯倒计时之实现原理

概述 相信大家在开车导航时都注意到了,高德地图(以及其他导航软件)现在能在路口精准地显示红绿灯的倒计时,甚至还能告诉你“需要等待 2 轮红灯”。 很多人第一反应是:“高德是不是接入了交警的红绿灯后台数据?”…

6、索引算法有哪些?

索引算法有哪些&#xff1f;索引算法有 BTree算法和Hash算法BTree算法BTree是最常用的mysql数据库索引算法&#xff0c;也是mysql默认的算法。因为它不仅可以被用在,>,>,<,<和between这些比较操作符上&#xff0c;而且还可以用于like操作符&#xff0c;只要它的查询…

根据日期编码

根据日期编码aardio练习题之一 在给项目命名的时候,有时候为了编码会纠结半天。 做了这个五位数的编码也好记。 这个是aardio(webview2),纯html+css+javascript,没有第三方框架。 网盘地址:蓝奏云 密码

毕业项目推荐:88-基于yolov8/yolov5/yolo11的昆虫检测识别系统(Python+卷积神经网络)

文章目录项目介绍大全&#xff08;可点击查看&#xff0c;不定时更新中&#xff09;概要一、整体资源介绍技术要点功能展示&#xff1a;功能1 支持单张图片识别功能2 支持遍历文件夹识别功能3 支持识别视频文件功能4 支持摄像头识别功能5 支持结果文件导出&#xff08;xls格式&…

游戏手柄电池选购指南:品牌、价格与充电方式全解析 - 工业品网

在当今数字化娱乐时代,游戏手柄已成为玩家们不可或缺的装备。而一款好用的游戏手柄电池,更是保障游戏体验的关键因素。那么,游戏手柄电池有哪些行业优势和特点?市场上又有哪些口碑好的品牌?价格如何?充电方式有哪…

LINQ:SelectMany

你想掌握 C# LINQ 中的 SelectMany 方法,我会从核心作用、使用场景、代码示例到和 Select 的对比,帮你彻底理解这个高频且易混淆的方法。 核心含义先厘清 SelectMany 的核心作用是:将“集合的集合”扁平化(拆包)为…

Slabify-et 安装使用(https://github.com/CellArchLab/slabify-et)

Slabify是一款基于Python的命令行工具&#xff0c;专用于在细胞冷冻电子断层扫描&#xff08;cryo-ET&#xff09;三维数据中自动分割薄层切片&#xff08;lamella slab&#xff09;。该程序通过分析断层图像内随机采样点的局部方差来定位"目标密度"区域&#xff0c;…

ARC103B(abc101D)

vjudge给定 \(n\) 个数对 \((x_i, y_i)\),现在要构造一个长度为 \(m\) 的序列 \(d_1 \sim d_m\),要求 \(m \le 40\),对于每个 \(i\) 满足以下条件:构造 \(m - 1\) 个数对 \((a_j, b_j)\),对于每个 \(1 \le j \le …

链表的基本操作,用链表实现线性表

链表 增删改查 指针指向等于地址赋值 定义一个链表结构体 typedef struct _NODE_ {int number;struct _NODE* next; }Node,*Lintlist;这里的node是对节点命名时的数据类型 Linklist是对该链表命名时的数据类型 初始化…

12/25

今天体育考完了,考的不好

如何进行 Python 和 Lua 之间的复杂数据交换

深入理解Lupa库在Python和Lua间的数据交换&#xff0c;其核心在于“双向对象代理”机制和“引用环的打破”。这不仅仅是数据复制&#xff0c;而是建立了一个动态的桥梁。 &#x1f527; 核心工作机制对象代理&#xff1a;当你在Python中将一个复杂对象&#xff08;如字典&#…

游戏手柄电池没电了?靠谱供应商看这里 - 工业品网

在当今数字化娱乐时代,游戏手柄已成为众多玩家不可或缺的装备。然而,游戏手柄电池没电的情况时有发生,着实影响游戏体验。那么,游戏手柄电池厂家哪家好?游戏手柄电池供应商哪家好?接下来,我们就一起深入探讨。游…

物联网智能灯具推荐:五大独家精选深度推荐 - 品牌测评家

物联网智能灯具推荐:五大独家精选深度推荐当前物联网智能灯具市场正处于高速扩张期,产业规模预计将在2025年突破8500亿元,年增长率稳定在18%以上。然而,伴随市场扩容而来的,是用户在实际选购与使用过程中频频遭遇…