📚 视觉Transformer (ViT) 原理及性能突破:从CNN到大规模自注意力机制的迁移
https://arxiv.org/html/2010.11929
源文件: An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale (arXiv:2010.11929)
核心主题: 证明纯粹的Transformer架构,仅通过大规模预训练,可以达到或超越传统的卷积神经网络(CNN)在图像识别任务上的性能。
🎯 核心洞察与研究意义
本文的关键突破在于提出了一种范式转变:深度学习的能力不再仅仅依赖于网络固有的归纳偏置(Inductive Biases) ,而是高度耦合于模型规模(Scaling)和训练数据量(Data Scale)。
- 机制替代法: ViT将图像视为一系列离散的图像块(Patches),并通过标准Transformer处理这些图像块序列,成功将NLP中的自注意力机制(Self-Attention)扩展到了CV领域。
- 计算效率革命: 在JFT-300M等超大型数据集上,ViT展示了卓越的性能,同时占用的计算资源(例如,训练成本)远低于SOTA的CNN模型。
- 核心结论: CNN的局部性、平移不变性等内置偏置在超大规模数据集的足够优化和足够长的训练时,可以通过Transformer的模式识别和学习过程进行取代与超越。
🔬 工作流程与技术实现 (Methodology & Formulas)
ViT成功的核心在于它模拟了图像块到序列数据的过程,使得整个流程可以被纳入标准的Transformer编码器结构内。
1. 输入预处理:图像到Token的序列化 (Patching)
| 步骤 | 描述 | 数学/概念 |
|---|---|---|
| 图像重塑 | 将原始图像 x∈RH×W×C\mathbf{x} \in \mathbb{R}^{H \times W \times C}x∈RH×W×C 划分为非重叠的 P×PP \times PP×P 图像块。 | NNN (Token数量) =(H⋅W)/P2= (H \cdot W) / P^2=(H⋅W)/P2 |
| Patch Embedding | 每个图像块 xp\mathbf{x}_pxp 通过可训练的线性投影 E\mathbf{E}E 映射到一个高维的潜在向量空间 DDD。 | xpE\mathbf{x}_p\mathbf{E}xpE |
| 序列构建 | 构造最终输入序列 z0\mathbf{z}_0z0,必须包含三个关键组成部分: | 输入序列 : z0=[xclass;xpE;⋯ ;xNE]+Epos\mathbf{z}0 = [\mathbf{x}{\text{class}}; \mathbf{x}_p\mathbf{E}; \cdots; \mathbf{x}N\mathbf{E}] + \mathbf{E}{\text{pos}}z0=[xclass;xpE;⋯;xNE]+Epos |
| 组成元素 | 1. [class] Token (xclass\mathbf{x}_{\text{class}}xclass): 用于捕获全局分类结果的特殊可学习Token。 2. Patches (xpE\mathbf{x}_p\mathbf{E}xpE): 嵌入的图像块特征。 3. 位置嵌入 (Epos\mathbf{E}_{\text{pos}}Epos): 弥补Transformer缺乏空间/顺序信息。 |
2. Transformer 编码器结构详解
编码器层 ℓ\ellℓ 通过迭代的自注意力与MLP块来提炼特征。
- 自注意力层 (MSA): zℓ′=MSA(LN(zℓ−1))+zℓ−1\mathbf{z}'{\ell} = \operatorname{MSA}(\operatorname{LN}(\mathbf{z}{\ell-1})) + \mathbf{z}_{\ell-1}zℓ′=MSA(LN(zℓ−1))+zℓ−1
- MLP层: zℓ=MLP(LN(zℓ′))+zℓ′\mathbf{z}{\ell} = \operatorname{MLP}(\operatorname{LN}(\mathbf{z}'{\ell})) + \mathbf{z}'_{\ell}zℓ=MLP(LN(zℓ′))+zℓ′
- 关键细节 (高分辨率): 当在更高分辨率上进行微调时,必须使用 **2D插值(2D Interpolation)**来调整预训练的位置嵌入,以保持空间位置信息的完整性。
📊 性能分析与量化指标 (Experimental Results)
模型的评估是在 ImageNet、CIFAR-100、VTAB等多个数据集上进行的,性能提升是系统性和跨任务的。
1. 状态前沿对比 (State-of-the-Art Comparison)
| Benchmark | ViT-H/14 (JFT) | BiT-L (JFT) | Noisy Student (SOTA) | 🏆 性能提升 (ViT) |
|---|---|---|---|---|
| ImageNet | 88.55% | 87.54% | 88.4/88.5% | ✅ 达到SOTA |
| ImageNet ReaL | 90.72% | 90.54% | 90.55% | ✅ 显著超越 |
| CIFAR-100 | 94.55% | 93.51% | --- | 🥇 领先优势明显 |
| VTAB (19 tasks) | 77.63% | 76.29% | --- | ✅ 优于传统方法 |
| 训练资源消耗 | 2.52k TPUv3-core-days | 9.99k | 12.31k | 🚀 资源消耗大幅降低 |
- 数据规模依赖: ViT 的性能曲线强烈依赖于训练数据规模:在小型数据集(如ImageNet)上,CNN具有优势;但在大型数据集(如JFT-300M)上,ViT的指数级增长证明了数据量是决定模型上限的决定性因素。
🛠️ 资源与学习要点总结
本论文为后续研究树立了两个关键指导原则:
- Scaling Law驱动: 所有需要构建视觉模型的新项目,都应将大规模预训练数据获取与模型架构设计视为首要任务。
- 模块化方法: Hybrid模型提供了一个可行的折衷方案,即将CNN的局部特征提取能力与Transformer的全局建模能力相结合,实现最佳性能与计算投入的最佳平衡点。