土法炼钢兴趣小组的算法知识备份

【Transformer 与注意力机制】45|ViT:patch size 和分辨率如何锁死序列长度,归纳偏置去哪了

文章导航

分类入口
transformer
标签入口
#transformer#vit#vision-transformer#patch-embedding#swin-transformer#deit#inductive-bias

Transformer系列导航

按系列顺序继续阅读,而不是停在单篇。

系列目录上一篇:【Transformer 与注意力机制】44|MoE:稀疏激活的万亿模型路径下一篇:【Transformer 与注意力机制】46|多模态融合:CLIP、Flamingo、LLaVA、SAM

目录

“把图像切成 patch,当 token 喂给 Transformer”这句话说起来只有一行,但真正跑过视觉训练或者部署过 ViT 的人都知道,这一行话背后至少压着三个决定:patch size 定多大、输入分辨率定多大、以及要不要为了更高分辨率去改 attention 的计算方式。这三个决定一旦下了,序列长度 \(N\)、attention 的显存和算力也就被同时钉死——不是”以后再调”,而是从模型结构那一刻就已经确定。

这也是为什么”ViT 把每个像素当 token”是一句需要立刻纠正的误解:如果真的逐像素处理,一张 224×224 的图会产生 50176 个 token,而 self-attention 的算力和显存随 token 数的平方增长,这在 2020 年的硬件上直接跑不动。ViT(Vision Transformer,Dosovitskiy et al., ICLR 2021)的关键设计不是”用 attention 处理图像”这个想法本身——这个想法在它之前已经有人尝试过——而是找到了一种把图像压缩成可接受序列长度、同时保留足够信息的切分方式:patch。

本篇要讲清楚四件事,都是”做过视觉训练/部署才会撞到”的具体代价,不是概念性的科普:

  1. patch size 和分辨率如何联合决定序列长度,进而锁死 attention 的算力和显存,这条约束怎么在 Swin 的窗口设计里被直接写进复杂度公式;
  2. CNN 的归纳偏置具体指什么,为什么它让 CNN 在小数据上更稳,ViT 论文自己的 scaling 实验怎么证明这一点;
  3. DeiT 补的到底是”数据”还是”训练配方”——它没有让 ViT 用更少数据学到和大数据一样多的东西,而是用数据增强和蒸馏把可用信号的密度做高了;
  4. CLS token、GAP、位置编码在图像分辨率变化时的具体失效模式,以及 Swin 用层级+局部注意力换回了什么、又付出了什么代价。

不展开完整的计算机视觉发展史,也不展开 CLIP、Flamingo 这类多模态模型——那是下一篇 46|多模态融合 的内容,本篇只在需要衔接的地方点一下。


一、patch size 和分辨率锁死了什么

1.1 patch embedding:一次线性投影,不是”看图识字”

ViT 的做法是把图像 \(x \in \mathbb{R}^{H \times W \times C}\) 切成 \(P \times P\) 的不重叠小块,每块展平成 \(P^2 C\) 维向量,再用一个可学习的线性投影 \(E \in \mathbb{R}^{(P^2 C) \times D}\) 把它映射到 \(D\) 维,这就是 patch embedding(Dosovitskiy et al., ICLR 2021, §3.1, Eq. 1)。切出来的 patch 数量是:

\[ N = \frac{HW}{P^2} \]

这个 \(N\) 就是 Transformer 看到的有效序列长度(再加 1 个 CLS token)。它不是一个可以事后调整的超参数,而是由分辨率 \(H, W\) 和 patch size \(P\) 联合决定的常数:分辨率固定后,\(P\) 越小,\(N\) 越大;\(P\) 固定后,分辨率越高,\(N\) 也越大。几个常见组合算出来是:

分辨率 \(H{=}W\) patch size \(P\) token 数 \(N\) 说明
224 32 49 ViT-B/32、ViT-L/32
224 16 196 ViT-B/16、ViT-L/16,原论文主力配置
224 14 256 ViT-H/14,原论文最大模型
384 16 576 常见的”高分辨率微调”配置(Touvron et al. 2019 的做法,ViT §4.1 采用)
1024 16 4096 检测/分割等密集预测任务的典型输入规模

1.2 self-attention 是二次的,\(N\) 翻倍代价翻两次

