跳转至

Prompt-Robust Vision-Language Models via Meta-Finetuning

会议: ICLR 2026
OpenReview: https://openreview.net/forum?id=3wZ6IIwPJq
代码: 待确认(作者称代码将开源)
领域: 多模态VLM
关键词: 提示鲁棒性, 元学习, 双层循环, 提示加权, Token 级学习率

一句话总结

针对 CLIP 类视觉语言模型"换个说法 prompt 性能就大幅波动"的脆弱性,本文提出 Promise——把同一任务下语义等价的不同 prompt 模板当作元学习里的"任务",用内外双层循环 + 自适应 prompt 加权 + Token 级学习率,学到一组对措辞不敏感的 prompt token,15 个 benchmark 上既降低了 prompt 敏感度又提升了泛化(11 数据集 base-to-new 调和均值 +1.13)。

研究背景与动机

领域现状:CLIP / ALIGN 这类视觉语言模型靠大规模图文对齐获得了强零样本能力,常见用法是把类别填进手写模板(如 "a photo of a [CLASS]"),用文本特征和图像特征算相似度做分类。后续 prompt learning(CoOp、CoCoOp、MaPLe、PromptSRC、MMRL 等)把手写模板换成可学习 token,进一步提升下游适配。

现有痛点:这些模型对 prompt 措辞高度敏感——同一张图,只是把模板换个等价说法("a photo of"→"itap of the"→"a bad photo of a"),预测置信度和准确率就会大幅抖动。论文 Figure 1 显示 CLIP、MaPLe 在五种 prompt 下波动很大且整体置信度偏低。这种不稳定让 VLM 在真实部署时很不可靠。

核心矛盾:现有 prompt learning 方法(无论学整句模板还是学 token)在训练和推理时都绑定一组固定的 prompt 模板,相当于只为某一种措辞优化,自然对换措辞缺乏鲁棒性。而已有的元学习类 prompt tuning(GRAM、MetaPrompt、ProMetaR)虽然引入了元学习,但目标是跨任务/跨域泛化,仍假设 prompt 模板固定,没有专门处理"同一任务内部不同措辞之间的鲁棒性"。

本文目标:构建 prompt-robust 的 VLM——预测在同一任务的多样 prompt 措辞下保持稳定,即把研究轴从"任务级/域级泛化"切换到"任务内 prompt 鲁棒性"(intra-task robustness)。

切入角度:作者的关键观察是,可以把"同一数据集下语义等价的不同 prompt 模板"直接当作元学习意义上的不同"任务",在训练时主动模拟 prompt 分布漂移——内层在一批模板上适配 token,外层在另一批不相交的模板上检验泛化,从而逼模型学出对措辞不变的 token 表示。

核心 idea:用"把 prompt 模板当任务"的双层循环元微调,外加自适应 prompt 加权和 Token 级学习率,把一个全局共享的 SGD 初始化变成"prompt 感知"的初始化,使内层一步更新既降外层风险又压缩跨 prompt 敏感度。

方法详解

整体框架

Promise 是一套加在已有 prompt learner(MaPLe / IVLP / MMRL 等)之上的元微调训练策略:保持它们的骨架不变,只把原来的优化过程替换成双层循环。给定一个数据集,作者用 PromptSRC 提供的 60 个手写模板,每个 episode 随机抽 30 个模板做内层适配、另 30 个不相交模板做外层泛化检验。内层针对每个模板把可学习 token 向该模板的损失方向走一步,得到适配后参数 \(\hat\theta\);外层用这些 \(\hat\theta\) 在不相交模板上算损失,反过来更新共享元参数 \(\theta\)。在这个 MAML/Reptile 式骨架上,作者再插入两个模块:自适应 prompt 加权(让更可迁移的模板在内层占更大权重)和 Token 级学习率(用一个小网络为每个 token 生成专属学习率)。三者协同,最终学到对 prompt 措辞不变、且泛化更好的 token 表示。理论部分进一步证明这套"加权 + 预条件"的内层更新能一步降外层经验风险、收缩跨 prompt 敏感度,并收紧数据相关的泛化界。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
    A["输入:图像 x + 60 个<br/>prompt 模板(PromptSRC)"] --> B["每 episode 抽 30+30<br/>不相交模板 Pin / Pout"]
    B --> C["双层循环元微调<br/>内层适配 Pin、外层泛化 Pout"]
    C --> D["自适应 prompt 加权<br/>单纯形上按可迁移性配权重"]
    C --> E["Token 级自适应学习率<br/>H(·) 为每个 token 生成 αi"]
    D --> F["加权·预条件内层更新<br/>得 prompt 感知初始化 θ̂"]
    E --> F
    F --> G["输出:对措辞不变的<br/>prompt token + 鲁棒预测"]

