多模态大语言模型 (MLLM)
多模态大语言模型在连接视觉编码器和 LLM 时,常用哪些视觉特征压缩或重采样技术?¶
视觉编码器(如 ViT)输出的特征往往是高数量 token(例如 CLIP-ViT-L/14 为 256 个 token),直接输入 LLM 会带来巨大的计算和内存压力,因为 LLM 的自注意力复杂度与 token 数量的平方成正比。因此,几乎所有 MLLM 都需要在视觉编码器和 LLM 之间插入视觉特征压缩或重采样模块,将可变长或固定但过多的视觉 token 压缩为少量 token,同时尽可能保留关键语义。
常用技术:
-
基于交叉注意力的压缩器(Q-Former 风格) 这是 BLIP-2 引入的方案。使用一组可学习的查询向量(通常 32 个)与视觉编码器的输出进行交叉注意力。查询向量作为 query,冻结的视觉特征作为 key 和 value,通过多个 Transformer 层反复交互,最终输出固定数量的视觉 token。其核心思想是让这些查询向量自适应地从所有视觉 token 中提取与语言最相关的信息,形成一个紧凑的“视觉摘要”。由于交叉注意力层只学习查询向量和投影矩阵,视觉编码器和 LLM 都可以冻结。它本质上是一种数据相关的软注意力压缩。
-
感知器重采样器(Perceiver Resampler) 与 Q-Former 类似,也使用固定数量的可学习潜在向量,通过交叉注意力从变长的视觉特征序列中聚合信息。Flamingo 中使用此项技术处理视频帧,将任意数量的帧压缩为固定 64 个 token。它通常更轻量,只包含交叉注意力层,而不像 Q-Former 那样内部还融合文本做多任务训练。
-
基于卷积或池化的空间降采样 由于视觉特征保留了空间结构(如 16×16 的 grid),可以直接使用 2D 卷积或池化进行空间下采样。例如,用步长 2 的卷积将特征图从 16×16 变为 8×8,token 数量减少为四分之一。这种方法极其简单,计算开销极小,但缺乏内容自适应性。
-
基于重要性的 token 剪枝 对视觉 token 计算一个重要性分数(可以是注意力分数、与
[CLS]token 的相似度,或一个轻量级预测头的输出),然后只保留得分最高的前 k 个 token。这种方法可以动态调整保留 token 的数量,对简单图像保留少,复杂图像保留多。部分工作还会将剪除的 token 信息通过某种方式“蒸馏”到保留的 token 中,避免信息丢失。 -
Token 合并 类似 ToMe,根据相似度将冗余的视觉 token 逐步合并,形成更少的代表性 token。合并后 token 的特征是其子 token 的加权平均,位置编码也可以相应插值。
-
直接线性/MLP 投影而不压缩 某些模型(如 LLaVA)完全不做压缩,直接将所有视觉 token 通过一个线性层投影到 LLM 词嵌入空间。这保留了最大的信息量,但对 LLM 的序列长度处理能力要求较高,也会显著增加计算负担。LLaVA-1.5 使用 256 个视觉 token,在 7B/13B 模型上仍可承受。
选择哪种技术取决于对信息保留度、计算效率、训练难度和模型灵活性的综合权衡。

