Momentum Contrast for Unsupervised Visual Representation Learning论文精读


本篇博文将要介绍大名鼎鼎的MoCo,不过在正式开始介绍MoCo之前,我想先介绍一下MoCo诞生的背景,方便对MoCo精髓之处的理解。
Birth of MoCo
Supervised Learning
在MoCo诞生之前,CV界的研究依然是以监督学习(Supervised Learning)为主,举个简单的例子,图像分类任务,我们在许多标注好标签的数据上(如下图),训练一个分类器(ResNet)。

| ResNet | 去除Affine层 |
|---|---|
![]() |
![]() |
训练好这个分类器之后,我们可以去除掉最后一层的Affine层,这样就得到了一个特征提取器,就拿ResNet-18举例,去除Affine层之后,得到的输出是一个512维的向量。我们可以用这个预训练好的模型,当做一个特征提取器,在很多的下游任务(Downstrem Task),比如检测、分割、人体关键点检测中使用。
Contrastive Learning
如何使得这个特征提取器提取到的特征更加具有代表性(discriminative),对比学习应运而生。在这里,简单解释一下对比学习。
朴素的

上图中有两个人,一只小狗,分别送入M这个模型中得到他们对应的特征向量\(f_1,f_2,f_3\),我们希望\(f_1,f_2\)尽可能的相近,因为二者的语义信息比较类似,同时与\(f_3\)尽可能的远。
- 专业的

Anchor:基准点,Positive:正样本;Negative:负样本。这里模型的一般步骤是,将Anchor送入\(M_{11}\)这个模型,正负样本都送入\(M_{12}\)这个模型得到对应的特征向量,然后送入一个LossFuntion进行一个惩罚,因此模型得到了训练。论文Related Work中提到的主要有这三类。

不过这也并不是今天介绍的重心,下面要着重介绍MoCo是如何通过无监督的动量对比学习方法去训练一个特征提取器的。
MoCo
Dictionary
首先说明一下,MoCo认为对比学习可以看做是一个构建一个离散词典方法,这个词典是动态的,并且随机采样的。
Momentum Contrast From the above perspective, contrastive learning is a way of building a discrete dictionary on high-dimensional continuous inputs such as images. The dictionary is dynamic in the sense that the keys are randomly sampled, and that the key encoder evolves during training.
这句话我结合原文的理解大致如下:

MoCo将\(f_A\)看做是字典的一个query,\(f_p,f_{x_2},f_{x_3}...f_{x_n}\),看做是字典的key。

那么就可以简单地整合成如下的样式:
\]
\(q\)就是\(f_A\),\(k_1\)是正样本对应的特征向量,\(k_2....k_n\)对应负样本的特征向量。下面我们将以字典的视角来介绍MoCo这个方法做了什么,其中公式(1)会反复提及。
如上所述,我们构建了一个字典,同时还记得我们之前最初的愿望吗,我们希望我们的模型提取到的特征能够更加discriminative。
那么正如论文所说,我们对字典的提出了如下两个要求:
1.The dictionary should be Large
2.Consistent: keys in the dictionary should be represented by the same or similar encoder so that their comparisons to the query are consistent.
之后文中指出,以往的基于对比学习的学习方法,都或多或少地被如上两点限制了。
Limits of the early learning method

如上图所示,作者将早期的学习方法分为了三类。这里简单介绍一下(a)end-to-end,它保证了字典key一致性,但却无法实现大字典。
\(q \quad \{{k_1,k_2,...k_n}\}\),所有的k都来自同一个编码器(consistent),但是由于显存的限制,使得输入的\(x^k\)的数量无法太多,比如\(x^k\)是图片的时候。(b)memory bank方法与a相反,可以实现大字典,但却牺牲了一致性。

那么基于MoCo对比的学习方法,是如何二者兼得的呢?
Introduction
MoCo使用一个queue,实现large dictionary;Momentum update实现key encoder的更新。不过由于MoCo本质上是一种学习的方法,所以论文中并没有给出一个结构图,取而代之的是作者给出了MoCo的伪代码去帮助我们理解。
loss function of MoCo

\mathcal{L}_{q}=-\log \frac{\exp \left(q \cdot k_{+} / \tau\right)}{\sum_{i=0}^{K} \exp \left(q \cdot k_{i} / \tau\right)}
\]
是不是有点眼熟?这个和交叉熵损失函数长得差不多。其中\(\tau\)是一个超参数,可以先不用管它。
改写成写成如下形式(便于理解):
\mathcal{L}_{q}=-\log \frac{\exp \left(q \cdot k_{+} \right)}{\sum_{i=0}^{K} \exp \left(q \cdot k_{i} \right)}
\]
再拆分一下,就得到了一个Softmax分类器。
\]
因此这个地方作者最终把问题看做了一个\(K+1\)类的分类问题,损失函数希望\(q\)与\(k_+\)尽可能地接近,转换到分类的视角也就是loss函数希望\(k_+\)对应位置的概率最大。
Pseudocode

动量更新Key encoder
\]
Results

作者做了一些实验,证明了基于MoCo的无监督学习方法效果更好,同时得到的预训练模型在一些下游任务上也能取得不错的效果。


但是MoCo也并不是在所有的任务上都超越了前人,他更像是打通了有监督学习和无监督学习的壁垒。

