← 总目录 / 板块四 · 多模态模型的发展
板块四 · 多模态模型的发展

第32篇 · ViT

一张图就是一串 16×16 的词:当数据足够大,卷积的归纳偏置可以被纯粹的注意力买断
An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale · Alexey Dosovitskiy 等(Google Research, Brain Team)· 2020 · arXiv:2010.11929
本材料说明:所有数字复述自论文原文,未做外部独立验证;【论文声称】=作者观点;【实验支持】=文中有数据支撑;【解读者推断】=精读者推理。来源标注指明各节对应原论文章节。

一、全局大图

1.1 摘要—章节对照导航表

摘要短语对应原文章节精读章节
"reliance on CNNs is not necessary"§1 引言 / §3.1第二章、第三章
"pure transformer applied directly to sequences of image patches"§3.1 方法第三章 patch 化与架构
"pre-trained on large amounts of data"§4.2–4.4(I21k/JFT-300M)第五章 规模曲线
"excellent results … substantially fewer computational resources"§4.5 Table 2 / §4.6 Table 6第四章、第六章 主结果与算力账
"mid-sized or small benchmarks (ImageNet, CIFAR-100, VTAB)"§4.2 评测设置第四章

1.2 知识依赖图

Transformer 标准组件(MSA/LN/残差)→ 枢纽节点:patch 序列化 N=HW/P²+线性投影 E → 与 NLP 完全同构的编码器([class] token + 位置编码)→ 归纳偏置几乎为零的论断 → 预训练数据规模决定成败(ImageNet < I21k < JFT-300M 曲线)→ SOTA 对比(Table 2)→ 算力效率论证(TPUv3-core-days/exaFLOPs)→ 模型内部检查与自监督初步实验。

主干线是"序列化 ⟹ 无归纳偏置 ⟹ 只能靠数据规模补 ⟹ 大规模预训练+小数据微调范式成立"。patch 序列化被一切后续内容依赖,值得慢读。

1.3 主要贡献与证据强度预评

#论文声称的贡献预评证据强度
1纯 Transformer(无卷积)在图像分类上可达 SOTA:ImageNet 88.55%、ReaL 90.72%、CIFAR-100 94.55%、VTAB 77.63%强实验支撑(Table 2,三次微调均值±std)
2同等性能下 ViT 预训练算力比 ResNet 少约 2–4 倍有系统缩放研究支撑(Table 6,18 个模型)
3"大规模训练胜过归纳偏置":小数据 ViT 过拟合更重、大数据后反超有规模曲线消融(9M/30M/90M/300M 子集)
4简单 1D 位置编码即可,无需 2D-aware 编码有消融(附录 D.4 Table 8)+位置嵌入可视化解释
5Huge 模型未见性能饱和,激励进一步扩展只是主张(外推性陈述)

1.4 推荐阅读路线

必读主线:§3.1 方法(尤其式 1–4)→ §4.2 预训练数据需求(两条规模曲线)→ §4.5 Table 2。跳过则无法回答"为什么 2020 年之前没人做成纯 Transformer 视觉模型"。
可跳支线:§附录 D 各项消融细节、Axial attention 对比、ObjectNet——支线内容;但做架构选型时 D.2(shape 缩放)与 D.5(实际计算成本)强烈建议回读。

二、逐章精读

第1章 问题与定位:视觉需要自己的 Transformer 吗(对应原文 §1)

来源:论文 §1 引言;历史背景串联为解读者补充。

学习目标:学完本章你应能——复述此前视觉注意力工作的两类做法及其局限;说出本文的核心反叛点;准确表述"数据规模 vs 归纳偏置"的论断及其两个前提条件。

失效模式先行。2017 年后 Transformer 统治 NLP,但在视觉里它始终是"附属品":要么把自注意力塞进 CNN(非局部块等),要么用局部注意力替换卷积但保留整体结构——后者因特殊的注意力模式无法在现代硬件加速器上高效扩展,大规模识别的 SOTA 一直是 ResNet 类。【论文声称】本文证明这种依赖不必要:把图像切成 patch 当作词,直接喂给标准 NLP Transformer,以有监督方式做分类,配大数据预训练就能全面打平甚至超越最强 CNN,而且训练算力更低。

