Paper Deep Reading · ICLR 2021

An Image is Worth 16×16 Words

Vision Transformer 把图像切成 patch,把 patch 当 token,以几乎原封不动的 Transformer encoder 做视觉分类。真正改变领域的结论不是“注意力能看图”,而是:当数据和算力足够大,学习到的空间规律可以取代大量手工卷积先验。

Alexey Dosovitskiy et al.arXiv:2010.11929v222 页(正文 + Appendix)Google Research, Brain Team监督迁移学习
01 · Research thesis

这篇论文究竟证明了什么?

它用一个刻意简单的实验回答:在图像分类上,卷积的局部性、平移等变性和二维邻域结构是否是不可替代的?答案是有条件的——中小数据上仍然重要;达到 ImageNet-21k / JFT-300M 规模后,纯 Transformer 的扩展性与迁移效率占上风。

303M
JFT 预训练图像,18k 类;与下游测试集去重
88.55%
ViT-H/14 在 ImageNet 的 top-1
2–4×
相同迁移性能下,控制实验所需预训练计算更少

Research gap

此前视觉注意力方法通常嵌在 CNN 中,或使用局部、稀疏、轴向等专门结构;这些结构难以在当时硬件上高效扩展。本文测试标准、全局的 NLP Transformer 是否能“几乎开箱即用”地扩展到图像。

核心假设

卷积先验提高小数据效率,但不是大规模视觉表示学习的必要条件。只需用 patch 降低序列长度,剩余空间关系可以由数据学习。

标题容易误读:“16×16 words”指每个 token 对应一个 \(16\times16\) 像素 patch,不是 16×16 个 token。对 \(224\times224\) 输入,ViT-B/16 实际得到 \(14\times14=196\) 个 patch token,再加一个 class token,共 197 个 token。
02 · Problem formulation

输入、输出与学习目标

输入

一张图像 \(\mathbf{x}\in\mathbb{R}^{H\times W\times C}\)。以边长 \(P\) 的不重叠方块切分,patch 数 \(N=HW/P^2\),每块展平为 \(\mathbf{x}_p^i\in\mathbb{R}^{P^2C}\)。

输出

encoder 最终层的 class token 表示 \(\mathbf{y}\),送入分类头得到 \(K\) 类 logits。预训练与下游微调均为分类;论文主体并非生成模型,也没有 decoder。

监督目标

论文按分类监督训练,核心优化是预测数据集标签。正文未把交叉熵单列为公式;不可把后续 MAE、DINO 或 CLIP 的目标倒写成本论文方法。

迁移

去掉预训练的两层 MLP head,接一个零初始化的 \(D\times K\) 线性层;若提高分辨率,则固定 patch 尺寸并对 learned positional embeddings 做二维插值。

03 · Architecture

从像素到 token,只改入口

