Early Convolutions Help Transformers See Better(NeurIPS 2021, Meta)

paper:Early Convolutions Help Transformers See Better

出发点

本文的出发点是解决 ViT 模型在优化性方面的问题。作者假设问题主要出现在 ViT 的早期视觉处理部分,即 "patchify" 过程,这是通过一个大的步幅和大核卷积来实现的。这种设计与典型卷积层的设计选择相矛盾。为了验证这个假设,作者将 ViT 的 "patchify" 过程替换为一个由少量叠加的 3×3 卷积组成的简单对照组。

创新点

作者通过实验表明,用卷积替换 ViT 的 "patchify" 过程显著提高了优化稳定性,并提高了最终模型的准确性。具体包括:

  1. 卷积stem的引入:通过在 ViT 模型中引入轻量级的卷积stem,提高了模型的优化稳定性和性能。
  2. 优化器选择的灵活性:卷积stem使得 ViT 模型可以在不显著降低准确率的情况下,首次实现了 AdamW 和 SGD 的灵活使用。
  3. 学习率和权重衰减选择的稳定性:卷积stem使得 ViT 模型对学习率和权重衰减选择的敏感性显著降低。
  4. 性能提升:卷积stem的 ViT 模型在 ImageNet 顶级错误率方面的性能改进,使其能够超过最先进的 CNNs,而原始 ViT 模型则不能。

方法介绍

\(\mathbf{ViT}_P\) models. 之前的ViTs包括不同大小的variants如ViT-Tiny、ViT-Small、ViT-Base等,为了便于与CNN比较,CNN通常标准化为1 gigaflop(GF)、2GF、4GF等,作者对原始的ViT进行了修改来得到对应这些复杂度的模型,如表1左所示。下表P表示这些模型使用了原始的patchify stem。

\(\mathbf{ViT}_C\) models. 这里下标C表示使用的是conv stem,卷积stem堆叠多个3x3卷积和一个1x1卷积用来对齐通道维度。通过conv stem将224x224的输入图像快速降采样到14x14大小,其中所有的3x3卷积要么步长为2同时输出通道翻倍,要么步长为1且输出通道保持不变。在 \(\mathbf{ViT}_C\) 中为了弥补conv stem带来的额外FLOPs作者还去掉了一个transformer block,如图1所示。

 

具体配置如表1右所示,\(\mathbf{ViT}_P\) 和 \(\mathbf{ViT}_C\) 

对应的模型在所有复杂度指标上都紧密匹配包括flops和runtime。

许多文献都指出ViT模型的优化具有挑战性,例如在中等大小的数据集(ImageNet-1K)上训练时只能得到一般的精度、对数据增强和优化器的选择敏感、当网络较深时表现不佳等,作者将这些优化特征称为 \(optimizability\) 可优化性。作者通过实验对比了patchify stem和conv stem在训练长度稳定性、优化器稳定性、超参稳定性和最佳性能这四点上的差异。

Training length stability. 在ImageNet数据集上,作者将400个epoch的top-1精度作为近似的渐近结果approximate asymptotic result,即训练更长时间也不会有意义的提高top-1精度了。然后将其与训练50、100、200个epoch的模型精度进行对比,并将与渐近精度之间的差距定义为训练长度稳定性。直观上来说这是一种衡量收敛速度的指标,收敛速度更快有明显的好处,特别是在训练多个模型时。

Optimizer stability. ViTs一般采用AdamW优化器,在DeiT这篇文章中指出将优化器替换为SGD时精度下降了7%。相反在CNN如ResNet中使用各种优化器并不会有明显的精度差异。作者将优化器稳定性定义为AdamW和SGD之间的精度差距。

Hyperparameter (lr, wd) stability. 学习率(learning rate, lr)和权重衰减(weight decay, wd)是控制SGD和AdamW算法优化的最重要的超参之一。新的模型和数据集通常需要搜索它们的最优值,它们的选择会极大地影响模型的结果。作者希望有一个模型和优化器可以在lr和wd较广的选择范围内都能得到良好的结果。作者通过比较使用不同lr和wd值训练的模型的误差分布函数(EDFs)来探索这种超参的稳定性。