关键论断的精确表述:CNN 把 locality、二维邻域结构、平移等变性内建于每一层,所以小数据下泛化好;ViT 几乎没有这些先验,中等规模数据(如不加正则的 ImageNet)上比同尺寸 ResNet 低几个百分点;但当预训练数据达到 14M–300M 图像量级时,大规模训练胜过归纳偏置。【论文声称,第五章的规模曲线提供直接证据】

直觉与类比:CNN 像自带"近大远小、相邻像素相关"常识的老画师,小样本也能画得体面;ViT 是一张白纸的天才,必须看过上亿张画才学会这些常识——可一旦学完,天花板更高。类比在哪里失效:ViT 并非完全零先验——MLP 层仍是局部且平移等变的,且 patch 切分本身就注入了网格结构假设;作者明确说二维结构只在两处被使用(切 patch、微调时调位置编码),是"极少"而非"零"。

常见误读:①"ViT 证明了卷积没用"——错,论文结论是归纳偏置在大数据下不再必要,小数据场景 CNN 依然占优(Table 5 中 ImageNet 预训练的 ViT-Large 不及 Base 就是明证);②"ViT 更省算力所以更先进"——省的是达到同等性能所需的预训练总算力,单步计算 ViT 反而可能更贵(D.5 有实测讨论);③把标题当修辞——16×16 正是主结果 ViT-H/14 之外的 L/16 配置里的 patch 边长。

一句话蒸馏:ViT 的赌注是"用数据规模买断归纳偏置",而 JFT-300M 就是它的筹码。

闭卷自检:不看材料我能说出 CNN 三种归纳偏置吗?ViT 在哪两处仍使用了二维结构?核心论断的两个条件分支?

第2章 方法:把图像变成一句话(对应原文 §3.1,式 1–4)

来源:论文 §3.1 全部;混合架构段属 §3.1 末尾。

学习目标:学完本章你应能——手算给定分辨率与 patch 尺寸下的序列长度;默写四条编码器公式;说明 [class] token、位置编码、预训练头/微调头的差异;描述 hybrid 变体的两种取法。

图像 x∈ℝH×W×C 被切成 N=HW/P² 个 P×P patch,展平为 xp∈ℝN×(P²·C),经可训练投影 E∈ℝ(P²·C)×D 映到 D 维:

z₀ = [xclass; xp¹E; xp²E; ⋯ ; xpNE] + Epos z′ = MSA(LN(zℓ−1)) + zℓ−1 ; z = MLP(LN(z′)) + z′ (ℓ = 1…L) ; y = LN(zL0)

公式手术

符号它是什么直觉
N = HW/P²patch 数=有效序列长度224² 图、P=16 时 N=14×14=196;加 class token 共 197 个 token
E ∈ ℝ(P²C)×Dpatch 投影矩阵P=16,C=3,D=768 时参数量 16×16×3×768=589,824≈0.59M,等价于一个 16×16、stride 16 的卷积
zL0class token 的最终状态整幅图的汇总表示,接分类头;仿 BERT 设计
Epos ∈ ℝ(N+1)×D可学习 1D 位置编码初始化不含任何 2D 信息,空间关系从零学起

分类头:预训练用带一个隐藏层的 MLP,微调换单线性层(零初始化的 D×K 前馈)。微调高分辨率技巧:保持 P 不变→序列变长,对预训练位置编码按原图位置做 2D 插值。混合架构:patch 投影作用于 CNN 特征图上的 patch;特例 P=1 即直接展平特征图空间维。