标准 self-attention 要算出一个 \(N \times N\) 的分数矩阵,再对每一行做 softmax 加权。Swin Transformer 论文(Liu et al., ICCV 2021,§3.2)把这件事写成了可以直接核对的复杂度公式,用 \(h \times w\) 表示 patch 网格(即 \(N = hw\)),\(C\) 表示通道维度:

\[ \Omega(\mathrm{MSA}) = 4hwC^2 + 2(hw)^2 C \]

第二项 \(2(hw)^2 C\) 是二次项,随 \(N=hw\) 的平方增长。这意味着:分辨率不变、patch size 减半,\(N\) 变成 4 倍,attention 的算力和显存变成 16 倍;patch size 不变、分辨率翻倍,同样是 \(N\) 变 4 倍、代价变 16 倍。这不是”经验上会变慢”,是公式里明摆着的平方关系。

把这条关系摆成图更直观。下图用三条曲线对比”patch=16 的 full attention”“patch=32 的 full attention”“窗口大小 \(M=7\) 的 window attention(patch=16 网格)”,全部以 patch16、224px 时的代价记为 1,公式直接取自上面的 \(\Omega(\mathrm{MSA})\) 二次项和下一节要展开的 \(\Omega(\mathrm{W\text{-}MSA})\)

patch size 和分辨率如何联合决定 attention 的相对计算成本,三条曲线分别是 patch16 全局注意力、patch32 全局注意力、窗口注意力

从 224px 涨到 1024px(边长翻 4.57 倍,面积翻 20.9 倍),patch16 的 full attention 代价涨到 437 倍;换成 patch32,只涨到 27 倍——patch size 翻倍直接把二次项的底数砍掉一半,代价按四次方关系下降;换成窗口注意力(下一节展开),只涨到 5.2 倍,因为窗口内部的二次项被压在固定的 \(M^2\) 里,整体退化成对 \(N\) 的线性增长。这张图的三条曲线本质上就是”要不要接受更粗的 patch”和”要不要放弃全局 attention”这两个工程选择在数字上的样子。

1.3 显存墙:一个可以自己算的例子

\(N \times N\) 的分数矩阵不是只算一次就丢掉——训练时反向传播需要保留每一层、每个 head 的 attention 权重(或至少保留足够重算它们的中间量),这部分显存随层数、head 数线性增长,随 \(N\) 平方增长。取一个具体配置来算:ViT-B 有 12 层、12 个 head。

这个数字是按公式直接算出来的,不是某次训练的实测值,但它说明的问题是实的:patch size 和分辨率一旦选定,你就已经预定了这台机器能不能跑得动。检测、分割、医学影像、遥感这些需要高分辨率输入的任务,从一开始就撞上这条约束——这正是 Swin 要解决的问题,也是第七节开放问题的起点。想复算这条曲线和这两个显存数字,可以直接跑本文自带的 images/gen_attention_cost.py,公式和参数都在脚本里。


二、CNN 归纳偏置 vs ViT 的数据饥渴

2.1 CNN 的三条先验,具体指什么

CNN 不是”恰好也能处理图像”,它的结构里预先写进了三条关于图像的假设:

这三条不是从训练数据里学出来的统计规律,是架构预先设定的约束。ViT 论文摘要里的原话是:CNN 的这类”归纳偏置,比如平移等变性和局部性”(inductive biases such as translation equivariance and locality),ViT 是缺失的(Dosovitskiy et al., ICLR 2021,Abstract)。ViT 唯一手动注入的图像结构先验,只有两处:patch 切分本身,以及微调到更高分辨率时对位置编码做的 2D 插值(同论文 §3.1 末尾明确指出这是”仅有的两处手动注入 2D 结构先验的地方”)——除此之外,patch 之间的关系完全交给 self-attention 从数据里学。

2.2 ViT 论文自己的证据:多大数据才够

“缺先验就要更多数据”不是一句空泛的类比,ViT 论文用两组实验直接测过这件事,用的数据集是(Dosovitskiy et al., ICLR 2021, §3.2 “Datasets”):

数据集 图像数 类别数
ImageNet(ILSVRC-2012) 130 万 1000
ImageNet-21k 1400 万 21841
JFT-300M(Google 内部数据集) 3.03 亿 18000

