跳转至

MMLoP: Multi-Modal Low-Rank Prompting for Efficient Vision-Language Adaptation

会议: ECCV2026
论文: ECCV 原文
代码: https://github.com/sajjad-ucsb/MMLoP
领域: VLM 效率
关键词: 多模态提示学习、低秩分解、跨模态共享、一致性正则化、少样本泛化

一句话总结

MMLoP 将 CLIP 两个编码器中的深层提示分解为共享低秩因子与模态专属因子,再用文本漂移校正和零样本一致性约束保护泛化能力,以约 11.5K 可训练参数取得 79.70% 的基础类到新类调和平均准确率,但并非绝对精度最高的方法。

研究背景与动机

CLIP 通过比较图像特征与类别文本特征完成分类,适配下游任务不一定需要修改整个模型。 CoOp 等方法只学习文本中的连续上下文向量,因此能以很小的参数预算利用少量标注样本。 但只改变类别描述,相当于让文本侧独自追赶固定的图像表示,难以充分调整两个模态的匹配关系。 后续方法把提示加入视觉与文本编码器的多个 Transformer 层,能更深入地影响表示形成过程。 这种设计提高了适配能力,却可能引入大型投影模块;例如本文比较的 MaPLe 有约 3.55M 可训练参数。

低秩分解看起来是直接的压缩办法:不让每个提示向量都自由变化,而是让它们由少量公共方向组合出来。 然而,参数少并不自动意味着泛化好,两个模态各自学习低秩提示仍可能形成不协调的更新。 本文的消融恰好展示了这一点:从独立视觉语言提示改成低秩提示后,调和平均准确率反而由 77.51% 降到 77.06%。 同时,基础类上的监督会把模型拉向训练类别,削弱 CLIP 原本对未见类别的识别能力。 因此真正的问题不是单纯减少参数,而是在受限的适配空间内保留预训练知识,并让两个模态作出一致的改变。

作者进一步区分了两种变化:有助于类别区分的特定残差,以及所有类别文本特征共同发生的整体位移。 前者需要保留学习自由度,后者被作者视为可能携带基础类偏置的冗余漂移。 本文据此把结构共享、显式漂移移除和零样本约束组合起来,而不是依赖一个更大的提示网络弥补压缩损失。 核心 idea:用共享低秩因子控制双模态提示的自由度,先去掉文本表示的公共漂移,再约束剩余适配不要偏离冻结 CLIP 的特征与预测分布。

方法详解

整体框架

输入是待分类图像以及候选类别名称,输出仍是图像与各类别文本表示的余弦相似度分类结果。 MMLoP 保持 CLIP 主干冻结,在两路编码器的若干前层插入可训练提示,并在每层通过共享低秩提示生成两种模态各自的提示矩阵。 文本编码完成后执行统一漂移校正,随后用校正后的类别特征和提示化图像特征计算分类分数。 训练额外运行冻结的零样本路径,通过自调节一致性约束提供特征和预测分布层面的参照;测试时不再计算这些训练损失。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
        Input["图像 + 类别名称"] --> Prompts["共享低秩提示"]
        Prompts --> Vision["冻结视觉编码器<br/>提示化图像特征"]
        Prompts --> Text["冻结文本编码器<br/>提示化类别特征"]
        Input --> Anchor["冻结零样本路径"]
        Text --> UDC["统一漂移校正"]
        Anchor -->|文本锚点| UDC
        Vision --> Scores["余弦分类分数"]
        UDC --> Scores
        Scores --> Prediction["训练分类损失 / 测试预测"]
        Vision -.-> SCL["自调节一致性约束"]
        UDC -.-> SCL
        Scores -.-> SCL
        Anchor -.-> SCL
        SCL -.->|仅训练:更新提示因子| Prompts

图中的冻结零样本路径不是新训练的教师模型,而是未加入提示的原始 CLIP。 虚线表示训练约束,不是测试时必须串行经过的额外预测模块。 统一漂移校正在训练和测试都保留,且需要相应的零样本文本锚点;这与只在训练中使用的图像一致性分支不同。

关键设计

1. 共享低秩提示:在提示位置上耦合两个模态

