第一次看到GPT-4V能看懂冰箱里的食材并给出菜谱,我以为它背后藏了什么黑科技——把图片像素直接拼进文本里,大模型就神奇地理解了。后来我读了CLIP、BLIP-2、LLaVA的论文,才发现根本不是这么回事。多模态大模型(MLLM)的核心,其实是一套精心设计的“翻译”机制:把图像、音频等信号,转换成大语言模型能消化的token序列。这篇文章,我想用我踩过的坑,帮你理清这条路径。

视觉编码器:把图像切成块,变成向量
给大模型装上眼睛的第一步,是找到一种方法把图像变成它能处理的“数字”。你可能觉得,直接拿像素值不就行了?但一张224×224的图片,RGB三通道,就有150528个数值,直接塞进LLM,算力爆炸不说,这些像素值和文本token根本不在一个语义空间。模型看到的不是“猫”,而是一堆无意义的数字。
所以,我们需要一个视觉编码器(Visual Encoder)。当前最主流的选择是Vision Transformer(ViT),它把图片切成一个个固定大小的patch(比如16×16),然后把这些patch线性投影成向量,就像文本token嵌入一样。这样,一张图就变成了一串“视觉token”。不过,一个随机初始化的ViT并不能直接和文本对齐。我们还需要一个关键的步骤——对齐。
对齐:让图像和文字说同一种语言
我最早以为,只要把图像特征和文本特征拼接起来训练,模型就能学会关联。但实际效果很差,因为图像特征往往在它自己的空间里,和文本特征没有可比性。OpenAI的CLIP(Contrastive Language-Image Pre-training)解决了这个问题。它使用对比学习:对于每一对(图像,描述)作为正样本,其他不相干的图像和描述作为负样本,训练一个图像编码器和一个文本编码器,使得正样本对的特征向量相似度尽可能高,负样本对尽可能低。
“CLIP learns a multi-modal embedding space by jointly training an image encoder and text encoder to maximize the cosine similarity of the correct pairs.”
这样训练出来的视觉编码器(比如ViT-L/14),输出的特征向量已经和文本嵌入在同一个语义空间里了。这意味着,你可以用这个向量直接去和文本特征比相似度,这就为后续接入LLM铺平了道路。
连接器:Q-Former还是简单的MLP?
但视觉编码器输出的特征还不能直接喂给LLM。LLM期望的是它自己词表里的token嵌入,而视觉特征是一串连续的向量。我们需要一个“连接器”来做转换。这个连接器可以是简单的线性投影,也可以是复杂的Q-Former。
BLIP-2(BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models)提出了Q-Former,它用一组可学习的query tokens去和图像特征交互,通过注意力机制提取出最有用的信息,压缩成固定长度的“软提示”,然后输入给冻结的LLM。这个设计很巧妙,但训练起来不稳定,而且需要额外的计算。
LLaVA(Visual Instruction Tuning)则走了另一条路:只用了一个简单的线性层(或MLP)把视觉特征投影到LLM的输入空间。作者发现,只要LLM足够强大,简单的投影就足够了,根本不需要复杂的Q-Former。这让我想起那句老话:“简单就是美”。我用一个表格对比一下:
| 方法 | 连接器 | 复杂度 | 特点 |
|---|---|---|---|
| BLIP-2 | Q-Former | 高 | 压缩信息,需要训练交叉注意力 |
| LLaVA | 线性投影/MLP | 低 | 简单高效,训练稳定 |
| Flamingo | Gated cross-attention | 中 | 适合视频,但参数多 |
现在的主流方案大多采用LLaVA的简单连接器,因为它训练快、效果好,而且容易扩展。
训练策略:分步走,不要一次塞太多
训练一个多模态大模型通常分两个阶段,这样做能避免破坏预训练模型的能力。
- 阶段一:预训练对齐。冻结视觉编码器和LLM,只用大量图文对训练连接器。这一步的目标是让连接器学会把图像特征映射到LLM的输入空间,生成有意义的视觉token。数据量通常需要几百万到几千万图文对。
- 阶段二:指令微调。使用多模态问答、对话数据集(比如LLaVA-Instruct-150K),解冻部分或全部LLM参数,让模型学会根据图像遵循指令、回答问题。这一步仅需几万高质量对话,就能显著提升模型的表现。
这种策略的精妙之处在于,它利用了LLM强大的语言理解和生成能力,视觉能力只是“注入”进去的。就像给一个已经会说话的人戴上眼镜,他不需要从头学语言,只需要学会解读视觉信号。
听觉:给模型装上耳朵
既然视觉能注入,听觉当然也行。Whisper(Robust Speech Recognition via Large-Scale Weak Supervision)已经证明了大规模语音识别模型的有效性。我们可以把Whisper的编码器作为音频编码器,提取音频特征,再用一个连接器对齐到LLM的输入空间。这样,模型就能“听懂”语音,并基于语音内容进行对话。Qwen-Audio(Qwen-Audio)就是这样的框架。它甚至能理解音乐、环境音等非语言音频。
所以,多模态大模型其实就是一个统一的框架:编码器(视觉、音频等)+ 连接器 + 大语言模型。你给它什么编码器,它就有什么感官。
能力边界:看得见,未必看得懂
尽管多模态大模型已经能看图说话、回答视觉问题,但它有几个明显的短板,这些短板源于它“统计关联”的本质。
- 空间推理弱:让模型数物体、判断左右、比较大小,经常出错。因为ViT的patch化丢失了像素级精确位置,而且训练数据中缺乏足够的空间推理标注。
- OCR不等于理解:模型能读出图片中的文字,但经常不理解文字与场景的关系。比如看到“停止”标志,它可能仍然描述车辆在行驶。
- 幻觉依旧:看图说话时,会编造不存在的物体或细节。因为生成过程还是概率采样,模型没有外部校验机制,它只是试图生成一段“合理”的描述。
几个常见误解(FAQ)
多模态模型真的“理解”图像了吗?
目前是统计关联,不是人类式的理解,但在很多任务上已足够实用。它更擅长模式匹配和跨模态检索,而非因果推理。
能不能用多模态模型识别手写体?
可以,但复杂公式和潦草字迹容易出错,因为训练数据分布有限,且模型缺乏对字符结构的精确建模。
训练一个多模态大模型需要多少数据?
对齐阶段几百万图文对,指令微调几万高质量问答即可。相比之下,预训练LLM可能需要数万亿token,多模态的数据需求小得多,因为LLM能力可以复用。
多模态模型能处理视频吗?
可以,但成本高。视频可以看作多帧图像,通过时间采样或3D patch处理,但计算量暴增,长视频理解仍是挑战。
结语:多模态不是魔法,是一套工程方案
回顾整个过程,你会发现多模态大模型并没有想象中那么神秘。它是一套精心设计的流水线:先用编码器将异质信号转化为向量,再通过连接器对齐到大语言模型的输入空间,最后利用LLM的强大能力产生输出。当前模型最大的局限在于,它缺乏真正意义上的感知和推理,更像一个视力模糊但语言能力极强的孩子。未来的方向可能包括原生多模态模型(从预训练阶段就混合多种模态)、更高效的空间表征、以及更强的推理能力。但不可否认,我们已经给大模型装上了眼睛和耳朵,它正变得越来越有用。
推荐深入阅读:CLIP、BLIP-2、LLaVA、Whisper、Qwen-Audio。
原创文章,作者:guanweilu,如若转载,请注明出处:https://guanweilu.cn/article/45.html