图片为什么进不了语言模型
大语言模型(LLM)的输入输出本质上都是一维的 token 序列:每个 token 是词表里的一个编号,对应一个向量。文字天然是序列,图片却是一张二维像素矩阵——数百万个数字按行列排开,既没有「词表」,也没有天然的先后顺序。要让模型看图说话,先得把图片改造成语言模型能消化的样子:一串向量。
这件事难在两个向量空间不通。文字 token 的向量是语言模型在海量文本上训练出来的,几何结构里编码着语法与语义;而像素直接展平得到的向量,与语言空间几乎没有任何对应关系。直接把像素向量塞给语言模型,等于把两种语言硬怼在一起。视觉语言模型(VLM)的全部工程设计,本质上就是在解决一个问题:图像如何变成一串语义上合格的 token。
第一步:把图像切成「视觉 token」
现代 VLM 普遍沿用 ViT(Vision Transformer,视觉 Transformer)的思路:把一张图切成许多固定大小的小方块(patch),每个 patch 展平后做一次线性投影,变成一个向量——这就是「视觉 token」。于是图片变成一串向量序列,形式上与文本 token 序列一致了。
但这一步只是形式一致。每个视觉 token 携带的是局部纹理、颜色、形状这类低层信息,离「这是一只柯基」这种语言层面的概念还隔着一层。把低层信息提炼成高层语义,是视觉编码器的职责:层层堆叠的自注意力让每个 patch「看」到别的 patch,逐步把局部信息聚合成全局理解。视觉编码器在海量图文对上预训练,输出一串已带语义的视觉向量。
第二步:模态桥——把视觉向量翻译进语言空间
即便视觉向量已有语义,它与语言模型的输入空间仍不对齐:同一个概念,两套坐标系里的位置完全不同。模态桥(投影层/适配器)就是中间的翻译官——通常是个小的多层感知机,把视觉向量变换到语言模型的输入空间,让「图里那块毛茸茸的东西」与「柯基」的向量落在相近位置。
围绕「桥修多深」有两条流派。轻投影:视觉编码器与语言模型都冻结(训练时不更新权重),只训中间的小投影层,几张卡就能做,迭代快、可频繁换底座,上限受制于两个冻结模型。深融合:视觉 token 直接进入语言模型内部参与联合训练,两种模态咬合更深、上限更高,代价是训练成本与工程复杂度大幅上升。前者胜在便宜灵活,后者胜在效果好,按算力预算与目标效果取舍。
三阶段训练配方
图文对训练没有唯一标准流程,但一个常见的三阶段配方大致是:
- 对齐预训练:用海量图文对训练模态桥,让两个向量空间初步对齐,学到「图和话大概什么关系」。
- 指令微调:用看图问答数据(「图里有几个人?」)训练模型按指令作答,把对齐能力变成可用的对话能力。
- 偏好对齐:用人类偏好数据收尾,让回答更准确、更少幻觉、更合口味,各家具体做法差异较大。
架构一图流
VLM 的特有失败
看懂架构,几类典型失败就不难解释:
- 视觉幻觉:图里没有的东西,模型却言之凿凿。根源是语言先验太强——语言模型见过太多「这类图通常配什么文字」,先验压过了图像证据;模态桥对齐不牢时,视觉信息很容易被语言惯性带偏。
- 计数与空间关系:「图里有几个苹果」「A 在 B 的哪边」仍是普遍弱项。patch 切分天然破坏了精确数数与方位结构,位置信息要靠附加的坐标编码补回,粒度不够细。
- 密集文字场景:整页文档、截图这类 OCR(光学字符识别)密集场景对分辨率极敏感——字越小需要的 patch 越多,token 数与上下文长度都吃不消。高分辨率适配是各家必争之地,但离「稳定读清一切小字」仍有距离。
这些是结构性挑战,与「模型不够大」关系不大,更多要靠架构与数据层面的针对性改进。
小结
多模态的本质是找一个共同表示空间:图像切块成视觉 token,视觉编码器提炼语义,投影层对齐两套坐标系,语言模型在其上统一推理;三阶段配方把这个空间逐步磨平。幻觉、计数、密集文字这些失败模式,恰好暴露了对齐仍不完美的地方。理解了这条「图像变成语言」的流水线,再看各家 VLM 的新特性,就能分清哪些是真创新,哪些只是配方的参数微调。
读者留言
COMMENTS 暂无还没有留言,来说第一句?