首页 > 其他分享 >MaPLe(论文解读): Multi-modal Prompt Learning

MaPLe(论文解读): Multi-modal Prompt Learning

时间:2024-09-08 19:51:14浏览次数:12  
标签:模态 本文 Multi Prompt CLIP 提示 编码器 Learning 文本

Comment: Accepted at CVPR2023

摘要

预训练的视觉语言模型(VL-PTMs)(比如CLIP)在下游任务中已经表现出不错的泛化能力。但是它们对输入文本提示模板的选择很敏感,需要仔细选择提示模板才能表现良好。

受到NLP领域的启发,最近的CLIP的自适应性方法开始学习提示作为文本输入,来微调CLIP以适应下游任务。本文能注意到,在CLIP的单个分支(语言或图像分支)中使用提示来调整表示的效果是次优的,因为它不具备在下游任务中动态调整两个表示空间的灵活性。

本文提出了针对语言和图像两个分支的多模态提示学习MaPLe(Multi-modal Prompt Learning),来提高图像和本文表示之间的一致性。本文的设计促进了视觉-语言之间的强耦合,从而确保了相互协同,防止学习独立的单模态的解决方案。更进一步,本文在模型的不同阶段引入不同的提示,逐步对不同阶段的特征关系进行建模,从而实现丰富的上下文学习。

本文在泛化到新的类、新的目标数据集和未见过的域转移三个代表性任务上评估了本文方法的有效性。与最先进的Co-CoOp方法相比,MaPLe表现出良好的性能,在11个不同的图像识别数据集,在新类别上的绝对增益为3.45 %,在总体调和均值上的绝对增益为2.72 %。

Introduction

基本的视觉语言模型(例如CLIP)在下游任务中已经展现出不错的泛化能力。这些模型通过训练,可以在网络规模的数据上对齐文本和视觉两个模态的信息(比如CLIP中4亿图像文本对)。由于自然语言中丰富的监督,这些模型可以对开放词汇的视觉概念进行推理。在推理的过程中,将文本提示(a photo of <class>)输入到文本编码器成为query查询。输出的文本嵌入和来自图像编码器的视觉嵌入进行匹配,来预测输出类。已经证明,设计高质量的上下文提示可以提高CLIP和其他V-L模型(视觉语言模型)的性能。

尽管CLIP在泛化到新概念方面表现出有效性,但其庞大的规模和训练数据的稀缺性(例如few-shot的设置)使其为下游任务微调整个模型变得不可行。这种微调可能会忘记在大规模预训练中获得的有用的知识,并且可能会对下游任务造成过拟合的风险。为了解决上述挑战,现有的工作提出了文本提示学习,来避免手动调整提示模板,并且提供了一种机制,能够保证原始权重冻结的情况下调整模型。图1-a:受NLP的启发,这些方法仅探索了CLIP文本编码器中的提示学习,而调整CLIP中图像编码器仍然是未探索的话题。

本文的动机来自于CLIP的多模态本质,文本编码器和图像编码器同时存在,两者都有助于正确对齐视觉、语言两个模态。本文认为任何提示方法应该完全适应模型,因此,仅学习CLIP中文本编码器学习提示不足以模拟图像编码器所需要的调整。

解释图1-b:为此,本文着手实现提示方法的完整性,并且提出了MaPLe,来充分微调文本和图像编码器中的表示,从而在下游任务中实现最佳的对齐。

本文在三个关键的代表的场景中进行了广泛的实验,包括从基本到新的泛化、跨数据集评估和领域泛化,证明了MaPLe的优势。

解释图1-c:在基于新类别的泛化上,MaPLe在11个不同的图像识别数据集上超过了现有的快速学习方法,并且在新类别上取得了3.45 %的绝对平均增益,在调和均值上取得了2.72 %的绝对平均增益,超过了最先进的方法Co - CoOp。此外,MaPLe在跨数据集迁移和领域泛化中表现出良好的泛化性能和鲁棒性,与现有方法相比取得一致的改进。

贡献总结

(1)本文在CLIP中提出了多模态提示学习来更好地对齐视觉-语言表征。这是第一个用于微调CLIP的多模态提示方法。

(2)为了将文本和图像编码器中的提示联系起来,提出了一个耦合函数将视觉提示条件化到它们对应的文本提示上。它作为两种模态之间的桥梁,允许梯度的相互传播以促进协同作用。

(3)本文的多模态提示在视觉和语言分支的多个transformer块中学习,以逐步学习两种模态的协同行为。这种深度提示策略允许独立地对上下文信息进行建模,从而为视觉-语言表征的对齐提供了更大的灵活性。

Method

本文的方法是通过提示微调上下文,对预训练的多模态CLIP进行微调,以更好地泛化到下游任务中。

介绍图2:与以往只在语言分支上学习提示的方法不同,MaPLe提出了一种联合提示学习的方法,它在视觉语言两个分支上学习上下文提示。

具体来说,本文在语言分支中添加了可学习的上下文标记,并且通过一个耦合函数将视觉提示条件化在文本提示中,从而建立两者之间的交互。

