MoCo:无监督视觉表示学习的动量对比

简介: MoCo:无监督视觉表示学习的动量对比

论文标题:Momentum Contrast for Unsupervised Visual Representation Learning


论文链接:https://arxiv.org/abs/1911.05722


论文来源:CVPR 2020


一、概述


在自然语言处理中无监督表示学习已经获得了巨大的成功(比如GPT、BERT等模型的应用),但是在计算机视觉领域仍然是以有监督的预训练为主流的方式,而无监督的方法相对落后。原因可能是因为语言和图像有不同的信号空间,语言的信号空间是离散的(由词或者子词单元组成),可以构建词元化的词典(dictionary),从而进行无监督学习;而计算机视觉领域的原始信号处在一个高维连续的空间中,并且不像词那样是结构化的,这为词典的构建造成了困难。


近来的一些研究利用对比损失在无监督学习方面进行了一些有希望的研究,这些方法可以被看做是一个建立动态词典(dynamic dictionary)的过程。词典中的key(相当于token)从数据(图像或图像块)中采样然后用encoder神经网络进行编码。无监督学习训练encoder进行词典的查找(dictionary look-up):一个被编码的query应该与它的匹配key相似而与其他的不相似,学习的过程是一个最小化对比损失的过程。


我们的目标是建立这样的词典:

①足够大;

②在训练过程中词典不断演化,要保持词典的一致性(consistent)。


对于第①点,一个足够大的词典能够更好地采样底层数据所处的连续高维的空间。而对于第②点,词典中的key应该尽可能地由同样的或者相似的encoder来编码表示,以此来保证其与query的比较时的一致性,具体来说就是在训练的过程中通常是用一个个mini-batch的数据来更新encoder,更新后encoder的参数变化,那么不同的mini-batch的数据就是使用的不同的encoder进行编码,需要保证这些不同的encoder编码的一致性。目前现有的使用对比损失的方法在这两个方面往往受到限制。

本文提出的MoCo就是一种构建大且一致的词典的方法。MoCo具有以下两个特色,分别对应上述两点要求:

①MoCo将一些数据样本的队列(queue)作为词典,当前mini-batch的样本被编码后的表示入队,而最早入队的mini-batch出队,这个队列就解除了词典大小与mini-batch大小的绑定,而使得词典能够是足够大的(可以是多个mini-batch的大小);

②词典中的key来自先前多个mini-batch,也就是来自一个逐渐演化的key encoder,这个key encoder以一种基于动量(momentum)的方式来平均query encoder(query encoder与key encoder是两个不同的encoder)的参数而不断演化,MoCo以这种方式来保证一致性。


MoCo能够使用多种预训练任务来进行训练,在本文中我们采用一种简单的实例识别任务,具体来说,当一个query匹配一个key时,它们编码的是同一张图片的不同视图(比如不同的裁剪)。


二、方法


  1. 对比学习与词典查找


QQ截图20220611222835.png


  1. 动量对比


对比学习的目的是学习一个词典,这个词典是动态的,也就是说其中的key是经过随机采样获得的,并且key encoder在训练过程中不断地演化。基于这种动机,本文提出了动量对比(Momentum Contrast)的方法。


  • 词典作为队列


本文方法的核心在于将词典管理成一个数据样本的队列。这样可以解除词典大小与mini-batch大小的绑定,词典大小可以比mini-batch大小更大,并且可以通过超参数来控制。词典中的样本是在训练过程中被逐渐地替代,当前mini-batch入队,最早入队的mini-batch出队。词典总是所有数据的一个采样子集。删除最早入队的mini-batch可能是有益的,这是因为encoder随着训练在不断的更新,这个mini-batch里的key是最过时的,因此也是最不一致的。


  • 动量更新

QQ截图20220611223039.png

  • 与相关其他机制的对比


end-to-end的方式是一种比较常用的机制,它使用当前mini-batch的样本作为词典,所以词典中的key被一致地编码。不过这种方法的缺点是词典的大小与mini-batch的大小绑定,受到GPU显存限制,而且也受到较大的mini-batch更新的挑战。

另一种机制是memory bank的方法。一个memory bank包含数据集中所有样本的表示,每个mini-batch的词典从memory bank中采样而不需要反向传播,所以这支持一个大的词典大小。然而,memory bank中一个样本的表示在它最后一次被看到时更新,所以本质上被采样的key来自过去epoch中不同step的不同的encoder,因此非常地不一致。

下图对比了包括本文动量更新在内的三种方法:


QQ截图20220612100648.png

                                                   对比


  1. 预训练任务


对比学习可以采样多种预训练任务,但是本文关注的重点不在于设计一个新的预训练任务,本文仅采用前面提到的简单的实例识别任务。


如果一个query和一个key来自同一张图片,那么它们是positive pair,否则就是negative pair。我们采用相同图片的两种随机的view来做数据增强以建立positive pair。Query和key通过QQ截图20220611223138.pngQQ截图20220611223202.png编码,这些encoder可以是任意的卷积神经网络。

