Modular Prompt Learning Improves_Vision-Language Models

文章汇总

提出的问题

浅层连续提示方法将提示插入到第一个Transformer层的输入中,这些提示参与到后续所有Transformer层的上下文化过程(即自注意力机制[16])中。而深层提示方法则持续用新插入的提示替换原有的连续提示。一个自然的问题是:移除插入的提示是否会丢失其中包含的信息?

动机

保留深层提示方法中删除的部分提示。

流程解读

me:相当于MaPLe其实就是删除了部分提示,有点像浅层提示和深层提示的居中办法。

a) 添加操作 O add \mathcal{O}{\text{add}} Oadd: O add \mathcal{O}{\text{add}} Oadd将连续提示插入到Transformer层的输入中。我们将第 i i i层Transformer表示为 L i ( ⋅ ) L_i(\cdot) Li(⋅),给定操作输入 I i \textbf{I}i Ii, O add \mathcal{O}{\text{add}} Oadd被公式化为 [ V i , I i ] [\textbf{V}_i,\textbf{I}_i] [Vi,Ii],其中 V i ∈ R p i × d v \textbf{V}_i \in \mathbb{R}^{p_i\times d_v} Vi∈Rpi×dv, I i ∈ R ξ i × d v \textbf{I}i \in \mathbb{R}^{\xi_i\times d_v} Ii∈Rξi×dv。 O add \mathcal{O}{\text{add}} Oadd将上下文长度从 ξ i \xi_i ξi增加到 ξ i + p i {\xi_i+p_i} ξi+pi。

b) 移除操作 O rm \mathcal{O}{\text{rm}} Orm(me:删除部分提示): O rm \mathcal{O}{\text{rm}} Orm移除插入的提示,其公式化表达为:

其中 V i + 1 ′ \textbf{V}'{i+1} Vi+1′是剩余的连续提示,其数量等于由 O add \mathcal{O}{\text{add}} Oadd插入的提示数量减去由 O rm \mathcal{O}{\text{rm}} Orm移除的提示数量 。该操作的输入为 L i ( [ V i , I i ] ) L_i([\textbf{V}i, \textbf{I}i]) Li([Vi,Ii]),输出为 [ V i + 1 ′ , I i + 1 ] [\textbf{V}'{i+1}, \textbf{I}{i+1}] [Vi+1′,Ii+1]。 p i + 1 ′ = 0 p'{i+1} = 0 pi+1′=0时,其与传统的深层视觉提示相同。当 p i + 1 ′ = p i p'_{i+1} = p_i pi+1′=pi且提示深度为 1 时,其变为传统的浅层视觉提示

c) 携带操作 O cr \mathcal{O}{\text{cr}} Ocr(me:保留剩下提示):添加操作 O add \mathcal{O}{\text{add}} Oadd、移除操作 O rm \mathcal{O}{\text{rm}} Orm和传递操作 O cr \mathcal{O}{\text{cr}} Ocr并非相互独立。 O cr \mathcal{O}{\text{cr}} Ocr依赖于 O add \mathcal{O}{\text{add}} Oadd和 O rm \mathcal{O}{\text{rm}} Orm。它被表述为在给定操作输入 [ V i + 1 ′ , I i + 1 ] [\textbf{V}'{i+1}, \textbf{I}{i+1}] [Vi+1′,Ii+1]的情况下生成 [ V i + 1 ′ , I i + 1 ] [\textbf{V}'{i+1}, \textbf{I}{i+1}] [Vi+1′,Ii+1]。 O cr \mathcal{O}{\text{cr}} Ocr实质上会导致不同层产生可能不同数量的连续提示。

摘要

预训练的视觉-语言模型能够解释视觉概念和语言语义。提示学习(prompt learning)是一种为文本编码器或图像编码器构建提示的方法,它激发了预训练模型的潜力,并使其能够快速适应新场景。与微调相比,提示学习能够在使用更少可训练参数的情况下实现相当或更好的性能。此外,提示学习冻结了预训练模型,避免了微调中的灾难性遗忘问题。将连续提示插入到每个Transformer层的输入中(即深度提示)可以提高预训练模型在下游任务中的表现。对于第 i i i个Transformer层,插入的提示会替换第 ( i − 1 ) (i-1) (i−1)层中之前插入的提示。尽管自注意力机制会对当前层中新插入的提示以及前一层输出的嵌入进行上下文化处理,但从前面所有层中移除所有插入的提示不可避免地会导致连续提示中包含的信息丢失。 在此基础上,我们提出了一种模块化提示学习(Modular Prompt Learning, MPL)方法,旨在促进保留插入提示中所包含的信息。我们在基础到新任务的泛化和跨数据集任务上评估了所提出的方法。在11个数据集的平均表现上,我们的方法在基础到新任务的泛化任务中相比现有最佳方法提高了0.7%的性能。在单个数据集上的最大改进为10.7%(EuroSAT数据集)。我们的代码可在https://github.com/Zhenhan-Huang/Modular-Prompt-Learning获取。

