前言
大语言模型(Large Language Model,LLM) 很会处理文字。它能把一段指令拆成 token,按概率逐字生成回复。但把它和一张图片放到一起,它就没了用武之地。给它一张图片的像素数据,它不知道画面上是一只猫还是一栋楼。它只能看文字。(注意:这里的大模型我们指的是早期的文本大模型,这个时候还没有出现 MLLM(多模态大模型),因此先不考虑现在的大模型所具备的图像识别和理解功能。但事实上,我们接下来要介绍的 VLM,概念上是属于 MLLM 的范畴。)
视觉语言模型(Vision-Language Model,VLM) 要补上的正是这一块。它同时理解图像与文本,能做跨模态推理。给它一张照片,它回答照片里有什么;给它一张图纸,它照着图纸说明步骤。这类能力的基础,是把图像和文本两套数据放进同一个表示空间,让模型能比较、能融合、能推理。这个过程的正式名称是模态对齐(Modality Alignment)。
图像和文本的数据结构完全不同。图像是连续的像素矩阵,一个像素是三个通道上的数值,整体是高维连续张量。文本是离散的符号序列,每个词元来自一张有限的词表。一个连续,一个离散,两者天然不在同一个空间里。VLM 的核心工作,就是找到一种方式把两者对齐。
围绕"怎么对齐",VLM 演化出三条技术路线。本文先讲 VLM 的骨架,再逐一拆解三条路线的数学原理,最后把训练流程串起来。
三大核心组件
一个 VLM 通常由三个部分组成。
视觉编码器(Vision Encoder)。负责把图像变成特征向量。以 Vision Transformer(ViT)为代表,先把图像切成固定大小的方块(Patch),每个方块展平并线性映射成嵌入,再送入多层 Transformer,输出一组图像特征。特征里压缩了图像的语义信息,是后续所有对齐操作的基础。
语言模型(LLM / Text Encoder)。负责理解文本语义并生成回复,常见的有 Llama、Qwen 等。在 VLM 中,它是推理与输出的核心。
模态连接器(Adapter / Projector)。这是 VLM 特有的枢纽。视觉编码器输出的特征和词向量不在同一个空间,连接器负责把图像特征映射成语言模型认识的词向量,通常是一个可学习的线性层或小型 Transformer。线性投影层(Linear Projector)和 Q-Former 都属于连接器。
流派一:对比学习与模态对齐(CLIP)
CLIP(Contrastive Language-Image Pre-training)由 OpenAI 在 2021 年提出。它的思路不要求模型把图像"说出来",只要求模型判断一对图文是否匹配。思想可以概括为,让配对的图像与文本在向量空间里互相靠近,不配对的互相远离。
余弦相似度
CLIP 用余弦相似度衡量图像与文本特征的匹配程度。设图像特征向量为 $I$,文本特征向量为 $T$,相似度定义为
$$ s(I, T) = \frac{I \cdot T}{\|I\| \, \|T\|} $$InfoNCE 对比损失
在一个包含 $N$ 个图文对的批次里,对第 $i$ 个图像特征 $I_i$ 而言,配对的文本特征 $T_i$ 是正样本,其余 $N-1$ 个文本都是负样本。图像到文本方向的 InfoNCE 损失定义为
$$ \mathcal{L}_{I \to T} = - \frac{1}{N} \sum_{i=1}^{N} \log \frac{\exp(s(I_i, T_i) / \tau)}{\sum_{j=1}^{N} \exp(s(I_i, T_j) / \tau)} $$温度参数 $\tau$ 控制分布的尖锐程度,调节模型对困难负样本的关注程度,实际训练时损失取两个方向(图像到文本、文本到图像)的平均。
CLIP 的完整拆解,包括每个符号的含义、$\tau$ 的详细讨论和正负样本矩阵,见本站《CLIP 详解:对比学习如何让模型同时看懂图与文》。
流派二:生成式视觉指令微调(LLaVA)
CLIP 学会了让图像和文本互相匹配,但还不擅长"开口回答"。LLaVA(Large Language and Vision Assistant)换了一条路,把图像特征通过一个可学习的线性投影层转成语言模型认识的 token,拼进输入序列,让语言模型用自回归的方式继续生成回复。这条路线把"对齐"这一步收敛成一个投影层,其余工作全部交给语言模型。
核心是两步数学。线性投影把视觉特征映射到词向量维度
$$ H_v = Z_v W $$然后用标准的自回归交叉熵损失训练
$$ \mathcal{L}_{\text{gen}} = - \sum_{i=1}^{L} \log p(y_i \mid X_v, X_{\text{instruct}}, y_{\lt i}) $$损失就是纯文本语言模型的下一 token 预测损失,区别只在输入里多了一串由图像投影而来的 token。架构细节、投影层数学、损失函数的完整推导和两阶段训练流程,见本站《LLaVA 详解:视觉指令微调的完整拆解》。
流派三:交叉注意力机制(Flamingo / BLIP)
前两种流派都把对齐放在输入端,CLIP 用对比损失把两个空间拉近,LLaVA 用投影把图像特征塞进输入序列。交叉注意力是第三种思路,不在输入端做一次性对齐,而是让语言模型在每一层内部动态查询图像信息。Flamingo 和 BLIP-2 是这条路线的代表。
交叉注意力公式
交叉注意力和标准注意力公式相同,区别在于来源。Query 来自文本,Key 和 Value 来自图像特征
$$ \text{CrossAttention}(Q_t, K_v, V_v) = \text{softmax}\left( \frac{Q_t K_v^{\top}}{\sqrt{d_k}} \right) V_v $$- $Q_t$ 是文本侧产生的查询向量。
- $K_v$、$V_v$ 是图像侧特征投影出的键和值。
- $Q_t K_v^{\top}$ 计算文本对图像各区域的匹配程度。
- $\sqrt{d_k}$ 是缩放因子,防止点积过大导致 softmax 进入饱和区,来源推导见本站《Softmax 与缩放点积的数学》。
- softmax 把匹配度转成注意力权重,再乘 $V_v$ 得到加权后的图像信息。
这条式子的效果,是文本在生成每一步时,都用当前状态去查询图像里与这段内容最相关的区域,把取回的视觉信息融入当前层的输出。视觉信息在每一层反复参与计算。
Flamingo 的做法是在冻结的语言模型层之间插入门控交叉注意力层(Gated Cross-Attention),图像与文本按交错序列组织,训练时只更新插入的部分,参数开销小。BLIP-2 用 Q-Former 作为连接器,用一组可学习的查询向量从图像特征中提取信息,再交给语言模型。
VLM 的训练三步曲
把前面的数学放回工程流程,一个 VLM 通常分三步训练。
第一步,模态对齐预训练(Pre-training)。用海量图文对做对比学习(CLIP 风格),让视觉编码器与文本编码器的输出进入同一个向量空间,同时学习温度参数 $\tau$。对走投影路线的模型,这一步通常只更新连接器(投影层),冻结两个编码器,数据规模最大、标注最弱,解决的是"能不能对齐"。
第二步,视觉指令微调(Instruction Tuning)。用高质量的人工视觉对话数据对模型做监督微调,让模型学会看图理解指令、生成合理回答,损失就是上面 LLaVA 的自回归交叉熵损失。这一阶段通常先冻结视觉编码器、只训练投影层做特征对齐,再解冻语言模型做指令微调,解决的是"会不会对话"。
第三步,人类偏好对齐(RLHF / DPO,可选)。用强化学习从人类反馈(RLHF)或直接偏好优化(DPO),把模型的回答向人类偏好拉近,减少幻觉(Hallucination)。这一步成本高,但能明显提升可用性。
局限与展望
幻觉问题。VLM 生成的内容可能和图像无关,描述出图像里并不存在的内容,把没有的东西说得有模有样。根本原因是自回归生成以文本概率为主,图像只是条件之一,模型在信息不足时倾向于顺着语言先验往下编。现有方法可以缓解,但还不能完全消除。
高分辨率图像的计算成本。注意力机制的时间复杂度是 $O(N^2)$,这里的 $N$ 是 token 数量。图像分辨率越高,切出的 patch 越多,token 数量越大,注意力矩阵按平方膨胀,显存和时间都扛不住。这也是为什么高分辨率 VLM 往往要配合视觉 token 压缩、滑动窗口等技巧。
原生多模态(Native Multimodal)。以 GPT-4o 为代表的新一代模型,不再把独立的视觉编码器和语言模型拼接,而是让文本、图像、音频统一成同一种 token 序列,由一个端到端的模型直接处理。省去模态对齐这一环,信息损失更少,跨模态推理更自然。这被看作 VLM 的下一个方向。
总结
VLM 要解决的核心问题是模态对齐。围绕它演化出三条路线,对比学习通过损失函数在向量空间里把图文拉近(CLIP),生成式微调把图像投影成 token 交给语言模型(LLaVA),交叉注意力让语言模型逐层动态查询图像(Flamingo、BLIP-2)。三者的数学内核分别是 InfoNCE 对比损失、自回归交叉熵损失和缩放点积注意力。掌握这三组公式,VLM 的架构和训练就都有了落脚点。
参考
- CLIP: Learning Transferable Visual Models From Natural Language Supervision,Radford et al., 2021
- Visual Instruction Tuning(LLaVA),Liu et al., 2023
- Flamingo: a Visual Language Model for Few-Shot Learning,Alayrac et al., 2022
- BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models,Li et al., 2023