Featured image of post LLaVA:一座小桥,为什么能让语言模型看图

LLaVA:一座小桥,为什么能让语言模型看图

LLaVA 没有重训一座多模态巨塔,而是用轻量连接器把 CLIP 视觉特征送进语言模型。本文拆解视觉 token、两阶段训练、数据协议与成本边界。

语言模型原本只接收离散 token。给它一张照片,像素不会自动变成“湖边有一座雪山”,更不会自动变成“比较左侧两个人的动作”。最直接的办法似乎是从头训练一个同时懂图像和语言的巨大模型;LLaVA 选择了更便宜、也更有启发性的路线:保留已经会看图的视觉编码器和已经会对话的语言模型,在中间训练一座很小的桥。

这座桥在初版 LLaVA 中只是一层线性投影,在 LLaVA-1.5 中也不过是两层 MLP。它之所以重要,不是因为一个小矩阵凭空创造了视觉智能,而是因为它改写了两个预训练系统之间的接口协议:把图像编码器输出的网格特征,映射成语言模型可以放进上下文序列处理的向量;再用视觉指令数据告诉语言模型,看到这些向量之后应该完成什么任务。

CLIP 给了图像一套语言坐标,但没有给它对话能力

LLaVA 的视觉端来自 CLIP。CLIP 用大量图文对训练两个编码器:图像编码器产生一个视觉表示,文本编码器产生一个文本表示;训练目标让正确配对的图文更接近、错误配对更远。OpenAI 的工作使用 4 亿对网络图文数据,并把任务简化为从一个 batch 的文本候选中找出与图像匹配的描述。

这一步的价值是建立了一个开放的语义坐标系。传统分类器最后只能在预先规定的类别中选择;CLIP 可以把“雪山倒映在湖面”“一张手写菜单”这类自然语言描述拿来比较,因此视觉表示不再被固定标签表锁死。

但“能比较图像和一句话”不等于“能围绕图像进行多轮对话”。CLIP 的核心输出是相似度,它不会自己生成长答案,也没有学会遵守“只数红色物体”“先解释再给结论”这样的指令。LLaVA 没有让 CLIP 直接回答问题,而是借它提供的视觉特征,把生成与指令遵循交给已经具备这些能力的语言模型。

图像不是被翻译成单词,而是变成一段连续向量

以 LLaVA-1.5 的常见配置为例,输入图像经过 CLIP ViT-L/14@336px。ViT 把 336×336 的图像切成 14×14 的 patch,因此形成 (24\times24=576) 个网格位置。视觉编码器为每个位置输出一个特征向量。连接器 (P) 再把视觉维度投影到语言模型的词嵌入维度:

\[ H_v=P(Z_v), \qquad Z_v=g(X_v). \]

这里的 (H_v) 常被称为 visual tokens,但它们不是词表中的 token,也没有对应某个可读单词。它们只是与文本 embedding 维度相同的一串连续向量。系统把这串向量放到问题的文本 embedding 旁边,语言模型便能在同一个自回归序列里同时关注图像区域和文字提示。

图 1:LLaVA 把 CLIP 网格特征投影成可插入语言模型上下文的连续视觉 token

这个设计省掉了专门的多模态解码器,也没有在语言模型每一层插入新的 cross-attention。代价则是视觉信息要以 token 预算进入语言模型:图像分得越细,细节可能越多,但序列越长,prefill 的注意力与 KV cache 负担也越大。“连接器很小”和“整条多模态推理链很便宜”是两件不同的事。

两阶段训练,其实在教两份不同的契约

原始 LLaVA 的训练分两步。第一步使用从 CC3M 过滤出的 595K 图文对,把图片配上“请简要描述图像”一类请求。视觉编码器和语言模型都冻结,只更新投影矩阵。此时任务不是教模型聊天,而是让连接器找到一种语言模型能消费的视觉表示。论文把它形容为为冻结的语言模型训练一个兼容的“视觉 tokenizer”。

第二步换成 158K 视觉指令样本,包括对话、详细描述和复杂推理。视觉编码器仍然冻结,但连接器与语言模型一起更新。模型只对 assistant 的答案 token 计算自回归损失,从而学习“图像 + 指令 → 合适回答”的行为。

图 2:第一阶段只对齐接口;第二阶段让连接器和语言模型共同学习视觉指令行为

这两步不能简单合并成一句“用图文数据训练”。第一阶段解决的是表示兼容:雪山区域的视觉特征怎样进入语言模型的向量空间。第二阶段解决的是交互契约:同一张图像面对“描述场景”“数出人物”“解释反常之处”时,输出应该怎样变化。一个负责把信号送进去,另一个负责让模型按人的意图使用信号。

小桥够用,是因为两端已经做了大部分工作

连接器很小,并不意味着视觉与语言天然对齐。真正昂贵的能力已经预先存在:CLIP 学会了大量视觉概念与语言语义的对应,Vicuna 则继承了语言模型的知识、生成与指令遵循能力。投影层要做的不是重新识别每个物体或重新学习语法,而是找到两个表示空间之间可被后续训练利用的接口。

