DGP打通ViT与LLM全层:VLM架构如何让每层按需看图?
论文中的一道菜单题,看起来只需要做一次简单加法:一张 Funghi 披萨 6.90 欧元,一张 Prosciutto 披萨 7.90 欧元,总价是多少?LLaVA-1.5 不仅读错了价格,还凭空加入一份没有点过的 calzone,最终给出 26.40 欧元;DGP 则读出两个正确价格,算得 14.80 欧元。问题或许不
先看论文里的一道菜单题:Funghi 披萨 6.90 欧元,Prosciutto 披萨 7.90 欧元,两样加起来多少钱?看上去只消做一次简单加法。
LLaVA-1.5 把价格读错了,还擅自加了一份没人点过的 calzone,最后报出 26.40 欧元。DGP 读对了两个价位,算出 14.80 欧元。
毛病未必出在「推理」这一步。模型动笔算之前,手里可能就没有拿到跟问题对得上、足够靠谱的视觉证据。
如今不少多模态大模型的做法是:只取视觉 Transformer(ViT)最后一层或倒数第二层的特征,投影一次就送进大语言模型(LLM)。此后不管语言模型叠了多少层,都得从这份固定的视觉表示出发——认小字、辨颜色、看动作、读整幅画,全走同一个视觉入口。
可同一张图配不同的问题,需要的视觉粒度并不一样。读菜单上的价格,靠的是局部纹理和文字细节;理解一幅画的历史含义,更依赖高层语义。ViT 各层本来就编码了不同粒度的信息,进 LLM 之前只留一层,理由何在?
西北工业大学与香港科技大学的研究团队由此提出 DGP(Dynamic Gated Pathways,动态门控路径):每个 LLM 层都能访问全部 ViT 层,再依据当前的图像—问题上下文和该语言层的语义状态,给不同视觉层动态分配融合权重。
说白了,DGP 不是把更多视觉层拿来简单平均,而是把「哪一层视觉信息该接到哪一层语言模型」变成一个可学习、随语言层、任务和样本动态变化的路由问题。
在 LLaVA-1.5-7B 上,论文报告的 11 项指标 DGP 全部超过基线:SQA-I 涨 4.2 分,MM-Vet 涨 3.3 分,VizWiz 与 LLaVA-Wild 各涨 3.1 分。换到 Qwen3-VL-2B 与 LLaVA-NeXT 上,增益同样一致。
论文标题:Where to Connect? Boosting MLLMs via Dynamic Gated Pathways across ALL ViT and LLM Layers
研究团队:
论文链接:https://arxiv.org/abs/2611.06844
代码仓库:https://github.com/YingyingYan1/DGP
核心贡献:
DGP 改的不是视觉编码器,
而是视觉信息的「接线方式」
这项工作的核心贡献可以概括为三点。
第一,从「选哪个 ViT 层」推进到「ViT 层应该连接哪个 LLM 层」。
以往的讨论通常集中在用最后一层、用若干中间层,还是把多层特征提前融合。DGP 把问题重新表述为 where to connect:视觉表征有层级,语言表征也有层级,真正要设计的是两套层级之间的连接关系。
第二,把预先指定的连接,扩展为覆盖全部 ViT–LLM 层对的动态路由。
所有视觉层与所有语言层都被 DGP 纳入候选连接空间。每个 LLM 层不再被死死绑在某个视觉层上,而是根据自身当前的多模态语义状态,给全部 ViT 层分配不同权重。所谓 all-to-all,指全部「层对」都能参与连接;实际路由用的是 Softmax 软加权,既不是在视觉 token 之间建两两连接,也不是只留少数层的硬路由。
第三,不只验证「能提分」,还分析「模型究竟怎样选层」。
消融实验显示,在当前设置下直接把全部视觉层平均反而明显掉点,学到手的动态权重才是收益的重要来源。进一步的可视化表明,路由会随 LLM 深度、任务类型、具体样本乃至同一图像上的不同问题而变化,这为性能提升提供了可解释的证据。
1. 只在开头看一次图,为什么会成为瓶颈?
ViT 并非每层都在重复编码同一种信息。论文把不同 ViT 层的注意力可视化后看到,浅层关注得比较分散,落在边缘、纹理和局部结构上;网络越深,注意力越往少数语义区域集中。
这种层级分工意味着,不同层各有价值:
浅层保留更多边缘、颜色、纹理等局部线索;
中间层更适合表达物体结构与局部—整体关系;
深层更偏向抽象语义和全局概念。
问题是,主流MLLM的做法通常很单一:只挑一个固定的ViT层,投影成视觉token,在LLM输入端注入一次就完事。之后视觉信息只能跟着隐藏状态在语言模型里一层层往下传。LLM各层本来承担着不同阶段的表征更新,可它们没有一条通路能直接回到完整的视觉层级,重新挑选当下需要的信息。
已有的多层视觉特征方法,大致走的是两条路:
第一条是先融合、后输入。具体做法是在视觉编码器那一侧,把多个ViT层压成一个表示,再送进LLM。信息来源确实变多了,但所有LLM层拿到的仍是同一份融合结果。
第二条是预定义跨层连接,把若干视觉层接到指定的语言层上。这条路开始顾及两侧的层级结构,不过连接位置和候选视觉层,通常还是人工事先定好的。
DGP 的不同之处就在这儿:它不替模型预先判断哪些层值得连,而是把全部ViT–LLM层对都开放出来,让模型依据当前的语义状态自己去学连接强度。
图 2:从固定单层、编码器侧融合和预定义连接,到 DGP 的全层动态连接。
2. DGP 如何让每个 LLM 层按需「翻阅」视觉层级?
DGP 的整个流程可以拆成三步:先判断当前需要什么,再挑出对应的视觉层,最后把融合结果写回当前语言层。
图 3:DGP 框架。每个 LLM 层都对全部 ViT 层生成一组路由权重,并通过门控残差连接更新视觉 token。
2.1 用语言层的当前状态发起一次「视觉查询」
具体做法是,在图像和问题之后、首个答案token之前,DGP插入一个可学习的glimpse token。自回归注意力的因果结构决定了这个位置能看到前面的图像与文本上下文;而它在不同LLM层里的隐藏状态,又记下了该层已经形成的多模态语义。
所以,DGP拿每个语言层的glimpse隐藏状态当查询信号。视觉那一侧,则取各ViT层的[CLS]表示作为层级摘要,映射到LLM隐空间后充当键和值。
说白了,glimpse token表达的是「当前这个语言层想找什么」,各ViT层的[CLS]摘要表达的则是「这一视觉层大致能提供什么」。
2.2 为全部视觉层动态分配权重
查询和视觉层摘要先送进一个多头交叉注意力模块,这个模块由所有LLM层共享,输出跨模态路由特征;接着,每个LLM层用自己独立的路由MLP,经Softmax算出覆盖全部ViT层的权重。
这套设计同时留住了两种特性:
共享交叉注意力给出统一的视觉层比较接口;
层特定路由器则让不同LLM层能形成各自的视觉偏好。
换句话说,图像换了提问,路由随之改变;图像和问题都不变时,不同LLM层挑出的视觉层组合也可能各异。所谓「动态」,说的是权重跟着图像—问题样本和LLM层走;至于答案生成过程中每出一个新token就重算路由,论文目前并没有这么做。
2.3 在相同空间位置融合,并以门控残差写回
拿到路由权重后,DGP在相同的patch位置上对各ViT层的特征做加权求和:
当前语言层的融合 patch = Σ(该语言层分配给第 k 个 ViT 层的权重 × 第 k 层对应位置的 patch)
这么做既能组合不同语义粒度,又不会打乱patch之间的空间对应关系。融合结果接着经过当前LLM层专属的投影器,再通过一个可学习的标量门控,以残差方式写回该层的视觉token。
完整过程可以概括为:
当前LLM层先生成查询,依据语言层状态对全部视觉层做动态加权,再按位置融合patch,最后经门控注入本层。
这样一来,视觉信息不是只在输入端露一次面,而是全程参与LLM逐层的表示更新。
2.4 熵正则拦住路由过早「只认一层」
把所有候选连接都放开,模型未必就会主动去用。训练早期若路由很快扎堆到少数视觉层,DGP照样会退化成接近固定连接的样子。
于是论文在预训练阶段引入熵正则:最大化每个LLM层在一个batch上的平均路由分布熵,让不同视觉层都有机会被探索。它约束的是batch平均分布,而非逼每个样本均匀调用所有层,单个问题仍可形成明确偏好。
预训练时正则系数取0.01;转入指令微调后关掉,路由得以进一步专门化到具体任务需要的视觉粒度。
3. LLaVA-1.5-7B的11项指标均提升,
并在两种额外框架上复现增益
实验先从LLaVA-1.5起步,覆盖Vicuna-7B与Vicuna-13B两种规模。评测任务包括GQA、SQA-I、VQAv2、VizWiz、SEED、LLaVA-Wild、MM-Vet、MMBench和POPE,涵盖通用视觉问答、细粒度感知、指令跟随与幻觉评估。
表1:DGP与主流MLLM及多层视觉特征利用方法的对比。
7B配置下,DGP在表内11项指标上相对LLaVA-1.5全部上涨:
SQA-I:66.8 → 71.0,涨4.2分;
MM-Vet:30.5 → 33.8,涨3.3分;
VizWiz:50.0 → 53.1,涨3.1分;
LLaVA-Wild:63.4 → 66.5,涨3.1分。
与同表7B的多层视觉特征方法比,DGP在GQA、SQA-I、SEED、LLaVA-Wild、MM-Vet和MMBench-CN六项上拿到最高的已报告分数。
13B配置下,DGP有10项指标压过LLaVA-1.5基线。VizWiz涨3.8分,MMBench涨2.4分,GQA涨2.2分。
视觉编码器、语言骨干、分辨率策略全换掉,DGP照样管用
为确认DGP是否只对LLaVA-1.5有效,团队把它接进两个差别不小的框架:
Qwen3-VL-2B:SigLIP2-L + Qwen3-1.7B;
LLaVA-NeXT:CLIP-L + Vicuna-7B,并采用AnyRes高分辨率切片。
表2:DGP在Qwen3-VL-2B与LLaVA-NeXT上的结果。
两个框架报告的四项指标全部上升。Qwen3-VL-2B的SQA-I从85.3升到86.9;LLaVA-NeXT的SQA-I从69.5升到72.3,MMBench从66.5升到68.7。论文测试的三种配置里,不同视觉编码器、语言骨干及AnyRes分辨率方案下DGP都带来增益,初步显出跨架构可迁移性。
看这么多层,代价有多大?
表 3:batch size 取 1 时,参数量、生成 FLOPs 与峰值显存的情况。
放到 7B 模型上看,DGP 的参数多了 5.29%,FLOPs 增加 4.07%,峰值显存几乎没动;换到 13B 模型,参数增幅为 4.27%,FLOPs 实测值大致持平,峰值显存则上升 4.13%。这套模块并非零成本,只是额外开销还算克制。
从分数回到具体回答:先看清,才有可能答对
论文给出的案例里,LLaVA-1.5 会读漏菜单上的价格、凭空编出并不存在的餐品,也没法把图中的文字、动作、表情跟问题对应起来。DGP 在恢复相关视觉证据上更准:
菜单那道题,它读出了 6.90 与 7.90 欧元,总价 14.80 欧元算对了;
多步动作图里,它认出了「打响指后单脚跳」;
经典的猫咪表情包,它把人物情绪和猫的神态之间的反差解释得更完整。
这些例子当然不能证明所有错误都出在视觉连接方式上,但它们把一条关键链条摆得很直观:问题相关的视觉证据更可靠,后续推理踩到错误前提的机会就会少一些。
4. 关键消融:更多视觉层不等于更多有效信息
DGP 的收益到底来自动态路由,还是仅仅因为模型多看了几层 ViT?
研究团队做了个直接对照:不学路由权重,把全部 24 个 ViT 层均匀平均。结果非但没涨,多数指标还明显低于单层基线。
表 4:平均融合、动态门控路由与熵正则的组件消融。
MM-Vet 从基线的 30.5 掉到 25.3;
MMBench 从 64.3 掉到 57.6;
LLaVA-Wild 从 63.4 掉到 56.3。
原因不难想:浅层、中层、深层特征所处的语义粒度各不相同,不加区分地叠在一起,互补信息很可能混成噪声。
加上动态门控路由之后,MM-Vet 与 MMBench 分别回到 32.4 和 65.6;再叠加熵正则,两者进一步升到 33.8 和 66.7,SQA-I 也从 70.5 提到 71.0。
这组消融给出的解释,比「用的层多所以更强」更有说服力:
在当前的 LLaVA-1.5-7B 设置下,单纯增加视觉层或者把它们平均,都不足以带来提升;真正起作用的重要来源,是学出来的层级权重。
5. 路由可视化:同一张图,
问题一变,模型挑的视觉层也跟着变
倘若 DGP 真的在按需路由,学到的权重就不该一直压在最后一个 ViT 层上,也不该退化成均匀平均。
可视化结果跟这个预期对得上:
不同的 LLM 层各有偏好。中间那些 ViT 层整体被激活得更频繁,但浅层和深层同样会被特定的语言层挑中。有代表性的曲线往往出现多个峰,说明模型是把多种视觉粒度组合起来用,而非只押在某一层上。
任务不同,路由的偏好也不同。固定观察第 21 个 LLM 层,LLaVA-Wild、VizWiz 与 SQA-I 会各自形成不一样的视觉层权重分布。落到同一任务内部,样本之间同样存在差异:路由的分化并不止于数据集这个层面,还会进一步细化到单个输入。
更直白的证据,来自「固定图像、只换问题」的对照实验。
问题问的是颜色、属性或小区域细节时,路由更倾向于保留纹理与局部结构的浅层或浅中层特征;问题一旦转向画作身份、历史意义、场景含义或动作理解,权重就移向中深层或深层。碰上「详细描述图像」这类既要局部细节又要整体语义的问题,权重分布会覆盖更多视觉层级。
这种路由差异,最终也会体现在融合后的空间特征上。图 7:固定使用 CLIP 第 23 层、平均全部 24 层,以及 DGP 在不同 LLM 层生成的融合特征。
只固定单层时,空间响应偏粗,背景里干扰不少;均匀平均虽然把多层信息加了进来,响应依然比较分散。论文展示的 DGP 特征则不同,主体轮廓更清晰,勺子边缘、建筑边界这类局部结构也保留得更好。LLM 第 1、18 和 28 层的融合结果同样各有差别,说明路由并没有塌缩成一套固定模板。
6. 适用边界:这是一个有前景的连接原则,但还不是最终答案
DGP 目前的验证主要还集中在 LLaVA-1.5 的 7B/13B 配置上,并扩展到了 Qwen3-VL-2B 与 LLaVA-NeXT。至于 30B 以上的语言模型、更多种类的视觉编码器以及规模更大的多模态语料,论文还没有做系统验证。
另外,全层动态连接会带来额外的参数与计算开销。现有实验里的增量相对有限,可随着模型层数和视觉分辨率继续往上走,它的扩展效率仍值得再研究。
所以更准确的说法不是「DGP 已解决多模态视觉瓶颈」,而是:论文用跨架构实验、消融和路由分析给出了证据——在已经测试过的模型与数据设置中,视觉—语言怎么连,会明显影响多项基准的表现,这是一个值得继续验证的设计维度。
结语
过去,多模态模型常把视觉编码器当成一次性的信息入口:挑好一个层,生成一组视觉 token,后面的理解全交给 LLM。DGP 改掉了这一点,把视觉—语言连接从一根固定管道,变成一组由语言层状态控制的动态路径。如果把 ViT 的多层特征看作一座按抽象程度排列的资料库,传统方法更像在进入 LLM 之前复印其中一页,让所有语言层反复去读;DGP 则让每个语言层根据当前问题,回到资料库里挑自己需要的页面。
这项工作带来的启示也就不止于一个新模块:多模态模型的瓶颈,未必总是视觉编码器不够强、数据不够多或语言模型不够大,也可能出在两种模态之间过于僵硬的「接线方式」上。真正重要的,不是让模型无差别地看得更多,而是让它在合适的语言层、用合适的视觉粒度,看见与当前问题真正相关的信息。