5. 无监督学习 MoCo: Momentum Contrast for Unsupervised Visual Representation Learning

用于视觉表示学习的动量对比。

作者:Kaiming He 以及FAIR的一众大佬

Summary

这篇文章主要解决的是无监督视觉表示学习问题。作者从将对比学习看做字典查找(dictionary look-up)出发,使用队列(queue)和滑动平均编码器(moving-averaged encoder)构建动态字典。这一做法使得通过在线构建大容量且协调的字典来实现对比无监督学习成为可能。作者表示,该方法在7种检测和分割任务上超过了有监督学习方法。

目前,已经有一些方法借助对比损失(contrastive loss)在无监督视觉表示学习领域取得了可观的成果,这些方法都可以被视作构建动态字典。字典中的键值从数据中采样得到(图片或patches),并使用编码网络对这些数据进行表示。无监督学习训练编码器进行字典查找:被编码的查询集应该与其所匹配的键值相似,而与其他的键值具有较大的差距。学习过程被表示为最小化对比损失。

从这一观点出发,作者认为所构建的字典应该具有以下的特点:

  • 具有大容量;
  • 在训练过程中保持前后一致。
    原因在于:更大容量的字典有利于更好地对连续且高维度的视觉空间进行采样;同时字典中的键值应该使用相同或类似的编码特征进行表示,因而这些键值与查询集的对比是连续的。然而,当前使用对比损失的方法在这两点中的一点存在限制。

如上图所示,作者将字典表示为数据采样的队列:当前mini-batch的编码表示特征被入队,旧的mini-batch的编码表示特征被出队。队列的使用使得字典的大小和mini-batch的大小无关,因而字典可以有很大的容量;同时,字典的键值来自于先前的几个mini-batches的融合,使用查询集编码特征的基于动量的滑动平均值计算得到,保证了字典的持续性。

  • 提出了Momentum Contrast(MoCo)的无监督视觉表示学习方法;
  • 把对比学习比作查字典过程,把字典当作队列,引入动量更新;
  • 对end-to-end、Memory Bank、MoCo三种对比学习方式进行了比较;
  • 在ImageNet和Instagram 数据集上进行大规模的训练和对比实验,并将训练后的特征迁移至下游任务进行实验。

Problem Statement

  • 无监督表示学习在NLP领域中取得巨大的成功如GPT、BERT,但有监督预训练仍是计算机视觉主流方法。

Methods

在这里插入图片描述

1.Contrastive Learning as Dictionary Look-up

在这里插入图片描述

2.Momentum Contrast

从上述分析来看,对比学习是一种在高维连续输入(如图片)中建立离散字典的方法,字典是动态的,键值是随机采样得到的,并且key encoder在训练中进行更新。假设好的特征可以通过包含大量negative样本的字典中学习而来,并且key encoder能够在更新中尽可能保持一致,基于这种思想作者提出了MoCo算法。
Dictionary as a queue. 方法的核心是将词典保持为数据样本队列。这样可以重新利用当前mini-batch中已编码的键值。同时队列能够将字典大小和mini-batch大小进行解耦,字典大小可以远远大于mini-batch的大小,可被当作超参数。由于mini-batch遵循先进先出的准则,字典总是表示一个所有数据的子集。

Momentum update. 使用队列可以扩充字典的大小,但是对键值编码器key encoder进行反向传播变得更难(梯度会在队列中的所有数据进行传播)。
Relations to previous mechanisms.
在这里插入图片描述
以上三种方法的不同之处在于对键值的保持方式以及键值编码器的更新方法的不同。

左侧第一种:使用当前mini-batch实时更新查询集编码器和键值编码器;

中间:构造memory bank,所有样本的编码特征都被存储在memory bank中;

右侧:本论文提出的方法,使用动量法实时更新键值编码器的参数。

a方法,字典大小和mini-batch大小相同,受限于GPU显存,对大的mini-batch进行优化也是挑战,有些pretexts进行了一些调整,能够使用更大的字典,但是这样不方便进行迁移使用。

b方法,Memory Bank包含数据集所有数据的特征表示,从Memory Bank中采样数据不需要进行反向传播,所以能支持比较大的字典,然而一个样本的特征表示只在它出现时才在Memory Bank更新,因此具有更少的一致性,而且它的更新只是进行特征表示的更新,不涉及encoder。
在这里插入图片描述

3.Pretext Task

在这里插入图片描述
Technical details. 使用ResNet作为编码器,最后一层输出为128D向量,即查询query和键值key的表示。
Shuffling BN. 在实验中发现Batch Norm会阻止模型学到良好的特征表示。模型似乎会欺骗pretext task并容易找到低损失的解决方案。可能是因为由BN导致的intra-batch communication among samples泄露了信息。
在这里插入图片描述

Experiment

ImageNet-1M (IN-1M)、Instagram-1B (IG-1B)10亿图片数据集。

训练:使用ResNet-50,SGD优化器,weight_decay=0.0001,momentum=0.9

对于(1N-1M):mini-batch size=256,8GPUs,初始学习率为0.03,训练200epochs,在120~160epoch时将学习率乘以0.1,花费72小时;

对于(1G-1B):mini-batch size=1024,64GPUs,初始学习率为0.12,指数衰减(每62.5k iterations乘以0.9)训练1.25M iterations,花费6天。
在这里插入图片描述
上图为end-to-end、memory bank、MoCo三种对比损失方法在ImageNet线性分类评价下的对比结果。
在这里插入图片描述
上图为ImageNet上,MoCo和其它方法在线性分类评价下的对比结果

在这里插入图片描述
上图为PASCAL VOC trainval07+12上进行微调的目标检测结果。

在这里插入图片描述
上图为end-to-end、memory bank、MoCo三种对比损失方法在PASCAL VOC目标检测的结果。

相关工作

  • Pretext tasks. The term “pretext” implies that the task being solved is not of genuine interest, but is solved only for the true purpose of learning a good data representation.
    术语“pretext”表示要解决的任务不是真正意义上的,而是仅出于学习良好数据表示的真正目的。
  • loss functions. 常被用来研究pretext task的独立性,包括但不限于
    • Contrastive losses [1] measure the similarities of sample pairs in a representation space
    • Adversarial losses [2] measure the difference between probability distributions,GAN和NCE有着相关联系

部分论文引用情况

  • Dimensionality reduction by learning an invariant mapping. In CVPR, 2006.[1] (Contrastive Learning)

  • Generative adversarial nets. In NIPS, 2014.[2]

  • Unsupervised feature learning via non-parametric instance discrimination. In CVPR, 2018. [3]

Notes

  • 本文受[3]的启发挺多的。
  • [3]的作者在Improving Generalization via Scalable Neighborhood Component Analysis这篇文章里提到了动量更新Memory Bank的方法。
  • 作者在文章实验部分"Shuffling BN"中写道"batch norm prevents the model from learning good representations"。
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值