甘南藏族自治州网站建设_网站建设公司_JavaScript_seo优化
2025/12/25 21:43:38 网站建设 项目流程

🚩 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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询