一般的深层提示会在每个选定层分别学习视觉和文本提示矩阵,每个矩阵的行对应提示 token,列对应编码器隐藏维度。 MMLoP 不直接优化整个矩阵,而是优化它的两个小因子,再相乘生成实际送入 Transformer 的提示。 默认视觉和文本提示长度相同,记为 \(T\);第 \(l\) 层共享一个 \(T\times r\) 的因子,两路保留不同的特征方向因子。 按第 4.2、4.5 节及算法 1 可读的维度关系,核心构造为:

\[ P_v^{(l)}=U^{(l)}V_v^{(l)},\qquad P_t^{(l)}=U^{(l)}V_t^{(l)},\qquad U^{(l)}\in\mathbb{R}^{T\times r},\quad V_v^{(l)}\in\mathbb{R}^{r\times d_v},\quad V_t^{(l)}\in\mathbb{R}^{r\times d_t}. \]

共享因子控制不同提示位置如何组合潜在方向,模态专属因子则把这种组合映射到视觉或文本的隐藏空间。 因此两个编码器的隐藏维度可以不同,不需要把视觉提示强行放进文本特征空间。 当 \(r=1\) 时,同一模态、同一层的各提示向量是一个方向的不同倍数;两个模态共享这些位置上的系数,但方向本身不同。 这个限制施加在新增提示上,而不是把整个 CLIP 表示压成秩 1,也不是将 Transformer 权重改成低秩权重。

从这些维度可直接推得,每层自由参数由 \(T(d_v+d_t)\) 减为 \(r(T+d_v+d_t)\);这是笔记的参数计数推导,不是额外实验。 各层拥有自己的因子,跨模态共享并不等于所有层共用一个矩阵。 共享因子同时接收视觉和文本路径传回的梯度,使两路的提示更新不再完全独立。 主干参数虽然冻结,训练时仍需通过主干反向传播到提示,因此参数节省不能等同于按比例减少计算量。 原文把共享关系称为相同的 row space;考虑到 \(d_v\) 与 \(d_t\) 可不同,更严格的理解是共享 token 维度上的因子与列空间约束,而非两个特征空间完全相同。

2. 统一漂移校正:保留类别差异,移除公共文本位移

对每个类别,先比较提示化文本特征与冻结的零样本文本特征,得到该类别的适配残差。 把所有类别残差取均值,就得到作者所说的公共漂移;再从每个类别残差中减掉这个均值。 这样保留的是相对其他类别不同的那部分变化,而不是把全部提示化特征直接重置回零样本表示。 第 4.4 节与算法 1 的操作可写为:

\[ r_k=\tilde g_{pk}-\tilde g_k,\qquad \bar r=\frac{1}{C}\sum_{k=1}^{C}r_k,\qquad \hat g_k=\frac{\tilde g_k+r_k-\bar r}{\|\tilde g_k+r_k-\bar r\|_2}. \]

这里 \(C\) 是参与均值计算的类别数量,不是一个训练批次中图像的数量。 归一化之前,减去共同向量不改变任意两类向量之差;归一化之后,相对于图像的余弦几何仍会改变,这正是分类结果可能改善的原因。 因此“公共位移没有类别特异信号”是作者的设计动机,不应被扩大为所有公共位移对余弦分类都严格无害的数学结论。 UDC 不引入可训练参数,只在已有类别特征上增加 \(O(Cd)\) 的均值与减法操作,其中 \(d\) 为最终嵌入维度。

校正不是训练完成后的单次修补,而是在优化过程中反复执行,让交叉熵和文本一致性项看到同一套校正后特征。 这避免了训练时迁就公共偏移、测试时突然移除偏移的目标错位。 同时,文本一致性约束不再把容量浪费在压制这部分已经被显式删除的变化上。 原文正文以训练类别定义均值,算法的测试行只写再次执行 UDC;基础类到新类测试时是否重算候选集均值,缓存没有明确交代,不能据此臆造具体实现。

3. 自调节一致性约束:同时保留表示与类别分布

即使提示容量很小,训练标签仍可能诱导模型过度专注基础类,因此作者额外引入冻结 CLIP 作为零样本参照。 图像侧用 \(L_1\) 距离约束提示化图像特征与原始图像特征,文本侧则约束 UDC 校正后的类别特征与原始类别特征。 这两个项限制表示如何移动,但仅比较特征还不能直接控制多个类别之间的预测概率关系。 为此,作者再加入提示模型与零样本模型输出分布之间的对称 KL 散度,而不是只在一个方向上进行蒸馏。