关键设计

1. 双层循环元微调:把不同 prompt 模板当作元学习的"任务"

这一设计直接针对"训练绑定固定模板→换措辞就崩"的根因。作者把内外层模板集 \(P_{in}\)\(P_{out}\) 设成不相交(\(P_{in}\cap P_{out}=\varnothing\)),让元学习里的"任务"对应同一数据集、同一标签空间下的不同自然语言措辞,而非不同数据集。内层对每个 \(T_i\in P_{in}\) 适配 token 嵌入 \(e_i\)\(\hat\theta=\theta-\alpha\sum_{T_i\in P_{in}}\nabla_\theta L_{in}(f(e_i,x),y)\);外层用适配后的 \(\hat\theta\) 在不相交的 \(P_{out}\) 上更新元参数:\(\theta=\theta-\beta\sum_{T_j\in P_{out}}\nabla_{\hat\theta}L_{out}(f(e_j,x),y)\)。这样"在一批措辞上适配、再到另一批没见过的措辞上检验稳定性"被显式编进训练目标,正好对准任务内 prompt 鲁棒性。它受 MAML 启发,但 MAML 对所有输入一视同仁、无法区分模板质量——这正是下面两个模块要补的短板。实现上用 Reptile 的一阶近似、内层迭代 3 次以省去二阶梯度。

2. 自适应 prompt 加权:让更可迁移的模板在内层占更大话语权

不同 prompt 模板的可迁移性天然不同,平均对待会让"噪声模板"拖累适配。作者给每个内层模板 \(T_i\) 配一个可学习权重 \(w_i\) 来缩放其损失,内层更新变为 \(\hat\theta=\theta-\alpha\sum_{T_i\in P_{in}}w_i\nabla_\theta L_{in}(f(e_i,x),y)\),权重本身在外层被优化(类似 mixture-of-experts 的思路)。为控制方差,外层把权重约束在概率单纯形 \(\Delta^{N-1}=\{w\ge0,\sum_i w_i=1\}\) 上——通过带温度 \(\tau\) 的熵镜像映射(先对未归一化分数 \(\{s_i\}\) 做梯度更新,再用 mirror descent 归一化到单纯形)。温度 \(\tau\) 调节探索与集中:\(\tau\) 大则把质量摊开、稳定梯度,\(\tau\) 小则把质量集中到高效用模板、降低估计方差;可选的熵正则 \(\lambda H(\tilde w)\)(或 entmax 稀疏替代)防止退化坍缩,保留少数高效用模板、剪掉噪声模板。直观上,这让学习信号聚焦在"最能迁移到未见措辞"的 prompt 上,而无需手调每个模板的系数。

3. Token 级自适应学习率:按每个 token 的语境重要性细粒度调节步长

即便选对了模板,对一条 prompt 里所有 token 用统一学习率仍然太粗。作者借鉴 MetaSGD(为每个参数学一个学习率),但把它扩展成数据驱动、token 级的版本:用一个 3 层 MLP 网络 \(H(\cdot)\),输入是文本编码器抽出的每个模板特征,输出每个可学习 token \(e_i\) 的专属学习率 \(\alpha_i=H(e_i)\)。内层更新进一步细化为 \(\hat\theta=\theta-\alpha_i\sum_{T_i\in P_{in}}w_i\nabla_\theta L_{in}(f(e_i,x),y)\)。由于 \(\alpha_i\) 由 token 自身的语义/语境特征生成,模型可以对不同 token 因"重要性"差异采用不同步长,而非全局一刀切;\(H(\cdot)\) 的参数同样在外层随 \(\theta\) 一起被优化(\(H=H-\beta\nabla_H L_{out}\))。在理论视角下,自适应权重 \(w\) 提供"方差缩减"、token 级对角学习率构成"预条件子" \(P=\mathrm{diag}(\alpha_1,\dots,\alpha_d)\),二者结合把内层一步更新沿"能泛化到 \(P_{out}\) 的方向"放大、抑制不稳定方向。

