惠州网站建设方案外包,中山做网站哪个公司好,学校网站的建设方案,网站代码规范文 | happy源 | 极市平台论文链接: https://arxiv.org/abs/2104.02057本文是FAIR的恺明团队针对自监督学习Transformer的一篇实证研究。针对Transformer在自监督学习框架中存在的训练不稳定问题#xff0c;提出了一种简单而有效的技巧#xff1a;Random Patch ProjectionTransformer的一篇实证研究。针对Transformer在自监督学习框架中存在的训练不稳定问题提出了一种简单而有效的技巧Random Patch Projection它不仅适用于MoCoV3框架同样适用于其他自监督学习框架(比如SimCLR、BYOL)与此同时从不同角度的对比分析得出Transformer中的位置信息尚未得到充分探索即Transformer仍有继续改善的空间。Abstract本文并没有提出一种新的方法相反鉴于最近计算机视觉的进展我们研究了一个简单、渐进、但必须知道的基线用于视觉Transformer的自监督学习。尽管标准卷积网络的训练方法已经非常成熟且鲁棒然而ViT的训练方案仍有待于构建特别是自监督场景下的训练极具挑战。在这里我们从基础出发对训练自监督ViT的几种基本组件的影响进行了分析调研。我们发现不稳定性是影响精确下降的最主要问题它会被表面上好的结果覆盖(容易陷入局部最优)。我们通过实验发现这些结果确实存在部分失败当训练变得稳定时这些结果可以进一步提升。基于MoCoV3以及其他自监督框架我们从不同角度对ViT进行了测试分析我们对观察到的积极面、挑战性以及开放问题进行了讨论期望该工作可以为未来的研究提供有用的数据支撑和经验参考。Introduction本文主要聚焦于采用视觉领域的自监督框架进行Transformer的训练。CNN的训练方法已被进行充分的研究与论证而ViT模型是新的其训练方法尚未完整构建。本文从基础出发研究了影响深度网络训练的几个基本模块batch sizelearning rate以及optimizer。我们发现在不同场景下不稳定性均是影响自监督ViT训练的主要问题。有意思的是我们发现不稳定的ViT训练可能不会导致灾难性结果(比如发散)相反它可以导致精度的轻度退化(约下降1-3%)。除非有一个更稳定的作为对比否则这个程度的退化可能难以被注意到。据我们所知该现象在卷积网络训练中鲜少发生我们认为该问题及其隐含的退化值得注意。为了证明不稳定性的可能危害我们研究了一个可以在实践中提高稳定性的简单技巧。基于梯度变换的经验观察我们固化ViT中的块投影层即采用固定随机块投影。我们发现该trick可以缓解多种场景下的不稳定问题并提升模型精度。基于对比学习框架自监督Transformer可以取得非常好的结果。不同于ImageNet监督的ViT(模型变大时精度反而变差)更大的自监ViT可以取得更高的精度。比如ViT-Large的自监督预训练可以取得超越监督预训练版本的性能。此外本文所提自监督ViT模块可以取得与大的卷积网络相当的性能。一方面验证了ViT的潜力另一方面意味着自监督ViT仍有进一步提升的空间。因为我们发现移除ViT中的position embedding仅仅造成了轻微的性能下降这意味着自监督ViT无需位置信息即可学习很强的特征表达同时也也暗示位置信息并未得到充分探索。MoCoV3我们先来看一下本文所提出的MoCoV3它是对MoCo V1/2的一种改进寻求在简单性、精度以及可缩放等方面提供更好的均衡。MoCoV3的伪代码实现如下类似MoCo、SimCLR我们采用随机数据增强从每个图像中裁剪两个图像块并经由两个编码器编码为我们采用InfoNCE损失函数其中表示q同源图像的输出即正样本表示异源图像输出即负样本。延续SimCLR处理方式MoCoV3采用同一批次自然共存的密钥移除了Memory Queue(当batch足够大时其收益递减)。基于这种简化上面的对比损失可以简化为上述伪代码中ctr实现。我们采用了对称损失。我们的编码器由骨干网络(如ResNet、ViT)、投影头以及额外的预测头构成而编码则由骨干网络、投影头构成没有预测头。通过的滑动平均更新。作为参考我们以ResNet50作为骨干网络其在ImageNet上的性能如下由于额外的预测头与大的batchMoCoV3具有更加性能。Stability of Self-Supervised ViT Training原则上来讲我们可以直接在对比自监督学习框架中采用ViT骨干替换ResNet骨干网络。但实际上主要挑战在于训练不稳定。我们发现不稳定问题不仅仅由精度反映。实际上即使存在不稳定问题它也可以“表面上很好”的进行训练并提供一个不错的结果。为揭示这种不稳定性我们在训练过程中对kNN曲线进行了监控研究了它如何影响不稳定性并提出了一种简单的trick进行稳定训练进而提升不同场景下的精度。Empirical Observations on Basic Factors按照上述方式我们设计了不同计算量的ViT模型并采用大batch(它有助于提升自监督学习方法的性能)进行训练。在下面的分析中我们采用ViT-B/16作为基准。BatchSize。上图给出了不同batch时的训练曲线。可以看到1k和2k的batch具有比较平滑的曲线精度分别为71.5%和72.6%4k的曲线就开始变得不再稳定其最终精度为72.2%要低于2k的72.6%。后面会提到这里的性能下降是受不稳定训练导致。6k的曲线的不稳定性进一步加剧最终仍有一个不错的结果69.7%。我们猜测训练被部分重启跳出了当前局部最优并重新寻找新的优化轨迹。因此训练无法收敛最终的精度会依赖于重启的局部性能。此外我们还发现这种不稳定不会导致一个显著差的结果。实验发现相同配置下结果的差异较小范围内。这就使得不稳定导致了性能退化难以被注意到。LearningRate。事实上学习率通常会随batch提升而缩放。在本文实验中我们采用了线性缩放规则。上图给出了学习率的影响曲线。当lr比较小时训练更为稳定但会欠拟合。比如0.5e-4训练的模型精度要比1.0e-4训练的模型精度低1.8%。当lr比较大时训练不再稳定。如1.5e-4训练曲线具有更多的下降波谷且精度更低。Optimizer。我们默认采用AdamW作为训练优化器另一方面LARS是自监督方法常用的一种优化器。我们研究了LMAB优化器它是LARS的AdamW版结果见上图。给定合理的学习率LMAB可以获得比AdamW稍高的精度(72.5%)。但是当学习率比最优学习率大时模型精度会迅速下降。有意思的是此时的训练曲线仍然很平滑但会缓慢下降。我们发现当学习率合适时LAMB可以取得与AdamW相当的精度。但是学习率的敏感性使其无法在进行学习率搜索的前提下适配不同架构设计。因此我们仍选择AdamW作为默认优化器。A Trick for Improving Stability前面的所有实验均表明不稳定是主要问题。接下来我们将提出一种简单的trick提升不同场景下的稳定性。在训练过程中我们注意到梯度突变(见上图突变波峰)会导致训练曲线的“下沉”(见上图)。通过比较所有层的梯度我们发现梯度突变发生在(patch projection)第一层先发生然后延迟一定迭代后最后一层再发生。基于该发现我们猜测不稳定性发生在浅层。受此启发我们在训练过程中对块投影进行冻结。换句话说我们采用固定的Random Patch Projection层进行块嵌入而非通过学习方式。上图对比了可学习与随机块投影的MoCoV3结果对比。可以看到随机块投影可以稳定训练训练曲线更为平滑、精度更高(精度提升约1.7%)进一步说明了训练不稳定是影响精度的主要问题。我们发现除了MoCo外其他相关方法(比如SimCLR、BYOL)同样存在不稳定问题。随机块投影同样可以改善SimCLR与BYOL的性能(分别提升0.8%和1.3%)见上图对比。不稳定对于SwAV会导致损失发散(NaN)本文所提随机块投影可以稳定训练SwAV并将其精度由65.8%提升到66.4%。总而言之本文所提trick对于所有自监督方案均有效。Discussion一个有意思的发现块投影层的训练并非必要。对于标准ViT块尺寸其块投影矩阵时过完备的此时随机投影足以保持原始块的信息。我们注意到冻结第一层并不会改变架构但它会缩小解决方案空间。这意味着根本问题与优化相关。该trick可以缓解优化问题但不能解决它当lr过于大时模型仍存在不稳定问题。第一层不太可能时不稳定的主要原因相反该问题与所有层相关。但第一层只是更易于分开处理因为它是骨干网络仅有的非Transformer层。Implementation Details在这里我们ViTMoCoV3的实现细节进行更详细的描述。Optimizer默认选择AdamWbatch为4096通过100epoch训练搜索lr和wd然后选择最优训练更长。学习率采用40epoch进行warmup它同样有助于缓解不稳定性warmup之后学习率按照cosine衰减MLP Head投影头是一个3层MLP预测头是一个2层MLP。MLP的隐含层维度均为4096输出层维度均为256。在MoCoV3中参考SimCLRMLP的所有Linear均后接BN。Loss参考BYOL损失函数进行了缩放。尽管该方法可以通过调节lr和wd合并但可以使得其对的敏感性降低默认。ViT Architecture参考ViT一文输入块为或者经过投影后它将输出一个长度为196/256的序列Position Embedding与该序列相加所得序列与可学习类token拼接并经由后续Transformer模块编码最终所得类token视作输出并送入MLP头。Linear probing。延续常规方案我们采用线性方式评估特征表达质量。完成自监督与训练后移除MLP头并采用监督方式训练一个线性分类器此时训练90epoch且仅仅采用RandomResize、Flipping进行数据增广。Experiments Results上表给出了不同模型的计算量、训练时长等信息上述结果为谷歌云平台实验结果。ViT-B训练100epoch花费2.1小时ViT-H训练100epoch花费9.8小时(512个TPU)。如果采用GPU的话ViT-B需要24小时(128GPU)。TPU的扩展性要比GPU更优哇。Self-supervised Learning Framework上表给出了四种不同自监督学习框架的实验对比。可以看到(1) 相比其他自监督方法在相同骨干网络ViT-S与ViT-B时MoCoV3具有更加的精度。(2) MoCoV3与SimCLR在ViT-B方面的性能要优于ResNet50。Ablations of ViTMoCoV3接下来我们将从不同角度对本文所提框架进行消融实验分析。Position Embedding(PE)。上表比较了的不同PE的性能对比可以看到(1) 可学习方式表现比较好并并不如sin-cos方式(2) 移除掉PE后模型仍有一个不错的结果74.9%也就是说PE仅仅贡献了1.6%。该实验揭示了当前模型的强处与局限性一方面模型可以仅仅通过块集合即可学习很强的表达能力类似于bag-of-word模型另一方面模型可能并未充分利用位置信息。Class Token(CLS)。上表给出了CLS的影响性对比可以看到(1) 移除CLS保留LN此时性能比较差仅有69.7%(2) 移除LN和CLS结果几乎不变76.6%。这意味着CLS对于该系统并非关键因子同时也意味着规范化层的选择影响较大。BatchNorm in MLP。上表比较了BN存在鱼头的影响性。可以看到batch2048时移除BN导致了2.1%的性能下降。这意味着BN并非对比学习的必要因子但合理的使用BN可以提升精度。Prediction Head。上表对比了预测头有无的性能对比。预测头并非MoCo的必选项但预测头会带来额外的精度提升(1%)而在BYOL与SimSiam中却是必选项。Momentum Encoder。上表对比了Momentum稀疏的影响对比。Momentum编码可以带来2.2%的性能提升。Training length。上表对比了不同训练时长的性能对比。轻量版ViT-S可以从更长周期的训练中受益更多比如精度提升0.9%重量型ViT-B则受益很少。Comparison with Prior Art上表给出了MoCoV3框架下不同ViT模型的对比。可以看到(1) 相比iGPUT无需额外数据预训练基于MoCo的ViT取得了更高的精度、更小的模型。(2) 随着模型变大所提方案的精度会逐渐提升而在监督学习方式中基于ImageNet-1k/2k预训练的ViT-L的精度要低于ViT-B。事实上本文自监督预训练的ViT-L精度(77.6%)要比监督方式(76.53%)的更高这意味着自监督学习作为一种广义表达学习工具不易于过拟合。上图给出了所提方案与ResNet系列其他自监督学习的性能对比。可以看到在小模型方面本文基线ViT MoCo即ViT, MoCoV3的性能要比SimCLRv2ResNet更佳在大模型方面则与之相当。SimCLRV2SK-ResNet的组合具有更高的性能BYOLWider-ResNet具有更高的性能配合R200-2x时可以得到更优异的结果正如前面提到的规范化技术的影响将LN替换为BN后模型的性能提升了1%将ViT默认块尺寸替换为后模型的性能进一步提升2-3%。MoCoV3ViT-BN-L/取得了81.0%的top1精度作为对比SimCLRV2SK-ResNet152-3x的最佳精度为79.8%BYOL-ResNet200-2x的最佳精度为79.6%。Transfer Leanring最后我们再看一下所提方案在下游任务迁移学习方面的性能。结果见上表可以看到当模型大小从ViT-B提升到ViT-L所提方案具有更加的迁移学习精度当提升到ViT-H时则出现了过拟合问题。作为对比ImageNet监督ViT在ViT-L时就出现了过拟合。相比ImageNet监督方案本文所提自监督ViT取得了更佳的结果。在这些小数据上采用大的ViT模型从头开始训练时过拟合问题非常严重。这意味着如果数据量不足会导致难以训练ViT学习好的特征表达而自监督预训练可以弥补这种差距极大的避免小数据集上的过拟合问题。后台回复关键词【入群】加入卖萌屋NLP/IR/Rec与求职讨论群后台回复关键词【顶会】获取ACL、CIKM等各大顶会论文集