为了学习层次化的上下文表示,本文在文本和图像两个分支中引入深度提示,这是通过在不同的transformer块中独立可学习上下文提示来实现的。

在微调过程中,只有上下文提示及其耦合函数能够被学习,而模型的其余部分被冻结。

3.1Revisiting CLIp

本文在一个预训练的VL模型CLIP上构建了本文的方法,该模型包含一个文本编码器和图像编码器。与当前的提示方法一致,本文使用基于ViT的CLIP模型。CLIP编码一张图片I和与之对应的文字描述。

Encoding Image:

图像编码器V有K个transformer层。首先将输入图片I分割为M个大小固定的图像patches,然后投影成为图像嵌入E0(图像patches的向量表达)。

图像嵌入Ei与一个可学习的[CLS]标识ci一起,输入到第(i+1)个transformer块中,并依次进行K个transformer块的处理:

为了得到最终的图像的向量化表示,将最后一个transformer块Vk中的类标记ck通过Imageproj投影到一个公共的特征空间:

Encoding Text:

CLIP文本编码器首先将输入文本拆分成单词或者子词,将其映射成为唯一的标识符token;然后将其投影为单词嵌入W0(单词token的向量表达)。

单词嵌入Wi会作为第(i+1)个transformer块的输入:

为了得到最终文本的向量化表示,将最后一个trnasformer块中最后一个token的文本嵌入通过TextProj映射到公共的特征空间中。

Zero-shot Classification:

对于zero-shot分类,手工设计文本提示Prompt(A photo of <class>):

3.2. MaPLe: Multi-modal Prompt Learning

1.为了有效地微调CLIP用于下游图像识别任务,本文探索了多模态提示调节的潜力。本文认为先前的工作主要探索了单模态的方法,但是单模态的方法不能灵活且动态地调整语言和视觉表示空间。为了实现提示的完整性,本文强调了多模态提示方法的重要性。

解释图3:将MaPLe与最新工作Co-CoOp进行了对比。CLIP、CoOp和Co-CoOp的图像嵌入是相同的,因为它们在视觉分支部分都不学习视觉提示。可视化的结果显示,MaPLe的图像嵌入更具有可分性,表明除了文本提示以外,学习视觉提示也能更好的适应CLIP。

2.除了多模态提示以外,本文发现在更深层次的transformer块中学习提示对于逐步对阶段特征进行建模是至关重要的。因此,本文在视觉和语言两个分支中第J层引入可学习的token。

3.2.1 Deep language Prompting

(1)为了学习语言的上下文提示,本文在CLIP的语言分支中引入了b个可学习的token。此时输入嵌入为:

其中W0表示固定的输入token序列。

(2)在文本编码器中的每一个transfomrmer块Li中都会引入新的可学习的token,一直到第J个transformer块:

(3)在文本编码器中的第J个transformer块之后,每一层的输出就会称为下一层的输入。

(4)最终计算文本的向量表示z:将文本编码器中最后一个transformer块中的Wk中最后一个位置上的隐藏状态利用TextProj投射到公共的特征空间中:

3.2.2 Deep Vision prompting

(1)与深层语言提示类似,在CLIP的视觉分支中,引入b个可学习的token

(2)同样,在视觉编码器中的每一个transformer块中Vi中引入可学习的token,一直到第J个transformer块。

(3)图像编码器中的第J个transformer 块之后,每一层的输出就成为下一层的输入

(4)最终得到图像的向量化表示x:将图像编码器中最一层的transformer中的输出ck的隐藏状态通过ImageProj映射到公共的特征空间中。

总结:本文的深度提示方法为不同特征层次结构提供了学习提示的灵活性。本文发现,与单模态提示相比,跨阶段共享提示效果更好,因为连续的transformer块之间的关联性更强。

3.2.3 Vision Language Prompt Coupling

本文认为,在提示微调中,需要采取多模态的方法同时适应CLIP中图像和文本两个分支,从而实现上下文优化的完整性。

一种最简单的方式就是在同一训练过程中将文本提示P和视觉提示P~组合起来。我们将这种设计命名为“独立的V-L提示”。尽管这种设计满足了提示完整性方面的需求,但是这种设计缺乏语言和文本两个分支之间的协同,因为两个分支在学习任务相关的上下文提示时没有交互。

为此,本文提出一种分支感知的多模态提示,通过跨模态共享提示将CLIP的语言分支和视觉分支一起微调。

语言提示token 被引入到文本编码器中前J个Transformer块。为了确保V-L提示之间的相互协同性,视觉提示P~是将文本提示P通过视觉-文本映射得到的,称为V-L耦合函数F(·)。

这个耦合函数通过一个线性层来实现,将dl维度(文本向量的维度)映射到dv维度(视觉向量的维度)。这个耦合函数充当了两个模态之间的桥梁,从而促进了梯度的相互传递。

与单模态的V-L提示不同,显性条件化有助于两个分支在共享的嵌入空间中学习提示,从而提高协同性。