论文 Figure 1:Vision Transformer 架构
原论文 Figure 1。图像 patch → 线性投影 → 加 class token 与位置编码 → pre-norm Transformer encoder → MLP 分类头。图中每个 patch 的小图只是示意,不代表模型保留像素网格操作。
1 · Patchify\(H\times W\times C\) 切成 \(N\) 个 \(P\times P\) patch
2 · Project每块展平,用共享矩阵映射到 \(D\) 维
3 · Compose前置 class token,加可学习一维位置编码
4 · Encode\(L\) 层 MSA + MLP,均用 pre-norm 与残差
5 · Read out取最终 class token,再做 LayerNorm
6 · Classify预训练两层 MLP;微调换成零初始化线性层
\[ \mathbf{z}_0=[\mathbf{x}_{\mathrm{class}};\mathbf{x}_p^1\mathbf{E};\mathbf{x}_p^2\mathbf{E};\ldots;\mathbf{x}_p^N\mathbf{E}]+\mathbf{E}_{\mathrm{pos}} \]
\(\mathbf{E}\in\mathbb{R}^{(P^2C)\times D}\) 是共享 patch projection;\(\mathbf{E}_{\mathrm{pos}}\in\mathbb{R}^{(N+1)\times D}\) 是 learned 1D position embeddings。分号表示沿序列维拼接。
\[ \mathbf{z}'_{\ell}=\mathrm{MSA}(\mathrm{LN}(\mathbf{z}_{\ell-1}))+\mathbf{z}_{\ell-1},\qquad \ell=1,\ldots,L \] \[ \mathbf{z}_{\ell}=\mathrm{MLP}(\mathrm{LN}(\mathbf{z}'_{\ell}))+\mathbf{z}'_{\ell} \] \[ \mathbf{y}=\mathrm{LN}(\mathbf{z}^{L}_0) \]
LayerNorm 放在子层之前,残差放在之后,是 pre-norm。这里的下标 \(0\) 指 class token 的序列位置,上标 \(L\) 指最后一层。
\[ [\mathbf{q},\mathbf{k},\mathbf{v}]=\mathbf{z}\mathbf{U}_{qkv},\qquad \mathbf{A}=\mathrm{softmax}\!\left(\frac{\mathbf{q}\mathbf{k}^{\mathsf T}}{\sqrt{D_h}}\right),\qquad \mathrm{SA}(\mathbf{z})=\mathbf{A}\mathbf{v} \]
\(D_h=D/k\),\(k\) 为 head 数。全局注意力矩阵 \(\mathbf{A}\in\mathbb{R}^{(N+1)\times(N+1)}\),所以注意力成本随 token 数二次增长;patch 边长减半会令 token 数约增至 4 倍,注意力矩阵元素约增至 16 倍。

视觉先验在哪里?

只有 patch 切分显式使用二维局部结构;高分辨率迁移时的位置编码插值再次使用二维网格。encoder 内部是全局序列处理,初始 position embedding 也没有预置“相邻 patch 更近”。

Hybrid 对照

可先用 ResNet 生成 feature map,再把每个 feature patch(极端时为 \(1\times1\))投影成 token。这个对照检验卷积局部前端在不同计算预算下是否仍有优势。

04 · Model family

参数规模与计算旋钮

变体层数 \(L\)隐藏维 \(D\)MLP 维Heads参数量常见 patch
ViT-Base1276830721286M16 / 32
ViT-Large241024409616307M16 / 32
ViT-Huge321280512016632M14

命名 ViT-L/16 = Large 主干 + 16 像素 patch。768 是沿用 BERT-Base 的 hidden size,不是为了令 \(16\times16\times768\) 等于图像像素数;现有笔记中的那个解释是巧合推测,不是论文设计依据。

05 · Reproducibility

数据、训练、微调与推理

ImageNet

1.3M 图像、1k 类。训练分辨率 224。直接从头训练时需更强正则,且大 ViT 不如同规模 ResNet。

ImageNet-21k

14M 图像、21k 类。公开大规模预训练集,显著缩小 ViT 的数据劣势。

JFT-300M

303M 高分辨率图像、18k 类,内部数据集。预训练集相对下游测试集做去重。

预训练设置EpochBase LRDecayWeight decayDropout
ViT-B/{16,32}, JFT7\(8\times10^{-4}\)linear0.10.0
ViT-L/32, JFT7\(6\times10^{-4}\)linear0.10.0
ViT-L/16, JFT7 / 14\(4\times10^{-4}\)linear0.10.0
ViT-H/14, JFT14\(3\times10^{-4}\)linear0.10.0
ViT-B/{16,32}, I21k90\(10^{-3}\)linear0.030.1
ViT-L/{16,32}, I21k30 / 90\(10^{-3}\)linear0.030.1
ViT-*,ImageNet300\(3\times10^{-3}\)cosine0.30.1

