news 2026/2/2 6:47:04

对比学习2:【MoCo】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
对比学习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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/26 17:00:15

一篇看懂JWT:Web安全的“身份证”

诸神缄默不语-个人技术博文与视频目录 文章目录 什么是JWT?一个简单的比喻为什么需要JWT?JWT长什么样?1. 头部(Header)2. 载荷(Payload)3. 签名(Signature) 用Python玩转…

作者头像 李华
网站建设 2026/1/24 20:14:11

基于微信小程序的直播带货商品数据分析系统毕设源码+文档+讲解视频

前言 本课题聚焦直播带货行业的数据化运营需求,针对当前直播商品数据分散、分析维度单一、运营决策缺乏精准数据支撑等痛点,设计开发基于微信小程序的直播带货商品数据分析系统。系统以微信小程序为核心载体,结合前端原生开发技术与后端数据处…

作者头像 李华
网站建设 2026/1/30 16:23:05

基于 S7 - 1200 和博图 15.1 的三层立体车库 PLC 设计

三层立体车库plc s7-1200 博图15.1 1、设置启动、停止按钮,且设置指示灯显示车库的开关状态; 2、7个车位的车俩可以自由存取,且车库可以实现自动存取(存取选择最优路径); 3、每个车位均有电机控制&#…

作者头像 李华
网站建设 2026/1/24 20:15:50

当图像开始跳舞:用Matlab玩转频率域滤镜

标题:基于matlab的理想滤波器和巴特沃斯滤波器设计 关键词:一阶巴特沃斯滤波器 理想滤波器 二维傅里叶变换 fft2 描述:对任意图像进行灰度化,然后进行二维傅里叶变化,设定一个阈值,对高频或者低频信号进行滤…

作者头像 李华
网站建设 2026/1/26 0:24:56

Java面试必看:ConcurrentHashMap并发度解析

文章目录Java面试必看:ConcurrentHashMap并发度解析?场景还原:面试官与我的对话什么是并发度?并发度的核心思想并发度的实现细节1. Segment数组2. 分段锁机制3. 动态调整Segment数量4. 高效的查找机制如何配置合适的并发度&#x…

作者头像 李华
网站建设 2026/2/1 3:51:20

计算机基础小题

第一章 填空题 基于(存储程序)原理的冯诺依曼计算机,其工作方式的基本特点是(按地址访问并顺序执行指令)(指令)和(数据)都存放在存储器中,(控制器…

作者头像 李华