下面按第 4.3 节的文字含义整理总体目标;\(p\) 与 \(q\) 分别表示提示模型和零样本模型的类别概率分布,批次与类别聚合记号从略:

\[ \mathcal L=\mathcal L_{\mathrm{CE}} +\lambda_1\|\hat g-\tilde g\|_1 +\lambda_2\|\tilde f_p-\tilde f\|_1 +\frac12D_{\mathrm{KL}}(p\|q) +\frac12D_{\mathrm{KL}}(q\|p). \]

原文公式把相似度记号直接放入 KL,本笔记明确写成概率分布,以避免把未归一化余弦分数当作概率。 缓存未清楚呈现分布温度与所有归约细节,上式只表达可确认的损失组成,不冒充完整复现代码。 对称 KL 的作用是从两个方向约束预测分布,而不是证明两路梯度大小相同或必然优于单向 KL。 作者将单向与对称版本的对比放在附录表 A3,当前缓存不含该表,因此这里不报告其数值收益。

三项设计作用的位置不同:共享低秩提示约束参数结构,UDC 直接改写文本表示,一致性约束则控制学习目标。 它们并不是三个可以任意交换顺序的后处理模块,尤其是文本一致性必须作用在校正之后。 这一解释也对应消融:单独限制秩会损失精度,加入零样本约束之后,新类识别才显著恢复。

损失函数 / 训练策略

默认主干为 CLIP ViT-B/16,视觉和文本各使用 4 个提示 token,秩为 1。 基础类到新类与同类别少样本实验在前 9 层加入提示;域泛化实验改为前 3 层,不应把两种配置混为一谈。 低秩因子采用标准差为 0.05 的正态初始化,提示因子之外的 CLIP 参数不更新。 训练使用 SGD,学习率为 0.0025,文本与图像一致性权重分别为 \(\lambda_1=25\) 和 \(\lambda_2=10\)。 基础类到新类训练 30 个 epoch,同类别少样本与域泛化训练 50 个 epoch,结果按 3 个随机种子平均。 零样本文本锚点由 60 个标准文本模板构成的集成获得,而不是只有单一手写句子。 测试时生成提示化图像特征和经过 UDC 的候选类别特征,以最大余弦相似度给出类别;不需要测试图像标签或继续更新提示。

实验关键数据

主实验

表 1(第 11 页)的基础类到新类协议将每个数据集的类别均分,训练只使用基础类、每类 16 张图像。 下表保留原文跨 11 个数据集的 Average 栏;Base、Novel 和 HM 的单位均为 %,HM 表示 \(2BN/(B+N)\),其中 \(B\)、\(N\) 为对应的基础类和新类准确率。

方法 Base Novel HM
CLIP 69.34 74.22 71.70
CoOp 82.69 63.22 71.66
MaPLe 82.28 75.14 78.55
PromptSRC 84.23 75.48 79.62
CLIP-LoRA 85.32 70.63 77.28
MMA 83.20 76.80 79.87
CoPrompt 84.00 77.23 80.48
MMLoP 83.79 75.98 79.70

MMLoP 的 HM 比 PromptSRC 高 0.08 个百分点,却低于 CoPrompt 的 80.48%,主张应是精度与参数预算的有利折中。 表 3(第 13 页)的同类别少样本实验中,ViT-B/16 在 4、8、16-shot 下分别取得 77.5%、79.6%、81.5% 的平均准确率。 其中 4-shot 比 CLIP-LoRA 的 77.4% 略高,16-shot 则低于其 83.0%,说明优势与数据量和评测协议有关。 表 2(第 12 页)的四个目标域平均准确率为 60.46%,接近 MMA 的 60.48%;ImageNet-R 为 77.63%。

消融实验

表 4(第 14 页)按顺序累加组件,沿用 11 个数据集的基础类到新类设定;以下均为准确率或 HM(%)。

配置 Base Novel HM
独立视觉语言提示 IVLP 84.21 71.79 77.51
+ 低秩提示 83.70 71.39 77.06
+ 一致性损失 SCL 83.60 74.48 78.78
+ 统一漂移校正 UDC 83.78 75.12 79.20
+ 共享上投影,完整 MMLoP 83.79 75.98 79.70