第一组实验(对应论文 Figure 4):在三种数据集规模上分别预训练 ViT,再微调到 ImageNet 评估。论文原话是——只在 ImageNet 规模上预训练时,ViT-Large 的表现反而不如 ViT-Base(重的正则化也没能救回来);换成 ImageNet-21k 预训练,两者表现接近;只有到了 JFT-300M 规模,更大模型的优势才真正体现出来。同一张图里,CNN 基线 BiT(Big Transfer,Kolesnikov et al. 2020)在 ImageNet 规模上超过 ViT,但换成更大的数据集,ViT 反超。

第二组实验更干净:不额外调正则化,直接在 JFT-300M 的随机子集(900 万、3000 万、9000 万,以及完整 3.03 亿)上训练,控制的是模型本身的性质而不是正则化调优的效果。结果是 ViT-B/32 在 900 万子集上明显不如同等算力的 ResNet50,但在 9000 万以上的子集上反超——论文把这个结果总结为”卷积的归纳偏置在小数据集上有用,但在大数据集上,直接从数据里学到相关模式已经足够,甚至更有利”(Dosovitskiy et al., ICLR 2021,§4.4)。这条曲线交叉点,就是”CNN 归纳偏置的价值”和”ViT 自由度的价值”互换主导地位的地方——具体在多少数据量交叉,取决于任务和模型规模,论文没有给出一个可以脱离这两个变量单独使用的通用阈值。


三、DeiT:补的是训练信号密度,不是数据量本身

3.1 DeiT 到底改了什么

DeiT(Data-efficient image Transformers,Touvron et al., ICML 2021)的目标很具体:只用 ImageNet-1k(130 万张图,不借助 JFT-300M 这类私有大数据)训练出能与 CNN 竞争的 ViT。论文原话点出了问题所在——“相比整合了更多先验(比如卷积)的模型,Transformer 需要更多数据;因此,要在同等规模的数据集上训练,我们依赖大量数据增强”(Touvron et al., ICML 2021,§3)。也就是说,DeiT 并没有让 ViT 用更少数据学到与大数据训练同样多的知识,而是用数据增强和蒸馏把 130 万张图能提供的训练信号密度做高了,这是两件不同的事。

具体的训练配方(同论文 §3、附录 Table 9)包括 Rand-Augment(Cubuk et al. 2019)、random erasing、Mixup、CutMix、stochastic depth、repeated augmentation、标签平滑(\(\epsilon=0.1\)),换用 AdamW 并调小权重衰减,同时明确排除了 dropout。论文强调几乎每一种数据增强手段单独测都有正向收益——这本身也是”ViT 数据饥渴”的一个侧面证据:一个先验充足的模型不需要靠堆数据增强来补课。

3.2 蒸馏 token:为什么必须用 CNN 当老师

DeiT 引入一个新的 distillation token,结构上和 CLS token 并列,同样参与所有层的 attention,但只在最后接一个独立的分类头,用来学习教师模型的预测。关键发现是:用 CNN 当教师比用 Transformer 当教师效果更好,论文把原因归结为”卷积的归纳偏置通过蒸馏以软的方式转移给了学生”(Touvron et al., ICML 2021,§4,引用 Abnar et al. 2020 的蒸馏迁移偏置的框架)。默认教师是 RegNetY-16GF(Radosavovic et al. 2020,8400 万参数,用同样的数据和数据增强训练,ImageNet top-1 82.9%)。

真正决定性的改动不是”多加了一个 token”,而是把经典蒸馏用的软标签(教师 softmax 输出的概率分布)换成了硬标签(教师预测的 argmax 类别)。论文 Table 3(300 epoch 训练设置下的消融)给出了对照,这里摘 DeiT-B 一行(ImageNet top-1,%):

训练方式 224 分辨率 384 分辨率微调后
不蒸馏 81.8 83.1
常规(软标签)蒸馏 81.8 83.2
硬标签蒸馏 83.0 84.0
硬标签 + 蒸馏 token(class+distillation 融合) 83.4 84.5

