大概是全网最详细的何恺明团队顶作MoCo系列解读...(完结篇)
作者丨科技猛兽
编辑丨极市平台
本文原创首发于极市平台,转载请获得授权并标明出处。
大概是全网最详细的何恺明团队顶作 MoCo 系列解读!(上)
本文目录
1 MoCo v2
1.1 MoCo v2 的 Motivation
1.2 MoCo 相对于 End-to-end 方法的改进
1.3 MoCo v2实验2 MoCo v3
2.1 MoCo v3 原理分析 x
2.2 MoCo v3 自监督训练 ViT 的不稳定性
2.3 提升训练稳定性的方法:冻结第1层 (patch embedding层) 参数
2.4 MoCo v3 实验
科技猛兽:Self-Supervised Learning系列解读 (目录)zhuanlan.zhihu.com
Self-Supervised Learning,又称为自监督学习,我们知道一般机器学习分为有监督学习,无监督学习和强化学习。 而 Self-Supervised Learning 是无监督学习里面的一种,主要是希望能够学习到一种通用的特征表达用于下游任务 (Downstream Tasks)。 其主要的方式就是通过自己监督自己。作为代表作的 kaiming 的 MoCo 引发一波热议, Yann Lecun也在 AAAI 上讲 Self-Supervised Learning 是未来的大势所趋。所以在这个系列中,我会系统地解读 Self-Supervised Learning 的经典工作。
1 MoCo v2
论文名称:Improved Baselines with Momentum Contrastive Learning
论文地址:
https://arxiv.org/pdf/2003.04297.pdf
1.1 MoCo v2 的 Motivation
上篇文章我们介绍了 MoCo 这个系列的第一版 MoCo v1,链接如下所示。
MoCo v1的方法其实可以总结为2点
(a) 在 [1 原始的端到端自监督学习方法] 里面,Encoder fqf_\textrm{q}fq 和 Encoder fkf_\textrm{k}fk 的参数每个step 都更新,这个问题在前面也有提到,因为Encoder fkf_\textrm{k}fk 输入的是一个 Batch 的 negative samples (N-1个),所以输入的数量不能太大,即dictionary不能太大,即 Batch size不能太大。
现在的 Momentum Encoder fMkf_\textrm{Mk}fMk 的更新是通过动量的方法更新的,不涉及反向传播,所以 fMkf_\textrm{Mk}fMk 输入的负样本 (negative samples) 的数量可以很多,具体就是 Queue 的大小可以比较大,可以比mini-batch大,属于超参数。队列是逐步更新的在每次迭代时,当前mini-batch的样本入列,而队列中最老的mini-batch样本出列,那当然是负样本的数量越多越好了。这就是 Dictionary as a queue 的含义,即通过动量更新的形式,使得可以包含更多的负样本。而且 Momentum Encoder fMkf_\textrm{Mk}fMk 的更新极其缓慢 (因为 m=0.999m=0.999m=0.999 很接近于1),所以Momentum Encoder fMkf_\textrm{Mk}fMk 的更新相当于是看了很多的 Batch,也就是很多负样本。
(b) 在 [2 采用一个较大的memory bank存储较大的字典] 方法里面,所有样本的 representation 都存在 memory bank 里面,根据上文的描述会带来最新的 query 采样得到的 key 可能是好多个step之前的编码器编码得到的 key,因此丧失了一致性的问题。但是MoCo的每个step都会更新Momentum Encoder,虽然更新缓慢,但是每个step都会通过4式更新一下Momentum Encoder,这样 Encoder fqf_\textrm{q}fq 和 Momentum Encoder fMkf_\textrm{Mk}fMk 每个step 都有更新,就解决了一致性的问题。
SimCLR的两个提点的方法
今天介绍MoCo 系列的后续工作:MoCo v2 和 v3。MoCo v2 是在 SimCLR 发表以后相继出来的,它是一篇很短的文章, 只有2页。在MoCo v2 中,作者们整合 SimCLR 中的两个主要提升方法到 MoCo 中,并且验证了SimCLR算法的有效性。SimCLR的两个提点的方法就是:
- 使用强大的数据增强策略,具体就是额外使用了 Gaussian Deblur 的策略和使用巨大的 Batch size,让自监督学习模型在训练时的每一步见到足够多的负样本 (negative samples),这样有助于自监督学习模型学到更好的 visual representations。
- 使用预测头 Projection head。在 SimCLR 中,Encoder 得到的2个 visual representation再通过Prediction head (g(.)g(.)g(.))进一步提特征,预测头是一个 2 层的MLP,将 visual representation 这个 2048 维的向量hi,hjh_i,h_jhi,hj进一步映射到 128 维隐空间中,得到新的representation zi,zjz_i,z_jzi,zj。利用 zi,zjz_i,z_jzi,zj 去求loss 完成训练,训练完毕后扔掉预测头,保留 Encoder 用于获取 visual representation。
关于 SimCLR 的详细解读欢迎参考下面的链接:
科技猛兽:Self-Supervised Learning 超详细解读 (二):SimCLR系列zhuanlan.zhihu.com
SimCLR 的方法其实是晚于 MoCo v1 的。时间线如下:
MoCo v1 于 2019.11 发布于arXiv,中了CVPR 2020;
SimCLR v1 于 2020.02 发布于arXiv,中了ICML 2020;
MoCo v2 于 2020.03 发布于arXiv,是一个技术报告,只有2页。
SimCLR v2 于 2020.06 发布于arXiv,中了NIPS 2020;
在 SimCLR v1 发布以后,MoCo的作者团队就迅速地将 SimCLR的两个提点的方法移植到了 MoCo 上面,想看下性能的变化,也就是MoCo v2。结果显示,MoCo v2的结果取得了进一步的提升并超过了 SimCLR v1,证明MoCo系列方法的地位。因为 MoCo v2 文章只是移植了 SimCLR v1 的技巧而没有大的创新,所以作者就写成了一个只有2页的技术报告。
1.2 MoCo 相对于 End-to-end 方法的改进
MoCo v2 的亮点是不需要强大的 Google TPU 加持,仅仅使用 8-GPU 就能超越 SimCLR v1的性能。End-to-end 的方法和 MoCo v1的方法在本专栏的上一篇文章 Self-Supervised Learning 超详细解读 (四):MoCo系列 (1) 里面已经有详细的介绍,这里再简单概述下二者的不同,如下图1,2,3所示。
End-to-end 的方法 (原始的端到端自监督学习方法): 一个Batch的数据假设有 NNN 个 image,这里面有一个样本 query q\color{purple}{q}q 和它所对应的正样本 k+\color{crimson}{k^{+}}k+ , q\color{purple}{q}q 和 k+\color{crimson}{k^{+}}k+ 来自同一张图片的不同的 Data Augmentation,这个Batch剩下的数据就是负样本 (negative samples),如下图3所示。接着我们将这个 Batch 的数据同时输入给2个架构相同但参数不同的 Encoder fqf_\textrm{q}fq 和 Encoder fkf_\textrm{k}fk 。然后对两个 Encoder的输出使用下式 1 所示的 Contrastive loss 损失函数使得query q\color{purple}{q}q 和正样本 k+\color{crimson}{k^{+}}k+ 的相似程度尽量地高,使得query q\color{purple}{q}q 和负样本 k−\color{green}{k^{-}}k− 的相似程度尽量地低,通过这样来训练Encoder fqf_\textrm{q}fq 和 Encoder fkf_\textrm{k}fk,这个过程就称之为自监督预训练。训练完毕后得到的 Encoder 的输出就是图片的 visual representation。这种方法的缺点是:因为Encoder fqf_\textrm{q}fq 和 Encoder fkf_\textrm{k}fk 的参数都是通过反向传播来更新的,所以 Batch size 的大小不能太大,否则 GPU 显存就不够了。所以,Batch size 的大小限制了负样本的数量,也限制了自监督模型的性能。
KaTeX parse error: No such environment: equation at position 8: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲ \small \mathca…
MoCo 的方法: 一个Batch的数据假设有 NNN 个 image,这里面有一个样本 query q\color{purple}{q}q 和它所对应的正样本 k+\color{crimson}{k^{+}}k+ , q\color{purple}{q}q 和 k+\color{crimson}{k^{+}}k+ 来自同一张图片的不同的 Data Augmentation,这个Batch剩下的数据就是负样本 (negative samples)。 接着我们只把query q\color{purple}{q}q 和正样本 k+\color{crimson}{k^{+}}k+ 输入给2个架构相同但参数不同的 Encoder fqf_\textrm{q}fq 和 Momentum Encoder fMkf_\textrm{Mk}fMk 。所有的负样本 k−\color{green}{k^{-}}k− 都会保存在一个队列 Queue 里面。然后对两个 Encoder的输出使用上式 1 所示的 Contrastive loss 损失函数使得query q\color{purple}{q}q 和正样本 k+\color{crimson}{k^{+}}k+ 的相似程度尽量地高,使得query q\color{purple}{q}q 和负样本 k−\color{green}{k^{-}}k− 的相似程度尽量地低。在任意一个 Epoch 的任意一个 step 里面,我们只使用反向传播来更新Encoder fqf_\textrm{q}fq 的参数,然后通过2式的动量方法更新 Momentum Encoder fMkf_\textrm{Mk}fMk 的参数。同时,队列删除掉尾部的一个 Batch 大小的负样本,再在头部进来一个 Batch 大小的负样本,完成这个step的队列的更新。这样,队列的大小可以远远大于 Batch size 的大小了,使得负样本的数量可以很多,提升了自监督训练的效果。而且,队列和 fMkf_\textrm{Mk}fMk 在每个 step 都会有更新,没有memory bank,也就不会存在更新不及时导致的 fqf_\textrm{q}fq 的更新和memory bank更新不一致的问题。
θk←mθk+(1−m)θq(2)\theta_\textrm{k}\leftarrow m\theta_\textrm{k}+(1-m)\theta_\textrm{q}\tag{2} θk←mθk+(1−m)θq(2)
FAQ:MoCo方法里面这个队列 Queue 的内容是什么,是如何生成的?
答: 是负样本 k−\color{green}{k^{-}}k−通过Momentum Encoder fMkf_\textrm{Mk}fMk ( fMkf_\textrm{Mk}fMk 采用2式的动量更新方法,而不是反向传播) 之后输出的值,它代表所有负样本的 visual representation。队列 Queue 的是 Batch size 的数倍大,且每个step都会进行一次 Dequeue 和 Enqueue 的操作更新队列。
1.3 MoCo v2实验
全文阅读:大概是全网最详细的何恺明团队顶作 MoCo 系列解读!
推荐大家关注极市平台公众号,每天都会更新最新的计算机视觉论文解读、综述盘点、调参攻略、面试经验等干货~
大概是全网最详细的何恺明团队顶作MoCo系列解读...(完结篇)相关推荐
- 【深度学习】大概是全网最详细的何恺明团队顶作MoCo系列解读...(完结篇)
作者丨科技猛兽 编辑丨极市平台 导读 kaiming 的 MoCo让自监督学习成为深度学习热门之一, Yann Lecun也在 AAAI 上讲 Self-Supervised Learning 是未来 ...
- 解决训练不稳定性,何恺明团队新作来了!自监督学习+Transformer=MoCoV3
本文是FAIR的恺明团队针对自监督学习+Transformer的一篇实证研究.针对Transformer在自监督学习框架中存在的训练不稳定问题,提出了一种简单而有效的技巧:Random Patch P ...
- MoCoV3:何恺明团队新作!解决Transformer自监督训练不稳定问题!
文 | happy 源 | 极市平台 论文链接: https://arxiv.org/abs/2104.02057 本文是FAIR的恺明团队针对自监督学习+Transformer的一篇实证研究.针对T ...
- 何恺明团队推出Mask^X R-CNN,将实例分割扩展到3000类
翻译 | AI科技大本营(ID:rgznai100) 参与 | shawn,刘畅 今年10月,何恺明的论文"Mask R-CNN"摘下ICCV 2017的最佳论文奖(Best Pa ...
- 详解何恺明团队4篇大作 !(附代码)| 从特征金字塔网络、Mask R-CNN到学习分割一切
来源:新智元 作者:krish 本文5000字,建议阅读10+分钟. 本文介绍FAIR何恺明.Tsung-Yi Lin等人的团队在计算机视觉领域最新的一些创新,包括特征金字塔网络.RetinaNet. ...
- Paper:2020年3月30日何恺明团队最新算法RegNet—来自Facebook AI研究院《Designing Network Design Spaces》的翻译与解读
Paper:2020年3月30日何恺明团队最新算法RegNet-来自Facebook AI研究院<Designing Network Design Spaces>的翻译与解读 导读: 卧槽 ...
- Paper之RegNet:《Designing Network Design Spaces》的翻译与解读—2020年3月30日来自Facebook AI研究院何恺明团队最新算法RegNet
Paper之RegNet:<Designing Network Design Spaces>的翻译与解读-2020年3月30日来自Facebook AI研究院何恺明团队最新算法RegNet ...
- 如何看待何恺明最新一作论文Masked Autoencoders?
来源 | 知乎问题 地址 | https://www.zhihu.com/question/498364155 编辑 | 机器学习算法与自然语言处理 原问题:如何看待何恺明最新一作论文Masked A ...
- CVPR 2021大奖出炉!何恺明获最佳论文提名,华人四篇“最佳”!第一届Thomas S. Huang 纪念奖颁发...
点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 作者 | 陈大鑫.琰琰.青暮 本文转载自:AI科技评论 就在刚刚,CVPR 2021最佳论文.最佳学生论文等 ...
最新文章
- nero结果,对应的分析。如下。
- mac下,svn配置
- 【数据结构与算法】之深入解析“字符串相乘”的求解思路与算法示例
- SAP 电商云 Spartacus UI 产品明细页面路由路径的自定义配置
- log双线性模型log-bilinear model简单概括
- 【VMCloud云平台】SCOM配置(额外篇)-应用可用性150点实时性测试
- insmod module 失败(skyeye + armlinux)
- Java大数据-Week2-Day4-IDEA安装
- Building Web Parts for Microsoft SharePoint Products and Technologies
- java语言打印上三角和下三角,进一步得到九九乘法表
- 常见的接口测试 开源网站
- SQL课设之报刊订阅管理
- 【阿里云镜像】使用VM虚拟机安装OpenWRT并更换阿里云镜像源
- LPC1768以太网控制器
- 如何解决青年大学习的复制粘贴问题???
- PS 2019 Mac版 自学入门系列(五)——调配冷色与暖色
- 光功率 博科交换机_华为交换机查看光功率的方法请大神指教
- weston 配置文件去掉状态工具栏
- [转]JAVA环境变量设置完全版
- 股票查询小程序_以龙虎榜数据为例