paper链接:https://arxiv.org/abs/2104.02057

0.摘要

1.作者分析了训练self-supervised ViT过程中的一些现象,指出“训练过程的不稳定”是影响accuracy的一个主要的因素,但是这个因素也存在于一些看起来不错的结果里,所以往往是不容易被发现的。

2.基于对训练过程中梯度的观察,作者提出了一个简单的trick(use fixed random patch projection,即固定住ViT的patch projection层)用于提升稳定性。

1.详细

1.1 训练方式

重头戏主要在MoCo v3在详细ViT上的实验,这里简单总结如下:

  • 遵寻moco v2基本结构
    去除了momory bank,作者提出batch size足够大(大于4096)就不需要momory bank
    We abandon the memory queue [19], which we find has diminishing gain if the batch is sufficiently large (e.g., 4096).  

1.2 实验结果

从实验结果来看,基于MoCo v3训练的ViT-BN-L/7模型(LN换成BN,patch size为7x7)在ImageNet linear probing protocol上取得了新的SOTA,超过Top-1 acc达到81.0%,超过79.8% with SimCLR v2 (SK-ResNet152-3×), and 79.6% with BYOL (ResNet200-2×)。这证明了ViT在无监督训练上的优势。

1.3 无监督训练过程中的instability

发现了ViT在无监督训练过程中的instability,这个训练不稳定并不会导致灾难性的性能骤降,而只是稍许的性能下降,这就比较难以察觉。batch size和lr会明显影响ViT训练的稳定性,比如batch size为6144时,从训练过程中的acc曲线可以看到会出现比较明显的“dips”,这就好像网络又重开始训练一样。虽然训练不稳定,但最终的效果为69.7,相比batch size为2048的72.6只掉了不到3个点。当lr过大时也会导致instability。


论文中进一步分析这个"dips"出现的原因,发现其实是训练过程中的梯度会出现陡峰造成的,而且发现first layer先出现,然后延迟一些iterations后last layer也出现梯度骤增。所以这种训练不稳定性是由于first layer造成的可能性比较大。

论文中提出的一种解决方案是,ViT采用a fixed random patch projection layer,这相当于这patch embedding是固定的,而不是训练得到的(其实对projection layer做gradient clip也是可以,但是最终发现需要设定一个极小的阈值,这就等价于freeze它了)。这个简单的trick可以解决部分这种训练的instability:

但这并没有本质解决这个问题,因为当lr过大时这种现象还是会出现的。

(3)尽管更大的ViT模型可以取得更好的效果,但是还是可以发现模型越来越大时会出现saturation的趋势,当然最简单的解决方案是喂给更多的数据。还有可能是基于instance discrimination的pretext task过于简单,还需要设计更好的pretext task。

(4)position embedding的影响:去除PE,在无监督训练过程去除PE,效果也下降了1个多点。在有监督训练中,去除PE的影响会更大一些,ViT论文中是报道掉了3个点以上。去除PE还能学习的这么好,说明ViT的学习能力很强,在没有位置信息的情况下就可以学习的很好;从另外一个角度来看,也说明ViT并没有充分利用好PE而取得更好的效果,具体是哪个原因还需要进一步的研究。最近的CPVT和CvT也提出引入卷积来去除PE。