软标签蒸馏几乎没有带来提升,换成硬标签直接跳了一个多点——这是配方里比”加一个 token”更关键的改动。蒸馏 token 的额外收益(用两个 token 的预测做 late fusion)是在硬标签蒸馏基础上的锦上添花,不是主要来源。论文摘要给出的最终 headline 数字(用更长的训练周期而非上表的 300 epoch 设置)是:DeiT-B 参考模型(8600 万参数)在无额外数据、单机 8 GPU 训练不到 3 天的条件下达到 83.1% top-1(单 crop,无蒸馏),加上蒸馏 token 后达到 85.2%——这也是”没有超大私有数据也能训出有竞争力的 ViT”这个结论的直接出处。


四、CLS、GAP 与位置编码在图像上的失效模式

4.1 CLS token 不是必需品,只是需要不同的学习率

ViT 沿用 BERT 的做法,在 patch 序列前拼一个可学习的 CLS token,用它在最后一层的输出做分类。但 ViT 论文自己的消融实验(附录 D.3,对应正文 Figure 9)给出了一个容易被误传的结论:作者最初尝试直接对所有 patch token 做全局平均池化(GAP)接线性分类器(类似 ResNet 最后一层的做法),效果很差——但问题既不是少了 CLS token,也不是 GAP 操作本身,而是 GAP 和 CLS 两种方案需要的学习率不同(论文原话:“the difference in performance is fully explained by the requirement for a different learning-rate”)。把学习率分别调好之后,CLS 和 GAP 表现相近。这说明 CLS token 的价值不在于”必须有一个特殊 token 才能汇聚全局信息”,而是一个和 BERT 保持一致的工程选择,换成 GAP 完全可行,代价只是要重新调超参数。

4.2 位置编码在分辨率变化时会直接失效

ViT 用标准的可学习 1D 位置编码,论文说明没有观察到手工设计的 2D-aware 位置编码带来明显收益(§3.1),原因是 1D 编码在训练中自己学出了 2D 拓扑:相近的 patch 学到的位置向量更相似,同行同列的 patch 也表现出结构相似性(附录 D 的可视化分析)。

但这条编码有一个具体的失效场景:分辨率变化时,位置编码的形状对不上。第一节已经说明分辨率变化会改变 \(N\);patch size 不变、分辨率变大,token 数变多,而预训练学到的位置编码表是按训练时的 \(N\) 定长的一张查找表,形状是 \((N_{\text{train}}+1, D)\)。如果直接把预训练模型用在更高分辨率上,新的 token 数 \(N_{\text{new}} > N_{\text{train}}\),位置编码表根本没有那么多行可用。ViT 论文的解决办法是对预训练位置编码按 patch 在原图中的相对位置做2D 插值(§3.1:“we perform 2D interpolation of the pre-trained position embeddings, according to their location in the original image”),把训练时学到的坐标信息插值映射到新的网格大小上。这是论文里除了 patch 切分本身之外,唯二手动往 ViT 里注入的图像结构先验。

这条失效模式和文本里的位置编码不是同一回事:sinusoidal 或 RoPE 类的位置方案(详见 41|位置编码演进)设计目标就是让相对位置关系在训练长度之外仍然成立,具备某种程度的外推能力;ViT 的可学习 1D 位置编码则是彻头彻尾按训练分辨率定长学出来的一张表,跨分辨率必须靠插值这个后处理动作去补,不是结构上天然支持的能力。这也是”改分辨率”这件事在视觉 Transformer 里比在语言模型里更容易被忽视的一个坑:模型能跑,不代表位置信息没有被插值动作扭曲。


五、Swin:把层级和局部性焊回去

5.1 窗口注意力:用固定窗口把二次项摁住

Swin Transformer(Liu et al., ICCV 2021,ICCV 最佳论文)直接针对第一节的显存墙下手:只在固定大小 \(M \times M\)(默认 \(M=7\))的不重叠窗口内计算 self-attention,而不是让每个 token 看所有 token。复杂度公式(同论文 §3.2,Eq. 2):

\[ \Omega(\mathrm{W\text{-}MSA}) = 4hwC^2 + 2M^2 hwC \]

对比第一节的 \(\Omega(\mathrm{MSA}) = 4hwC^2 + 2(hw)^2C\),区别就在第二项:\((hw)^2\) 变成了 \(M^2 hw\)\(M\) 是固定常数(默认 7),所以窗口注意力的代价对 \(hw=N\)线性的,不再是二次的——这正是第一节图里绿色曲线只涨到 5.2 倍、而红色曲线涨到 437 倍的公式来源。