I. 引言

预训练的视觉-语言模型(VLMs),如CLIP [1]、ALIGN [2] 和 FLIP [3],在各种任务中展现出巨大的潜力。由于视觉概念与语言语义之间的良好对齐,VLMs 可以通过文本提示 [1]--[5] 以少量样本学习或甚至零样本迁移推理的方式轻松迁移到下游任务。 尽管手工设计的模板具有一定的有效性,但如何确定适当的文本提示以激发 VLMs 的潜力并非易事。即使对文本提示进行微小修改,也可能导致下游任务性能的显著变化。例如,将 CLIP 模型的文本提示从"a photo of a [class]"修改为"a [class]",会显著影响模型性能 [6]。 连续提示(亦称软提示)使得 VLMs 的自动提示成为可能。这种方法具有两个主要优势:(1) 文本嵌入不再局限于自然语言词汇的嵌入。这本质上将文本嵌入的搜索空间扩展为连续空间;(2) 连续提示不依赖于预训练的 VLMs 参数,而是拥有自己的可训练参数,可以适应各种下游任务。 在自然语言处理(NLP)领域,连续提示已显示出显著提升预训练模型在各种下游任务上的性能 [7]--[11]。最近,关于在视觉-语言领域应用连续提示的研究逐渐兴起 [6], [12]--[15]。 深度视觉提示调优(VPT)[13] 在每个Transformer层的输入中插入可学习的提示。插入的提示在后续层中被新插入的提示持续替换。第 i i i层和第 ( i + 1 ) (i + 1) (i+1)层Transformer的输入分别为:

其中 I ∈ R ξ × d v I \in \mathbb{R}^{\xi \times d_v} I∈Rξ×dv是图像块嵌入的集合, V ∈ R p × d v V \in \mathbb{R}^{p \times d_v} V∈Rp×dv是插入的连续提示。传统的浅层连续提示学习方法将输入传递给两个相邻的Transformer层:

浅层连续提示方法将提示插入到第一个Transformer层的输入中,这些提示参与到后续所有Transformer层的上下文化过程(即自注意力机制[16])中。而深层提示方法则持续用新插入的提示替换原有的连续提示。一个自然的问题是:移除插入的提示是否会丢失其中包含的信息? 为了解答这一问题,我们提出了模块化提示学习(Modular Prompt Learning, PML),该方法旨在促进插入提示的保留 。模块化提示学习包含三个主要组件:添加提示 ( O add ) (\mathcal{O}{\text{add}}) (Oadd)、携带提示 ( O cr ) (\mathcal{O}{\text{cr}}) (Ocr)和移除提示 ( O rm ) (\mathcal{O}{\text{rm}}) (Orm)。通过组合使用这三个组件,我们所提出的方法可以将深度VPT作为特殊情况纳入其中,即通过 O add \mathcal{O}{\text{add}} Oadd插入的提示数量等于通过 O rm \mathcal{O}{\text{rm}} Orm移除的提示数量,且通过 O cr \mathcal{O}{\text{cr}} Ocr携带的提示数量始终为零。我们在典型代表性基准测试中验证了所提方法的有效性,包括基础到新任务的泛化和跨数据集评估。尽管该方法简单,但在基础到新任务泛化的基准测试中,在10个数据集上平均提升了0.7%。在EuroSAT数据集上,性能提升最高达到了10.7%。在跨数据集评估基准测试中,我们的方法与最先进方法相当,但具有更高的效率。

II. 相关工作

**a) VLM 适应:**视觉语言模型(VLMs)以无监督的方式联合预训练图像-语言表示,从而能够利用海量数据。例如,CLIP [1] 和 ALIGN [2] 在预训练过程中分别使用了约4亿和约10亿的图像-文本对。VLMs 展现了良好的泛化性能 [1]--[5]。后续研究探索了预训练 VLMs 在具有挑战性的下游任务中的潜力,如语义分割 [17]、视觉问答 [18]、图像检索 [19] 和视觉定位 [20]。