手算验证:ViT-B/16 在 224² 输入下的注意力账单。N=196(不含 class token 时),注意力矩阵 A∈ℝN×N 约 196²≈38,416 个元素/头;12 头 × 12 层共约 5.5M 个注意力权重/张图——对比像素级全局注意力(224²≈50k token,矩阵约 2.5×10⁹ 元素)相差约四个数量级。数字对账:这正是"patch 级输入使标准 Transformer 可行"的量化原因;也解释了 D.5 的发现——ViT 理论上对图像尺寸的二次增长只在最大模型最大分辨率下才刚显现。

常见误读:①以为 patch embedding 是什么新模块——它就是一个 stride=P 的卷积(【解读者推断】原文未这样写,但形状推演可验证);②以为位置编码是 2D 的——用的是最朴素的 1D 可学习编码,2D-aware 版本没有带来显著收益(附录 D.4);③以为 class token 必不可少——附录 D.3 显示 GAP+线性头的早期失败完全由学习率需求不同造成,而非 class token 本身的魔力。

一句话蒸馏:ViT 的全部魔法就是把 H×W×C 重塑成 N 个 P²C 维"词",其余原封不动照抄 NLP。

闭卷自检:我能对 384² 输入、P=16 手算 N 吗?(答:24²=576。)预训练头和微调头差在哪?hybrid 的 P=1 特例是什么?

第3章 模型规格与训练配置(对应原文 §4.1,Table 1/3/4)

来源:论文 §4.1 及 Table 1、Table 3、Table 4。

学习目标:学完本章你应能——背出 B/L/H 三档的超参;说出预训练与微调各自的优化器组合及理由;解释 BiT 基线为何改用 GroupNorm。

模型LayersHidden DMLP sizeHeadsParams
ViT-Base1276830721286M
ViT-Large241024409616307M
ViT-Huge321280512016632M

命名如 ViT-L/16 = Large + 16×16 patch;patch 越小序列越长、计算越贵。预训练统一 batch 4096、224 分辨率、LR warmup 10k 步;主实验用 Adam(β₁=0.9, β₂=0.999)、weight decay 0.1——附录 D.1 显示此设置下 Adam 对 ResNet 也略优于 SGD(公平性处理);JFT 上训 7 或 14 epochs,ImageNet-21k 上 30/90 epochs。微调换 SGD+momentum 0.9、batch 512、cosine 衰减、无 weight decay、梯度裁剪全局范数 1,默认 384 分辨率;Table 2 冲榜时 ViT-L/16 用 512、ViT-H/14 用 518 分辨率并叠加 Polyak 平均(因子 0.9999)。基线 BiT 的 ResNet 把 BatchNorm 换成 GroupNorm + 标化卷积,以消除小 batch 下的 BN 劣势——对手是被认真伺候过的。

常见误读:①"ViT 用 Adam、CNN 用 SGD 只是习惯差异"——这是各自调到最优后的选择,且作者验证过交叉组合;②"H/14 的 14 是层数"——是 patch 边长;③忽略冲榜附加技巧(高分辨率+Polyak 平均)而把 88.55% 当成裸模型成绩。

一句话蒸馏:三档规格沿袭 BERT-Base/Large 的宽度设计再加深加宽,训练配方则是"预训练 Adam 大 batch、微调 SGD 小 batch"的双轨制。

第4章 主结果:SOTA 表怎么读(对应原文 §4.5,Table 2)

来源:论文 Table 2。数字复述原文,未外部验证。

学习目标:学完本章你应能——复述四个 headline 数字;指出每个对比对象使用的预训练数据;完成 TPUv3-core-days 的倍数换算并评价其含义。

基准ViT-H/14 (JFT)ViT-L/16 (JFT)ViT-L/16 (I21k)BiT-L (ResNet152x4)Noisy Student (EffNet-L2)
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-10094.55±0.0493.90±0.0593.25±0.0593.51±0.08
VTAB (19 tasks)77.63±0.2376.28±0.4672.72±0.2176.29±1.70
TPUv3-core-days2.5k0.68k0.23k9.9k12.3k

* 为 Touvron et al. (2020) 报告的改进值。精度为三次微调运行均值±标准差。

