多模态模型:对齐、融合与视觉问答
多模态模型把文本、图像、音频或视频中的信息放进同一个任务,但“支持图片”并没有说明它能做什么。用一句话搜索照片,需要比较图文相似度;读取截图并回答问题,需要把视觉证据接入语言生成;生成图片又是另一种输出目标。选模型之前,先明确输入、输出和需要保留的细节。
本文用图像与文本解释共同机制。音频需要处理波形或声学特征,视频还要处理时间顺序,不能简单等同于“多放几张图片”。生成图像的另一条路线见扩散模型。
图像怎样进入序列模型
Vision Transformer(ViT)的一种基本做法是把图像分成固定大小的 patch,把每块像素展平后映射成向量,再处理这组向量。图像并不一定先被转成文字。
用一个刻意简化的例子:图像大小是 224×224,patch 大小是 16×16,则得到 个 patch。RGB patch 展平后有 个数,再经投影得到模型宽度为 的向量。忽略分类 token 后,视觉特征形状可写为 [batch,196,d_v]。这里的 768 来自像素数量,并不规定隐藏宽度必须是 768。
位置编码保留空间顺序,预处理则决定图像如何缩放、裁切、归一化。真实系统还可能使用多块高分辨率裁切、动态分辨率或压缩器,所以不能把“每张图 196 个 token”当作统一收费或显存估计。视觉 patch 也通常是连续向量,不要求对应文本词表中的某个整数 ID。
对齐:让图文可以比较
CLIP用图像编码器和文本编码器分别产生向量,通过成对图文的对比学习,让匹配对更相似。两边不需要先生成一段说明文字。这种设计适合图文检索和基于文本候选的比较。
假设一个教学批量包含三张图和三条正确配对的说明。分别得到 [3,d] 的归一化向量,矩阵乘法产生 [3,3] 的相似度表,正确配对位于对角线。训练希望每行和每列的正确配对得分更高。如果批量中另一个说明实际上也适合某张图,却被当作负例,就会产生训练噪声。
推理时可以比较一张图与“红色汽车”“蓝色汽车”“自行车”的文本向量。把分数 softmax 后,概率仍然依赖这组候选;删掉一个选项或增加相近描述,分布会变化。它不是开放世界里“图中确实有红车”的通用真实性概率。阈值需要在实际分布上评估。
查看清晰大图左侧是训练:两个编码器分别产生图像和文本向量,对角线上高亮的是原本配对的样本,训练要提高它们的相似度。右侧是预测:把类别名写成文字描述,再用图像向量逐一比较。最后选出的狗的描述来自候选标签,并不是模型自由生成的图片说明。
融合:把视觉证据接给语言模型
要回答“截图里第二行报错是什么”,只得到一个整图相似度通常不够。LLaVA 的原始设计连接预训练视觉编码器与语言模型,用可训练投影将视觉特征映射到语言模型的表示宽度,并通过视觉指令数据训练回答。
在简化形状里,视觉特征 [batch,N,d_v] 乘以连接矩阵 [d_v,d_l],得到 [batch,N,d_l],才能和语言宽度 对接。维度相等只解决“能否计算”,训练还要学会怎样使用这些向量。随机连接矩阵即使形状正确,也不会让语言模型突然理解图像。其他模型可能使用重采样器或 cross-attention,不能把一个实现推广为全部多模态架构。
训练时可以冻结部分组件、只训练连接器,再进行任务适配;也可以更新更多参数。这个选择改变资源需求和能力,不应把“装上投影层”与“完成图文对齐训练”混为一谈。生成部分仍受解码与停止条件影响。
最容易丢掉的信息
图像缩小以后,小字可能已经消失;裁切会去掉边缘;把大量视觉位置压成少量向量,可能牺牲细粒度关系。此时输出更长、更流畅,不能恢复不存在的输入证据。
“识别大致场景”也不等于“可靠计数、读取坐标、理解左右关系”。如果训练集中某类场景经常与某对象共现,模型可能依赖语言先验补出对象。处理表格截图时,正确读出几个单元格仍不足以证明行列对应正确。
视频则多一层时间采样问题:每隔几秒取一帧,可能遗漏很短的事件,也可能把先后顺序误判成静态共现。音频转成文字后,语调、重叠说话和非语音声音可能损失。需要这些信息的任务,应评估原始模态处理链,而不是只测转写文本的答案。
用成对变化检查是否依赖证据
可以构造一个公开、可控的小测试集:同一张简单图中只改变颜色、数量、左右位置或一段文字。问题保持不变,检查答案是否跟着目标变化;再遮住关键区域,看模型是否仍给出同样肯定的答案。这里描述的是实验设计,不是已测得的模型成绩。
把错误拆到具体环节:预处理删掉细节,视觉表示未保留信息,连接后未被语言模型使用,或解码输出错误。对 OCR 任务记录字符错误和布局关系;对计数记录绝对误差;对问答记录正确率及无证据时的表现。用同一分辨率、裁切规则、问题和输出预算比较模型,另记延迟与视觉 token 数。
做图文搜索时,先看对齐模型与检索流程;做截图问答时,评估可读取细节和证据依赖;做多模态 Agent 时,还要把动作验证与视觉判断分开。会描述一个按钮,不等于能稳定定位它或确认点击后的状态。