MoCo:Momentum Contrast for Unsupervised Visual Representation Learning 论文笔记

MoCo:Momentum Contrast for Unsupervised Visual Representation Learning 论文笔记

1 ABSTRACT

  • 理论贡献: 提出用于无监督视觉表示学习的动量对比度(MoCo),从作为字典查找的对比学习的角度来看,构建了带有队列和移动平均编码器的动态字典,可以动态地构建大型且一致的词典,促进对比性无监督学习。

  • 实验证明:

    • MoCo在ImageNet分类的线性分类问题上具有竞争力。
    • MoCo学习到的表示形式可以很好地转移到下游任务中。
    • 在PASCAL VOC,COCO和其他数据集上的7个检测/细分任务中,MoCo可以胜过其监督的预训练同类,有时甚至可以大大超过其性能。

2 INTRODUCTION

为了理解MoCo进行对比学习训练模型的意义,以下补充两个基本概念,可参考链接中更多讲解。

Pretext可以理解为是一种为达到特定训练任务而设计的间接任务。比如,我们要训练一个网络来对ImageNet分类,可以表达为 fθ(x):x -> y,我们的目的其实是获得具有语义特征提取/推理能力的 θ。我们假设有另外一个任务(也就是pretext),它可以近似获得这样的 θ,比如,Auto-encoder(AE),表示为:gθ(x):x -> x。为什么AE可以近似 θ 呢?因为AE要重建 x 就必须学习 x 中的内在关系,而这种内在关系的学习又是有利于我们学习 fθ(x) 的。这种方式也叫做预训练,为了在目标任务上获得更好的泛化能力,一般还需要进行fine-tuning等操作。

因此,Pretext task的好处就是简化了原任务的求解,在深度学习里就是避免了人工标记样本,实现无监督的语义提取, 下面进一步解释。

Pretext任务可以进一步理解为:对目标任务有帮助的辅助任务。 而这种任务目前更多的用于所谓的Self-Supervised learning,即一种更加宽泛的无监督学习。这里面涉及到一个很强的动机:训练深度学习需要大量的人工标注的样本,这是费时耗力的。而自监督的提出就是为了打破这种人工标注样本的限制,目的是 在没有人工标注的条件 下也能高效的训练网络,自监督的核心问题是 如何产生伪标签(Pseudo label),而这种伪标签的产生是不涉及人工的, 比如上述的AE的伪标签就是 x 自身。这里举几个在视觉任务里常用的pretext task几伪标签的产生方式:图片旋转、图片着色、图片补全、上下文关系预测

利用 pretext task 的预训练模型进行微调以实现具体网络功能的过程就统称为 downstream task。在这一点上,可以把这当作一个迁移学习的问题,因此应该小心不要损失预先训练的权重。可以借鉴ULMFiT论文中讨论的内容,例如逐步解冻权重、有区别的学习率和单周期训练。

3 METHOD

3.1 字典查询的对比学习

  • 关键假设: 字典需要具有两个特征 (1)large: 包含越多的负样本则编码器越能学习到更好的特征 (2)consistent:(动量)编码器在更新的时候需要随着字典特征缓慢变化以保持特征的相对一致性

  • 符号解释:

    • xquery:输入网络的被对比 instances(根据具体的 pretext task 可能是:images,patches,context)
    • xkey:一个样本数据集,其中包含1个正样本(与query特征相似),k个负样本
    • q:xquery 经过编码器 fq 提取的特征
    • k:xkey 经过编码器 fk 提取的特征(文中称为 keys in dictionary,存储在字典中数据集的特征),字典中仅有的一个正样本特征记为 k+
    • key:从图像中提取的特征
    • dictionary:样本数据集,每轮训练需要用动量编码器提取其中所有样本的特征

在这里插入图片描述

  • 相似度量函数(contrastive loss): 这里表达式的形式类似于一个 k+1 分类的sofmax函数,k+1个样本中仅有一个正样本,其对应的特征记为 k+。两个特征的相似度量方式采用点积的形式 q·k(点积结果越大相似度越高),并且有一个超参数 τ ,调整分类差异度。当 q 与正样本的差异越小的时候,log的自变量趋于1,代价值趋于0,否则log的自变量趋于0,代价值趋与正无穷(很大)。