Peak performance. 每个模型的最佳精度是常用的衡量指标,它通常没有仔细控制训练细节,如数据增强、正则化方法、训练epoch数、lr和wd调优等。为了进行更鲁棒的比较,作者将最佳性能定义为训练400个epoch得到的结果,且使用表现最好的优化器和调整过的lr和wd。

稳定性实验

在定义了四种指标后,作者进行了详细的实验来比较patchify stem和conv stem的表现。

Training Length Stability

图2展示了50、100、200个epoch和渐近精度(400个epoch)之间的绝对误差deltas(\(\Delta
\)top-1),可以看到在多个模型复杂度范围下 \(\mathbf{ViT}_C\) 比 \(\mathbf{ViT}_P\) 的收敛速度更快,并缩小了与CNN收敛速度的差距,在50个epoch下最为明显。

Optimizer Stability

图3展示了不同优化器的训练结果,作为baseline,RegNetY在用SGD或AdamW训练时几乎没有差距,而在使用SGD进行训练时,\(\mathbf{ViT}_P\) 下降明显,与之相比,\(\mathbf{ViT}_C\) 分别用SGD和AdamW训练表现出了更小的差距。

Learning Rate and Weight Decay Stability

作者用误差分布函数EDFs来量化不同模型对lr和wd的敏感性,EDFs的计算方法是对一组从低到高的误差结果进行排序,并绘制误差增加时结果的累积比例。作者生成一个模型的EDFs作为lr和wd的函数,直观上看,如果一个模型对这些超参的选择比较鲁棒,那么EDFs曲线会比较steep(所有模型的表现相似),而如果模型对超参的选择比较敏感那么EDFs曲线会比较shallow(性能比较分散)。

 

图4展示了AdamW训练的模型的散点图和EDFs,图5展示了SGD的结果。可以看到在所有情况下,相较于 \(\mathbf{ViT}_P\),\(\mathbf{ViT}_C\) 显著提高了对lr和wd的稳定性。

Peak Performace

图6展示了训练速度和top-1误差的曲线图,左侧是CNN模型的对比,从中间图可以看到 \(\mathbf{ViT}_C\) 比 \(\mathbf{ViT}_P\) 的误差更小,右侧是在ImageNet-21k上预训练后在ImageNet-1k上测试的结果,同样 \(\mathbf{ViT}_C\) 比 \(\mathbf{ViT}_P\) 的误差更小。

结论

通过上述实验, 作者建议在 ViT 模型中使用标准、轻量级的卷积stem作为一种更稳健的架构选择。这个研究表明,在网络早期视觉处理阶段引入卷积可以显著改善 ViT 模型的优化性和性能。

相关推荐

  1. 整理Meta GDC 2024 上关于XR、空间计算相关的分享

    2024-07-17 10:54:01       31 阅读
  2. meta-llama/Meta-Llama-3-8B

    2024-07-17 10:54:01       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 10:54:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 10:54:01       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 10:54:01       58 阅读
  4. Python语言-面向对象

    2024-07-17 10:54:01       69 阅读

热门阅读

  1. IPython 宏魔法:%macro 命令的高效使用指南

    2024-07-17 10:54:01       25 阅读
  2. 五、python列表

    2024-07-17 10:54:01       27 阅读
  3. 大语言模型系列 - Transformer:从基础原理到应用

    2024-07-17 10:54:01       23 阅读
  4. vue3 学习笔记13 -- 生命周期和防抖节流

    2024-07-17 10:54:01       24 阅读
  5. 命令行导入sql文件【以Ubuntu为例】

    2024-07-17 10:54:01       21 阅读
  6. NLP篇5:自然语言处理预训练

    2024-07-17 10:54:01       21 阅读