知了AI学习平台Logo知了
🧠AI 冷知识

你知道吗?

这些有趣的 AI 小知识可能让你大吃一惊

💡
概念

MoCo 解决了一个工程难题:对比学习需要大量负样本,但增大 batch size 会撑爆显存。它的方案是维护一个"记忆队列"——把过去几万个样本的特征存起来当负样本,每次只计算当前 batch 的正样本。但旧特征会"过期"(编码器更新后旧特征就不准了),MoCo 用"动量编码器"解决:动量编码器的参数缓慢跟随主编码器更新(动量系数 0.999),保证队列中的特征在一段时间内仍然有效。这个"以慢制快"的设计让 MoCo 在普通 4 卡 GPU 上就能用 65536 个负样本训练。

来源:He et al., "Momentum Contrast for Unsupervised Visual Representation Learning", CVPR 2020

一句话总结
💡

MoCo 用动量编码器和队列解耦负样本数量与 batch size,使小 batch 也能做大规模对比学习。

常见误区

这些坑别踩

✗

误区 1

MoCo 的队列和 SimCLR 的大 batch 等价。

✓

正确理解

MoCo 用队列缓存历史负样本,不依赖单次大 batch,机制不同。

✗

误区 2

动量编码器没意义。

✓

正确理解

动量更新保持键编码器稳定,防止队列中表征快速漂移,是关键设计。

✗

误区 3

MoCo 不需要投影头。

✓

正确理解

MoCo 同样使用投影头,与 SimCLR 类似。