M6-001M6: Multimodal & Generative ModelsVision Encoders (ViT / ConvNeXt)Easy
Mastery:

Vision Encoders (ViT / ConvNeXt): 解释 ViT 的 patch embedding 与 token 数计算。

📐 Mathematical Definition
N=HP×WP;xi=Wp⋅flatten(patchi)+bN=\frac{H}{P}\times\frac{W}{P};\qquad x_i=W_p\cdot\mathrm{flatten}(\text{patch}_i)+b
⚡ Executive Summary
Core Concept: 把图像切成 P×P 的 patch,线性投影为 token;token 数 = (H/P)×(W/P),故随分辨率平方增长。

📌 Key Takeaways

  • •
    patch 大小 P 决定 token 数(P 越小 token 越多、越细)
  • •
    token 数 = HW/P²,随分辨率平方增长
  • •
    patch embedding 可用线性投影或卷积实现

📐 Mathematical Derivations

数学机理:<strong>patch embedding</strong>——把 H×W×3 的图像切成 <strong>P×P</strong> 的非重叠 patch(共 N=(H/P)×(W/P) 个),每个 patch 展平为 P²·3 维向量,经<strong>线性投影</strong> W_p 映射到 d 维(模型的隐维度),得到 N 个 token。<strong>token 数</strong>——N = (H/P)×(W/P) = HW/P²,<strong>随分辨率平方增长</strong>:224×224、P=16 → N=196;448×448 → N=784(4 倍);1024×1024 → N=4096(约 21 倍)。这直接决定注意力的成本(O(N²))与后续 LLM 的上下文占用。<strong>patch 大小 P 的权衡</strong>——(a) <strong>P 小</strong>(如 8)——token 更多(更细的粒度、更强的细节能力),但成本 ∝1/P² 增长;(b) <strong>P 大</strong>(如 32)——token 少(成本低),但细节丢失;(c) 常用 P=14 或 16(与预训练配置匹配)。<strong>实现</strong>——patch embedding 通常用 <strong>stride=P 的卷积</strong>实现(等价于切分 + 线性投影,但更高效);此外常加一个<strong>可学习的 [CLS] token</strong>(用于分类)与<strong>位置编码</strong>(因为注意力对位置无先验)。<strong>注意</strong>——ViT 的 patch 划分是<strong>固定网格</strong>的,故对'非方形图像'或'任意分辨率'需特殊处理(见动态分辨率题);且 patch 边界可能切断物体(对细粒度任务不利)。<strong>与 CNN 的对比</strong>——CNN 用滑动窗口(重叠、局部),ViT 用非重叠 patch(全局注意力);前者保留更多空间连续性,后者 token 化更彻底(便于与文本 token 统一处理)。

🏭 Production Trade-offs

深度剖析与工程权衡:① <strong>'token 数 ∝ HW/P²'是所有成本分析的起点</strong>——它决定了注意力的 O(N²) 成本、LLM 的上下文占用、以及 KV cache 的规模;故'图像分辨率的成本是平方级的'。② <strong>'P=14 vs 16'的实践</strong>——CLIP-ViT-L/14 用 P=14(224/14=16,N=256);SigLIP 常用 P=16。P 与预训练一致很重要(否则需重新适配)。③ <strong>'[CLS] token'的用途</strong>——在分类任务中作为全局表示;在 VLM 中通常<strong>不用</strong>(因为要保留所有 patch token 供 LLM 使用),但保留位置以兼容预训练。④ <strong>'patch 切断物体'的问题</strong>——非重叠网格可能把物体切成两半(对细粒度识别、OCR 不利);故有'重叠 patch'、'可变 patch'、以及动态分辨率(按原生分辨率切分)的改进。⑤ <strong>'与 LLM 的 token 对齐'</strong>——ViT 的 patch token 与文本 token 都是 d 维向量,故可拼接后送入 LLM(这是 VLM 的基础);但视觉 token 数通常远多于文本(一张 448² 图 = 784 token),故需<strong>token 压缩</strong>(见连接器架构与视觉 token 压缩题)。⑥ <strong>面试要点</strong>——被问'ViT 的 token 数怎么算',应给出'<strong>N=HW/P²</strong>'并指出'<strong>成本随分辨率平方增长</strong>';能说明'patch 非重叠会切断物体'与'视觉 token 远多于文本'是深度理解的标志。
⚠️ Common Interview Pitfalls
  • ✕
    忽略 token 数随分辨率平方增长
  • ✕
    patch 大小与预训练配置不一致
🎯 Interviewer Follow-ups
  • ?
    P 从 16 降到 8 有什么影响?
  • ?
    ViT 为什么需要位置编码?
📚

Associated Knowledge Base Guides & Mindmaps

Explore the comprehensive technical article, exam cards, and global architecture tree.

← PreviousM5-136: PEFT (LoRA / QLoRA / Prefix Tuning): 解释 LoRA 的变体(DoRA / LoRA+ / rsLoRA)与秩的选择。📋Back to BankNext →M6-002: Vision Encoders (ViT / ConvNeXt): 比较 CNN 与 ViT 的归纳偏置与数据需求。