损失函数 / 训练策略

内外层都用分类损失(在 CLIP-ViT-B/16 上对 prompt token 适配)。训练配置:prompt 深度 9、语言与视觉 prompt 长度各 2,10 个 epoch、batch size 8、学习率 0.0035、SGD、单张 A6000;ImageNet 全 1000 类做源模型时 prompt 深度设 3、5 个 epoch。外层用 Reptile 一阶近似、内层迭代 3 次,结果对 3 个随机种子取平均。理论上(Theorem 4.1 / 4.2)证明这套加权·预条件内层更新可一步降低外层经验风险 \(\hat R_{P_{out}}\)、收缩跨 prompt 敏感度 \(S(\theta)=\mathrm{Var}_{T}[f_\theta(x;T)]\),并收紧在 post-inner 初始化处评估的数据相关泛化界(界中含 \(\sqrt{\mathrm{Tr}(P\Sigma_w P)}\) 项,减小它即收紧界)。

实验关键数据

主实验

覆盖 15 个数据集,含 base-to-new 泛化、跨数据集迁移、域泛化。下表为 11 个数据集 base-to-new 的平均(H 为 base/novel 调和均值):

方法 Base Novel H
CLIP 69.34 74.22 71.70
CoCoOp 80.47 71.69 75.83
PromptSRC 84.26 76.10 79.97
DePT 85.19 76.17 80.43
ProMetaR 84.39 76.93 80.49
HPT++ 84.13 77.99 80.95
MMRL(前 SOTA) 85.68 77.16 81.20
Promise(本文) 86.14 (+0.46) 78.84 (+0.85) 82.33 (+1.13)

Promise 作为"训练策略"可叠加到不同 backbone 上并稳定涨点(Table 1):

基础模型 Base Novel H
IVLP 82.51 73.35 77.66
+ Promise 83.26 75.44 (+2.09) 79.16
MaPLe 82.28 75.14 78.55
+ Promise 83.57 77.26 (+2.12) 80.29
MMRL 85.68 77.16 81.20
+ Promise 86.14 78.84 (+1.68) 82.33

提升主要来自 novel 类(+1.68~+2.12),base 类持平或略升,说明 Promise 增强的是泛化而非过拟合 base。单数据集上 StanfordCars(H +3.45)、Flowers102(novel +5.76)、ImageNet(novel +2.15)增益尤其大;OxfordPets 的 novel 反而 -2.86,是少数掉点场景。

消融实验

配置 基础模型 Base Novel H 说明
w/o 自适应加权 MaPLe 82.93 75.87 79.24 去掉加权
w/ 自适应加权 MaPLe 83.57 77.26 80.29 novel +1.39
w/o 自适应加权 MMRL 85.97 77.53 81.53 去掉加权
w/ 自适应加权 MMRL 86.14 78.84 82.33 novel +1.31

Token 级学习率(Table 3)对比三种变体:固定学习率 < MetaSGD 式任务级学习率 < 本文 token 级学习率,token 级在 MaPLe / MMRL 的 base 与 novel 上都最优。

关键发现

  • 理论与实证吻合:在代表性数据集子集上,统计"一步内层更新真的降低了外层 \(P_{out}\) 损失"的比例,从无加权·无预条件的约 61% 提升到加上 \(w\)\(P\) 的完整 Promise 的约 78%,印证了 Theorem 4.1 的"风险收缩"效应(作者也坦言光滑性/对齐假设对大 CLIP 网络只是近似)。
  • 两个模块都贡献 novel 泛化:自适应加权与 token 级学习率单独都涨点,主要体现在 novel 类与调和均值上,说明二者是互补的。
  • 鲁棒性:在 UCF101、Caltech101 上换不同模板时,其它方法波动明显,Promise 始终维持高且稳定的准确率(Figure 3),验证了对 prompt 措辞的不敏感。