下列算法展示了MoCo的伪代码:

QQ截图20220612100716.png

                                                     MoCo


对于当前的mini-batch,我们编码它们的query和key,而负样本来自队列。


  • 一些细节

QQ截图20220611223336.png


三、实验


实验在ImageNet-1M和Instagram-1B两个数据集上进行预训练,具体数据集统计参看原文。


  1. 消融实验:对比损失机制


QQ截图20220612100937.png

                                   消融实验:对比损失机制


  1. 消融实验:动量

QQ截图20220612101042.png

                                            消融实验:动量


  1. 与先前方法的对比

QQ截图20220612101136.pngQQ截图20220612101219.png

QQ截图20220612101305.png

                                      与先前方法的对比


QQ截图20220612101336.png

                                          目标检测

QQ截图20220612101400.png

                                       三种机制对比


  1. 特征迁移实验

QQ截图20220612101437.png

                                                  目标检测


QQ截图20220612101535.png

                                                     COCO


     QQ截图20220612101627.png

                                             对比监督方法




相关文章
|
6月前
|
机器学习/深度学习 自然语言处理 数据可视化
深度探索变分自编码器在无监督特征学习中的应用
【4月更文挑战第20天】 在深度学习领域,无监督学习一直是研究的热点问题之一。本文聚焦于一种前沿的生成模型——变分自编码器(Variational Autoencoder, VAE),探讨其在无监督特征学习中的关键作用与应用潜力。不同于传统的摘要形式,本文将直接深入VAE的核心机制,分析其如何通过引入随机隐变量和重参数化技巧,实现对复杂数据分布的有效建模。文章还将展示VAE在多个实际数据集上的应用结果,验证其作为无监督特征提取工具的有效性和普适性。通过理论与实践的结合,本文旨在为读者提供关于VAE在无监督特征学习领域的全面认识。
|
机器学习/深度学习 编解码 监控
目标识别知识蒸馏
翻译:《learning efficient object detection models with knowledge distillation》
134 0
|
6月前
|
机器学习/深度学习 编解码 人工智能
论文介绍:HigherHRNet——用于自下而上人体姿态估计的尺度感知表示学习
【5月更文挑战第22天】HigherHRNet是针对自下而上人体姿态估计的尺度感知方法,通过构建高分辨率特征金字塔,改善多尺度人体姿态估计的准确性。该论文提出的新架构在COCO测试集上提高了2.5%的中号人物平均精度,达到70.5%的AP,且在CrowdPose上超越所有自上而下方法,实现67.6%的AP。作者通过消融实验验证了各个组件的重要性,并指出未来可优化模型以适应更复杂场景。论文链接:[https://arxiv.org/abs/1908.10357](https://arxiv.org/abs/1908.10357)
50 1
|
6月前
|
人工智能 机器人 测试技术
论文介绍:零样本6D物体姿态估计框架SAM-6D,向具身智能更进一步
【5月更文挑战第4天】SAM-6D框架是零样本6D物体姿态估计的突破,能检测并准确估计新物体姿态,推动具身智能发展。该框架结合实例分割和姿态估计模型,实现RGB-D图像中的物体分割与姿态估计。在BOP基准测试中,SAM-6D超越现有方法,展示出色泛化能力,但还需应对光照变化、遮挡等问题,以提升现实环境中的性能。[论文链接](https://arxiv.org/pdf/2311.15707.pdf)
146 13
|
机器学习/深度学习 算法 决策智能
【ICLR2020】通过强化学习和稀疏奖励进行模仿学习
【ICLR2020】通过强化学习和稀疏奖励进行模仿学习
174 0
|
机器学习/深度学习 算法 TensorFlow
神经网络的简单偏好(1)
神经网络的简单偏好
神经网络的简单偏好(1)
|
机器学习/深度学习 人工智能 算法
神经网络的简单偏好(2)
神经网络的简单偏好
152 0
神经网络的简单偏好(2)
|
机器学习/深度学习 人工智能 算法
【Pytorch神经网络理论篇】 24 神经网络中散度的应用:F散度+f-GAN的实现+互信息神经估计+GAN模型训练技巧
MINE方法中主要使用了两种技术:互信息转为神经网络模型技术和使用对偶KL散度计算损失技术。最有价值的是这两种技术的思想,利用互信息转为神经网络模型技术,可应用到更多的提示结构中,同时损失函数也可以根据具体的任务而使用不同的分布度量算法。
495 0
|
机器学习/深度学习 传感器 算法
【FNN预测】基于粒子群算法结合引力搜索算法优化前向反馈神经网络FNN实现数据回归预测附matlab代码
【FNN预测】基于粒子群算法结合引力搜索算法优化前向反馈神经网络FNN实现数据回归预测附matlab代码
|
机器学习/深度学习 传感器 算法
【FNN预测】基于蝙蝠优化的模糊神经网络FNN研究附Matlab代码
【FNN预测】基于蝙蝠优化的模糊神经网络FNN研究附Matlab代码