跳转至

DPC: Dual-Prompt Collaboration for Tuning Vision-Language Models

会议: CVPR 2025
arXiv: 2503.13443
代码: https://github.com/JREion/DPC
领域: 多模态VLM
关键词: prompt tuning、base-new trade-off、双提示协作、硬负样本、CLIP微调

一句话总结

提出双提示协作(DPC)框架,通过冻结原始调优提示保持新类泛化、训练并行提示强化基类性能,配合加权解耦推理机制,作为即插即用模块在 4 种 prompt tuning 基线上一致提升 base-new 调和均值。

研究背景与动机

领域现状:CLIP prompt tuning 通过学习连续 prompt 向量适配下游任务,在基类(base)上取得很好效果。代表方法包括 CoOp(文本 prompt)、MaPLe(多模态 prompt)、PromptSRC(带正则化的独立视觉-语言 prompt)等。

现有痛点:所有现有方法都面临 Base-New Trade-off(BNT)问题——在基类上微调得越好,对新类(未见类别)的泛化能力就越差。这是因为 prompt 作为单一实体被优化,增强基类区分度的梯度方向和保持新类泛化的方向往往互斥。

核心矛盾:prompt 需要同时服务两个矛盾目标——精确适配基类(要求 prompt 特化)和泛化到新类(要求 prompt 保持通用性)。现有方法在特征层做正则化或解耦,但没有从 prompt 层面根本解决这个矛盾。

本文目标 在 prompt 层面实现基类优化和新类泛化的解耦,让两者不再互相制约。

切入角度:既然单个 prompt 无法同时满足两个目标,就用两个 prompt——一个冻结的已调优 prompt 保泛化,一个新的并行 prompt 用更强的对比学习继续优化基类性能。推理时根据是基类还是新类分配不同权重。

核心 idea:用"双提示 + 加权解耦"在 prompt 层面彻底分离基类优化和新类泛化,使两者独立可控。

方法详解

整体框架