窗口注意力单独用会有一个明显缺陷:窗口之间没有任何信息交换,模型的有效感受野被锁在一个窗口大小里。Swin 的解法是shifted window:相邻两个 Transformer block 交替使用两套窗口划分,第二套划分整体偏移 \((\lfloor M/2 \rfloor, \lfloor M/2 \rfloor)\) 个 patch,让新窗口横跨上一层四个窗口的边界。两层堆叠起来,信息就能跨窗口传播,而每一层单独的计算量仍然是窗口内 \(M^2\) 规模,不产生额外的全局二次项。

5.2 层级结构:向 CNN 借的第二件东西

Swin 借回的不只是局部性,还有层级。它的初始 patch size 是 \(4 \times 4\)(比 ViT 常用的 16 明显更细),Stage 1 在 \(H/4 \times W/4\) 的 token 网格上运行。往后每进入一个新 stage,用patch merging把相邻 \(2\times2\) 的 token 拼接、投影降维,token 数变成四分之一,通道数变成两倍——四个 stage 依次把分辨率降到 \(H/4, H/8, H/16, H/32\),和 VGG、ResNet 这类经典 CNN 的特征图分辨率对齐(Liu et al., ICCV 2021,§3.1)。这条设计动机很直接:检测、分割这类密集预测任务需要多尺度特征图,ViT 原生只输出一种分辨率的 token 序列,接不上这些任务现成的 pipeline;Swin 用层级结构把这条路重新打通,因此可以直接替换掉 Faster R-CNN、Mask R-CNN 这类框架里原来的 CNN backbone。

窗口更细(4×4)却仍然可控,靠的正是上一节那条线性复杂度:如果 Swin 也用全局 attention,\(4\times4\) patch 在 224px 图上会产生 \(56\times56=3136\) 个 token,二次项会比 ViT-B/16 的 196 个 token 贵 \((3136/196)^2 \approx 256\) 倍;换成窗口注意力,这条代价被摁在了跟 \(N\) 线性同阶的量级上,细粒度和可负担的计算之间的矛盾才被解开。


六、争论:还需不需要强视觉归纳偏置

第二节到第五节合在一起,指向一个还没有定论的问题:视觉任务到底还需不需要 CNN 那种强归纳偏置,还是说只要计算和数据堆得够大,架构本身的先验强弱就不再重要?

一派证据支持”结构先验仍然重要”:Swin 用窗口和层级重新引入局部性,不仅解决了显存问题,在检测、分割等下游任务上也超过了同等规模的 ViT 和多数 CNN 基线。更极端的例子是 ConvNeXt(Liu et al., CVPR 2022)——一篇标题就叫”A ConvNet for the 2020s”的论文,作者把 ResNet 逐步”现代化”(换大卷积核、换 LayerNorm、换激活函数、模仿 Swin 的分阶段设计等)之后发现,一个完全不含 attention的纯卷积网络就能在 ImageNet 分类、COCO 检测、ADE20K 分割上追平甚至超过 Swin Transformer,最大的 ConvNeXt-XL 达到 87.8% ImageNet top-1。这篇论文的立场很鲜明:Swin 这类层级 Transformer 的成功,很大程度上来自它们重新拿回的卷积式先验(层级、局部窗口),而不是 attention 机制本身有什么本质优势。

另一派证据支持”规模盖过架构差异”:Smith et al.(Google DeepMind,arXiv:2310.16764,2023,未经 peer review 的预印本)明确指出,大量 ViT 相关论文习惯拿弱 CNN 基线(原始 ResNet)做对比,而最强的 ViT 往往用了远超对应 CNN 实验的算力预算,这种比较本身不公平。他们把 NFNet(一个和早期 ViT 论文同期发布的纯卷积架构,不含 attention)放到 JFT-4B(40 亿张标注图像)上,用最多 11 万 TPU-v4 核心小时的预训练预算重新训练,发现微调后 NFNet 能匹配同等计算预算下已发表的 ViT 表现,最强配置达到 90.4% ImageNet top-1。这个结果并不是说”CNN 比 Transformer 更好”,NFNet 本身仍然带着卷积的局部性和平移等变性;它真正说明的是——当两种架构被放到同一量级的计算和数据预算下比较时,此前很多”ViT 天然扩展性更好”的结论,可能只是比较基线选得太弱、算力给得不对等的假象。

