Vince Jiang

CSCI3230 / 课程伴读 · 本站更新

CSCI3230 L08 · Part 2/4 Vision Transformers

课程:CSCI3230 (ESTR3108) Fundamentals of Artificial Intelligence · 2025T1 本讲:L08,第 2 部分 / 共 4 部分 · 原件 L08-Transformers-2025T1.pdf(本地课件) p.30–42 定位:把图像切为patch,再使用序列模块。 前后:上一份 Basics · 下一份 Variants of Transformers

本文依据 2025T1 旧版材料重写,供基础学习与预习;不是 2026T1 新增要求或考试范围。补充数值例均另行标注。

图像怎样变成token

空间注意力的问题(p.30–32)

前篇处理一串词向量,现在把输入换成图片。网络接受的是一串固定宽度的向量,图片却有高、宽、颜色通道,所以真正的第一步不是“直接套Transformer”,而是先决定每个token代表哪部分图像。

p.30分隔页,p.31说明视觉中也可根据query关注相关区域,p.32提出二维RGB如何变序列。最直接的ViT做法是切成不重叠的小方块,每块叫一个patch。先用patch代表局部内容,再让各块互相读取信息。

ViT结构与展开patch(p.33–35)【新】

p.33结构图依次是切块、展平、线性投影、加位置、Transformer encoder、分类头。额外class token不是图中切出的某个块;它是一条可学习的初始向量,经过多层读取后用来汇聚分类信息。

先做小例(补充自取):一张4×4灰度图,按2×2切成四块。每块4个数,按固定顺序排成长度4向量。假设左上块两行为 (1,2),(3,4)(1,2),(3,4),展平为 (1,2,3,4)(1,2,3,4)。使用一个 4×24\times2 投影矩阵,其四行为 (1,0),(0,1),(1,0),(0,1)(1,0),(0,1),(1,0),(0,1),偏置0,输出变为 (1+3,2+4)=(4,6)(1+3,2+4)=(4,6)。于是每块从4维变2维,但patch个数仍是4。若加class token,序列长度才从4变5。

一般图像高 HH、宽 WW、通道 CC,patch边长 PP,假设高宽都整除 PP:

n=HPWP,dpatch=P2C. n=\frac{H}{P}\frac{W}{P},\qquad d_{\rm patch}=P^2C.

nn 回答有多少块,dpatchd_{\rm patch} 回答一块含多少原始数。模型想要宽度 DD 时,每块用同一个 P2C×DP^2C\times D 矩阵投影。DD 是设计选择,不必等于原始块维度。

p.34–35实际例为96×96 RGB、patch32:横纵各3块,总共9块;每块 32⋅32⋅3=307232\cdot32\cdot3=3072 维,投影到768维。不要把9、3072、768混成同一种“维度”。

p.35的原参数数目也能独立复算:3072×768=2,359,2963072\times768=2,359,296,约2.36M权重;若另计768个输出偏置则为2,360,064。所有9块共享这一映射,不能再乘9计算模型参数。原页写 f:RH×W→RDf:\mathbb R^{H\times W}\to\mathbb R^D 是省略通道的图像块示意记法;RGB的实际输入应包含3个通道。

p.33右侧encoder图采用Norm→多头注意力→残差相加→Norm→MLP→残差相加,重复L次,与Part 1图中先子层再Add&Norm的顺序不同。两张图是不同归一化放置方式,不应在实现时不加说明地混合。

与普通线性层及卷积的关系(p.36–38)

p.36–37把每块看成小图,并在每块上用同一线性映射。这个“每个位置都用同一套权重”的描述,正好与卷积的共享方式吻合。

如果卷积kernel大小为 PP、stride也为 PP、padding0,输入通道 CC、输出通道 DD,一个核每次完整读一块 P×P×CP\times P\times C,输出一个标量;DD 个核输出该块的 DD 维向量。移动步长等于块宽,恰好不重叠。

沿前节4×4灰度例,kernel2、stride2、输出通道2,卷积输出是2×2×2。把前两个空间轴排成序列,就得到4×2的token矩阵,与同权重的逐patch线性投影完全相同。权重排布方式不同,计算本质相同。

p.38称卷积能形成更好patch embedding,要限定:仅把同一个不重叠线性投影换成等价卷积实现,不会自动提升表示能力。改成重叠核或多层非线性卷积才真正改变结构。

两道课堂选择题(p.39–40)

题面(L08-Transformers-2025T1.pdf · Quiz · p.39)

p.39 For an input RGB image of size 224×224 with patch size of 16×16. The hidden size of Transformer layer is 768. How should we configure the linear projection layer for patch embedding?

Q1: Use linear layers. Which of the following statement is NOT correct? A The number of tokens is 196 B The input channel of the linear layer is 256 C The output channel of the linear layer is 768

题面(L08-Transformers-2025T1.pdf · Quiz · p.40)

p.40 For an input RGB image of size 224×224 with patch size of 16×16. The hidden size of Transformer layer is 768. How should we configure the linear projection layer for patch embedding?