Summary
Use Queue and Momentum update to create a large and consistent dictionary.
MoCo largely closes the gap between unsupervised and supervised representation learning in many computer vision tasks.
使用大量的无标签的图片进行无监督训练提供了可能。
设置新的代理任务是否能帮助模型性能提升,当图片数量从百万级到千万级时,性能提升不明显。
MoCo’s im-provement from IN-1M to IG-1B is consistently noticeable but relatively small, suggesting that the larger-scale data may not be fully exploited. We hope an advanced pretext task will improve this. Beyond the simple instance discrimination task [61], it is possible to adopt MoCo for pretext tasks like masked auto-encoding, e.g., in language [12] and in vision [46]. We hope MoCo will be useful with other pretext tasks that involve contrastive learning.
无监督学习方法与有监督训练得到的预训练模型在参数分布上可能有很大不同,比如当MoCo训练得到的预训练模型在向ImageNet的图像分类任务扩展时,学习率居然要设置为30才能奏效。
Momentum Contrast for Unsupervised Visual Representation Learning论文精读的更多相关文章
- 论文解读《Momentum Contrast for Unsupervised Visual Representation Learning》俗称 MoCo
论文题目:<Momentum Contrast for Unsupervised Visual Representation Learning> 论文作者: Kaiming He.Haoq ...
- Momentum Contrast for Unsupervised Visual Representation Learning (MoCo)
Momentum Contrast for Unsupervised Visual Representation Learning 一.Methods Previously Proposed 1. E ...
- Momentum Contrast for Unsupervised Visual Representation Learning
Momentum Contrast for Unsupervised Visual Representation Learning 一.Methods Previously Proposed 1. E ...
- 论文解读(USIB)《Towards Explanation for Unsupervised Graph-Level Representation Learning》
论文信息 论文标题:Towards Explanation for Unsupervised Graph-Level Representation Learning论文作者:Qinghua Zheng ...
- 【CV】ICCV2015_Unsupervised Visual Representation Learning by Context Prediction
Unsupervised Visual Representation Learning by Context Prediction Note here: it's a learning note on ...
- 论文解读GALA《Symmetric Graph Convolutional Autoencoder for Unsupervised Graph Representation Learning》
论文信息 Title:<Symmetric Graph Convolutional Autoencoder for Unsupervised Graph Representation Learn ...
- 论文解读(SUGRL)《Simple Unsupervised Graph Representation Learning》
Paper Information Title:Simple Unsupervised Graph Representation LearningAuthors: Yujie Mo.Liang Pen ...
- Chinese word segment based on character representation learning 论文笔记
论文名和编号 摘要/引言 相关背景和工作 论文方法/模型 实验(数据集)及 分析(一些具体数据) 未来工作/不足 是否有源码 问题 原因 解决思路 优势 基于表示学习的中文分词 编号:1001-908 ...
- Self-Supervised Representation Learning
Self-Supervised Representation Learning 2019-11-11 21:12:14 This blog is copied from: https://lilia ...
- 论文解读(SUBG-CON)《Sub-graph Contrast for Scalable Self-Supervised Graph Representation Learning》
论文信息 论文标题:Sub-graph Contrast for Scalable Self-Supervised Graph Representation Learning论文作者:Yizhu Ji ...
随机推荐
- KES的执行计划分析与索引优化
今天我们继续探讨国产数据库KES的相关内容,本次的讨论重点将放在SQL优化的细节上.作为Java开发人员,我们通常并不需要深入了解数据库的底层实现细节,而是更多地关注如何提升应用性能与数据库的交互效率 ...
- Elasticsearch-总结列表
1.lucene基本概念 目前以 Lucene 为基础建立的开源可用全文搜索引擎主要是 Solr 和 Elasticsearch. Solr 和 Elasticsearch 都是比较成熟的全文搜索引擎 ...
- mysql数据库指定ip远程访问(设置远程连接),赋权操作
mysql数据库指定ip远程访问(设置远程连接) 远程访问mysql报错,ip不允许链接的情况:错误号码1045Access denied for user '用户名' @'数据库地址' (using ...
- Docker问题日志--工作中遇到的问题及解决
启动Docker容器时遇到错误 标签: docker, docker run, docker start, 环境: Docker version 1.12.6, build 1398f24/1.12. ...
- 同态加密技术及其在FL/MPC中的应用-洪澄
转载:链接 Pailler是具有一次乘法同态的. Pailler 我好像一直叫的都是 "拍利尔" . 关于定理的证明,参考:Pailler 同态性 安全性 语义安全 DCR问题 简 ...
- ZenPhoto pg walkthrough Intermediate
nmap nmap -p- -A -sS 192.168.128.41 Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-01-13 07:17 U ...
- Ubuntu Linux部署DeepSeek
技术背景 DeepSeek是这段时间最热门的话题之一,其蒸馏模型可以实现低成本而高质量的推理,使得我们现在可以在本地小型化的硬件上也用上大模型这一AI利器.本文主要介绍通过Ollama来部署DeepS ...
- redis安装、多实例和配置、及服务器性能优化
同一台服务器部署不同应用或者同一应用部署不同环境,需要redis服务多开防止数据冲突问题. 一.安装redis 需要安装gcc编译工具 yum install gcc -y 源码安装默认Redis程序 ...
- Flink基础Source配置
一.pom文件 https://www.cnblogs.com/robots2/p/16048648.html 二.代码demo FlinkBaseSource.java package net.xd ...
- Linux环境下安装phantomjs
一.创建文件夹,用来存放软件 cd /opt/softWare mkdir phantomJS cd phantomJS 二.下载并解压 wget https://bitbucket.org/ari ...