两步训练流程:Step 1 正常训练目标 prompt learner(如 CoOp)得到调优 prompt \(P\) → Step 2 冻结 \(P\),克隆出并行 prompt \(P'\),用动态硬负样本优化器(DHNO)微调 \(P'\) → 推理时,基类用加权混合 \(\tilde{P}_b = \omega_b P' + (1-\omega_b) P\),新类几乎完全用冻结的 \(P\)

关键设计

  1. 双提示初始化与冻结策略:

    • 功能:在 prompt 层面实现基类/新类目标解耦
    • 核心思路:将第一步训练得到的 prompt \(P\) 完全冻结(保留新类泛化能力),然后克隆 \(P\) 的参数初始化并行 prompt \(P'\)\(P'\) 继续优化用于增强基类性能,而 \(P\) 的冻结确保新类性能不受任何影响
    • 设计动机:\(P\) 经过第一步训练已经具备了对新类的最佳泛化能力。如果继续在其上训练,这种泛化必然衰减。冻结+克隆的策略从根本上切断了 BNT 的因果链
  2. 动态硬负样本优化器(DHNO):

    • 功能:用更难的对比学习任务高效提升并行 prompt 的基类区分能力
    • 核心思路:三个子模块协作——(1) 负样本采样器:用冻结的 \(P\) 推理基类数据,取 Top-K 结果中的非正确类别作为硬负样本,构造小批次 \(C' = \{T_g, T_j^-\}_{j=1}^{K-1}\);(2) 特征过滤:对所有基类文本特征做 L2 归一化保持全局分布,用选择矩阵 \(Q\) 提取硬负样本特征;(3) 硬负样本优化:用对称 InfoNCE 对比损失替代标准交叉熵,双向(text→image, image→text)优化匹配
    • 设计动机:模型自身的 Top-K 推理结果包含最易混淆的类别(语义最相近的负样本),比随机采样更有效。对称对比损失比交叉熵能实现更深的跨模态对齐(消融实验中 CE 仅提升 0.22 HM,对比损失提升 1.29)
  3. 加权解耦模块(WDM):

    • 功能:推理时为基类和新类分配独立的 prompt 权重
    • 核心思路:基类推理用 \(\tilde{P}_b = \omega_b P' + (1-\omega_b) P\)(默认 \(\omega_b = 0.2\),以原始 prompt 为主、并行 prompt 补充);新类推理用 \(\tilde{P}_n = \omega_n \cdot \mathcal{F}^{-1}(\tilde{P}_b) + (1-\omega_n) P\)(默认 \(\omega_n \approx 0\),即几乎只用冻结的原始 prompt)
    • 设计动机:理论上证明了 prompt 优化不改变特征通道分布(特征通道不变性),因此线性加权累加是合理的。\(\omega_n \approx 0\) 意味着新类推理时并行 prompt 完全不参与,从根本上避免了 BNT

损失函数 / 训练策略

Step 2 使用对称 InfoNCE 对比损失 \(\mathcal{L}_{CL}\),在硬负样本构成的小批次上计算 text→image 和 image→text 的匹配得分。训练 20 epoch,额外增加约 8K 参数(从 8K 到 16K),内存增加仅 0.25GB。

实验关键数据

主实验

方法 Base New HM
CoOp 81.98 68.84 74.84
CoOp+DPC 85.15 68.84 76.13
MaPLe 83.52 73.31 78.08
MaPLe+DPC 85.93 73.31 79.12
PromptSRC 83.45 74.78 78.87
PromptSRC+DPC 86.10 74.78 80.04
PromptKD 86.86 80.55 83.59
PromptKD+DPC 87.55 80.55 83.91

消融实验

配置 Base New HM 说明
CoOp baseline 81.98 68.84 74.84 基线
+双提示 82.69 68.39 74.86 仅克隆微小提升
+双提示+DHNO 84.28 64.12 72.83 无解耦时 BNT 严重
+双提示+DHNO+加权+解耦 85.15 68.84 76.13 完整框架最优

关键发现

  • DPC 对所有基线一致有效:在 4 种不同架构的 prompt learner 上都提升 base 准确率 0.69-3.17 个点,同时完美保持 new 准确率不变
  • 解耦是必要条件:DHNO 单独使用会导致新类精度从 68.84 降到 64.12(BNT 加剧),必须配合 WDM 的解耦才能避免
  • 对称对比损失远优于交叉熵:CE + 硬负样本仅提 0.22 HM,换成对比损失提 1.29 HM,说明深度跨模态对齐需要双向优化
  • 计算开销极低:仅增加 ~8K 参数和 0.25GB 显存,FPS 几乎不变(767→758)

亮点与洞察

  • "prompt 层面解耦"的思路比特征层面更彻底:之前的 DePT 在特征空间做解耦受限于特征表达能力,而 DPC 在 prompt 空间做解耦提供了更大的优化空间,且可以精确控制推理时的基类/新类偏好
  • 自我硬负采样的巧妙设计:用自身模型的 Top-K 推理结果作为硬负样本,无需外部知识库或额外数据,这是一种优雅的自监督难例挖掘
  • 即插即用的工程友好性:不修改任何基线架构,仅在训练后加一步,兼容各种 prompt tuning 方法

局限与展望

  • 需要事先知道测试样本属于"基类"还是"新类"来选择不同的 \(\omega\) 值,在实际应用中可能需要额外的开/闭集检测
  • \(\omega_b = 0.2\) 作为固定超参可能不适用所有数据集——MaPLe 最优 \(\omega_b = 1.0\) 就说明了这一点
  • 仅在 ViT-B/16 上验证,ViT-L/14 等更大骨干的效果未知
  • 两步训练的总 epoch 数翻倍(20+20=40),虽然论文展示 5+5=10 也有效,但仍增加训练时间

相关工作与启发

  • vs DePT(特征解耦):DePT 在特征空间中分离基类和新类方向,但受限于特征空间的表达能力。DPC 在 prompt 空间解耦更灵活,在 PromptSRC 上 DPC 的 HM 提升(+1.17)比 DePT(+0.86)更大
  • vs CoPrompt / TCP:这些方法试图改进训练策略来缓解 BNT,但仍是单 prompt 优化。DPC 从架构上引入双 prompt,与这些方法正交可以组合
  • vs PromptKD:基于知识蒸馏的方法已经大幅缓解了 BNT,但 DPC 仍然能在其上进一步提升 base 0.69 个点

评分

  • 新颖性: ⭐⭐⭐⭐ 首次在 prompt 层面做基类-新类解耦,思路简洁但有效。硬负样本自采样也巧妙
  • 实验充分度: ⭐⭐⭐⭐⭐ 4 种基线、11 个数据集、极详尽的消融实验,每个组件的贡献都被清晰分离
  • 写作质量: ⭐⭐⭐⭐ 方法动机清晰,理论分析(特征通道不变性)为线性加权提供了支撑
  • 价值: ⭐⭐⭐⭐ 即插即用的特性使其具有很好的实用价值,但 BNT 问题本身的场景假设有限

相关论文