线性投影层和 Q-Former 这两种对齐方式分别有什么优缺点?¶
线性投影层(如 LLaVA)和 Q-Former(如 BLIP-2)是两种最典型的视觉到语言空间对齐方式,它们代表了简单直接 vs. 复杂压缩两种不同的哲学。
深层理解:
线性投影层的成功很大程度上依赖于现代 LLM 的强大语义吸收能力。LLM 可以容忍甚至受益于相对“原始”的视觉 token,通过自注意力建立跨模态连接。这相当于将对齐工作部分外包给了 LLM 自身。而 Q-Former 试图在进入 LLM 之前就完成“完美对齐”,但压缩带来的信息损失和 Q-Former 本身的容量限制成为了新的瓶颈。因此,尽管 Q-Former 在 BLIP-2 时代取得了惊艳的 zero-shot 效果,但在指令微调的竞赛中,简洁的线性投影结合 LLM 微调反而后来居上,成为当前 MLLM 的主流选择。当然,在计算资源极度受限或需要极致推理效率的场景,Q-Former 仍有其价值。
为什么在 MLLM 的视觉编码器选择上,基于 ViT 的模型占主导地位?CNN 特征可以用吗?¶
基于 ViT 的模型占主导的原因:
-
与文本 token 的自然统一:ViT 将图像切分为 patch,转化为 1D token 序列。这与 LLM 中的文本 token 序列形式完全一致,可以无缝拼接送入 Transformer。这种序列化形式使得视觉信息能够平等地参与自注意力计算,天然适合多模态交互。
-
全局感受野与空间位置保留:ViT 的每一层自注意力都具有全局感受野,同时 patch 序列保留了空间位置信息。这使得它能同时捕获全局上下文和局部细节,且位置编码使得空间推理成为可能。
-
可扩展性与预训练友好:ViT 架构非常简洁,与 LLM 同宗同源,易于扩展。此外,CLIP、SigLIP、EVA-CLIP 等大规模视觉-语言预训练几乎都基于 ViT,提供了强大的语义对齐的视觉编码器,可以直接继承其能力。
-
特征层级统一:ViT 输出的是单个层级的特征序列(通常最后一层),而非 CNN 的多尺度特征图,这简化了与 LLM 的对接设计。
CNN 特征是否可以用?
可以用,且历史上曾被广泛使用,但需要克服一些困难。例如早期的 VQA、图像字幕模型普遍使用 ResNet 或 EfficientNet 提取全局特征,再与文本融合。然而,在 MLLM 中直接使用 CNN 面临几个挑战:
-
特征形式不匹配:CNN 输出的是多通道、空间多尺度的特征图,需要额外的处理(如全局平均池化、空间金字塔池化或特征图展平)才能转化为 token 序列。这损失了空间细节,且难以与文本 token 进行细粒度的交叉注意力。
-
缺乏全局交互:CNN 的局部连接性虽然带来了归纳偏置,但在需要跨模态复杂推理时,缺乏像 ViT 那样的全局自注意力机制。
-
多尺度特征融合复杂:要充分利用 CNN 的多尺度优势,通常需要设计特征金字塔或交叉注意力模块融合不同层级的特征,增加了与 LLM 对接的复杂度。
尽管如此,CNN 特征仍可作为 ViT 的补充。一些工作(如 ConvLLaVA)尝试将 ConvNeXt 等现代 CNN 作为视觉编码器,或者将 CNN 的低级特征与 ViT 的高级特征结合,以增强细粒度定位能力。此外,在某些效率优先的场景,小型 CNN 比小型 ViT 更具优势。因此,CNN 并非不可用,只是 ViT 的架构统一性、扩展性和与语言预训练的对齐程度使其成为当前 MLLM 的默认选择。
如何理解“视觉 token”这个概念?举例说明它在多模态模型中如何与文本 token 交互。¶
视觉 token 本质上是视觉内容的离散化语义符号表示。在 ViT 中,一张图像被切割成固定大小的 patches(如 14×14 像素),每个 patch 被线性投影为一个高维向量,这个向量就称为一个视觉 token。与文本 token 在词汇表中代表一个单词或子词不同,视觉 token 没有预先定义的离散词汇,它是连续向量,携带了该 patch 区域的外观、纹理、语义等信息。可以将它理解为“图像的词汇单元”,但其意义是动态的、上下文相关的。
举例说明交互过程:
假设我们问模型:“图中左边的红色汽车是什么品牌?”
- 编码:
- 图像通过 ViT,输出 256 个视觉 token(例如 V1,V2,...,V256V1,V2,...,V256),每个对应原图一个空间位置,并保留了位置信息。
-
文本问题被分词为
[图中] [左边] [的] [红色] [汽车] [是] [什么] [品牌] [?]等文本 token。 -
拼接与交互: 视觉 token 和文本 token 被拼接成一个长序列:
[<image_start>] V_1 V_2 ... V_{256} [<image_end>] [图中] [左边] ... [?]。然后送入 LLM。 -
自注意力中的跨模态交互:
- 当处理“左边”这个文本 token 时,自注意力机制会计算它与所有视觉 token 的相关性。如果模型训练得当,它会给位于图像左侧的视觉 token(比如 V50V50 到 V80V80)分配更高的注意力权重。
- 接着处理“红色”时,它会在“左边”已聚焦的区域中,进一步关注那些包含红色特征的视觉 token。
- 最后,处理“品牌”时,它会在锁定区域对应的视觉 token 中,寻找与品牌标志相关的纹理和形状信息,这些视觉 token 会通过自注意力将相关特征聚合,最终帮助 LLM 预测出“丰田”或“特斯拉”等文本 token。
因此,视觉 token 本质上成为了 LLM 能够直接“阅读”的视觉概念单元,通过自注意力,文本 token 和视觉 token 在相同的语义空间中相互检索、聚合信息,实现了无间隙的多模态理解。这是一个从“看图说话”到“图像即文本”的范式转变。
视频-语言模型在架构上通常如何处理时间维度的输入?¶
视频包含了时间、空间两维信息,如何高效处理时间维度是视频-语言模型的核心挑战。常见架构策略分层级递进:
- 逐帧编码+后期时间聚合:
- 做法:对视频采样若干帧,每帧独立通过 2D 图像编码器(如 ViT)提取空间特征(帧级视觉 token),然后将多帧的 token 序列在时间维度上拼接,送入 LLM。LLM 通过自注意力天然地学习时间依赖。
- 例子:LLaVA-Video、部分 Video-ChatGPT 变体。
- 优点:实现简单,可复用强大的 2D 视觉编码器。
-
缺点:每帧都产生大量 token,总 token 数随帧数线性增加,计算压力大,且缺乏显式的时间建模。
-
时空分离的注意力:
- 做法:在视觉编码器或融合模块中,分别使用空间注意力和时间注意力。空间注意力在同一帧内的 token 间进行,时间注意力在跨帧的同一空间位置的 token 间进行。两者交错放置。
- 例子:Video-LLaMA、TimeSformer 作为视觉编码器。
- 优点:显式地建模时间依赖,计算效率较高(时间注意力序列长度仅为帧数)。
-
缺点:需要设计专门的视觉编码器,无法直接利用现成的 2D 图像编码器权重。
-
3D 时空 patches:
- 做法:将视频视为三维时空体,直接切分为时空 patches(如 2×16×16),每个 patch 就是一个小型时空立方体。通过 3D ViT 或 DiT 将所有时空 token 一并处理。
- 例子:Sora 使用的原生 3D patch 化,VideoPoet。
- 优点:原生地统一处理时空,建模能力最强,可学习复杂的运动模式。
-
缺点:计算量极大,token 数量与 T×H×WT×H×W 成正比,训练和推理非常昂贵。
-
记忆库/压缩网络:
- 做法:使用感知器重采样器或 Q-Former 将多帧视觉特征压缩为固定数量的 token,作为视频的摘要记忆,再输入 LLM。
- 例子:Flamingo 使用 Perceiver Resampler 将视频压缩为 64 个 token。
- 优点:有效控制了 token 总数,支持长视频。
-
缺点:压缩带来信息损失,可能丢失细粒度的时间细节。
-
时间位置编码: 上述所有方法都需要配合时间位置编码(如正弦位置编码或可学习的时间嵌入),告诉模型帧的顺序。这是视频理解的基础。
当前主流的 MLLM 视频方案倾向于逐帧编码+后期时间聚合与压缩重采样相结合的混合策略,在效果和效率之间求取平衡。
为什么大部分 MLLM 只使用一个视觉编码器,而不像人类有双目或多种感受器?¶
人类利用双目产生立体视觉估计深度,利用多种感受器(视网膜中央凹的高分辨率与周边区域的高敏感度)高效处理信息。然而,当前 MLLM 几乎都只使用单个 RGB 图像编码器,原因涵盖数据、架构和任务本质三个层面:
-
训练数据的限制:绝大多数大规模的图文对齐数据(如 LAION、COCO)都是 2D 单目 RGB 图像。立体图像、深度图、红外图等多模态传感数据的规模远不足以进行预训练。缺乏数据,多编码器策略便无从谈起。
-
架构简洁性与算力约束:引入多个视觉编码器会成倍增加视觉 token 的数量和计算开销,而当前单个高质量 ViT 的 token 数量(~256)已经对 LLM 构成压力。双目或多编码器还会引入复杂的对齐问题:不同编码器输出的特征空间需要进一步对齐和融合,设计复杂度陡增。
-
任务需求相对单一:目前绝大多数的多模态任务(描述、问答、推理)都可以从单张 2D 图像中完成。人类需要双目主要为了精确操作、导航和 3D 理解,而这些在当前的 MLLM 评测和主流应用中并非必需。即使是 3D 场景理解,模型也能从单张图像的纹理、阴影、透视等线索中推断一定深度。
-
人类视觉系统的特化并非绝对优势:人类视觉的中央凹-周边分化是为了在有限的视网膜面积和神经资源下实现高效信息获取。而 MLLM 的 ViT 已经是全局统一分辨率处理(虽然也有动态分块技术),类似于“均匀分辨率”的视觉。这虽然效率不高,但避免了复杂的视觉注意力调度。
尽管如此,多视觉编码器或多种感受器的研究正在兴起,如加入深度编码器、法线图编码器、或者使用可变分辨率视觉编码器的模型。未来随着 3D 数据增长和具身智能需求增加,MLLM 的视觉前端完全可能演化出更复杂的结构。
视觉 Token 压缩时,除了 Token Merging,还有哪些方法?比如基于重要性的剪枝。¶
视觉 token 压缩是平衡效率与精度的关键。除了 token merging(如 ToMe),还有以下几种主要方法:
- 基于重要性分数的剪枝: 为每个视觉 token 计算一个重要性分数,然后只保留分数最高的前 K 个 token。重要性分数可通过以下方式获得:
- 注意力分数:利用
[CLS]token 对所有 patch token 的注意力权重作为重要性分数。由于[CLS]常被训练用于汇总全局信息,其高注意力 token 通常更关键。 - 可学习的评分模块:在视觉编码器后附加一个轻量级 MLP,输入每个 token 的特征,输出其保留概率或重要性得分,通过 Gumbel-Softmax 或稀疏正则化进行训练。
- 与文本的相关性:如果已有文本查询(如 VQA),可以计算每个视觉 token 与文本嵌入的相似度,只保留最相关的 token。
-
信息密度:计算 token 特征与相邻 token 的差异性,保留信息密度高的 token。
-
空间下采样/池化: 利用视觉 token 保留的 2D 空间结构,直接对特征图进行卷积或池化操作,如步长为 2 的卷积将 token 数量减少到 1/4。这是最简单、无参数或极少参数的方法,但忽略了 token 的内容重要性差异。
-
基于聚类的压缩: 使用 K-Means 或可微聚类将视觉 token 聚类成若干簇,每个簇用一个代表性 token(如簇中心或加权和)替代。DARC、TokenLearner 等方法就属于此类,能够自适应地聚合相似信息。
-
交叉注意力压缩器: 如第 1 问所述,使用少量可学习查询向量通过交叉注意力从所有视觉 token 中动态提取信息。这是一种软压缩,查询向量可以学会聚焦重要区域。
-
蒸馏式压缩: 训练一个轻量级的学生编码器,直接输出少量 token,并用原始多 token 输出作为教师进行蒸馏,使得少量 token 也能保留足够信息。
-
动态 token 丢弃: 在模型前向过程中,根据中间层的特征动态丢弃不重要的 token(如动态 ViT),在视觉编码器阶段就完成压缩,然后再送入 LLM。
方法选择:剪枝和聚类可以在保留一定空间结构的前提下大幅减少 token;交叉注意力压缩器能更好地与语言对齐但训练复杂;空间下采样最简单但可能损失细节。实际中常结合多种方法,比如先空间下采样,再基于重要性剪枝,最后用少量查询向量微调。
动态高分辨率技术中,如何避免图像被切分后产生边缘伪影或语义割裂?¶
动态高分辨率(如 LLaVA-1.5-HD、DeepSeek-VL)为了处理大尺寸或宽高比极端的图像,会将原图切分成多个局部子块,每个子块独立编码,最后将全局缩略图和所有子块的视觉 token 拼接送入 LLM。这种物理切分容易引入边缘伪影和语义割裂(一个物体被切到两个子块中,失去整体性)。
避免和缓解方法:
-
重叠切分:子块之间设置一定的重叠区域(如 10-20%),这样跨边界的物体在相邻子块中都有部分出现,模型通过学习可以重建其整体性。重叠区域内的信息冗余也能帮助模型识别子块间的关系。
-
全局视图引导:始终保留一个全局缩略图(将原图 resize 到标准尺寸,如 336×336)的视觉 token,与所有子块 token 拼接。全局图提供整体布局和物体间关系的粗糙信息,帮助模型将各个子块的内容在空间上拼接起来。
-
子块位置编码:为每个子块添加明确的位置编码(如表示该子块在原图的行列坐标),让模型知道子块之间的空间相对位置。这类似告诉模型拼图块的位置,从而恢复整体语义。
-
跨子块的自注意力:将所有子块的 token 拼接后,不做隔离,而是让它们在同一自注意力层中交互。由于位置编码的存在,模型可以学会关注相邻子块中属于同一物体的特征,实现隐式的软对齐。
-
模型内的特征插值/融合:在将子块 token 送入 LLM 之前,可以用一个小型融合网络(如 Transformer 层)对不同子块的 token 进行交互,主动弥合边界。或者利用可学习的“边界 token”插入到子块之间,专门负责传递跨块信息。
-
随机切分数据增强:在训练阶段,故意使用随机的切分位置和尺寸,迫使模型学会处理各种切分情况,从而在推理时对不同切分策略更加鲁棒。
通过这些策略的组合,动态高分辨率技术能够在保留局部细节的同时,很大程度上避免边缘伪影和语义断裂,但并不能完全根除。对于需要极其精确的跨块连续性任务(如 OCR 长文本行),仍可能有问题,这是该方法的内在局限性。
在多模态对话中,如何处理交错图文输入?即用户可能在文字中穿插图片。¶