统一预训练细节

  • Adam:\(\beta_1=0.9, \beta_2=0.999\)
  • batch size 4096,warmup 10k steps
  • 训练分辨率 224;ImageNet 额外 global norm 1 梯度裁剪
  • dropout 用在 dense 后(qkv projection 除外)与 patch + position 相加后
  • JFT 对比中的 ResNet 也用 Adam,以降低优化器混杂;Appendix D.1 给出 Adam/SGD 对照

微调细节

  • SGD momentum 0.9,batch size 512
  • cosine decay、无 weight decay、global norm 1 梯度裁剪
  • 默认 384 分辨率;ImageNet 最佳结果用 L/16 的 512、H/14 的 518
  • ImageNet 20k steps;CIFAR 10k;Pets / Flowers 500;VTAB 2.5k
  • 按开发子集搜索 learning rate;最佳 ImageNet 结果再用 Polyak averaging 0.9999

推理实际发生什么

确定性前向分类:resize / crop 输入,patchify,插值后位置编码,encoder,读取 class token,线性 head 输出 logits,取最大类别。没有 beam search、temperature、采样、rerank、外部工具或 test-time optimization。

Few-shot 评估

冻结表示,把少量样本映射到 \(\{-1,1\}^{K}\) 目标,解带正则的 least-squares 闭式解。它是便宜的表示质量探针,不等同于端到端低样本微调。

复现边界:JFT-300M 是内部数据;论文没有公开其数据与完整数据处理流水线,因此最佳 H/14 数字不能严格端到端复现。公开的 ImageNet-21k checkpoint 提供更实际的复现入口。
06 · Results

结果强,但比较必须读条件

下游指标ViT-H/14 JFTViT-L/16 JFTViT-L/16 I21kBiT-L JFTNoisy Student
ImageNet88.55 ± 0.0487.76 ± 0.0385.30 ± 0.0287.54 ± 0.0288.4 / 88.5
ImageNet-ReaL90.72 ± 0.0590.54 ± 0.0388.62 ± 0.0590.5490.55
CIFAR-1099.50 ± 0.0699.42 ± 0.0399.15 ± 0.0399.37 ± 0.06—
CIFAR-10094.55 ± 0.0493.90 ± 0.0593.25 ± 0.0593.51 ± 0.08—
Oxford Pets97.56 ± 0.0397.32 ± 0.1194.67 ± 0.1596.62 ± 0.23—
Oxford Flowers99.68 ± 0.0299.74 ± 0.0099.61 ± 0.0299.63 ± 0.03—
VTAB-19 mean77.63 ± 0.2376.28 ± 0.4672.72 ± 0.2176.29 ± 1.70—
TPUv3 core-days2.5k0.68k0.23k9.9k12.3k

准确率均为百分数;论文报告三次微调的均值与标准差。Noisy Student 使用 ImageNet + 去标签 JFT 的半监督训练,目标和配方不同;表中“更少计算”主要对相同 JFT 监督迁移的 BiT-L 比较最有说服力。

论文 Figure 3 到 5:数据规模与计算扩展
原论文 Figures 3–5。上:小数据时 ResNet 占优,数据增加后 ViT 反超;下:JFT 固定大数据条件下,ViT 的 performance/compute frontier 优于 BiT。Figure 4 的子集实验固定超参数并早停,较好隔离数据规模效应。

数据规模是结论的一部分

ImageNet 预训练下 ViT-L 比 ViT-B 更差;ImageNet-21k 时接近;JFT 时大型模型才显示完整收益。论文没有证明“Transformer 在任何数据条件下优于 CNN”。

VTAB 的细节

ViT-H/14 在 Natural 与 Structured 组超过 BiT-R152x4;Specialized 组两者相近。整体均值领先不能概括为所有 19 个任务都领先。

计算控制实验

Table 6 对 JFT 预训练的 ViT、BiT 与 hybrid 统一报告 exaFLOPs。ViT-L/16 14 epoch:1567 exaFLOPs、ImageNet 87.12;ResNet200x3 14 epoch:3306 exaFLOPs、87.22,展示接近性能下约 2.1× 计算差距。

