Multimodal
多模态模型联合处理文本、图像、音频或视频等信息,并在统一表示空间中完成理解或生成。它的核心是把不同模态的信号对齐到语言模型可以处理的向量空间,从而让同一个模型具备跨模态能力。
这条路线以两个关键技术为底座:一是 ViT 把图像切成 patch 后像 token 一样送入 Transformer,让视觉也能沿用序列建模;二是 CLIP 用对比学习把图像与文本对齐到同一个向量空间,证明了跨模态检索与表征的可行性。之后的 BLIP-2 与 LLaVA 沿着「视觉编码器 + 投影层 + 语言模型」的路线,把视觉 token 直接接入现成大模型,形成了当前图文理解模型的主流结构。
快速开始¶
从文本加图像的单一任务开始,明确每种模态的预处理、对齐方式和评测集。先确定图像如何被缩放、归一化并切成 token,文本如何分词,以及两者的特征在什么位置融合;这些约定在训练和推理时必须完全一致。
记录图像分辨率、token 数与模板,避免训练和部署不一致。图像分辨率决定视觉 token 数量,进而影响显存与上下文占用;模板决定图文如何拼接。推理时若分辨率或模板与训练不同,模型可能输出错位或幻觉。
先用一个具体样本跑通端到端前向:一张图加一个问题进模型,检查图像编码器输出形状、投影层维度与语言模型的 hidden size 是否对齐,再观察模型能否按图回答。这样能快速隔离出是预处理、对齐还是生成环节出了问题。
结构¶
视觉或音频编码器先把非文本信号变成特征。图像常用 Vision Transformer (ViT) 把图片切为 patch 后编码成 token 序列,或用 CNN 提取特征图;音频则用语音编码器把波形转成声学特征。这一层输出的是模态专属的表示。给定图像分辨率 \(H\times W\) 与 patch 边长 \(P\),patch 数量为:
例如 \(336\times336\) 的图像在 \(P=14\) 时得到 \(24\times24=576\) 个视觉 token。这个数量直接决定视觉序列占用的上下文长度,也是分辨率影响显存与速度的根本原因。
投影层将特征映射到语言模型 hidden space。由于视觉/音频编码器的维度通常与语言模型不同,需要用线性层、MLP 或更复杂的对齐模块(如 Q-Former、Perceiver)做维度转换与语义对齐,使非文本 token 能被语言模型当作普通 token 处理。LLaVA 最初只用单个线性层做投影,BLIP-2 则用 Q-Former 的可学习 query 压缩视觉特征后再接入,二者在「对齐强度」与「实现复杂度」之间取舍不同。
语言模型通过交叉注意力或 token 拼接融合信息。交叉注意力让文本 token 去查询视觉特征;token 拼接则直接把视觉 token 插入文本序列,与文本 token 一起进入自注意力。不同结构的输入格式不兼容,切换模型时必须重新对齐预处理与模板。
案例:图表问答¶
将图表、问题和标准答案构成样本,保持训练与推理使用同一图像归一化。图表问答要求模型读取柱状图、折线图或表格中的数值并回答,训练样本通常包含「图表 + 问题 + 答案」三元组,微调时只对答案部分计算损失。
评测既看答案正确性,也检查模型是否臆造图中不存在的数据。除精确匹配或基于规则的数值比较外,还应抽检模型给出的数值是否真的出现在图中;多模态模型容易在数值上产生幻觉,答对格式却编错数字。
常见失败点包括:图像归一化不一致导致颜色或数值读错、图表分辨率过低使文字不可读、以及模板把图像位置放错导致模型忽略图像。排查时先把同一张图在不同预处理下前向,比较视觉 token 是否一致,再核对答案是否引用了图中真实数值。