交错图文输入(interleaved image-text)是多模态对话的自然需求,例如用户发一条消息:“这张图片 [img1] 是什么?再看看这张 [img2],它们有什么区别?”模型需要理解每一张图片的语义,并将其与周围的文本上下文精确关联。
处理方案:
-
标记化插入:在文本序列中,为每张图片分配一个特殊占位 token(如
<image_1>)。视觉编码器先行将所有图片编码为视觉 token 序列。最终送入 LLM 的序列为:[文本token]... <image_1> [视觉token序列] </image_1> ... [更多文本token] <image_2> [视觉token序列2] ...。通过特殊标记,LLM 能够区分不同图片及其位置。 -
多模态位置编码:需要为每张图片的视觉 token 添加独立的位置编码,以区分它们属于不同的图像源。同时,文本 token 和视觉 token 在序列中的位置编码也应保持连续性,让模型感知图文穿插的顺序。
-
视觉特征的条件注入:另一种不拼接视觉 token 的方法是使用交叉注意力。在 LLM 的某些层,文本 token 作为 query,去关注当前上下文中的图片视觉特征。此时,需要根据输入中的
<image>标记位置,决定哪些文本 token 应该关注哪张图片(或所有图片)。Flamingo 就采用了类似的门控交叉注意力机制,但其专门设计用于处理交错图文。 -
训练数据构造:为了让模型学会处理这种输入,必须使用交错图文数据进行预训练或指令微调。例如,从网页中提取图文混排内容,或者用大模型生成多轮交错图文对话。数据中需保留图文对应关系,以及图片在文本中的自然位置。
-
动态视觉 token 注入:在推理时,根据用户输入动态构建序列。当用户指定图片时,系统实时对图片编码,并将视觉 token 插入到指定的文本位置。LLM 以流式方式处理,如同处理纯文本一样,只不过在到达
<image>token 时,后续的特征已切换为视觉 token。
目前多数 MLLM(如 GPT-4o、Gemini 1.5)都支持某种形式的交错输入,实现的关键在于预训练阶段就引入了大量的交错图文数据,并设计了通用的多模态标记和位置编码方案。这使得模型能够像理解文本中的引用一样,自然地理解图文之间的指代关系。
如何让 MLLM 在回答时不仅能引用整张图片,还能精确指向图中的某个区域?技术上有哪些实现方式?¶
让 MLLM 实现视觉定位和区域引用需要模型不仅能理解图像整体,还能建立语言与精确空间坐标之间的映射。
技术实现方式:
-
输出坐标 token:最直接的方法是让模型学会生成坐标。将图像坐标(如归一化到 0-100 的 x, y, w, h)转化为离散 token(如
<x0><y5><x30><y60>表示边界框),加入词表。训练时使用包含定位标注的数据(如 RefCOCO、Visual Genome)教模型生成这些坐标 token。例如:回答“图中红色的汽车在哪个位置?”模型输出“红色汽车在<x20><y10><x45><y35>”。这是 Kosmos-2、Shikra 等模型的方案。 -
位置编码辅助的视觉 token 生成:在视觉编码器中嵌入显式的 2D 位置信息(如通过 sin/cos 位置编码增强),使得每个视觉 token 自带其空间坐标信息。当 LLM 在生成文本时想指向某个区域,它可以学会生成与那个区域相关的视觉 token 的“引用”或者直接复制其坐标。
-
分割/掩码解码器:MLLM 输出文本的同时,生成一个专门用于定位的“区域 token”,然后将这个 token 送入一个轻量级的框或掩码解码器(如 SAM、Mask2Former 的头部),解码出具体的区域。这需要额外训练一个解码器,但可以实现更精确的像素级定位(分割掩码)。如 LISA、PixelLLM。
-
基于区域的特征注入:在模型理解阶段,可以预先提取图像中若干候选区域(如通过目标检测器或滑动窗口),并为每个区域赋予一个 ID。模型回答时,只需输出这个区域的 ID,前端再映射回框。这样模型不直接预测坐标,而是做选择题。这降低了生成自由坐标的难度,但依赖于候选区域的质量。
-
标记点/关键点:对于更灵活的形状,可以使用关键点序列或多边形坐标,模型生成对应的坐标 token 序列。
-
视觉提示嵌入:一些方法(如 LLaVA-Med)通过训练让模型将文本概念映射到视觉特征空间中的向量,该向量可以用于查询图像中对应区域,但这种主要用于推理而非显式输出坐标。
这些方法中,直接输出坐标 token 因其端到端和与 LLM 高度集成的特点,已成为当前主流。但难点在于精确坐标的生成容易产生偏差,需要大量定位数据微调,并且坐标可能随图像分辨率变化而需要归一化处理。
视觉编码器输出的特征维度通常很大,如何高效投影到 LLM 的词嵌入空间?1层MLP vs 多层感知机。¶
视觉编码器(如 CLIP-ViT-L/14)的输出特征维度通常为 1024 或 1408,而 LLM 的词嵌入维度通常是 4096(LLaMA)、5120(Vicuna-13B)或更高。因此需要一个投影层(通常称为“视觉适配器”)完成维度变换。
1层 MLP(线性投影):
-
形式:v′=Wv+bv′=Wv+b,其中 WW 是 DLLM×DvisDLLM×Dvis 的矩阵。
-
优势:极其简单,参数量小,训练稳定且速度快。由于线性变换不改变 token 之间的相对关系,视觉 token 的结构信息得以完全保留。LLaVA 系列的成功证明了单层线性投影已足够。
-
劣势:假设视觉特征与语言嵌入之间存在的是线性关系,可能不足以处理复杂的非线性模态鸿沟。当视觉特征和语言嵌入分布差异极大时,线性映射可能只能找到次优解。
多层感知机(MLP):
-
形式:v′=W2σ(W1v+b1)+b2v′=W2σ(W1v+b1)+b2,通常 2 层,中间有 GELU 等非线性激活。
-
优势:引入非线性,能拟合更复杂的映射,理论上能更好地弥合模态间的分布差异。LLaVA-1.5 从单层升级为 2 层 MLP,在一定程度上提升了性能。
-
劣势:参数量略增,可能引入轻微的过拟合风险,尤其在小数据量下。更深或更宽的 MLP 还可能扭曲视觉 token 的空间关系。
深层思考:到底选哪种,核心取决于视觉编码器本身是否已经与语言空间足够对齐。如果使用 CLIP 这样的对比学习模型,其视觉特征已经被训练为和文本特征在共享空间中余弦相似度高,此时它们的分布已经很接近线性关系,因此线性投影或浅层 MLP 足矣。如果视觉编码器是完全独立训练的(如自监督 ViT),特征空间与语言空间差异巨大,可能需要更复杂的 MLP 甚至小 Transformer 来转换。目前主流 MLLM 的视觉编码器几乎都是 CLIP 或其变体,因此 1 层或 2 层 MLP 是普遍选择,兼顾了效率与效果。
为什么有些 MLLM 采用“视觉 Token 提前停止”策略,不让 LLM 在生成时关注视觉 token 太深?¶
“视觉 Token 提前停止”是指在 LLM 的自回归生成阶段,将视觉 token 从自注意力的 key-value 缓存中移除,或者通过注意力掩码阻止后续生成的文本 token 关注视觉 token。这一策略初看反直觉,但有深刻动机:
-
减少计算开销:自注意力计算量与序列长度成正比,推理时每一步生成都需要对整个上下文序列计算注意力。视觉 token(通常 256 或更多)占据了大量的 KV 缓存空间和计算量。如果在生成一定步数后,模型已经有了足够的视觉理解,不再需要反复查询视觉 token,移除它们可以显著降低每步生成的延迟和显存占用。
-
防止过度依赖视觉导致幻觉或重复:在生成长篇回答时,如果模型持续关注视觉 token,可能会过度解读图像的某些细节,导致生成不相关的描述,或者陷入对图像内容的重复叙述。提前停止视觉关注可以鼓励模型更依赖已生成的文本上下文来保持连贯性。
-
模仿人类的视觉工作记忆:人类在描述图像时,通常是先整体看一眼,形成视觉印象,然后主要依赖这个印象和语言习惯进行描述,而不是一直盯着图像看。视觉 token 提前停止模拟了这一过程:视觉信息在早期被充分吸收到内部状态中,生成时只需基于该状态展开。
-
训练中的选择性关注:一些训练策略会随机在某个生成步数后遮挡视觉 token,使模型学会从内部记忆中提取视觉信息,而不是实时依赖。
具体实现上,可以通过在特定 Transformer 层停止视觉 token 参与注意力,或者直接截断 KV 缓存中的视觉部分。这种策略在 LLaVA、Qwen-VL 等模型中都有探索,尤其在生成较长回答时能有效平衡效率和效果。
多模态 LLM 能否直接处理输入的视频帧序列而无需专门的时间编码器?LLaVA-Video 等是如何实现的?¶
可以,而且这正是当前许多视频-语言模型的通用做法。
LLaVA-Video 等模型正是采用了极简的架构:逐帧提取空间特征 + 时间维度拼接 + LLM 自注意力统一建模。
具体实现方式:
-
帧采样:从视频中均匀采样一定数量的帧(如 8 帧、16 帧或 32 帧)。
-
逐帧空间编码:每一帧独立通过预训练的 2D 图像编码器(如 CLIP-ViT),得到该帧的视觉 token 序列。同一帧内的 token 带有空间位置编码。
-
时间位置编码注入:为了区分不同帧,并在时间上排序,对每帧的所有视觉 token 都加上一个时间位置编码(如正弦编码或可学习嵌入)。这样,模型可以知道哪些 token 属于同一帧,以及帧之间的先后顺序。
-
序列拼接:将所有帧的视觉 token 按时间顺序拼接,与文本 token 一起送入 LLM。序列形如:
[frame1_token1, frame1_token2, ...] [frame2_token1, ...] ... [text_tokens]。 -
LLM 自注意力建模时间依赖:由于 LLM 的自注意力机制能看到整个拼接序列,每一帧的每个空间位置都可以自由地关注其他任何帧的同一空间位置或不同空间位置。这就意味着 LLM 完全可以通过自注意力来学习运动、动作变化等时间动态,无需显式的光流或 3D 卷积。
为何无需专门的时间编码器:
因为 LLM 的 Transformer 层已经是一个通用序列处理器。只要提供帧序列和合适的位置编码,它就能像理解文本中的词序一样,理解帧间的时序关系。这种方法极简且扩展性强,可以轻松采样更多帧(只要上下文窗口允许)。当然,为了控制计算量,通常会对总 token 数进行限制(如均匀采样、帧内空间下采样等),或者使用轻量级重采样器压缩每帧 token 数。
这种“全部交给 LLM”的方案,正是当前 MLLM 从图像扩展到视频的典型路径。它的上限极高,但下限可能受限于预训练数据中视频时序信息的缺乏,因此通常需要在大量视频-文本数据上进一步微调。
多模态大模型的幻觉与单模态 LLM 的幻觉有何异同?哪些是视觉引入的特有幻觉?¶
共同点:两者都源于模型对训练数据的统计拟合而非真正的理解,表现为生成看似合理但与事实不符的内容。都会出现逻辑错误、实体混淆、过度自信等问题。
异同点及视觉特有的幻觉:
-
对象存在性幻觉(Object Hallucination):这是视觉引入的最典型幻觉。模型在描述图像时,会无中生有地提到图像中并不存在的物体。例如,图像中只有一只狗和草地,模型却描述“一只狗在公园里玩球”,凭空添加了“球”和“公园”。这主要是因为模型在预训练时,学到“狗”经常与“球”、“公园”共现的虚假统计关联,而视觉编码器可能没有足够能力去严格验证对象的存在性。
-
属性/关系绑定错误:模型可能正确识别了图像中的物体,但错误地将属性或关系绑定到错误的物体上。例如,图像中有一辆“红色的汽车”和一个“穿蓝衣服的人”,模型可能描述为“蓝色的汽车旁有一个穿红衣服的人”。这反映了视觉-语言绑定能力的不足,在空间关系、计数任务上尤为突出。
-
场景上下文幻觉:基于部分视觉线索过度推理整体场景。例如,看到一点水流就推断是河流,看到木头纹理就认为是森林。这源于模型的全局语义先验压制了局部视觉证据。
-
细粒度混淆:将视觉上相似但语义不同的物体混淆,例如将一只哈士奇描述为狼,或者将梵高的画作说成莫奈的作品。这是因为视觉编码器可能没有足够分辨细粒度类别的能力。
-
文本偏置导致的视觉误读:当文本提示词中带有强烈暗示时,模型可能直接根据文本生成答案,忽略或曲解视觉内容。例如,提问“这只受伤的狗怎么了?”,即使狗没有受伤,模型也可能编造伤口描述。
-
空间关系的错误描述:错误描述物体的相对位置(左右、上下、里外),这源于视觉 token 的空间位置信息在 LLM 中未能被充分利用或与语言中的空间词对齐。
共性:两类幻觉都表现为“编造”,但 MLLM 的幻觉有视觉输入作为锚点,错误不再是纯粹的语言虚构,而是对视觉现实的错误解读。这使得检测和缓解更复杂,需要结合视觉定位和实体验证等技术。
为了支持多语言多模态,MLLM 在文本侧需要做什么适配?仅更换 LLM 足够吗?¶
仅更换 LLM 通常不足够,尽管这是最关键的一步。需要多层面适配。
-
LLM 更换(核心):将 LLM 底座从纯英文模型(如 LLaMA)更换为多语言模型(如 Qwen、Mixtral、BLOOM、或 LLaMA 的多语言微调版本)。这是最重要的一步,决定了模型的多语言理解和生成能力的基础。
-
视觉-语言对齐数据的多语言化:大多数视觉-语言对齐数据(如 LLaVA-Instruct-150K)是英文的。如果直接将这些数据用于多语言 LLM 微调,模型虽然能理解多语言问题,但生成的回答可能会倾向于英文,或者出现 code-switching。需要构建或翻译一批高质量的多语言图文指令数据。方法包括:
- 使用翻译模型将英文指令数据自动翻译为目标语言(需注意翻译质量和术语准确性)。
- 利用多语言字幕数据集(如 Multi30k、STAIR Captions、COCO-CN)。
-
让多语言 LLM 自己为图像生成多语言描述和问答对。
-
文本编码器的选择:如果 MLLM 中使用了独立的文本编码器(如某些双编码器架构),也需要确保该编码器支持多语言。但若直接使用 LLM 作为文本处理器(如 LLaVA 直接将 token 化文本送入 LLM),则文本编码器即 LLM 自身的 tokenizer。此时需要确认 tokenizer 对多语言有良好支持,特别是对非拉丁字符(中文、阿拉伯语等)的压缩率和语义保留。
-
视觉编码器的多语言对齐:目前主流的视觉编码器(如 CLIP)大多在英文图文对上训练,其视觉语义空间可能与英文更强绑定。虽然视觉特征本身是语言无关的,但其与语言的对齐是通过英文进行的。更换多语言 LLM 后,需要重新进行视觉-语言投影层的对齐训练,让视觉特征对准多语言 LLM 的词嵌入空间。
-
评估与迭代:需要构建多语言多模态的评测基准,监测模型在不同语言上的性能差距,并针对性地收集数据优化。
总之,更换 LLM 是必要条件,但为了让多语言能力在视觉-语言任务上真正激活,多语言指令微调数据和对齐训练是不可或缺的后续步骤。
有没有在 MLLM 中同时训练视觉编码器和 LLM 的成功案例?训练不稳定的原因是什么?¶
有,但相对较少,且通常需要特殊技巧。大多数 MLLM 都选择冻结预训练的视觉编码器,只训练连接器或部分 LLM 参数。完全同时训练整个视觉编码器和 LLM 的案例包括早期的 SimVLM、CoCa(一定程度)、PaLI 系列、以及一些最新的端到端模型(如 Chameleon、Unified-IO 2、部分 GPT-4o 的训练可能也涉及联合优化)。它们往往是大型机构在巨大算力支撑下完成的。
训练不稳定的主要原因:
-
模态间梯度竞争(模态不平衡):视觉编码器和 LLM 通常具有非常不同的预训练状态和梯度尺度。LLM 往往已经过超大规模文本数据充分训练,其损失面较为平滑;而视觉编码器相对需要更多更新才能适应新的跨模态任务。两者联合训练时,LLM 的强梯度可能主导优化方向,导致视觉编码器更新不足(欠拟合);或者,若给视觉编码器较大学习率,其迅速改变特征分布又可能扰乱 LLM 已经建立的语言知识,导致灾难性遗忘。这是一种“跷跷板”效应。
-
特征空间漂移:同时更新视觉编码器和 LLM,意味着视觉 token 的分布和语义在训练过程中持续变化。连接器(或 LLM 的前几层)必须不断适应这种漂移,这破坏了深度网络训练中希望的稳定输入分布(Internal Covariate Shift)。
-
灾难性遗忘:LLM 的解冻训练极易导致它遗忘重要的语言能力(如数学推理、编程、世界知识),因为多模态数据中的文本量通常远少于原 LLM 的训练数据,且分布不同。同时,视觉编码器也可能失去其预训练中获得的强大视觉表示。
-
超大规模资源需求:为了稳定这种联合训练,通常需要极其巨大的多模态数据集(如数十亿图文对)和精心设计的学习率调度、优化器分群(如为不同模态设置不同学习率)、以及梯度裁剪等技术。这对多数研究机构不可承受。
成功案例的常见策略:
-
使用分阶段训练:先冻结大部分参数训练连接器,然后逐渐解冻更多参数。
-
模态特定的学习率:给视觉编码器和 LLM 设置差异化的学习率(通常 LLM 学习率更小)。
-
大量的多模态预训练数据,并在训练中混入纯文本数据以保持语言能力(如 PaLI 的训练方式)。
-
使用 adapter 或 LoRA 等参数高效微调方法降低灾难性遗忘风险。
因此,同时训练视觉编码器和 LLM 是完全可能的,但需要克服的工程和算法挑战巨大,目前更多被视为大厂的“军备竞赛”领域。
如果只给你一个强大的 LLM 和一个预训练的视觉编码器,没有对齐数据,你能让它们协作吗?方法是什么?¶
可以,但需要创造性的“零样本对齐”策略。没有显式的图文对齐数据(即没有图文对或视觉-语言指令),我们无法进行有监督的训练或微调。此时,只能依靠两个预训练模型内部已经隐含的知识和它们各自与语言空间的天然联系。
核心思路:将视觉信息转化为 LLM 能够理解的文本或嵌入空间中的“线索”,然后利用 LLM 的强大推理和生成能力完成任务。
具体方法:
-
利用“视觉-语言”预训练模型作为中介(若有的话):如果这个“预训练视觉编码器”恰好是 CLIP 视觉编码器,那么 CLIP 本身已经提供了视觉与文本的共享空间。但问题设的前提是没有对齐数据,我们不能微调。但我们仍然可以利用 CLIP 文本编码器作为桥梁:将图像通过 CLIP 视觉编码器得到向量,然后零样本最近邻搜索一个大规模文本库(如 ImageNet 类别名、维基百科词条描述),用检索到的文本作为 LLM 的提示。例如,用图像检索到“哈士奇犬”相关的描述,然后让 LLM 根据这些描述回答问题。这要求我们有 CLIP 文本编码器和足够大的文本嵌入库,但不要求图文对。
-
图像到文本生成(如果视觉编码器带有解码器):如果视觉编码器来自 VQ-VAE 或带有图像字幕能力的模型(比如它本身就是一个训练好的图像字幕模型的编码器部分),可以尝试直接生成粗略的文本描述,再将描述交给 LLM。
-
利用 LLM 自身的跨模态迁移能力:近年有工作表明,通过巧妙的提示工程,可以让 LLM 直接理解以嵌入形式输入的视觉 token,即使没有经过显式的多模态对齐训练。一种称为Embedding-based Prompting的方法:将视觉 token(经过投影到 LLM 嵌入空间)与文本提示拼接,同时用软提示的方式引导 LLM 输出。由于 LLM 极其强大,在少量示范(in-context learning)下,它可能学会从视觉 token 中“读出”语义。这需要手工设计几个演示样例,将视觉 token 和对应的文本答案作为上下文。虽然效果远不及微调模型,但确实能实现一定的零样本迁移。
-
代码/逻辑桥接:利用视觉编码器提取原始视觉特征(如边缘直方图、颜色统计、深度估计),将这些低级特征转换为自然语言描述(例如“图像顶部区域主要是蓝色天空,中间区域有大量绿色纹理”),再将这种结构化描述输入 LLM。这需要手写规则或使用无监督的图像分割/聚类算法来提取高级语义区域。
-
自监督对齐:在没有成对数据的情况下,可以设计一个自监督代理任务。例如,让 LLM 为一组图像生成假想的文本描述(基于随机采样或从文本语料中检索),然后用视觉编码器的特征去匹配这些文本嵌入,构建伪对齐数据,再循环迭代。这种方法称为“伪对齐”,效果有限且不稳定,但在完全无监督的设定下是少数可行的路径。
这些方法的效果显然远不如使用海量对齐数据训练的真正 MLLM,但它们展示了预训练模型的潜能极限。在实际应用中,如果真的处于这种“无对齐数据”的绝对零资源场景,最务实的途径还是人工或半自动地标注少量对齐数据(几百到几千个样本),进行轻量级微调,这往往能在极少成本下取得比任何零样本方法都要好的效果。