M6-001M6: Multimodal & Generative ModelsVision Encoders (ViT / ConvNeXt)Easy
Mastery:
Vision Encoders (ViT / ConvNeXt): 解释 ViT 的 patch embedding 与 token 数计算。
📐 Mathematical Definition
⚡ 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.