**b) 提示学习:**在视觉-语言领域,主要关注的是连续提示。文本提示的开创性工作是 CoOp [6],它用连续提示替换了 CLIP 文本模板的嵌入。视觉提示的开创性工作是 VPT,它将连续提示附加到图像补丁嵌入之前。有新兴的研究试图提升连续提示的性能。基于 CoOp 的工作,CoCoOp [12] 添加了依赖于图像输入的特殊标记。MaPLe [14] 通过使用深度提示扩展了插入的连续提示在语言分支和视觉分支之间的耦合效应至更多的 Transformer 层。ProGrad [21] 和 PromptSRC [15] 使用知识蒸馏(KD),其中预训练的 CLIP 模型作为教师模型。

III. REVISITING CLIP

IV. 模块化提示学习

图1:所提出的框架示意图。我们使用带有耦合函数F的深度提示(deep prompts)。耦合函数将语言分支的提示与视觉分支的提示相连接。通过应用三种操作 O add \mathcal{O}{\text{add}} Oadd、 O rm \mathcal{O}{\text{rm}} Orm和 O cr \mathcal{O}{\text{cr}} Ocr,使得可以插入到Transformer层中的连续提示数量可变。 O add \mathcal{O}{\text{add}} Oadd应用于Transformer层的输入,而 O rm \mathcal{O}{\text{rm}} Orm和 O cr \mathcal{O}{\text{cr}} Ocr则应用于Transformer层的输出。

应用深度视觉连续提示的经典方法最初由VPT [13]提出,其中将插入的第 i i i层Transformer的连续提示替换为第 ( i + 1 ) (i+1) (i+1)层Transformer的提示。我们假设,仅依赖多头自注意力机制(MSA)[16]移除插入的提示不足以保留连续提示中包含的信息。为了验证这一假设,我们提出了三种操作:添加操作 O add \mathcal{O}{\text{add}} Oadd、移除操作 O rm \mathcal{O}{\text{rm}} Orm和传递操作 O cr \mathcal{O}_{\text{cr}} Ocr。引入这三种操作的动机是使模型能够保留插入的提示,从而保持其中包含的信息。

a) 添加操作 O add \mathcal{O}{\text{add}} Oadd: O add \mathcal{O}{\text{add}} Oadd将连续提示插入到Transformer层的输入中。我们将第 i i i层Transformer表示为 L i ( ⋅ ) L_i(\cdot) Li(⋅),给定操作输入 I i \textbf{I}i Ii, O add \mathcal{O}{\text{add}} Oadd被公式化为 [ V i , I i ] [\textbf{V}_i,\textbf{I}_i] [Vi,Ii],其中 V i ∈ R p i × d v \textbf{V}_i \in \mathbb{R}^{p_i\times d_v} Vi∈Rpi×dv, I i ∈ R ξ i × d v \textbf{I}i \in \mathbb{R}^{\xi_i\times d_v} Ii∈Rξi×dv。 O add \mathcal{O}{\text{add}} Oadd将上下文长度从 ξ i \xi_i ξi增加到 ξ i + p i {\xi_i+p_i} ξi+pi。 V i \textbf{V}i Vi是可微分的(即可训练的),并通过MSA影响 I i + 1 \textbf{I}{i+1} Ii+1。

b) 移除操作 O rm \mathcal{O}{\text{rm}} Orm: O rm \mathcal{O}{\text{rm}} Orm移除插入的提示,其公式化表达为:

其中 V i + 1 ′ \textbf{V}'{i+1} Vi+1′是剩余的连续提示,其数量等于由 O add \mathcal{O}{\text{add}} Oadd插入的提示数量减去由 O rm \mathcal{O}{\text{rm}} Orm移除的提示数量 。该操作的输入为 L i ( [ V i , I i ] ) L_i([\textbf{V}i, \textbf{I}i]) Li([Vi,Ii]),输出为 [ V i + 1 ′ , I i + 1 ] [\textbf{V}'{i+1}, \textbf{I}{i+1}] [Vi+1′,Ii+1]。 p i + 1 ′ = 0 p'{i+1} = 0 pi+1′=0时,其与传统的深层视觉提示相同。当 $p'_{i+1} = p_i $且提示深度为 1 时,其变为传统的浅层视觉提示

c) 携带操作 O cr \mathcal{O}{\text{cr}} Ocr:添加操作 O add \mathcal{O}{\text{add}} Oadd、移除操作 O rm \mathcal{O}{\text{rm}} Orm和传递操作 O cr \mathcal{O}{\text{cr}} Ocr并非相互独立。 O cr \mathcal{O}{\text{cr}} Ocr依赖于 O add \mathcal{O}{\text{add}} Oadd和 O rm \mathcal{O}{\text{rm}} Orm。它被表述为在给定操作输入 [ V i + 1 ′ , I i + 1 ] [\textbf{V}'{i+1}, \textbf{I}{i+1}] [Vi+1′,Ii+1]的情况下生成 [ V i + 1 ′ , I i + 1 ] [\textbf{V}'{i+1}, \textbf{I}{i+1}] [Vi+1′,Ii+1]。 O cr \mathcal{O}{\text{cr}} Ocr实质上会导致不同层产生可能不同数量的连续提示。

