极市导读
本文介绍了CVPR 2025的DPC方法,通过在提示层面将基类和新类解耦成两组独立的提示向量,从根本上解决了视觉-语言模型微调中的基类性能与新类泛化冲突(BNT)问题,并在多种主流 Prompt Tuning 骨干模型和数据集上显著提升基类性能的同时完整保留新类泛化能力 >>加入极市CV技术交流群,走在计算机视觉的最前沿
论文题目:DPC: Dual-Prompt Collaboration for Tuning Vision-Language Models
arxiv 链接:https://arxiv.org/abs/2503.13443
代码仓库:https://github.com/JREion/DPC
TL;DR:DPC 通过 prompt 级别的解耦,完整地解决了 prompt tuning 微调过程中普遍存在的基类性能与新类泛化的冲突 (Base-New Trade-off)。
背景介绍
1. 提示学习 (Prompt Tuning)
提示学习 (Prompt Tuning 或 Prompt Learning) 是一种基于预训练 CLIP 模型的参数高效微调方法。
对于基础的 CLIP,一般会使用类似 "A photo of a [类别名]" 之类的手工构建的提示词 (hard prompt),去查询这个提示词对候选图像的图文相似度,从而找到与文本类别名对齐程度最高的图像。
为了使预训练的 CLIP 进一步适配下游数据集,有必要进行进一步的微调。这种微调可以通过精心构建提示模板 (例如,对于花卉数据集,可以把 prompt 扩展为:"A photo of a [类别名], a type of a flower."),或者通过微调基于 ViT 的 CLIP 图文编码器来实现。然而,手工 prompt 不一定是最优的;同时,由于 CLIP 编码器的参数量比较大,对其进行全量微调也不一定能达到很好的效果,尤其是样本量很少的情况下。
相比之下,prompt tuning 提出了一种更为简单高效的方法:它冻结了 CLIP 模型的全部参数,同时使用一组轻量级的提示向量 (soft prompt) 替换掉手工 prompt。在微调过程中,仅对这组提示向量进行优化,目标是获得接近最优性能的 query。这种设计可以仅使用极小的参数,使预训练的 CLIP 快速适配下游任务,同时能使 prompt 进一步逼近最优。
目前的 prompt tuning 相关研究,已经取得了很大的进展,发掘了包括文本 prompt (CoOp)、视觉 prompt (VPT) 和视觉-文本联合 prompt (MaPLe) 等多种形式。
2. 提示学习的 Base-New Trade-off (BNT)
为了检验微调的优化效果,和预训练 CLIP 在微调后的泛化能力,prompt tuning 在实验中引入了两个重要指标:基类微调性能 (Base Class) 和新类泛化性能 (New Class)。对于目标图文对数据集,在实验时会将它的分类对半切分,只在基类上进行微调,而保持新类的图文关系在微调时完全不可见,以此来检验模型的泛化水平。
广泛的实验,引出了 prompt tuning 中的一个非常关键的局限性:基类-新类性能权衡问题 (Base-New Trade-off,后续简称为 BNT)。这一问题类似 LLMs 中的灾难性遗忘:在基类上微调后,模型对未见过的新类的泛化能力,也会产生相应的降低。
为了克服这一问题,目前已经提出了很多优化方法。总体而言,这些方法一般是通过引入额外的约束,控制微调的优化方向,以避免向基类过度拟合。包括条件性的 context (CoCoOp/TCP)、语义距离度量 (KgCoOp) 、一致性损失 (PromptSRC) 、引入额外知识进行引导 (CaFo/HPT/ArGue/ATPrompt) 或使用教师模型进行知识蒸馏 (Promptkd/CasPL)。
DPC 的动机
尽管上述的基于约束的方法,从一定程度上缓解了 BNT 问题 (使基类性能和新类泛化水平均优于原始 CLIP),然而,这种缓解依然是不彻底的。
例如,PromptSRC 的实验显示,如果在最佳设置上进一步增加 epoch,模型内部就会出现 BNT 现象(例如图中的第 20 个和第 30 个 epoch 相比的性能变化)。
为什么会这样呢?我们认为:基类和新类的优化方向是互斥的,尽管施加的约束能够缓解向基类的过度偏移,但没有克服这种本质上的互斥性。
那么,这种互斥性是如何作用在 prompt tuning 的过程中的呢?我们发现,先前的相关工作,其基类和新类的优化过程和控制条件,都是针对于同一组提示向量上的。当使用基类数据进行微调时,微调的过程一定会使提示向量向基类逐渐拟合,因此,无论施加多么精细的控制条件,都一定会对新类任务产生干涉,从而难以达到全局最优。
这就引出了 DPC 的核心想法:既然同一组提示向量难以避免基类和新类的互相干涉,那么,把它解耦成两个特定于任务的子提示向量不就好了?
所以,DPC 本质上做了两件事:
(1) 构建了两组分别用于基类和新类的 prompt (成为 dual prompts)。在对给定的骨干模型进一步微调时,只去进一步优化用于基类的 prompt;这就可以保证基类的优化过程,不会影响另一组 prompt 在执行新类泛化任务时的性能。这样的设计,从更为根本的 prompt-level,解决了 BNT 问题。
(2) 由于上述设计,在微调基类的时候无需再担心新类泛化水平的降低,因此,DPC 提出了一种更为激进的基类优化策略,能够大幅提升基类性能。
DPC 的设计,是即插即用的,适配性非常广泛。同时,它从根本上分离了基类和新类的优化过程,这允许未来的研究更进一步地考虑更激进的基类微调策略,而无需担心 BNT;也允许为基类和新类设定不同的优化策略,独立提升两者的性能。总之,未来可期!
方法
DPC 作为一种即插即用的方法,建立在现有的 prompt tuning 骨干模型的基础上,旨在进一步提升骨干模型的基类性能,而不降低其新类泛化能力。下面给出 DPC 的整体框架图。
基类微调
对于已经经过微调的骨干模型,我们首先进行 prompt-level 的解耦:将骨干模型的提示向量进行完整克隆 (参数和数量完全不变),扩展出一个新的 parallel prompt,并激活,用于基类微调;原先的 tuned prompt 则被冻结,以保存模型的新类泛化能力。在 (a) 基类微调过程中,仅引入 parallel prompt 进行优化;在 (b) 基类和新类的推理任务中,则同时引入双提示进行协作,具体方法在后文中会进行说明。
为了提升基类性能,我们引入了一个被称为动态难分样本优化器 (Dynamic Hard Negative Optimizer) 的模块。这个模块的目的是构建一个基于难分样本的困难分类任务,通过促使模型学习难分样本之间的差异,来提升模型对基类的拟合程度。这个模块主要分为两步:
(1) 构建难分样本集。在这里,DPC 直接 reuse prompt tuning 骨干模型,对给定的图像进行动态 Top-K 推理,并将获得的推理类别视为难分类;随后,从训练集中随机采样类别标签对应的图像,从而构建难分图文对;
(2) 促使模型区分难分样本。为了强化图文对齐,DPC 把 prompt tuning 中常用的交叉熵损失,替换为更加强壮的图文对比学习损失,以促使模型更加深刻地学习如何去区分难分样本。需要注意的是,prompt tuning 的交叉熵损失会将全部基类候选文本作为输入,不满足对比损失的输入需求 (K 个一一对应的图像和文本输入)。因此,DPC 对文本特征引入了一个特征过滤 (feature filtering) 模块,排除掉与输入图像不相关的基类文本特征,以正确进行对比学习。
双提示协作的推理
在推理过程中,我们希望可以在一个完整的梯度传播流中,灵活地根据不同任务进行特定提示的调用。因此,我们引入了一个加权-解耦 (Weighting-Decoupling) 模块,以在基类和新类两种不同的推理任务中,实现 parallel prompt 和 tuned prompt 的双提示协作 (也就是标题中的 Dual-Prompt Collaboration)。
(1) 加权过程:我们引入了一个基类权重系数 w_b,将 parallel prompt 与 tuned prompt 直接进行加权混合 (由于初始化时规定了两者的尺寸完全相同,因此可直接在代数层面进行),得到一个混合提示 (mixed prompt)。在基类推理时,通过调整这个权重系数,就可以灵活地控制微调过程向基类拟合的程度,以搜索最优性能。
(2) 解耦过程:为了构建完整的梯度传播流,解耦模块使用了一个加权模块的逆运算,使 mixed prompt 还原为 parallel prompt 和 tuned prompt。前者用于微调过程,通过这一流程实现持续优化提示向量,不会截断梯度;后者则可以直接用于新类泛化任务中调用的 prompt (即设置新类权重系数 w_n→0)。
实验
性能评估
为了验证 DPC 的效果和即插即用性能,我们分别以 CoOp、MaPLe、PromptSRC、PromptKD 四个主流 prompt tuning 模型作为骨干模型,添加 DPC 模块后,在 11 个数据集上进行基类性能和新类泛化的实验。DPC 在全部 4 个骨干模型和 11 个数据集上,都取得了更好的基类性能,同时完整地保留了骨干模型的新类泛化能力。在 prompt tuning 中的其他两种度量泛化性能的实验(Cross-Dataset 跨数据集泛化,和 Cross-Domain 跨域泛化)中,DPC 同样达成了泛化性能的完整保留。
消融实验
这里比较重要的是对权重系数的消融。实验显示,对于 CoOp、PrompSRC 和 PromptKD 骨干模型,DPC 均在基类权重 w_b=0.2 时达到最优基类性能。这证明了 parallel prompt 和 tuned prompt 这对双提示,确实都在约束模型基类优化的过程中起到了作用。
更多的消融实验,可参考论文的正文和附录部分。我们对 DPC 各个模块的作用进行了广泛的实验和分析。
可解释性实验
尽管我们通过实验发现,通过 Weighting-Decoupling 的方式,就可以量化地控制模型向基类的拟合程度,但是,它为什么是有效果的?为了论证这一点,我们尝试使用可视化的方法进行实证分析。
具体而言,我们分别将随机初始化的提示向量、经过 CoOp 微调后得到的 tuned prompt,与 CoOp+DPC 进一步优化后的 parallel prompt,分别映射到下图中所示的 feature map,以观察向量表示的差异。我们发现,相比于原始提示,parallel prompt 的特征分布,与只经过 CoOp 微调的 tuned prompt 高度相似。
我们认为,这一现象的原因是:由于 parallel prompt 使用 tuned prompt 初始化,并且都是在相同的基类上进行微调的,这就使得两种 prompt 保持了类似的内部特征通道,也就是说,两者都是向同一个优化方向进行微调的。因此,权重累积的设计不会破坏正确的基类优化方向。这一特性允许 DPC 线性地构造 mixed prompt,实现了双提示的协作。
公众号后台回复“数据集”获取100+深度学习各方向资源整理
极市干货

点击阅读原文进入CV社区
收获更多技术干货

