深度学习(自监督:MoCo V3):An Empirical Study of Training Self-Supervised Vision Transformers

前言

MoCo V3是何凯明团队的新作,发表在ICCV 2021上,是一篇自监督文章,在MoCo V2的基础上做了一些小改动,同时report了ViT自监督训练过程中的“不稳定”现象,并给出了一个trick,用于减缓ViT自监督训练不稳定的现象。

凯明团队的文章还是一如既往的细致,本文主要总结MoCo V3的操作流程以及ViT自监督训练过程中的“不稳定”现象。MoCo V3相关的性能试验不会过多总结

本文为个人总结,如果错误,欢迎指出

本文默认读者知晓MoCo V2以及常见对比学习算法的做法,不会过多赘述细节

MoCo V3

相比于MoCo V2

  1. MoCo V3摒弃了memory bank,负例由同一batch size中的其他样本组成,类似于simCLR。作者发现当batch size足够大时,从batch size中挑选负例和从memory bank中挑选负例的性能差别不大。
  2. 损失函数为InfoNCE,数学表达式如下
    在这里插入图片描述 q 、 k + q、k^+ qk+构成对比学习中的正例对、 q 、 k − q、k^- qk构成对比学习中的负例对,具体如何产生,可以查看深度学习(自监督:MoCo)——Momentum Contrast for Unsupervised Visual Representation Learning

算法伪代码如下
在这里插入图片描述

与MoCo v2、MoCo V2+(就是simsiam)在ImageNet上的线性分类性能对比如下图所示,backbone为ResNet50
在这里插入图片描述

ViT自监督训练过程中的“不稳定”现象

CNN模型自监督训练时,KNN分类器的准确率是平滑上升的,但是ViT不是,如下图所示
在这里插入图片描述
上图比对了不同batch size下,backbone为ViT情况下,MoCo V3的KNN性能变化曲线图,可以看到,batch size越大,训练的不稳定现象越明显,即KNN准确率震荡现象越明显,并且这种震荡现象会影响到模型的性能,batch size=6144时,震荡现象非常明显,并且线性分类准确率只有69.7。

那么能否通过调节学习率,来缓解训练不稳定呢?
在这里插入图片描述
从上图来看,使用较小的学习率的确可以减缓训练不稳定,但是这会影响到模型的性能,当学习率为0.5时,虽然训练不稳定现象有所减缓,却会影响到模型的性能。

是不是MoCo V3的对比学习算法导致ViT出现训练不稳定现象呢?作者发现BYOL、simCLR中也存在类似现象,如下图蓝线所示,这表明ViT的训练不稳定现象可能具有一定的普适性。
在这里插入图片描述

如何缓解ViT自监督训练的不稳定现象

作者注意到,当梯度发生较大改变时,会导致KNN的准确率出现“低谷”,比对了所有层的梯度后,作者发现梯度峰值在第一层出现的时机最早,并且过了几个epochs训练后,最后一层的梯度也会出现峰值,如下图所示
在这里插入图片描述
基于此,作者假设训练不稳定现象会较早出现在浅层,既然如此,那么就固定浅层的参数,使其不会出现训练不稳定现象,会不会改善训练不稳定现象呢?基于此,作者固定了ViT的patch projection layer,此时模型的性能变化如下图绿线所示
在这里插入图片描述
可以看到,即使使用较大的学习率,如1.5x 1 0 − 4 10^{-4} 104,此时模型训练依然稳定,并且此时模型的线性分类性能也和使用ResNet50作为backbone近似,可见缓解训练不稳定现象有助于提升模型的性能(没有缓解训练不稳定,学习率为1.5x 1 0 − 4 10^{-4} 104时,模型的线性分类准确率为71.7),并且这种做法不仅针对MoCo V3有效, simCLR、BYOL也仍有效。

思考

作者在原文中提到,固定ViT的patch projection layer,相当于减小了解空间大小,那么更小参数量的ViT是否仍会出现训练不稳定现象呢?固定了patch projection layer,相当于减小了网络的深度,训练不稳定现象是否和网络深度有关系(类似于CNN早期出现的梯度爆炸和梯度消失问题)?

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值