11.MOCO v3相关推荐

  1. 真不是炼丹,务实敢为的 MoCo v3

    作者 | 黄挂 编辑 | NewBeeNLP 这次分享的paper是 An Empirical Study of Training Self-Supervised Visual Transformer ...

  2. pytorch实现moco v3

    链接:MoCo_v3_pytorch 参考论文:An Empirical Study of Training Self-Supervised Vision Transformers 训练 CUDA_V ...

  3. 大概是全网最详细的何恺明团队顶作MoCo系列解读...(完结篇)

    ​作者丨科技猛兽 编辑丨极市平台 本文原创首发于极市平台,转载请获得授权并标明出处. 大概是全网最详细的何恺明团队顶作 MoCo 系列解读!(上) 本文目录 1 MoCo v2 1.1 MoCo v2 ...

  4. 【深度学习】大概是全网最详细的何恺明团队顶作MoCo系列解读...(完结篇)

    作者丨科技猛兽 编辑丨极市平台 导读 kaiming 的 MoCo让自监督学习成为深度学习热门之一, Yann Lecun也在 AAAI 上讲 Self-Supervised Learning 是未来 ...

  5. MoCo V2:MoCo系列再升级

    何凯明从 CVPR 2020 上发表的 MoCo V1(Momentum Contrast for Unsupervised Visual Representation Learning),到前几天挂 ...

  6. 对比学习系列(二)---MoCo 系列

    MoCo 系列 文章目录 MoCo 系列 自监督 MoCo V1 前言 动量对比 Dictionary as a queue Momentum update 代理任务 Shuffling BN 实验 ...

  7. 紧跟大佬的步伐:关于我亲自动手复现了恺明新作MAE这件事

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨CW不要無聊的風格@知乎(已授权) 来源丨https://zh ...

  8. 中国科学院、东南大学等联合发表最新的视觉 Transformer 综述

    作者丨闪闪红星闪闪@知乎(已授权) 来源丨https://zhuanlan.zhihu.com/p/433048484 编辑丨极市平台 导读 中国科学院.东南大学等单位联合发表最新的视觉 Transf ...

  9. 《预训练周刊》第36期: 谷歌提出梯度最大化增长方法GradMax

    No.36 智源社区 预训练组 预 训 练 研究 观点 资源 活动 关于周刊 本期周刊,我们选择了11篇预训练相关的论文,涉及优化器.稀疏语言模型.神经网络结构.自增长网络.视频摘要.多模态.机器翻译 ...

最新文章

  1. C语言之父:因拒付论文装订费错失博士学位,论文52年后重见天日
  2. AHOI2009 中国象棋
  3. 最长回文子串 hihocode 1032 hdu 3068
  4. 闰年的判断方法_C语言100题 判断这一天是一年中的第几天 壁纸 火影
  5. springBoot 登录拦截器
  6. 安卓软件错误log_关于android程序的log错误信息的问题,请明白人看下吧,我是初学者,新建的android项目,一个代码都没改过...
  7. 提高代码可读性: 命名技术
  8. git(2)---git 分布式版本控制系统
  9. hadop 查看DataNode的资源使用情况信息(web接口)
  10. linux驱动基础开发2——linux 驱动开发前奏(模块编程)-转
  11. Cobalt Strike 从入门到入狱(三)
  12. HAL库中外设驱动的实现(任意外设通用)
  13. mysql redo 物理复制 彭立勋_MySQL基础技能与原理——基本原理.ppt
  14. MyEclipse清除已永久保存的SVN账号
  15. 手绘与码绘的比较---模拟风吹树动
  16. 【Vue】pc和移动端网页样式适配
  17. 当程序员5年,他从来不加班,工资居然还每年都在涨...
  18. 在LLVM中编写pass的详细教程(3)
  19. python基础编程小实例2——绝对温标
  20. 35条心理暗示让你摆脱坏心情,做快乐的自己

热门文章

  1. WPF中为button按钮设置CornerRadius圆角
  2. luogu P2587 [ZJOI2008]泡泡堂
  3. 机器学习中的偏差和方差
  4. C++OJ电视机与遥控器(友元类)
  5. 疫情下的防护——虹膜识别
  6. 【前端】psd到html切图,包含ps切图
  7. C++中的Thunk技术 / 非静态类成员函数作为回调函数 的实现方法
  8. 知识图谱和Neo4j图数据库
  9. [Line: 197] Ran out of memory allocating 1073741824 bytes with alignment 0 怎样让内存不够的电脑打开UE4.26
  10. 2018秋招blibli算法工程师