An Image is Worth 16x16 Words (ViT)
Dosovitskiy et al. (Google) · ICLR 2021 · 2021
阅读原文把图像切成 16×16 的 patch 序列直接喂给标准 Transformer,证明在大数据条件下视觉不需要卷积归纳偏置。
核心要点
- 「图像即 token」的统一性意义大于性能意义:从此视觉、语言、音频、蛋白质可以共用一套架构与训练基础设施。
- 归纳偏置与数据规模的跷跷板:CNN 的平移等变在小数据是加速器,在大数据(JFT-300M)是天花板——通用架构随数据增长后来居上。
- patch 大小是视觉 Transformer 最敏感的超参,直接决定序列长度与细粒度信息的权衡。
- 论文发表时(2020.10)性能并不惊艳,是 CLIP 预训练与更大算力让 ViT 路线最终胜出——架构论文的命运常由后继者决定。
背景
2012 年 AlexNet 之后,CNN 统治视觉整整八年:VGG → ResNet → EfficientNet,所有进步都在「卷积骨架 + 更好的训练配方」框架内。CNN 的成功被归因于两个归纳偏置:局部性(每个神经元只看局部感受野)与平移等变(平移图像,特征跟着平移)——它们天然匹配图像的统计结构,让模型在小数据上也能高效学习。
与此同时,NLP 已经完成 Transformer 革命(2017),且 Vision Transformer 的前置条件已经就绪:iGPT(2020.6)证明了「图像也可以自回归建模」、无监督预训练在视觉开始抬头、谷歌内部的 JFT-300M(3 亿标注图,私有数据集)已可用。剩下的问题只有一个:视觉专属的归纳偏置,究竟是必需品还是拐杖?
动机
论文的实验设计是一个干净的假说检验:把图像当作 token 序列,用尽可能少视觉先验的标准 Transformer 直接做分类。如果它在「小数据」上输给 CNN(预期如此),但在「超大数据」上反超(赌注所在),那么结论就是:归纳偏置的价值随数据量递减,最终通用架构胜出。这个「数据规模 vs 架构先验」的跷跷板是深度学习的一元论问题——作者选在视觉上回答它,因为视觉是「先验最强」的领域。
方法
整个 pipeline 简单到一篇博客能讲完——这种简单正是论文的姿态:
Patch 化。把 224×224 图像切成 14×14 = 196 个不重叠的 16×16 patch,每个 patch 展平成 16×16×3 = 768 维向量,再线性投影到 d_model。这一步等价于一个 kernel=stride=16 的卷积——「无卷积」严格说是「只有一层 16×16 卷积」。
序列化。196 个 patch token + 1 个可学习的 [CLS] token(沿袭 BERT),每个 token 加可学习的 1D 位置嵌入。注意:1D 嵌入对 2D 图像结构是最「浪费」的选择——模型要自己从数据里学出二维邻接关系,这是故意保留的「先验真空」。
标准编码器。ViT-Base:12 层、d=768、12 头、86M 参数;ViT-Large:24 层、d=1024、16 头、307M;ViT-Huge:32 层、d=1280、16 头、632M(patch 14×14)。与 NLP 的 BERT/GPT 同构——没有任何视觉特化组件。
训练配方。在大数据集上预训练(分类头之外),再迁移到目标任务(ImageNet-1k 等)微调;微调时用更高分辨率 + 位置嵌入插值。
混合架构对照组。CNN 特征图 → Transformer 序列建模(ResNet 50 的 stage 3 输出切 patch),用来检验「patch 直接切是否吃亏」。
实验设置
- 预训练数据三档:ImageNet-1k(130 万)、ImageNet-21k(1400 万)、JFT-300M(3 亿,谷歌私有);预训练 epoch 数按数据集大小调整
- 迁移评测:ImageNet-1k(验证集 top-1)、ImageNet-ReaL 标签修正版、VTAB(19 个结构化任务的「视觉图灵测试」)、CIFAR/Flowers 等
- 基线:BiT(Big Transfer,ResNet 大数据预训练的当时最强迁移基线)、Noisy Student(EfficientNet 自蒸馏,ImageNet 当时 SOTA)
- 小数据消融:在 ImageNet-1k 从头训练 ViT vs ResNet,检验归纳偏置的「小数据税」
- 算力口径:JFT 预训练的 ViT-L 消耗约 2.5k TPUv3-core-天量级(论文给了具体数,跨模型对比按 FLOPs 对齐)
结果
- 小数据败北:从头在 ImageNet-1k 训练,ViT-Base 明显弱于同量级 ResNet——归纳偏置在 130 万图时是净收益
- 大数据封王:JFT-300M 预训练后,ViT-L/16 在 ImageNet-1k 达 ~88%(当时第一),ViT-H/14 更高(88.55%),超过 Noisy Student(EfficientNet-L2,当时 SOTA 88.4%)——且预训练算力远小于对手
- 数据量门槛清晰:ImageNet-1k 预训练的 ViT 与 ResNet 各有胜负;ImageNet-21k 后 ViT 开始占优;JFT-300M 全面领先——「先验 vs 数据」的跷跷板被完整画了出来
- 算力效率:达到同等 ImageNet 精度,ViT 预训练总 FLOPs 低于 BiT/Noisy Student 数倍——「通用架构 + 大数据」比「专用架构 + 精调」便宜
- 位置嵌入可视化:顶层嵌入学到类似卷积的感受野结构——模型从数据中重建了 CNN 的先验
- 混合架构(ResNet 特征 + Transformer)在小数据略好、大数据与纯 ViT 打平——patch 直接切并没有丢失关键信息
有趣的洞见
归纳偏置是数据不足时的补丁,数据充足时的约束。CNN 的平移等变让它在 130 万图上高效,但也硬编码了「平移不变性必须精确成立」的假设;ViT 用 3 亿图「买断」了这些先验——学到的是数据的真实统计而不是架构强加的近似。这条元规律此后反复上演:RNN 之于序列、专用网络之于蛋白质,都在大数据时代被通用 Transformer 吞并。
「图像即 token」的真正意义是基础设施统一。ViT 发表时性能优势有限,但「视觉任务可以用 NLP 的全部工具链(架构、并行、缩放定律、数据管线)」这件事的价值在随后三年兑现:CLIP 的视觉塔是 ViT、多模态(Flamingo/GPT-4V)的图像接口是 ViT、视频模型(Sora 的 spacetime patch)是 ViT 思想的延伸。论文赢的不是 ImageNet,是标准之争。
命运由后继者书写的架构论文。ViT 首发时被质疑两点:依赖不开放的 JFT-300M、小数据不行。一年内 DeiT(2021.12)用蒸馏+数据增广把 ViT 拉回 ImageNet-1k 可训,CLIP 用 4 亿互联网图文对替代封闭标注数据——两个补丁各自成为大领域。原始论文只提供了「证明可能存在」的骨架。
批判性评价
最弱的一环:「无偏置」名不副实——16×16 patch 切分本身就是强空间假设(破坏了 patch 内的空间结构、固定了粒度),位置嵌入以低效的 1D 方式携带几何信息。后续大量工作(卷积 patchify、相对位置、局部注意力、Swin 的层次化窗口)都在修补这两点。此外论文的证据基础(单一私有数据集 + 单一预训练配方)对「先验 vs 数据」的结论支持有限——数据质量与多样性维度完全没有展开。
依然重要的理由:它是「架构统一战争」的视觉侧转折点,也是判断新架构的思维工具:看到任何「新架构在任务 X 上超越 Transformer」的论文,先问它赢在归纳偏置(小数据友好)还是赢在可扩展性(大数据上限)——混淆这两个维度是大量「SOTA 架构」放大后失效的原因。ViT 用一次干净的实验把这个分析框架立了起来。