亮点与洞察

  • 把"措辞"本身建模成任务分布:最巧妙之处是不再把 prompt 当固定输入,而是把"同一任务的不同等价措辞"当成元学习的任务集,并用不相交的 \(P_{in}/P_{out}\) 在训练里硬性制造"换措辞"的考验——这是把 intra-task prompt robustness 显式写进目标的关键。
  • 即插即用的训练策略:Promise 不改 backbone 架构,只换优化过程,能叠加到 IVLP/MaPLe/MMRL 上稳定涨点,工程上很容易迁移到新的 prompt learner。
  • 理论给出可操作的抓手:泛化界明确指向"同时减小 \(\hat R_{P_{out}}(\hat\theta)\)\(\mathrm{Tr}(P\Sigma_w P)\)",把"加权降方差 + 预条件改条件数"翻译成具体优化目标,而非事后解释。
  • 可迁移思路:对"对输入表述敏感"的其它问题(如 LLM 指令鲁棒性、检索 query 改写鲁棒性),这套"把等价表述当任务 + 双层循环 + 自适应加权"的范式都值得借鉴。

局限性 / 可改进方向

  • 依赖现成模板库:方法建立在 PromptSRC 的 60 个手写模板上,模板的多样性与质量直接决定了"措辞分布"的覆盖面;若模板本身有偏,学到的不变性也受限。
  • 个别数据集掉点:OxfordPets 的 novel 类掉了 2.86,说明在某些细粒度/类内方差大的数据集上,强制 prompt 不变可能与类别区分性产生张力,方法并非处处稳赢。
  • 理论假设近似:L-光滑、梯度对齐等假设对 CLIP 规模网络只是近似成立,"61%→78%"虽支持趋势但并非严格保证。
  • 额外训练开销:双层循环 + 每 episode 抽 30+30 模板 + 一个生成学习率的 MLP,训练成本高于单纯 prompt tuning(作者把训练时间分析放到附录)。

相关工作与启发

  • vs CoOp / CoCoOp:它们学连续 prompt 模板/条件 token,目标是 few-shot 适配,但绑定固定模板、对 novel 类易过拟合;本文不优化某一固定模板,而是 meta-learn 对措辞不变的 token。
  • vs MaPLe / PromptSRC / MMRL:这些是更强的多模态 prompt learner,但仍在固定模板下训练;Promise 把它们当 backbone、叠加双层循环训练策略后进一步涨点,是"正交增强"而非替代。
  • vs GRAM / MetaPrompt / ProMetaR(元学习 prompt tuning):同样用元学习,但它们针对跨任务/跨域泛化、假设模板固定;本文把元学习的"任务"重定义为"同任务内的不同措辞",专攻 intra-task prompt 鲁棒性。
  • vs MAML / MetaSGD:双层循环骨架受 MAML 启发、token 级学习率受 MetaSGD 启发,但 MAML 对所有输入一视同仁、MetaSGD 只学每参数标量学习率;本文用自适应 prompt 加权区分模板质量、用数据驱动 MLP 生成 token 级学习率,是面向 VLM prompt 鲁棒性的定制化改造。

评分

  • 新颖性: ⭐⭐⭐⭐ 把"prompt 措辞"重新定义为元学习任务分布、专攻 intra-task 鲁棒性,角度新且少有人做。
  • 实验充分度: ⭐⭐⭐⭐ 15 数据集 + 三类设置 + 逐模块消融 + 理论验证,较扎实;个别数据集掉点也如实呈现。
  • 写作质量: ⭐⭐⭐⭐ 方法与理论衔接清楚,三个模块的动机层层递进;部分符号(如 \(w_i\)\(\tilde w\)\(\alpha\)\(\alpha_i\))略显密集。
  • 价值: ⭐⭐⭐⭐ 即插即用、可叠加到现有 prompt learner,对 VLM 可靠部署有实际意义。