手算验证:算力优势有多大?同在 JFT-300M 预训练:ViT-L/16 用 0.68k core-days 全面超过 BiT-L 的 9.9k core-days——9.9/0.68 ≈ 14.6 倍算力差;对 Noisy Student 的 12.3k 则约 18 倍。ViT-H/14 的 2.5k 也仅为对手的 1/4~1/5。对账提醒:core-days 是预训练成本,未含下游微调与搜索开销;且 Google 自家的 JFT 数据集只有自己能用——这一非对称将在批判性阅读章展开。

常见误读:①拿 I21k 版本(85.30%)去否定"超越 SOTA"——headline 由 JFT 版本创造,两列数据来源不同须分开评价;②忽视 ReaL 标签列——它修正了原始 ImageNet 验证集的标注错误,是更干净的比较;③认为 VTAB 77.63% 很低——VTAB 每任务只用 1000 训练样本,考的是迁移表示质量,不能与全量微调分数直比。

一句话蒸馏:四个基准全部第一、预训练算力只有对手的十分之一——这张表的杀伤力不在单个数字而在"精度-算力"双坐标同时占优。

第5章 规模曲线:全文的灵魂实验(对应原文 §4.2–4.4,Figure 3–5,Table 5)

来源:论文 §4.2(第一组实验)、§4.3(第二组实验)、§4.4(缩放研究);Table 5 数字。

学习目标:学完本章你应能——分别描述两组规模实验的设计与结论;解释为什么 ImageNet 上 ViT-Large 不及 Base;引用 Table 5 关键行佐证"数据规模阈值"的存在。

第一组实验(ImageNet 1.3M → ImageNet-21k 14M → JFT-303M,逐项调优正则):ImageNet 上 ViT-Large 不及 ViT-Base(即使加了中等正则);I21k 上两者相当;只有 JFT-300M 才让大模型兑现全部收益。对照组 BiT-CNN 在 ImageNet 上占优、数据变大后被反超。

第二组实验(JFT 随机子集 9M/30M/90M/300M,统一超参不加额外正则、few-shot 线探针):相同算力预算下小数据上 ViT 比 ResNet 过拟合更重——如 ViT-B/32 虽略快于 R50,在 9M 子集上差很多、到 90M 以上反超;R152x2 与 ViT-L/16 同样规律。这组实验把"归纳偏置 vs 数据"从口号变成了剂量-响应曲线。

预训练集模型ImageNet Top-1CIFAR-100
ImageNetViT-B/1677.9187.13
ImageNetViT-L/1676.53(< Base!)86.35
ImageNet-21kViT-L/1685.1593.44
JFT-300MViT-L/1687.1294.04
JFT-300MViT-H/1488.0494.55

缩放研究(§4.4,7 ResNet + 6 ViT + 5 Hybrid):①同性能下 ViT 平均只需 ResNet 约 2–4 倍更少的算力(5 个基准平均);②Hybrid 在小算力预算下略优、大模型下差距消失;③ViT 在所试范围内未见饱和【实验支持至边界,"继续放大还会涨"属外推主张】。

工程账单:"去归纳偏置"缓解了性能天花板压力,代价是把全部压力转移到数据获取与预训练算力上——这条债后来催生了 MAE/DINO 等自监督方法(用免费的自监督信号替代有监督标签)以及后续所有 ViT 变体的效率优化。Hybrid 结论则宣判了"CNN 预处理器"路线的缓刑:短期有用、长期可弃。

常见误读:①"ImageNet 训不出大 ViT 是调参不行"——第一组实验已尽力调了三项正则,结论稳健;②"Hybrid 更好"——只在低算力区成立,作者明确指出大模型下差距消失;③把 2–4 倍算力优势当成普适常数——它是"所测模型族+5 个基准"范围内的平均,不是定理。

一句话蒸馏:两组曲线共同给出一条阈值定律——预训练数据过了千万级,纯注意力的斜率开始碾压卷积。

第6章 模型内部检查与自监督初步(对应原文 §4.7、附录 D.4/B.1.2)

