【论文笔记】【CVPR2020】 (MoCo) Momentum Contrast for Unsupervised Visual Representation Learning
本研究的主要作者包括Kaiming He、Haoqi Fan、Yuxin Wu、Saining Xie以及Ross Girshick(注:以下链接指向其个人网页)。该论文荣获CVPR 2020最佳论文奖,并可通过https://github.com/facebookresearch/moco访问其代码实现。
0 Contrast Learning
0.1 Pretext Task
正样本之间拉近,负样本推远
对比学习的特点是灵活多变,在于只有当采用适当的方式去发现正样本与负样本时
Instance Discrimination
一张图像 X_i通过两种不同的变换手段生成新的图像(其中 {X_i}^1被称为anchor节点,{X_i}^2被称为positive节点),其他图像 X_j(其中i \neq j)则被视为负样本节点。

1 Intro
对比学习可被视为一种基于字典的查找机制。该动态字典由队列(queue)和移动平均编码器(moving-averaged encoder)构成。
在分类任务的结果中,在ImageNet上的分类任务(在线协议下)最多能达到与其相当甚至更好的水平。
重点在于,获得的表征能够有效地迁移至下游任务,在多个分割/检测任务中达到SOTA水平,并且优于现有的有监督预训练方法。
挖坑了MAE,自挖自填
dictionary look-up
将anchor的特征类似于query(用符号表示为q),而positive与negative的特征被视为key(用符号表示为k_0, k_1, \dots),使得q与k_0之间的距离最小化

MoCo框架

使用queue和momentum的 好处
主要受到GPU显存的限制,在当前批处理队列中加入最新的minibatch后会将最早进入批处理队列的minibatch移除,并动态地维持整个字典表的状态以确保其长度不受batchsize的影响。为了确保key encoder输出的一致性,在更新encoder网络参数的过程中并引入了动量(momentum)项
2 Method
2.1 Contrastive Learning as Dictionary Look-up
对比学习可以被看成是训练一个encoder用于dictionary look-up任务。
假设存在一个编码查询q以及一组编码样本集合\{k_0, k_1, k_2, ...\}。假定仅存在一个键(k_+)与查询q匹配。那么损失函数在q与k_+匹配时应较小,在与其他键匹配时也应较小。
InfoNCE
Noise Contrastive Estimation(NCE)通过实现从多类别到二类别的转换来有效缓解了Softmax计算上的难题。
但是如果只做二分类又好像不那么友好,所以提出了InfoNCE

这个温度参数τ会影响数据的分布情况。
其中,
- τ是一个影响数据分布的关键超参数
- K代表负样本的数量
- 分母实际上是基于1个正样本和K个负样本(即dictionary中的所有键)构建的
其实InfoNCE就是一个( K+1)分类任务,目的就是把 q分类成 k_+。
2.2 Momentum Contrast (MoCo)
在对比学习的过程中,dictionary是一个动态且不断演变的对象,key encoder则随着训练过程而不断进化。
学习到好的表征的前提是:
(1)、dictionary足够大,包含足够的负样本信息;
(2)、key encoder尽可能保持一致
基于以上动机,提出了MoCo:
2.2.1 Dictionary as a queue
用于扩大dictionary大小
将一个具有FIFO特性的queue当作一个dictionary使用,在这种情况下:
每当一个新的 batch 被加入到这个 queue 中时,
最老的那个 batch 就会被取出。
这样一来,
我们成功地将 batch 大小与 dictionary 大小进行了分离,
使得 dictionary 能够远远超过 batch 的数量,
从而能够持续地利用存在于队列中的键信息

2.2.2 Momentum update
由于字典规模较大,在借助反向传播机制进行更新时难以有效更新key encoder(因为梯度应当综合考虑队列中的所有关键点)
一种简化的策略是将query encoder的权重直接复制至key encoder;然而这种方法效果欠佳的原因在于key encoder更新过于迅速;因此引入了Momentum update机制:

仅限于反向传播算法中被使用的参数为θ_q。
而另一个参数θ_k则采用基于动量的方法进行更新。
从而导致key encoder的整体变化幅度较小。
2.2.3 Relations to previous mechanisms

之前的对比学习策略主要受到字典规模和特征一致性的限制。
end-to-end
该方法确保了特征一致性的实现;然而并未解决字典大小的问题;并且字典大小被设定为批处理大小。
memory bank
这种方法解决了dictionary大小问题,但是在特征一致性上做的不好
MoCo
通过队列实现了字典规模的动态调整, 动量机制则有效提升了特征的一致性。这与记忆库模型存在相似之处
2.3 PseidoCode( ⭐)

很巧妙地使用全0的lebel去计算CE loss,因为正样本都在0-th的位置上

输出内容
3 Experiment
3.1 Linear Classification Protocol
在ImageNet上进行过预训练后,在固定权重的情况下仅用作特征提取器,并随后仅训练一个全连接层作为分类器。
Using the grid search algorithm, the optimal learning rate was found to be 30, which is uncommon, indicating that the feature distributions learned by unsupervised and supervised methods are quite distinct.
Ablation 1: contrastive loss mechanisms.
证明动态dictionary的方式有效

Ablation 2: momentun

证明momentun有效,说明一个稳定的key encoder是必要的
Comparison under the linear classification protocol on ImageNet.

3.2 Transferring Features
无监督学习的主要目标是学习可以迁移的特征
Normalization
通过应用BN技术对整个网络进行微调处理后,则能够采用有监督学习中常用的那些超参数设置(例如学习率等)。
3.2.1 Downstream task




在这里插入图片描述
3.2.2 Summary
在绝大多数 downstream tasks中, MoCo表现出超越 supervised learning 的能力, 但在某些特定领域如 semantic segmentation 和 instance segmentation 中则表现平平.
填上了有监督和无监督预训练之间的gap。
而且,在更大规模的数据集中进行无监督学习训练能够实现更高的性能目标,并且这正是无监督预训练的核心目标。
