第十三章 Vision Transformer
Transformer 不只吃文字。2021 年的 ViT 把一张图切成格子,每格当成一个 token,后面的积木和 GPT 很像。论文标题就是:一张图等于 16×16 个词。书上用 MNIST 手写数字把这条流水线搭一遍。
- 一图先切成 patch,每块投影成一个向量。
- 二前面再塞一个 CLS token,专门用来做分类。
- 三每个补丁加上位置编码,否则打乱图还是同一袋块。
- 四编码器里的注意力没有因果掩码:分类要看全图。
书 §13 · 图 13.1–13.8 · p.219–232
13.2 补丁嵌入
是什么。卷积网用滤镜扫图。ViT 更粗暴:把图切成固定大小的方块,每块展平,乘一个矩阵,变成和文本 token 一样的向量。图 13.2–13.5。
书上的例子:32×32 的图,patch 8×8,得到 16 个补丁。图 13.7 左:Conv2d 完成「切块 + 投影」。
书 §13.2 · 图 13.2–13.5、13.7 · p.220–224
拖补丁边长
示意一张 8×8 的小图。边长 2 → 16 个 token;边长 8 → 1 个 token。
真实 ViT 常用 16×16 的补丁切 224 的图,得到 196 个图像 token。这里缩小只为能点。
接下节。光有一袋补丁还不够。要标明谁在左上角,还要一个「代表全图」的座位。
13.3 CLS 和位置编码
是什么。在补丁序列最前面加一个可学习的分类 token(CLS)。经过编码器后,用 CLS 的输出接分类头。每个补丁还要加位置编码,告诉模型这块来自图的哪一格。图 13.6、13.7 右。
为什么要位置。注意力本身不认顺序。没有位置,把补丁打乱,模型看见的是同一袋向量,数字 6 和 9 更分不清。
书 §13.3 · 图 13.6–13.7 · p.222–224
加上 CLS 和编号
位置可以是可学习的查找表,和 GPT-2 的位置嵌入是同一类东西。
接下节。这些 token 进 Transformer 编码器。和第二章不同:这里允许互相看见。
13.4–13.7 看全图的注意力
图 13.8:Q、K、V 仍在。但做分类时没有「不许看未来」——未来这个词对图没有意义。每个补丁可以看其他所有补丁,CLS 也可以看全图,再汇总成类别。
后面的节(编码器、训练循环、MNIST 评估)是把第二章已经见过的积木接到图像上。损失仍是分类交叉熵,只不过类别是 0–9。
书 §13.4–13.11 · 图 13.8 · p.224–232
点一个补丁,看它能看谁
分类任务:全部高亮。对比:若误加因果掩码,只能看编号更小的块。
点格子选提问者。ViT 分类应当看全图。
下一章。图像编码器和文本编码器对坐,把图和字拉到同一空间:CLIP。
合上这一章
- 切补丁。图变成 token 序列。
- CLS + 位置。分类座位,以及「这块从哪来」。
- 无因果掩码。分类要看全图。
章末自测
讲完了。下面几题核对本讲刚说过的概念。点选立刻看对错;做错也不会锁下一章。