核心要点

  • Patch + 线性投影(ViT 式):把图像切成不重叠 patch,每个 patch 拉平做线性投影得到一个连续向量 token,加位置编码后送入 Transformer

  • 离散化(VQ-VAE/VQGAN):编码器出特征后在码本中查最近邻,用码本索引作离散 token,使图像像文本一样进自回归/统一序列模型

  • 连续 token 多用于理解(对齐 LLM 输入),离散 token 多用于统一生成(图文同序列建模)

  • 关键超参:patch 大小/码本大小决定序列长度与粒度,越细 token 越多、算力越大

标准回答

方式一:Patch 线性投影(ViT 路线,连续 token)

把图像切成固定大小、互不重叠的小块(patch,如 16×16),每个 patch 展平后过一个线性层投影成定长向量,就是一个「图像 token」。再加上位置编码,整张图变成一串 token 送入 Transformer。这类 token 是连续向量,常见于视觉理解和多模态对齐(如把视觉 token 经投影层接入 LLM 输入空间)。

方式二:离散码本量化(VQ-VAE / VQGAN,离散 token)

先用 CNN/Transformer 编码器把图像编码成特征图,再做向量量化:每个位置的特征在一个可学习码本里找最近邻,用码本索引代替它。于是图像被表示成一串离散整数 token,和文本 token 同构,可以直接喂给自回归模型或统一的图文序列模型来生成。

怎么选

理解/对齐任务偏好连续 patch token,信息保留多、易与语言模型拼接;统一生成(一个模型同时处理图文)偏好离散 token,便于用同一套 next-token 目标建模。patch 越小或码本分辨率越高,token 越多、细节越好,但序列变长、算力上升,需要权衡。

常见误区

⚠️ 常见踩坑

图像 token 不一定是离散整数:ViT 的 patch token 是连续向量;只有 VQ-VAE/VQGAN 这类量化方法才得到离散码本索引。两者用途不同,别混为一谈。

追问

追问 1patch 大小如何影响模型?

patch 越小,token 数量越多,能保留更细的局部细节、利于密集预测,但序列变长、注意力计算量按平方上升,显存和延迟都增加。patch 越大则 token 少、算力省,但细粒度信息损失更多。需在精度与成本间权衡。

追问 2VQ-VAE 量化为什么需要特殊处理梯度?

「查最近邻取码本索引」这步是不可导的(argmin),无法直接反向传播。常用 straight-through estimator:前向用量化结果,反向时把梯度直接拷贝给编码器输出;同时加码本损失和承诺损失(commitment loss)来对齐编码输出与码本向量,使训练可行。

追问 3把视觉 token 接入 LLM 通常怎么做?

常见做法是用视觉编码器(如 ViT/CLIP)得到 patch 特征,再经一个投影层或重采样模块(如 MLP、Q-Former、Perceiver Resampler)映射/压缩到 LLM 的词嵌入空间,作为「软提示」token 与文本 token 拼接输入。这样无需改动 LLM 词表即可让其处理图像。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。