一致性损失带来最大的单步新类增益:71.39% 到 74.48%,增加 3.09 个百分点。 随后 UDC 增加 0.64 个百分点,共享上投影再增加 0.86 个百分点;后一步 HM 增加 0.50 个百分点。 这些是给定累加顺序下的条件增益,不是各组件独立贡献的完整因果分解。

关键发现

表 6(第 15 页)提供单张 A6000、ViT-B/16、11 个数据集平均的系统开销,下表选取与参数效率直接相关的列。 参数单位为 M,显存为 GB,训练和测试耗时为 ms/img;0.012M 是表中的舍入值,正文报告约 11.5K。

方法 可训练参数 峰值显存 训练耗时 测试耗时
CoOp 0.008 1.96 19.39 1.94
PromptSRC 0.046 2.99 30.16 2.29
MaPLe 3.555 2.27 19.75 2.03
CoPrompt 3.818 2.62 20.49 1.39
CLIP-LoRA 0.184 4.39 34.32 2.27
MMLoP 0.012 2.33 20.28 1.79

MMLoP 比 MaPLe 节省大量可训练参数,但显存 2.33 GB 高于 2.27 GB,训练单图耗时也并非更低。 表 6 的文字称其参数量最低,但同表 CoOp 的 0.008M 更少;应限定为比所比较的多模态方案更省参数。 表 5(第 14 页)的超参数分析只平均 9 个数据集,不能与表 1 的 11 数据集总结果直接比较。 该表中秩 1、2、4 的 HM 分别为 79.91%、79.59%、79.71%,没有出现增加秩必然提高泛化的趋势。

亮点与洞察

  • 把共享放在提示位置的低秩因子上,而不要求两个模态的隐藏维度一致。这样可以在保持模态专属方向的同时,让结构更新相互约束。
  • 将适配残差拆成公共与类别特异部分,再决定如何正则化。这个思路比直接强迫所有提示化特征回到原点更有针对性。
  • 同时展示压缩失败的起点和逐步恢复的过程。低秩本身不是性能提升的充分条件,表 4 让这一点可被直接检验。

局限与展望

  • 细粒度任务仍有容量瓶颈:表 1 的 FGVCAircraft HM 为 38.01%,低于 PromptSRC 的 39.69% 与 CoPrompt 的 39.76%。
  • 更少可训练参数不等于更少总计算、最低显存或最快测试。冻结主干仍承担主要编码工作,一致性训练还需要零样本参照。
  • 缓存有公式抽取损坏且不含附录;附录对称 KL 消融、ViT-B/32 详细结果以及测试类别均值的实现细节未能独立核实。
  • 本笔记的后续建议是检验动态候选类别集合对 UDC 的影响。均值依赖参与的类别集合,开放词表扩展时应单独验证其稳定性。

相关工作与启发

  • 与 CoOp / IVLP 相比:CoOp 主要适配文本侧,IVLP 独立学习两路提示;MMLoP 保留深层双路适配,却约束两路提示的生成结构。
  • 与 PromptSRC 相比:本文继承零样本自约束的思路,并加入对称 KL 与漂移校正;创新不是首次使用冻结 CLIP 作为一致性参照。
  • 与 CLIP-LoRA 相比:CLIP-LoRA 在主干权重空间进行低秩适配,MMLoP 在提示空间操作。前者在 16-shot 同类别分类更强,后者在基础类到新类 HM 上更有优势。
  • 研究启发:可研究按类别或层分配容量的提示,同时保留低成本共享结构。这是由细粒度瓶颈引出的建议,并非本文已验证的方法。

评分

  • 新颖性: 4/5。低秩提示并非首次提出,但跨模态因子共享与漂移校正形成了具体、可解释的组合。
  • 实验充分度: 4/5。覆盖多种分类协议、组件消融和系统开销,但当前缓存不含附录,微小收益也缺少表内方差支持。
  • 写作质量: 4/5。方法和累加消融对应清楚,空间术语与部分效率概括需要更严格的限定。
  • 价值: 4/5。适合对每任务可训练参数和存储预算敏感的 CLIP 适配场景,不是追求绝对最高准确率的通用替代品。