这条争论目前没有被哪一方证伪:Swin/ConvNeXt 的证据明确指向”重新引入局部性和层级能带来实打实的下游任务收益”,Smith et al. 的证据明确指向”如果比较的双方算力和数据对齐,架构本身自带多少归纳偏置未必是决定性变量”。这两组证据并不矛盾——一个在说”给定有限预算时,先验能省下学习成本”,另一个在说”预算堆到足够大之后,双方都能达到接近的上限”——开放的问题是,视觉领域的实际预算,大多数时候更接近哪一种情形,而这个答案会随着硬件成本和数据规模的变化持续移动,不存在一次性的定论。


七、开放问题:高分辨率与细粒度

窗口注意力把 attention 对 \(N\) 的增长从二次压到线性,但没有消除”分辨率越高、token 越多、总计算量越大”这条基本关系——窗口内部的 \(M^2\) 仍然是常数,总代价 \(\Omega(\mathrm{W\text{-}MSA})\) 依然随 \(hw\) 线性增长,只是斜率比全局 attention 小得多。这在医学影像(吉像素级病理切片)、遥感(单张卫星图可以是几万乘几万像素)、高精度细粒度识别(需要区分的差异可能只存在于几十个像素范围内)这类场景里仍然是一条硬约束:窗口再小、层级再深,总计算量还是会随图像面积线性增长,只是常数因子比全局 attention 友好。

具体到细粒度任务,还有第一节没展开的另一面矛盾:patch size 越大,单个 token 携带的信息越粗,细粒度的局部差异可能在 patch 内部就被线性投影混合掉了;patch size 越小,序列越长,即便用窗口注意力压住了二次项,绝对计算量(线性项的系数)仍然会随 token 数增加。这条”patch 粗细”和”计算预算”之间的取舍,目前没有一种方案能同时把两头都占了——高效视觉 Transformer 这个方向上,窗口、层级下采样、token 剪枝、token 合并等思路都是在这条矛盾线上找不同的平衡点,而不是彻底解除约束。

这个方向上更系统的梳理,可以参考 Khan et al. 的综述”Transformers in Vision: A Survey”(ACM Computing Surveys, 54(10s), 2022),其中专门讨论了视觉 Transformer 在高分辨率、细粒度任务上的开放研究方向。这里不展开具体某个后续方案的细节——那已经超出本篇”ViT 怎么把图像变成 token”的范围,但值得记住的是:Swin 解决的是”能不能跑”的问题,“跑得多细、多快、多省”仍然是一条活跃的工程前沿。


八、关键概念回顾


九、常见误解

9.1 “ViT 把每个像素当 token”

不是。ViT 把固定大小的 patch 当 token,\(N = HW/P^2\);如果真的逐像素处理,224×224 图像会产生 50176 个 token,attention 的二次代价在当时的硬件上根本跑不动。

9.2 “ViT 证明了 CNN 的归纳偏置没用”

不成立,而且和 ViT 论文自己的实验结果相反。论文的 Figure 4 明确显示:小数据规模下 CNN 基线(BiT)优于 ViT,只有数据规模上到 JFT-300M 级别 ViT 才反超;Swin、ConvNeXt 后续也证明重新引入局部性和层级能带来实打实的下游任务收益。

9.3 “CLS token 是汇聚全局信息唯一正确的方式”

不成立。ViT 附录 D.3 的消融显示 CLS 和全局平均池化(GAP)表现相近,差异主要来自需要的学习率不同,不是 GAP 这个操作本身有缺陷。

9.4 “DeiT 证明了 ViT 不需要大数据”

不准确。DeiT 证明的是”只用 ImageNet-1k 这一个公开数据集,配合足够强的数据增强和蒸馏,也能训出有竞争力的 ViT”,前提仍然依赖大量数据增强人为提高了训练信号的密度,不是”ViT 本来就不需要那么多数据”。

9.5 “位置编码换成 Transformer 惯用方案就能直接支持任意分辨率”