自监督只是预实验

masked patch prediction 的 ViT-B/16 达到 ImageNet 79.9%,比从头训练高约 2%,仍比监督预训练低约 4%。它不能支撑“ViT 已解决自监督视觉学习”的强结论。

07 · Ablation & inspection

消融告诉我们的,比主表更细

位置编码

ViT-B/16 的 ImageNet 5-shot:无位置 0.61382;默认 1D 0.64206;2D 0.64001;relative 0.64032。证明“需要位置信息”,但不支持“1D 比二维更本质”;不同编码几乎打平。

Class token vs GAP

附录显示两者调到合适 learning rate 后相近。早期 GAP 失败来自学习率不匹配,而非 class token 必不可少。这是一个很好的负结果修正。

如何扩模型

以 8 层、\(D=1024\)、\(D_{\mathrm{MLP}}=2048\)、patch 32 为交点:增加深度收益最大,16 层后已出现 diminishing returns;缩小 patch 也稳定提升,但增加序列计算;单纯增宽最弱。

Hybrid 的局部先验

小计算预算时 CNN stem 稍有优势,大模型时差距消失。证据支持“局部先验提高数据 / 计算效率”,但不支持它在大规模下始终有害。

论文 Figure 7:patch filters、位置编码和注意距离
原论文 Figure 7。左:patch projection 学到类似低层滤波器;中:一维 learned positions 自发形成二维邻近结构;右:底层已同时出现局部 head 与全局 head,随深度增加注意距离整体增大。
论文 Figure 6:attention rollout
原论文 Figure 6。Attention rollout 从 class token 回投到输入空间,常覆盖分类相关区域。它说明模型会用全局信息;但 attention map 本身不是因果解释,也不证明这些像素对预测是充分或必要的。
Paper Verified大规模监督预训练下,ViT 在多个分类迁移基准上达到或超过同期 CNN,并有更优的受控计算-性能曲线。
Author Claim“大规模训练胜过 inductive bias”是对所测分类与迁移设置的归纳;论文没有覆盖检测、分割、密集预测的直接实验。
Our InterpretationViT 把建模选择从固定局部算子转移到数据、tokenization 和 scale。它没有消除视觉先验,而是把主要先验集中在 patchification 与训练分布。
Research Extension可以进一步学习动态 patch、层级 token 合并、稀疏注意力或多尺度 positional structure,以改善高分辨率二次成本与小数据效率。
08 · Paper vs implementation

官方代码核查:能复现什么,不能声称什么

✓ Patch projection:官方 JAX/Flax 当前实现以 kernel=stride=patch size 的 Conv 完成,与展平后共享线性投影等价。
✓ Encoder:LayerNorm → MultiHeadDotProductAttention → residual;LayerNorm → GELU MLP → residual,吻合 pre-norm 公式。
✓ Tokens:classifier=token 时创建零初始化 cls token;position embedding 为 stddev 0.02 的 learned parameter。
✓ Configs:当前 ViT-B/16 仍是 12 层、768 维、3072 MLP、12 heads;L/16 与 H/14 同样吻合 Table 1。
△ 版本界线:核查的是官方仓库 2026-09-26 当前 commit 64801f1b…,仓库已在 2021-06 改写为 Flax Linen 并继续加入 AugReg、LiT、SAM 等内容;它不是论文提交时训练代码的冻结快照。
△ 不可复现项:JFT 数据、内部预处理与 TPU 训练环境不公开。README 的后来 checkpoint 结果不能混作论文 Table 2 数字。

官方仓库还明确说明开源版本从 Big Transfer 工程 fork / 修改;因此“结构一致”与“完全重演 2020 年内部训练流水线”是两个不同的复现层次。

09 · Reviewer commentary

