当前位置: 首页 > news >正文

对比学习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.gsyq.cn/news/154035.html

相关文章:

  • 浅析为什么要用Cursor Commands及在日常开发中如何使用的最佳实践
  • 毕业项目推荐:87-基于yolov8/yolov5/yolo11的血红细胞检测计数系统(Python+卷积神经网络)
  • 毕业项目推荐:88-基于yolov8/yolov5/yolo11的昆虫检测识别系统(Python+卷积神经网络)
  • ARC103B(abc101D)
  • 12/25
  • 游戏手柄电池没电了?靠谱供应商看这里 - 工业品网
  • 解码STM32F4环境搭建、工程搭建与烧录
  • 物联网智能灯具推荐:五大独家精选深度推荐 - 品牌测评家
  • 企业管理的核心:协同、数据与持续优化
  • 从事实与指标到媒体机器学习:Netflix 数据工程职能的演变
  • 实验七
  • 物联网智能灯具哪家品质好:最新官方排名品质测评 - 品牌测评家
  • 游戏手柄电池选购指南:性价比、性能与环保面面观 - 工业品网
  • 刘诗诗元气高马尾造型美出圈!剪彩时细节动作尽显温柔底色
  • 支持RV32E的单周期NPC
  • 无短板的网络体验!华为5A通信,让生活更“丝滑”
  • 中兴BE7200 MAX Wi-Fi7路由器首发679元:万兆SFP、全2.5G网口
  • HTML数据看板快速开发:DeepSeek生成代码+浏览器直接渲染实操指南
  • 软件工程学期回顾
  • 【课程设计/毕业设计】基于SpringBoot和Vue.js的智慧社区管理系统基于Vue.js的在线智慧社区服务平台【附源码、数据库、万字文档】
  • 写小说类型
  • 20251222 - 强连通分量 总结
  • 绩效考核需要考核什么内容?
  • 提高信噪比的操作
  • 抽象圣诞树
  • 全球化部署 多活多区域写入 → 汇总中心同步方案
  • 从化文旅宣传策划公司哪家好:98%用户满意度的优企现身 - 品牌测评家
  • 安徽省宣城市国控集团党委书记、董事长钱邦青一行到访国联股份卫多多
  • PS学习基础笔记
  • 机器学习时间特征处理:循环编码(Cyclical Encoding)与其在预测模型中的应用