LLaVA-1.5 提供了一个很有价值的工程结果:把初版线性投影换成两层 MLP、把 CLIP 输入分辨率提高到 336px,再加入面向学术 VQA 的公开数据和简洁回答格式,就得到一个在 11 个基准上很强的公开基线。论文报告其 13B checkpoint 只使用约 1.2M 公开样本,并在单个 8×A100 节点上约一天完成训练。

这个结果支持的不是“连接器越简单越好”,而是一个更窄的判断:当视觉编码器、语言模型和数据都足够强时,复杂的跨模态模块未必是首要瓶颈。BLIP-2 走的是另一条合理路线:用带可学习 query 和 cross-attention 的 Q-Former,从视觉特征中提取固定数量的语言相关表示。LLaVA 保留整片网格,接口简单、实验迭代快;Q-Former 主动压缩信息,结构更复杂但 token 数量不随输入网格直接增长。选择哪种桥,取决于细节保真、计算预算和训练数据,而不是抽象意义上的“先进程度”。

真正改变使用方式的,是视觉指令数据

初版 LLaVA 的 158K 指令数据有一个很巧的来源:当时使用的 GPT-4 只接收文本,因此研究者没有把图片直接交给教师模型,而是把图片的 caption 和 bounding box 作为符号化描述,让 GPT-4 生成围绕图像的对话、详细描述与复杂推理问题。最终的学生模型训练时仍看到真实图像。

这套流程把已有图文数据从“这张图配什么说明”改造成“用户可能对这张图提出什么要求”。数据的变化比表面上的样本数量更关键。原论文消融中,没有视觉指令微调的模型在 LLaVA-Bench (COCO) 总分只有 21.5;使用完整指令数据时为 85.1。这个数字来自以文本版 GPT-4 为裁判和参照的特定评测,不能当作通用能力百分比,但同一设置下的大幅差距清楚说明:会描述图像,不等于会遵循关于图像的指令。

它也暴露了合成数据的边界。教师看到的是 caption 和框,而不是像素本身;若符号描述漏掉细节,生成的问题与答案也不会神奇地补全视觉证据。学生可能学到教师的表达偏好和推理模板,而不是更细致的感知。合成指令扩大了行为覆盖,却没有替代真实图像标注、精细 OCR 数据或可验证的空间关系数据。

视觉 token 是信息预算,也是计算账单

把 patch 全部送进语言模型的好处是直接:局部区域仍有自己的表示,模型可以在回答时关注不同位置。但 patch 数随分辨率的平方增长。对 patch size 14 的方形输入,224px 对应 256 个位置,336px 对应 576 个,672px 则对应 2304 个。边长翻倍,视觉 token 变四倍。

若文本有 (N_t) 个 token、图像有 (N_v) 个 token,标准自注意力看到的总长度是 (N_t+N_v)。粗略的注意力矩阵规模随 ((N_t+N_v)^2) 增长,KV cache 则随总 token 数增长。真实实现会通过切图、降采样、token merging、稀疏注意力或专门的视觉重采样器改变这笔账,但不会让信息密度与计算成本的冲突消失。

图 3:连接器参数可以很小,视觉 token 带来的序列长度与注意力成本却会随分辨率迅速上升

这也是为什么高分辨率多模态模型不能只比较视觉编码器大小。还要问:每张图产生多少 token?多图输入怎样累计?图像 token 是否占用文本上下文?进入 LLM 前有没有压缩?测的是编码耗时、prefill,还是逐 token decode?“支持更高分辨率”描述的是输入上限,不等于每个请求都应该使用最高分辨率。

能说得流畅,会让视觉错误更难察觉

视觉语言模型的危险组合是:感知证据可能模糊,语言生成却很自信。原论文记录过一个典型错误:冰箱里有草莓,也有酸奶,但没有草莓味酸奶;模型仍回答“有”。它把同时出现的两个概念拼成了并不存在的关系。作者称这种情况像把图像看成一“袋 patch”,没能掌握复杂语义。

错误可能出现在三处。视觉编码器可能没保留小字、数量或精确位置;连接器可能没有把相关细节映射成语言模型容易利用的方向;语言模型则可能用文本先验补出一个听起来合理的答案。仅看最终句子,很难判断是哪一层失真。因此实际系统需要让评测拆开感知、定位、OCR、关系与生成,关键任务还应提供可追溯区域、外部检测器或拒答机制,而不是只用“回答是否像人话”衡量质量。

LLaVA 最持久的贡献,也许不是某个今天仍领先的 checkpoint,而是提供了一张极简、可复现的设计图:强视觉编码器负责看,强语言模型负责说,一个轻量接口让两者共享序列,再用指令数据定义新的使用方式。它证明了多模态能力可以通过组合已有基础模型快速形成,也同时提醒我们:桥再小,桥上承载的信息、训练协议和错误归因都不小。

参考资料

  1. Radford et al., Learning Transferable Visual Models From Natural Language Supervision, ICML 2021.
  2. OpenAI, CLIP: Connecting Text and Images.
  3. Liu et al., Visual Instruction Tuning, NeurIPS 2023 Oral.
  4. Liu et al., Improved Baselines with Visual Instruction Tuning, 2023.
  5. LLaVA authors, LLaVA 官方代码与训练说明.
  6. Li et al., BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models, ICML 2023.