如果把它当作一篇研究论文来审

Strengths

  • 贡献极其简洁,变量控制清楚:尽量不改 Transformer,把问题聚焦到数据规模与 inductive bias。
  • 不仅报 SOTA,还做 JFT 子集、compute frontier、hybrid、位置编码、head type、模型 shape 等诊断。
  • 统一 Adam、硬件和 core-days / exaFLOPs,较认真处理 CNN 公平性。
  • Appendix 提供训练与微调网格、逐模型迁移结果和 19-task VTAB breakdown,远强于只报单点。

Weaknesses

  • 最强证据依赖不可公开的 JFT-300M,限制独立复现与数据治理审计。
  • 任务主要是分类 / 迁移;关于“通用视觉骨干”的外推当时尚未由检测、分割和密集预测直接验证。
  • compute 比较仍受 schedule、optimizer、regularization 和实现效率影响,作者也明确承认这一点。
  • attention rollout 是表征探针,不是可验证的决策解释。

最可信的因果链

子集实验显示在固定训练超参数下,小数据 ResNet 更好、大数据 ViT 反超;hybrid 在小规模略优且随规模消失。两条证据共同支持“卷积先验主要改善小数据 / 小计算条件”的机制解释。

仍未被隔离的变量

patch 尺寸同时改变空间粒度、序列长度和计算量;更小 patch 的收益不能单独归因于精细空间信息。JFT 的标签噪声、类分布和去重细节也可能参与结果。

Reviewer verdict:方法新颖性来自“极简 + 大规模验证”而非复杂模块。论文最大的学术价值是把视觉架构研究的核心问题,从“必须设计怎样的局部算子”改写为“怎样让通用序列模型获得足够数据、计算和 token 表示”。
10 · Research extensions

沿着论文边界继续做什么

Token budget

学习内容自适应 patch 或 token pruning,使细节区高分辨率、背景区低分辨率;评价时同时报告准确率、延迟、显存与吞吐。

Small-data prior

将卷积 locality、蒸馏、增强或自监督作为可控先验,追踪它们在数据规模增长时何时失去边际收益。

Resolution transfer

把位置插值改成连续坐标编码或相对位置机制,系统测试训练 / 微调分辨率错位与非方形输入。

Procedural material 连接

Research Extension,不是论文已验证内容。

材质图像具有强平铺规律、长程重复与局部微结构。可把多尺度材质 patch 当 token,以 ViT 编码外观,再条件化节点图 / shader program 生成;对比纯全局注意力、卷积 stem 与频域 tokenization,研究程序先验在数据规模下是否也呈现类似拐点。

Execution-aware decoding

Research Extension,不是论文已验证内容。

若输出从类别改为 material graph,ViT 只负责图像条件表征;decoder 需要结构约束、renderer-in-the-loop、graph validity 与 backtracking。不能直接把分类 class token 等同于可执行材质表示。

11 · Sources

一手资料与证据边界

  1. Dosovitskiy et al., arXiv:2010.11929v2 — 本页方法、公式、训练、实验、消融与 Appendix 的主来源。
  2. ICLR 2021 OpenReview — 会议版本身份与评审记录入口。
  3. Google Research publication — 官方出版条目、作者与 venue。
  4. google-research/vision_transformer — 官方 JAX/Flax 实现、预训练 checkpoint 与当前配置;代码核查固定到本地记录的 commit。
  5. Google Research Blog — 官方方法说明与可视化背景。
Identity note论文 PDF 标记 Alexey Dosovitskiy、Lucas Beyer、Alexander Kolesnikov、Dirk Weissenborn、Xiaohua Zhai 为 equal technical contribution;Alexey Dosovitskiy 与 Neil Houlsby 为 equal advising,并列出二人邮箱。PDF 没有明确“corresponding author”标记,因此 Obsidian 元数据继续按既有规则把末位 Neil Houlsby 作为未核实候选。