不成立。ViT 的可学习位置编码按训练分辨率定长,跨分辨率必须做 2D 插值才能用;这是一个需要显式处理的工程步骤,不是自动具备的能力。


十、下一步

ViT 把”图像变成 token”这件事做成了可行方案,但真正的多模态系统还要解决另一个问题:图像 token 和文本 token 怎么在同一个空间里对齐、交互、生成。下一篇 46|多模态融合 会看 CLIP、Flamingo、LLaVA、SAM 四条不同的路线,各自怎么把视觉表示接到语言模型或任务接口上。


十一、参考文献

核心论文

  1. Dosovitskiy, A. et al. “An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale.” ICLR 2021(原 arXiv:2010.11929). patch embedding 构造、\(N=HW/P^2\)、CLS vs GAP 消融(附录 D.3)、位置编码 2D 插值(§3.1)、数据规模 scaling 实验(§3.2、§4.4,Figure 4)。
  2. Touvron, H. et al. “Training data-efficient image transformers & distillation through attention.” ICML 2021(原 arXiv:2012.12877). DeiT 训练配方、硬标签蒸馏、蒸馏 token、默认教师 RegNetY-16GF 的选择依据(§3、§4)。
  3. Liu, Z. et al. “Swin Transformer: Hierarchical Vision Transformer using Shifted Windows.” ICCV 2021(原 arXiv:2103.14030). 窗口/全局注意力复杂度公式(§3.2 Eq. 1-2)、shifted window、patch merging 与四阶段层级结构(§3.1)。

争论与近期工作

  1. Liu, Z. et al. “A ConvNet for the 2020s.” CVPR 2022(原 arXiv:2201.03545). ConvNeXt,纯卷积架构追平/超过 Swin Transformer 的证据。
  2. Smith, S. L., Brock, A., Berrada, L., De, S. “ConvNets Match Vision Transformers at Scale.” arXiv:2310.16764, 2023. 未经 peer review 的预印本;NFNet 在匹配算力预算下追平 ViT 的实验,第六节争论的核心一手证据之一。
  3. Khan, S. et al. “Transformers in Vision: A Survey.” ACM Computing Surveys, 54(10s), 2022(原 arXiv:2101.01169). 高分辨率/细粒度视觉 Transformer 开放研究方向的综述入口。

← 上一篇:44|MoE | 下一篇:46|多模态融合

同主题继续阅读

把当前热点继续串成多页阅读,而不是停在单篇消费。

2026-08-06 · transformer

【Transformer 与注意力机制】39|T5:把所有 NLP 任务塞进 Text-to-Text,代价在哪里

T5 把翻译、分类、摘要、问答都改写成统一的文本到文本任务,但这个接口不是免费的。本文拆开 span corruption 的 corruption rate 和平均 span 长度旋钮、T5 论文的原始消融数字、任务前缀如何变成模型的格式捷径、C4 清洗规则本身携带的归纳偏置,以及 Encoder-Decoder 在推理服务上的结构性代价,并给出 Text-to-Text 是否该覆盖分类与检索这条至今没有定论的争论线。

2026-08-06 · transformer

【Transformer 与注意力机制】40|三大路线之争:为什么大模型几乎都是 Decoder-only

Encoder-only、Encoder-Decoder、Decoder-only 的差异不是谁更聪明,而是谁能看见谁的信息流不变量。本文从可见性图出发,解释这个不变量如何锁死任务接口与训练管线,KV Cache、continuous batching、投机解码为什么默认假设单流 causal Decoder,以及 embedding、rerank、强制双向抽取场景为什么不该硬上生成式大模型。

2026-08-06 · transformer

【Transformer 与注意力机制】41|位置编码演进:从 Sinusoidal 到 RoPE、ALiBi 与长度外推的边界

RoPE 把位置从"加在输入上的向量"焊进了 Q·Kᵀ 本身——本文推导旋转后点积为何只依赖相对位置,核对高频通道在长距离上的绕圈失真、RoPE scaling/YaRN 到底改了哪个假设;再看 ALiBi 的线性 bias 何时帮、何时伤长程依赖;最后用 RULER、Lost in the Middle 说明"跑得动"和"用得好"是两件事,并摆出一条有文献支撑的争论:相对位置编码是否在用归纳偏置换长度。


By .