11.MOCO v3

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。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值