3.2 动量对比

  • 字典作为队列(queue)

    • 这样做的好处是:dictionary的大小和mini-batch的大小可以decouple(二者相互独立)。具体有两个好处:(1)因而字典可以变得很大,包含很多负样本,提高对比学习的效果(2)并且以新的mini-batch去替换队列最末的旧的mini-batch可以保证特征变化的平稳性。 详细解释参看同类对比学习方法的不同点。
  • 动量更新(很巧妙)

    • 注意第二项是 θq(参考下图(c) 辅助理解),这里只计算了代价函数关于query的编码器 fq 的反向梯度信息,并没有计算关于编码器 fk 的梯度。这样做有两个好处:(1)如果对编码器 fk 求梯度,由于其输入量(x0,x1 ……)很多,运算量很大,对GPU要求很高,而只计算编码器 fq 的梯度的运算开销就小很多(2)动量更新的方式保持了编码器 fk 的惯性(原有特征变化的平稳性),或者说对之前的特征具有相对的记忆性,这在后续实验中证明是利于对比学习效果提升的。

  • 与同类对比学习方法的比较
    • 对比a,c: a是一种end-to-end形式(这里两个编码器可以 identical,partially shared,different),c对字典中图像进行编码的编码器采用了动量更新方式。(1)c反向传播需要计算的梯度信息更少(2)end-to-end只能比较当前最新mini-batch提取出的特征,因此特征的变化可能不够平滑。
    • 对比b,c: b是从一个固定的memory bank中随机抽取一组特征,c对字典中的特征(用来被对比的特征)的提取方式是随着训练过程不断变化的(因为动量编码器的参数会缓慢更新)。(1)虽然b的特征存量可能很大,但是仍然无法避免由于被对比的特征只有最新sampling出的特征,而造成特征变化较大的问题。(2)sampling出的特征需要预先提取好,并且在本训练过程中的提取方式仅仅是随机采样,而没有“提取”过程的改变。

  • 算法流程: 对输入进行数据増广 -> 提取特征 q,k -> 点击运算求解特征相似度(即公式1分子分母各项) -> 计算代价值(公式1) -> 对编码器 q 的权值 fq 求反向梯度信息 -> 更新 fq 权值 -> 更新 fk 权值 -> 用新的mini-batch更新字典队列

4 EXPERIMENTS

4.1 线性分类

以下在ImageNet-1M数据集上进行了三个方面的对比实验,证明了MoCo的优秀表现

  • 三种对比损失模型机制(前文p4提到的)
    • end-to-end虽然在k(负样本个数)小的时候准确率高,但是由于算力开销大因此k不能取的很大。memory bank虽然对负样本个数没有约束,但是准确率始终低于MoCo。

  • 最优动量系数
    • 在上述k=4096的情况下,尝试不同的动量系数,取0.999较为合适

  • 无监督学习方法对比
    • 为了公平比较,考虑在模型参数数量相近的情况下进行比较
    • 自变量固定,纵向来看实验结果,发现MoCo的表现在于前人模型参数总量近似相等的情况下,准确率相对而言是最高的

4.2 迁移特征

以下进行了(1)PASCAL VOC 目标检测(2)COCO 目标检测与分割(3)其他 downstream tasks 实验,主要和监督学习方法进行对比。

  • PASCAL VOC 目标检测

    • 主干网络对比: 以下分别以 C5 和 C4 作为 backbone 搭建 Faster R-CNN 进行实验,还是有比较大的改进效果(高于0.5%才被绿色标记)

    • 三种对比损失模型机制对比: MoCo在三种机制中更优秀(前面也有实验证明)

    • 与监督学习方法对比: MoCo比监督学习优秀(对于MoCo和super.交叉的格子,即监督学习下的MoCo是怎么来的暂时没搞懂,可能看漏了)

  • COCO 目标检测与分割

    • 在COCO上微调的目标检测和实例分割结果:采用了FPN和C4主干网络搭建 Mask R-CNN,并且训练epoch是不同的,原文中指出 1xschedule 大约是12 epoch,其实 schedual 较小对于非监督学习不利,当 2xschedule 时,MoCo还是更优秀的。

  • 其他 downstream tasks
    • 结论仍然是 MoCo 比监督学习方法更为优秀


笔者水平有限,欢迎批评指正。

参考链接

对比学习(Contrastive Learning)相关进展梳理

小全读论文《Momentum Contrast for Unsupervised Visual Representation Learning》(MoCo)

无监督学习: Kaiming一作 动量对比(MoCO)论文笔记

论文阅读笔记:MoCo

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值