[特殊字符] 视觉Transformer (ViT) 原理及性能突破:从CNN到大规模自注意力机制的迁移

📚 视觉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的指数级增长证明了数据量是决定模型上限的决定性因素

🛠️ 资源与学习要点总结

本论文为后续研究树立了两个关键指导原则:

  1. Scaling Law驱动: 所有需要构建视觉模型的新项目,都应将大规模预训练数据获取与模型架构设计视为首要任务。
  2. 模块化方法: Hybrid模型提供了一个可行的折衷方案,即将CNN的局部特征提取能力与Transformer的全局建模能力相结合,实现最佳性能与计算投入的最佳平衡点。
相关推荐
DisonTangor10 小时前
谷歌开源首个扩散大语言模型——DiffusionGemma
人工智能·语言模型·自然语言处理·开源·aigc·transformer
祭曦念10 小时前
古诗小集开发实战:从零开发一款 HarmonyOS 古诗鉴赏应用
pytorch·深度学习·harmonyos
YOLO数据集集合12 小时前
无人机航拍街道巡检数据集 | 空中视角车辆检测、交通流量统计、违停识别、智能交通YOLO数据集10399期
深度学习·yolo·目标检测·无人机
放下华子我只抽RuiKe512 小时前
FastAPI 全栈后端(四):认证与授权
开发语言·前端·javascript·python·深度学习·react.js·fastapi
菜鸟‍13 小时前
【论文学习】Segment Anything 分割一切
深度学习·学习·计算机视觉
装不满的克莱因瓶13 小时前
自然语言处理发展历史——从规则系统到大语言模型的演进之路
网络·人工智能·python·深度学习·语言模型·自然语言处理
weixin_4082663414 小时前
H20训练CPGNET环境搭建
深度学习
装不满的克莱因瓶15 小时前
RLHF中的PPO算法——大语言模型对齐优化的核心引擎
人工智能·python·深度学习·算法·机器学习·语言模型·自然语言处理
AndrewHZ16 小时前
【LLM技术全景】开源大模型生态:如何选择适合你的基座模型?
人工智能·深度学习·语言模型·开源·llm·transformer·基座模型
机器学习之心17 小时前
小龙虾优化算法(COA)驱动的CNN-LSTM多输出回归模型及其SHAP可解释性分析
算法·cnn·lstm·小龙虾优化算法·cnn-lstm多输出回归·shap可解释性分析