论文:https://arxiv.xilesou.top/abs/1911.05722
无监督视觉表示学习

Abstract

本文提出动量对比度(MoCo)用于无监督的视觉表示学习。作者将对比学习看做字典查找(dictionary look-up),使用队列(queue)和移动平均编码器(moving-averaged encoder)构建一个动态字典。 这样就可以实时构建大型且一致的词典,从而促进无监督对比学习。MoCo在ImageNet上取得了较好的结果,并且MoCo学习到的表示可以迁移到下游任务。

Methods

Contrastive Learning as Dictionary Look-up

参考:https://blog.csdn.net/xz1308579340/article/details/108977040
image.png
image.png

Momentum Contrast

从上述分析来看,对比学习是一种在高维连续输入(如图片)中建立离散字典的方法,字典是动态的,键值是随机采样得到的,并且key encoder在训练中进行更新。我们的假设是,好的特征可以通过包含大量负样本的字典中学习而来,并且key encoder能够在更新中尽可能保持一致,基于这种思想作者提出了MoCo算法。
方法的核心是将词典保持为数据样本队列。这样可以重新利用当前mini-batch中已编码的键值。同时队列能够将字典大小和mini-batch大小进行解耦,字典大小可以远远大于mini-batch的大小,可被当作超参数。由于mini-batch遵循先进先出的准则,字典总是表示一个所有数据的子集。
动量更新方法:
image.png
在这个公式中,只有θq是通过反向传播更新的。动量更新会使得θk的演化比θq更加平稳。
image.png
以上三种对比损失的不同之处在于对键值的保持方式以及键值编码器的更新方法的不同。

  1. 端到端方法,使用当前mini-batch实时更新查询集编码器和键值编码器,通过反向传播对计算查询和键的表征进行端到端更新。
  2. Memory bank方法,构造memory bank,所有样本的编码特征都被存储在memory bank中。
  3. MoCo方法,即本论文提出的方法,通过基于动量更新的编码器对键进行动态编码,实时更新键值编码器的参数,并维持键的队列。