来源:论文 §4.7(模型检查)、附录 D.4(位置编码消融 Table 8)、附录 B.1.2(masked patch prediction)。

学习目标:学完本章你应能——引用 Table 8 数字说明位置编码结论;描述位置编码自发学到 2D 拓扑的证据;复述 masked patch prediction 的设置与三个数字。

一句话蒸馏:网络会自己学会"图是二维的",所以人不必教——这是全文最优雅的一个副产物发现。

三、批判性阅读:如何不被这篇论文带节奏

3.1 每个 benchmark 到底测什么

ImageNet:测细粒度千类分类,验证集标签噪声问题由 ReaL 列部分修复——同时报告两套标签是加分项。CIFAR/Pets/Flowers:小数据迁移能力,考的是"预训练表示的可微调性"而非模型容量。VTAB:19 任务、每任务仅 1000 样本,测分布外泛化(含 Structured 组的合成任务如 Clevr/dSprites);名字里的"视觉"有误导性——其中相当比例任务考察的是非自然图像的结构化推理。ObjectNet(附录 D.9,Top-1 61.7%/Top-5 82.1%):刻意非 canonical 视角的现实鲁棒性测试,分数远低于 ImageNet 属预期。

3.2 比较公平吗:三处不对称

3.3 第二坐标轴:成本与部署

预训练 core-days 上 ViT 占优(第六章已算);但 推理侧注意力对序列长度二次增长,高分辨率部署成本陡增(D.5 实测显示理论二次律只在最大模型最大分辨率显现,且大 ViT 内存效率优于 ResNet——单核可容纳更大 batch)。另一个常被忽略的成本:微调超参网格(Table 4 的步数×学习率网格搜索)虽小但存在。只看精度表会得出"ViT 全面便宜"的过度简化结论。

3.4 论文没有告诉你什么

以上引用数字仅复述原文,未做外部验证。

四、综合考核(毕业关)

4.1 分级自测题

4.2 数字总对账

独立完成后展开:(a) 位置编码有无的 5-shot 差距是多少?1D 与 2D 相差多少?(b) 同在 JFT 上 ViT-L/16 预训练算力是 BiT-L 的几分之几?(c) Table 5 中 ImageNet 预训练下 ViT-L/16 与 ViT-B/16 的 ImageNet 分差方向与幅度?(d) 自监督 79.9% 距监督预训练差几个百分点?

显示答案(a) 0.64206−0.61382≈0.0282;1D−2D≈0.00205(几乎无差);(b) 0.68k/9.9k≈1/14.6;(c) 低 1.38 个百分点(77.91 vs 76.53)——Large 反而更差的铁证;(d) 4 个百分点(监督版 ViT-B/16 在 ImageNet 微调约 84%,原文表述为落后 4%)。

4.3 设计决策答辩(四连问)

4.4 证据审计(回看 1.3 预评)

展开审计结果 贡献1(SOTA):维持强评级——四基准×三预训练源、三次运行报 std、ReaL 修正标签,纪律完整;注记 headline 依赖私有 JFT 数据。
贡献2(2–4 倍算力优势):维持强评级——18 模型系统缩放研究,是全文证据最厚的一条。
贡献3(规模胜过偏置):维持消融级——两组实验互补(跨数据集+同源子集),因果链清晰;扣分点是 JFT 内部子集实验未覆盖 300M 以上的"偏置彻底无用"区间,结论只能说到阈值以上"更有利"。
贡献4(1D 位置编码足够):上调半档——消融+可视化+机制解释三位一体,接近满级证据;仅缺高分辨率密集预测场景的外推验证。
贡献5(未见饱和):维持"只是主张"——所测范围内属实的外推,无独立证据。
总评:【解读者观点】这是一篇用实验矩阵说话的论文:几乎所有大话都有对应的表格撑腰,且主动披露了对自己不利的细节(Large 在 ImageNet 失利、GAP 失败的真因、Adam 对基线也更好);最大的结构性软肋是私有数据带来的不可复现性与变量混杂。