表一:所提出的框架中使用的三种操作。 O add \mathcal{O}{\text{add}} Oadd 和 O rm \mathcal{O}{\text{rm}} Orm 改变嵌入的数量,而 O cr \mathcal{O}{\text{cr}} Ocr 保持嵌入数量不变。 O add \mathcal{O}{\text{add}} Oadd 和 O cr \mathcal{O}{\text{cr}} Ocr 使连续提示能够参与后续变压器层的多头自注意力机制(MSA),而 O rm \mathcal{O}{\text{rm}} Orm 阻止提示参与 MSA。

表1总结了三种操作。MSA行表明新插入的连续提示是否参与当前Transformer层之后的其他Transformer层的多头自注意力机制(MSA)。KaTeX parse error: Expected '}', got 'EOF' at end of input: ...{O}{\text{add}与Transformer层的输入相关,而 O rm \mathcal{O}{\text{rm}} Orm和 O cr \mathcal{O}{\text{cr}} Ocr则与输出相关。因此,只有 O rm \mathcal{O}{\text{rm}} Orm和 O cr \mathcal{O}_{\text{cr}} Ocr决定了插入的提示是否用于后续Transformer层的MSA中。

图1展示了所提出的框架。受现有工作的启发[14]、[24],我们使用多模态连续提示以增强文本编码器和图像编码器之间提示的耦合效应。在视觉分支的每个Transformer层中应用了三种操作。 O add \mathcal{O}{\text{add}} Oadd插入连续提示并增加上下文长度。插入的提示可以通过 O rm \mathcal{O}{\text{rm}} Orm移除。 O cr \mathcal{O}{\text{cr}} Ocr将提示传递到下一层。通过耦合函数, O add \mathcal{O}{\text{add}} Oadd插入的提示与语言分支中的提示相关联。我们将第 i i i层(共 l l l层)的耦合函数表示为 F i : R d t → R d v \mathcal{F}_i:\mathbb{R}^{d_t}\rightarrow \mathbb{R}^{d_v} Fi:Rdt→Rdv,其中 i ∈ N , 1 ≤ i ≤ l i \in \mathbb{N}, 1 \le i \le l i∈N,1≤i≤l。

实验

VI. 结论

我们提出了一种称为模块化提示学习(modular prompt learning)的方法,该方法包含三个操作: O add \mathcal{O}{\text{add}} Oadd、 O rm \mathcal{O}{\text{rm}} Orm和 O cr \mathcal{O}_{\text{cr}} Ocr。通过引入这三个操作,插入的提示数量可以在不同的Transformer层之间变化。基类到新类泛化任务和跨数据集评估任务的结果展示了所提出方法的优势。传统的一致添加与移除相同数量连续提示的方式可能无法达到最优性能。

参考资料

论文下载(2025 ICASSP,CCF B)

https://arxiv.org/pdf/2502.14125

代码地址

https://github.com/Zhenhan-Huang/Modular-Prompt-Learning

相关推荐
车载诊断技术3 小时前
人工智能AI在汽车设计领域的应用探索
数据库·人工智能·网络协议·架构·汽车·是诊断功能配置的核心
AuGuSt_814 小时前
【深度学习】Hopfield网络:模拟联想记忆
人工智能·深度学习
jndingxin4 小时前
OpenCV计算摄影学(6)高动态范围成像(HDR imaging)
人工智能·opencv·计算机视觉
Sol-itude4 小时前
【文献阅读】Collective Decision for Open Set Recognition
论文阅读·人工智能·机器学习·支持向量机
没事偷着乐琅5 小时前
人工智能 pytorch篇
人工智能·pytorch·python
邪恶的贝利亚5 小时前
Pytorch常用函数
人工智能·pytorch·python
Ironben5 小时前
看好 MCP,但用不了 Claude,所以做了一款 MCP 客户端
人工智能·claude·mcp
佛州小李哥5 小时前
构建逻辑思维链(CoT)为金融AI消除幻觉(保险赔付篇)
人工智能·科技·ai·金融·云计算·aws·亚马逊云科技
xilu06 小时前
MCP与RAG:增强大型语言模型的两种路径
人工智能·llm·mcp
阿正的梦工坊6 小时前
PyTorch 中的 nn.ModuleList 是什么?与普通列表有啥区别?
人工智能·pytorch·python