Conclusion

大规模的VL模型(比如CLIP),由于其可调参数较多和下游数据集规模受限,其对下游任务的适应性是一个挑战性问题。

提示学习是一种高效且可扩展地调整VL模型的方法,使其能够适应和处理新的下游任务。为此,当前的提示学习要么只考虑视觉分支的提示,要么只考虑文本分支的提示。

本文的工作证明,对于视觉和文本的分支来说,适当地调整VL模型来适应下游任务是至关重要的。因此,本文提出了一种策略,通过在不同的transformer阶段将视觉提示条件化于文本提示,来确保视觉-语言模态之间的协同。

本文方法提高了对新类别、跨数据集迁移和具有领域转移的数据集的泛化能力。

标签:模态,本文,Multi,Prompt,CLIP,提示,编码器,Learning,文本
From: https://blog.csdn.net/m0_54248968/article/details/141852698

相关文章

  • TPT(论文解读):Test-Time Prompt Tuning for Zero-Shot Generalization in Vision-Langua
    Comment:NeurIPS2022视觉语言模型中用于zero-shot泛化的测试期间提示调优摘要预训练的视觉语言模型在许多具有恰当文本提示的下游任务中表现出不错的zero-shot泛化。最近的研究并非使用手动设计的提示,而是使用下游任务中的训练数据来学习提示。虽然这种方法是有效的,但是......
  • A Fast and High Quality Multilevel Scheme for Partitioning Irregular Graphs
    目录概METISCoarseningPartitioningphaseUncoarseningphaseKarypisG.andKumarV.Afastandhighqualitymultilevelschemeforpartitioningirregulargraphs.SIAM,1998.概本文提出了一种multilevelgraphpartitioning方法.METISMETIS的思想比较简单:......
  • .Learning.Domain-Driven.Design.
    《学习领域驱动设计》是一本深入探讨领域驱动设计(Domain-DrivenDesign,DDD)的书籍,旨在帮助读者理解并应用DDD的原则和实践。本书通过详细的章节结构和丰富的示例,从战略设计到战术设计,再到实际应用中的演变和关系,为读者提供了一条完整的学习路径。战略设计:本章介绍了如......
  • python测试开发基础---multiprocessing.Pool
    1.基础概念多进程编程:Python中的multiprocessing模块允许你使用多个进程并行执行任务,这可以提高程序的性能,尤其是在需要大量计算的情况下。Pool类是一个常用工具,可以帮助你更轻松地管理多个进程。进程池:进程池是一个包含多个工作进程的池子,用来处理多个任务。你可以将任......
  • 用友U8 Cloud MultiRepChooseAction SQL注入漏洞复现
    0x01产品简介用友U8 Cloud是用友推出的新一代云ERP,主要聚焦成长型、创新型企业,提供企业级云ERP整体解决方案。0x02漏洞概述用友U8CloudMultiRepChooseAction 接口处存在SQL注入漏洞,未经身份验证的远程攻击者除了可以利用SQL注入漏洞获取数据库中的信息(例如,管理员后......
  • Meta-Prompt: 自动构建Prompt
    我强烈建议你使用claude-3.5-sonnet,在生成Prompt这个工作上比GPT-4o有着更好的表现将用户的输入需求转化为一个清晰结构化的Prompt,确保Prompt简单而且富有层次,能够让LLM理解并且高效地执行#Thought‍‍```mermaidmindmaproot((如何设计高效Prompt))需求分析......
  • C++ STL map/multimap容器
    map/multimap容器Map的特性是,所有元素都会根据元素的键值自动排序。Map所有的元素都是pair,同时拥有实值和键值,pair的第一个元素被视为键值,第二个元素被视为实值,map不允许两个元素有相同的键值。multimap和map的操作类似,唯一区别是multimap的键值可以重复。注意:Map和multimap都......
  • C++ STL set/multiset容器
    set/multiset容器简介Set的特性是,所有元素都会根据元素的值自动被排序。Set不允许两个元素有相同的值。Set的迭代器iterator是一种const_iterator,不能通过迭代器改变任意set元素的值。multiset的特性和用法和set相同,唯一的差别在于它允许值重复。set和multiset的底层实现是红......
  • prompt提示词调优工具介绍-promptfoo
    认识promptfoopromptfoo是一款开源的prompt调优工具,该工具支持如下功能:支持常见OpenAI、Anthropic、Azure、Google、HuggingFace、开源模型(如Llama),或自定义API程序以用于任何LLM模型提示词调优。支持批量跑提示词;支持提示词文件导入,模型应答结果导出;还有更多功能,......
  • 【论文阅读】AugSteal: Advancing Model Steal With Data Augmentation in Active Lea
    摘要Withtheproliferationof(随着)machinelearningmodels(机器学习模型)indiverseapplications,theissueofmodelsecurity(模型的安全问题)hasincreasinglybecomeafocalpoint(日益成为人们关注的焦点).Modelstealattacks(模型窃取攻击)cancausesignificant......