Q2: Use convolution layers. No overlapping among patches. Which of the following statement is NOT correct? A The number of tokens is 196 B The input channel of the convolution layer is 3 C The kernel size of the convolution layer is 16 D The stride of the convolution layer is 1

224×224 RGB,patch16,模型宽768。14×14=196块,每块16×16×3=768维,线性层768→768。因此p.39 B“输入256”错,256只算空间没算RGB。p.40不重叠卷积输入通道3、kernel16、stride16、输出通道768;D“stride1”错。这里196按patch计,不含额外class token。

补充 · 图像边长翻倍,注意力表为什么可能变成十六倍(通识讲解;演示数据不属于原题)。

固定正方形 patch 的边长,图像高宽各翻倍,patch 行数和列数各翻倍,因此 token 数变成原来的4倍。全局注意力让每个 query 与每个 key 配对,表格大小随 token 数平方增长,于是变成约16倍。演示 4×4 个 patch 原有16个 token、256个配对,变成8×8后是64个 token、4096个配对。

这个估算忽略额外分类 token、固定宽度以外的变化,也不是整网真实延迟一定乘16的实测结论。FFN 对 token 数主要线性增长,输入投影和实现效率又各有成本。做高分辨率任务时要问瓶颈在哪一部分,不能把“patch投影参数没变”误当成总计算与内存没变。

补充:patch变小,会同时改变两种不同的成本

自编32×32 RGB图,patch边长8,得到 (32/8)2=16(32/8)^2=16 个patch;每块展平为 8×8×3=1928\times8\times3=192 维,投影到64维。共享投影矩阵有 192×64=12288192\times64=12288 个权重,若有偏置再加64。不是每块各自训练一份矩阵,否则会把共享投影误算成16倍参数。

加入一个class token后,位置数17,每头注意力表有 172=28917^2=289 个分数。改成4×4 patch后,每块48维、投影权重3072个,patch数变64,含class token为65,每头分数数变 652=422565^2=4225。patch投影的参数反而减少,注意力表却显著增大。这正是参数量与序列计算成本不能混算的实例。

这里假设图像尺寸整除patch尺寸、无重叠,并固定投影宽度。若不整除,就要规定裁剪或padding;位置嵌入的数量也要与实际token数一致。缩小patch提供更细的空间单位,同时会增加位置交互成本,不能只看到“每块更小”便断言整个模型更省。

空间位置与规模(p.41–42)

四块内容排成一串后,网络仍需要知道它们原本是左上、右上、左下、右下。给每块加位置向量,使相同内容出现在不同地方时仍可区分;单纯切块编号而不把位置信息输入模型是不够的。

p.41位置相似图选右上、中心、左下查询位置,亮区跟着查询位置变化。它展示学得位置表示含空间结构,不证明所有模型都严格遵循“距离越远相似度越小”。

p.42给规模与性能关系:在所示实验中,较大模型、更多数据和计算可以改善性能。这是经验结果,需要训练设置支持,不能推出“参数翻倍必定准确率翻倍”。

p.42把大规模预训练模型称foundation model。原图左/中分别为ImageNet全量微调错误率与10-shot错误率,横轴Compute(TPUv3 core days);点大小区分30M、300M、1B、3B数据规模,颜色标示S/28、S/32、S/16、Ti/16、S/16+、B/32、B/28、B/16、L/16、g/14、G/14等配置。两条图中拟合式分别是 E=0.09+0.26(C+0.01)−0.35E=0.09+0.26(C+0.01)^{-0.35} 与 E=0.12+0.63(C+0.52)−0.32E=0.12+0.63(C+0.52)^{-0.32};CC在此表示计算预算而非颜色通道。右侧小图另以Model Size(Gflops)和Dataset Size(M)为横轴。拟合式里的E使用比例尺度,图轴以百分数显示;不要将0.09误读为0.09%。这些拟合描述本图实验,不是普适定律。

补充参数影响:若图像高宽不变,把patch边长减半,横纵块数各翻倍,token数变4倍;标准全局attention的配对表从 n2n^2 变为 16n216n^2。小patch保留更细空间信息,却显著增加计算。

小检查:图片大小不变,只把模型宽度D翻倍,patch数也翻倍吗?

参考答案

不会。patch数由H、W、P决定;D改变每个token携带的特征数,以及投影和后续层的参数/计算。

本讲核心考点

  • patch数量、展平维度、模型宽度分别算(p.34–40,C 级:课件两道quiz直接练习)。
  • 不重叠patch投影可等价实现为大步长卷积(p.38,C 级)。

附录

本部分没有需要另展的推导或题目演练。

来源与证据

  • 原件:L08-Transformers-2025T1.pdf(本地课件),p.30–42;均为当前 PDF 页号。
  • 本次重写核对本篇所列讲义页码;旧版作业/试题题面如保留,属于历史练习,不代表 2026T1 考核要求。未以未公开试题推断考试内容。
  • 往年卷仅证明相应年份考过;2024 卷及 2025 节选未公开的选择题不作推断。