多模态模型是多个独立编码器拼接共享解码器的管道,各模态分布差异导致系统被最窄的那路卡住,且失败静默而自信。
TL;DR — 多模态模型在演示里看起来像一个整体系统,但实际上它是一个由独立训练的编码器组成的 pipeline,这些编码器被塞进一个共享的解码器。每个编码器都带着自己的训练分布,而在生产环境中,整个系统的瓶颈取决于哪个模态的分布最窄——通常是视觉或音频,而不是文本。聚合准确率掩盖了这个问题,因为失败是自信且静默的,而不是呈现出错误形状的。
问一个多模态模型描述一张金色拉布拉多在海滩上的库存照片,它每次都能精准描述。但让它读取一张裁剪过的电子表格截图、转录一段有串音的电话音频、或者告诉你监控视频第 400 帧到第 500 帧之间发生了什么,失败模式就开始变得奇怪了。不是"我不知道"的那种奇怪——是自信地出错的那种奇怪。模型不会回避。它只会描述一个听起来合理但实际不存在的东西。
直觉会怪罪模型。但更有用的视角是架构层面的:多模态模型并不是一个模型。它是一组独立训练的编码器——每个模态一个——投影到一个共享的嵌入空间,然后交给一个主要在文本上训练的解码器。每个编码器都有自己的训练分布、自己的容量、自己的盲点。融合后的系统继承了所有这些,而在生产环境中,质量被分布最窄的那个编码器所瓶颈。这几乎从来不是文本侧的问题。
文本模型之所以变得强大,是因为文本训练数据极其广泛——几十年的开放网络、代码、书籍、论坛、转录文本。视觉和音频编码器没有这种条件。大多数多模态系统底层的视觉塔,追溯到网络图像与 alt 文本和说明文字配对的对比性图像-文本预训练:产品照片、新闻图片、库存摄影、社交媒体帖子。这个语料库规模庞大,但在美学和语义上很狭窄。它充满了人们拍照和配文字的东西。它不充满人们作为工作副产品生成的东西:密集的表格、热成像仪帧、低光仓库 footage、扫描表单、仪表盘、X 光片、卫星瓦片。
当你把其中一种东西输入视觉编码器时,你并不是在问模型一个难题。你是在问它一个超出其分布范围的问题。投影层仍然会产生一个嵌入——它没有机制说"我从未见过这样的东西"——而训练成总是输出流畅文本的解码器,会用听起来正确的东西填补这个空白。这就是自信出错的模式。这不是推理失败。这是一种伪装成推理失败的分发外失败。
截图是最明显的生产案例。UI 截图是密集的、文本密集的、高频的,与照片完全不同——但大多数视觉编码器是在摄影统计数据上调优的,为照片构建的分词器和分辨率 pipeline 会愉快地对截图进行下采样,直到小文本变成糊状。模型并非无法阅读;它从未收到过一张可辨认的图像。相机未针对美学优化而拍摄的暗色或低对比度帧,或者密集的技术图表(空间关系承载着意义,而全局嵌入会丢失这些),也是同样的情况。
人们首先想到的修复方法是"用更大、更好的模型"。这在边际上有帮助。它解决不了分布问题,因为视觉-语言预训练的 scaling law 仍然依赖于相同的网络图像和说明文字数据源。前沿视觉编码器是同一个狭窄先验的更好校准版本,而不是一个不同的先验。
音频编码器有自己的版本。大多数是在干净或接近干净的语音上训练的——播客、有声读物、呼叫中心录音、阅读语音语料库。这意味着模型的隐含先验是:音频是一个人在说话。给它喂两个重叠的说话者、有串音的会议室、通过一次编解码器压缩的电话音频,或者——最难处理的案例——根本不是语音的音频(警报、机器故障声音、你真正关心的环境噪音),模型就会以一种特定的、可预测的方式退化:它试图把听到的东西强行转换成语音形状的转录。说话人分割会自信地出错。非语音事件会被静默丢弃,因为从来没有一个训练信号奖励注意到它们。
视频是这种幻觉最完整的地方,因为大多数系统中所谓的"视频理解"根本不是一个时序模型。它是一个图像编码器应用于稀疏采样的帧序列,拼凑成一个序列,而实际的运动连续性由解码器的语言先验(很糟糕地)重建。从一段五分钟的 clip 中每秒采样一帧,你就丢弃了帧与帧之间几乎所有发生的事情。要求模型计算健身视频中的重复次数、捕捉物体换手的时刻、或注意到单帧异常,你问的是一个在模型运行之前采样策略就已经使其无法回答的问题。Token 预算让这更糟:视频是每秒内容最昂贵的模态,所以实际压力总是倾向于更粗的采样,这悄悄地进一步收窄了模型可以感知的内容。这是一个预处理决策,而不是模型限制,它通常是由连接摄入 pipeline 的人做出的,而不是由任何考虑模型能力的人做出的。
工程含义是停止把"多模态准确率"当作一个单一数字来对待。取而代之的是,按模态建立红队:针对你的用例实际会出现的分布外样本,针对性地探测每个编码器。截图、表格、低光 footage、重叠说话者、机器声音、非语音音频。测量每个模态的失败率,而不仅仅是整体数字。如果某个模态的准确率远低于其他模态,那就是你的瓶颈所在——用更大的文本模型来弥补它不会有效。