RPO: Read-only Prompt Optimization for Vision-Language Few-shot Learning

文章汇总

想解决的问题

对CoOp的改进CoCoOp尽管提升了性能,但却增加了方差(模型的准确率波动性较大)。

模型的框架

一眼看去,跟maple很像(maple跟这篇文章都是2023年发表的),但maple的视觉提示是由文本提示经过全连接转换而来的,而这里是文本提示和视觉提示是独立的。另外maple中的前J层的视觉/文本提示都是学习完之后就丢掉了。

文章的创新点

提示的初始化

其中{piv}i=1KRK×dv,{pit}i=1KRK×dt\{p_i^v\}^K_{i=1} \in R^{K\times d_v},\{p_i^t\}^K_{i=1} \in R^{K\times d_t}表示只读视觉提示和文本提示的集合,σ2\sigma^2为初始化方差。本文将σ\sigma设为0.1。这对KK提示的初始化略有不同,以便可学习提示避免常量初始化。

这里的亮点在于视觉提示的均值使用了[CLS]x(0)x^{(0)},文本提示的均值使用了[EOS]$ y^{(0)} $。

带掩码的注意力

Transformer编码器中的屏蔽注意操作可表述如下。

亮点在于:

1.屏蔽了文本/视觉特征参考提示做的注意力,即此时文本/视觉特征为qq,prompt作kk

2.文本特征的注意力跟transformer那样,一个单词的注意力只和其前面的单词计算。

摘要

近年来,提示调优已被证明在使预训练的视觉语言模型适应下游任务方面是有效的。这些方法旨在通过引入可学习的提示来适应预训练的模型,同时保持预训练的权重不变。然而,可学习提示会影响自注意模块的内部表示,这可能会对性能差异和泛化产生负面影响,特别是在数据不足的设置中。为了解决这些问题,我们提出了一种新的方法,只读提示优化(RPO)。RPO利用隐藏注意力来防止预训练模型中的内部表示转移。此外,为了便于优化RPO,根据预训练模型的特殊令牌初始化只读提示。我们的大量实验表明,RPO在基到新泛化和域泛化方面优于CLIP和CoCoOp,同时表现出更好的鲁棒性。此外,该方法在数据极度缺乏的情况下也能实现更好的泛化,同时提高了参数效率和计算开销。代码可从https://github.com/mlvlab/RPO获得。

1. 介绍

CLIP[6]、ALIGN[24]、FILIP[50]等视觉语言模型在各种视觉语言任务中都取得了优异的表现。由于视觉语言模型是由基于对比学习目标的自然语言监督的,通过将类名放在文本模板中(例如,“A photo of a [CLASS]”),视觉语言模型可以在开放词汇设置中有效地对图像进行分类[6]。

最近的研究探索了这些视觉语言模型在下游任务中的适应性[19]。然而,与小型预训练模型不同,大规模架构(例如CLIP)很难微调,因为它效率低下,资源密集,并且可能会破坏预训练期间学习到的良好表示。在CLIP中,进行提示工程以向下游任务提供特定领域的上下文(例如,“A photo of a [CLASS], a type of car”)[6]。但是,这意味着必须根据试验和错误手动选择提示符。

为了缓解这个问题,上下文优化(CoOp)[33]建议在CLIP上自动化提示工程,用可学习的向量替换基于自然语言的提示中的上下文词。条件上下文优化(Conditional Context Optimization, CoCoOp)[31]用一个额外的神经网络生成的图像条件提示扩展了CoOp,以提高泛化。

图2:模型适应和RPO方法的说明。(a)如⇔所表示的,令牌特征和提示特征在传统的提示调整方法中可以相互看到。虽然模型的权重已经被冻结,但通过自注意机制引入的可学习提示,预训练CLIP的内部表征越来越多地发生变化。(b)在线性探测中,内部表示和预训练参数被冻结。模型顶部的线性层被训练用于模型自适应。©如⇒所示,在我们的方法RPO中,只有提示符可以读取令牌特征,而不是其他方式。这使令牌特性保持冻结状态,不受引入的提示的影响,而我们的只读提示只从令牌特性读取有用的信息

虽然现有的这些方法是为了避免在提示学习过程中对预训练模型的学习参数产生不利影响而提出的,但它们仍然通过注意机制影响模型的隐藏表征,我们称之为内部表征转移。我们在图2a中可视化了这一表示转换过程。令牌通过transformer[55]层进行处理,预训练模型的内部表示在很大程度上被可学习提示改变。这可能是有益的,因为它允许模型更好地适应下游任务。

图1:CoOp、CoOp和线性探测的方差。与CoOp和CoCoOp等提示学习方法相比,线性探测不会改变预训练的表征,在性能上的差异更小

然而,如图1所示,在数据不足的情况下,这种转变可能会对模型的鲁棒性和泛化产生负面影响。另一方面,线性探测没有内部表示移位,如图2b所示,但线性层引入了参数低效率。

为了检验在数据不足的情况下,表示移位如何影响模型方差,我们对线性探测CLIP进行了初步实验,该实验不会改变预训练CLIP的内部表示。我们在FGVCAircraft数据集上分割了10个随机的少弹训练数据,并使用16弹学习设置对模型进行训练,并将性能方差可视化。有趣的是,如图1所示,我们观察到与CoOp和CoCoOp相比,线性探测显著降低了方差,尽管与CoOp (2K)和CoCoOp (35K)相比,它需要更多的训练参数(262K)。这一结果表明,由缺乏数据训练引起的内部表征移位可能导致高方差。同时,正如CoOp经验表明的那样,线性探测有时在领域转移任务中缺乏泛化性,并且其附加参数的数量是不可取的。

基于这一观察,我们提出了只读提示优化(Read-only Prompt Optimization, RPO),它学习只读提示,如图2c所示。RPO在参数有效的同时防止了自适应过程中的表示移位,从而使自适应更加健壮和可推广。

我们的贡献可以总结如下:

•我们提出了只读提示优化(RPO),它允许提示仅从预训练的视觉语言模型的基于注意的交互中读取信息,从而防止内部表征转移。

•我们为只读提示开发了一种简单而有效的初始化方法,利用预训练的CLIP视觉语言模型的特殊标记嵌入。

•我们广泛的实验和分析证明了RPO在少量样本自适应设置下对域和标签移位的泛化,在9个基准到新泛化的基准和4个领域泛化的基准中取得了最佳性能,同时减少了依赖于少量样本的方差。

2. 相关的工作

视觉语言模型

大量的网络抓取图像-文本对[6,24,15,5,45,44]便于视觉语言模型进行对比预训练,从而能够获得强大且可泛化的图像表示。例如,CLIP[6]和ALIGN[24]依靠基于转换器的编码器[55]来映射图像和文本之间的复杂关系。这些视觉语言模型在各种下游任务中取得了优异的表现,特别是在零采样图像分类中。在这些工作之后,许多其他工作[12,18,48,47]已经出现,以利用视觉语言模型的力量进行图像相关任务,如图像识别[33,31,29,38,9]。

然而,尽管这些模型具有很强的泛化性能,但使其适应特定任务可能具有挑战性,因为为不同的下游任务组装大型数据集是一项艰巨的挑战[39]。为了缓解这一问题,最近的研究重点是基于CLIP的可转移性,使预训练的视觉语言模型能够快速适应特定的任务。

提示学习

提示学习[27,22,32,13]最初是在GPT[7,10]和BERT[21]等自然语言处理模型中提出的。该技术涉及合并其他标记,例如手工制作的指令或可学习的提示,以促进对下游任务的预训练语言模型进行微调。额外的标记为模型提供下游任务的上下文信息,同时保持原始语言模型不变,从而避免灾难性遗忘[40]。基于这种方法的有效性,最近的研究试图在视觉语言模型中利用提示学习的概念。

最近对视觉语言模型的研究使用提示学习,使用连续的矢量提示,并使用文本标记进行连接和处理[33,49]。另一行作品介绍了依赖于视觉特征的提示[29,31,38,26,52]。连续提示学习方法[23,53,28]减少了训练参数的数量,并自动识别功能良好的提示。视觉提示调优(Visual Prompt Tuning, VPT)[29]将提示插入到视觉编码器而不是文本编码器中。同样,提示有效地包含并传达了关于手头任务的知识。

零样本学习和领域泛化

零样本学习涉及从训练过程中可用的“基本”对象类中学习一般知识,并使用这些知识来识别新的类。为了实现这一点,一些方法包括使用颜色或形状等视觉属性来跨类进行泛化[17],或者使用视觉语言模型来映射视觉样本和相应的文本[33,31,34]。

域泛化要求视觉编码器生成域不变表示,这意味着它们不受拍摄图像的特定域或设置的影响。例如,苹果的照片和苹果的素描[30]应该产生相似的表示。已经提出了各种方法来实现领域泛化,例如使用预训练模型进行广义表示[2,41]和跨模态监督[20]。

虽然视觉语言模型中的提示学习已经显示出更好的性能,但可学习的提示很有可能通过注意机制改变原始模型中功能良好的部分[55]。注意机制使所有输入嵌入相互作用,从而影响预训练模型的隐藏表示。如果训练数据不足,这可能会导致冻结模型中的意外行为。

3. 方法

在本节中,我们提出了只读提示优化(Read-only Prompt Optimization, RPO),用于在少量数据缺乏的情况下,对视觉语言模型进行鲁棒性和可泛化的自适应。我们引入了一组只读提示,连接到视觉和文本编码器的输入,然后用屏蔽注意进行处理,以避免对CLIP的内部表示产生影响。在提示优化期间冻结所有预训练的参数,并且仅更新连接的只读提示。

图3:RPO的整体架构。我们对所有数据集使用默认提示“A photo of A [CLASS]”。然后,在两个编码器中,我们的只读提示被连接到原始功能并馈送到一个冻结的编码器中。这些编码器中的注意力是被屏蔽的,这样我们的提示可以被学习,但不会改变原始的特征交互。我们计算对应于KK个提示的每个编码器的输出之间的相似性分数,并对它们进行平均,以产生最终分类分数sˉ1\bar s^1sˉC\bar s^C,其中CC表示类的数量。

3.1. 只读的提示

对于文本编码器和可视编码器,RPO都使用相同的机制。我们首先连接一组连续的可学习提示,这需要最小的额外参数来训练,图像补丁嵌入或词嵌入。公式如下:

其中x(0)Rdv,y(0)Rdtx^{(0)}\in R^{d_v},y^{(0)}\in R^{d_t}表示特殊的令牌嵌入,[CLS]用于视觉编码器,[EOS]用于文本编码器,它们在每个编码器中充当特征聚合器。Ex(0)RNx×dv,Ey(0)RNy×dtE_x^{(0)}\in R^{N_x\times d_v},E_y^{(0)}\in R^{N_y\times d_t}表示视觉嵌入和文本嵌入,dv,dtd_v,d_t表示图像patch和单词嵌入的尺寸,Nx,NyN_x,N_y表示特征标记的长度,不包括特殊标记。piv,pitp^v_i,p^t_i表示可视和文本编码器的第ii个可学习提示符,KK为提示符的个数。两个编码器的提示数是相等的。注意,不像在以前的文本提示学习方法中,可学习提示替换对应于’ A photo of A ‘的标记嵌入,我们对’ A photo of A [CLASS] '提示进行编码,生成Ey(0)E^{(0)}_y,然后串联只读的可学习提示{pit}i=1K\{p_i^t\}^K_{i=1}

3.2. 基于特殊令牌的初始化

在RPO中,每个可学习的提示都是通过稍微扰动的特殊标记进行初始化的,即预训练CLIP的视觉编码器上的[CLS]和文本编码器上的[EOS],命名为ST-initialization。在CLIP中,特殊的令牌扮演特征聚合器的角色,它在transformer 编码器的最后一层充当输入的代表。由于只读提示也执行特征聚合,我们发现基于特殊标记初始化提示是有益的,这是一个很好的起点。ST初始化的消融研究见表3。我们初始化提示如下:

其中{piv}i=1KRK×dv,{pit}i=1KRK×dt\{p_i^v\}^K_{i=1} \in R^{K\times d_v},\{p_i^t\}^K_{i=1} \in R^{K\times d_t}表示只读视觉提示和文本提示的集合,σ2\sigma^2为初始化方差。本文将σ\sigma设为0.1。这对K提示的初始化略有不同,以便可学习提示避免常量初始化。

3.3. 带掩码的注意力

图4:每个编码器的注意掩码的可视化。

在我们的RPO框架中,隐藏注意力对于在预训练的CLIP中保留内部交互非常重要。如图4a和图4b所示,我们提出了一个注意掩码,以防止原始特征被可学习的提示嵌入所破坏。视觉注意掩码MvRNv×NvM_v \in R^{N_v\times N_v}和文本注意掩码MtRNt×NtM_t \in R^{N_t\times N_t}将注意力从可学习的提示流限制到已有的特征,其中Nv=1+K+NxN_v=1+K+N_xNt=1+K+NyN_t=1+K+N_y

掩码可以定义如下,其中Mi,jM^{i,j}表示第ii行,第jj列的掩码元素:

Transformer编码器中的屏蔽注意操作可表述如下。

式中,Vi+1\mathcal{V}_{i+1}Ti+1\mathcal{T}_{i+1}分别为视觉编码器和文本编码器的第(l+1)(l+1)掩码多头自注意层。x(l)RNv×dvx^{(l)}\in R^{N_v\times d_v}表示第(l+1)(l+1)视觉编码器层的输入张量,y(l)RNt×dty^{(l)}\in R^{N_t\times d_t}表示第(l+1)(l+1)文本编码器层的输入张量。视觉和文本编码器的最终输出x(L)x^{(L)}y(L)y^{(L)}表示如下:

其中LL为层数,ei,sie_i,s_i为第ii个视觉和文本提示特征,由各自的编码器产生。Pv,PtP_v,P_t是预训练的投影矩阵,将ei,sie_i,s_i投影到vi,tiv_i,t_i

3.4. 对比评分函数

如图3所示,对于KK对提示,我们基于给定单个图像xx和类标签yy的余弦相似性计算KK个logits。给定xxyy,我们将它们之间的相似性定义为公式(9)。通过平均logits,我们产生与KK个独立模型的集合相同的效果,这些模型具有关于图像和文本的单独视角。

使用集成逻辑,我们定义如下式(10)的概率分布,其中τ\tau表示预训练CLIP的温度超参数。

4. 实验

w.o代表without

图5:RPO与cooop的方差与概化。从新的泛化基础和更小的性能差异来看,RPO比coop更具泛化性和鲁棒性。

5. 结论

大规模预训练模型的出现,如CLIP[6]、ALIGN[24]和FILIP[50],使得以参数高效的方式有效地使它们适应下游任务变得越来越重要。对整个模型进行微调可能是资源密集型的,并且可能会破坏在预训练期间学习到的定义良好的模型表示。从参数效率的角度来看,提示学习是一种很有希望避免这些问题的方法,但现有的方法最终仍然是通过注意机制来改变数据令牌的表示[33,31,16],这是一种不稳定的适应策略,特别是在数据不足的情况下,如少镜头学习。

为了解决这些挑战,我们提出了一种新的方法,利用只读提示来防止骨干模型中的内部表示转移,从而获得更好的泛化和鲁棒性。我们的方法还在视觉和文本编码器上使用了可学习的提示,并将它们初始化为特殊的令牌,如[CLS]和[EOS],以便更好地收敛。我们的大量实验表明,我们的方法在基到新泛化和域泛化方面优于其他方法,并且方差显著降低。

然而,尽管这种方法具有巨大的潜力,但它仍然是一个未开发的领域。与其他适应策略相比,该方法的效率和有效性有待进一步研究。尽管如此,我们的方法为在资源有限的情况下对预训练模型进行可推广和健壮的适应提供了一个有希望的方向。

参考资料

论文下载(ICCV 2023)

https://arxiv.org/abs/2308.14960

代码地址

https://github.com/mlvlab/RPO

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/62644.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

『MySQL 实战 45 讲』24 - MySQL是怎么保证主备一致的?

MySQL是怎么保证主备一致的? MySQL 主备的基本原理 基本的主备切换流程 状态 1:客户端的读写都直接访问节点 A,而节点 B 是 A 的备库状态 2:切换时,读写访问的都是节点 B,而节点 A 是 B 的备库注意&…

自荐一部IT方案架构师回忆录

作者本人毕业于一个不知名大专院校,所读专业计算机科学技术。2009年开始IT职业生涯,至今工作15年。擅长TSQL/Shell/linux等技术,曾经就职于超万人大型集团、国内顶级云厂商、央国企公司。参与过运营商大数据平台、大型智慧城市ICT、云计算、人…

python数据分析之爬虫基础:selenium详细讲解

目录 1、selenium介绍 2、selenium的作用: 3、配置浏览器驱动环境及selenium安装 4、selenium基本语法 4.1、selenium元素的定位 4.2、selenium元素的信息 4.3、selenium元素的交互 5、Phantomjs介绍 6、chrome handless模式 1、selenium介绍 (1…

【数据结构——查找】顺序查找(头歌实践教学平台习题)【合集】

目录😋 任务描述 相关知识 测试说明 我的通关代码: 测试结果: 任务描述 本关任务:实现顺序查找的算法。 相关知识 为了完成本关任务,你需要掌握:1.根据输入数据建立顺序表,2.顺序表的输出,…

create-react-app react19 搭建项目报错

报错截图 此时运行会报错: 解决方法: 1.根据提示安装依赖法 执行npm i web-vitals然后重新允许 2.删除文件法 在index.js中删除对报错文件的引入,删除报错文件

Scratch 消灭字母小游戏

背景 最近尝试一边自学Scratch,一边尝试教给小孩,看他打字时在键盘上乱打一气,想起来自己小时候玩过的学习机打字母游戏,就想给他下载一个。结果网上看到的代码,要么质量太差(有26个字母就要写 26 个判断&…

python调用matlab函数(内置 + 自定义) —— 安装matlab.engine

文章目录 一、简介二、安装matlab.engine2.1、基于 CMD 安装2.2、基于 MATLAB 安装(不建议) 三、python调用matlab函数(内置 自定义) 一、简介 matlab.engine(MATLAB Engine API for Python):…

pytroch环境安装-pycharm

环境介绍 安装pycharm 官网下载即可,我这里已经安装,就不演示了 安装anaconda 【官网链接】点击下载 注意这一步选择just me 这一步全部勾上 打开 anaconda Prompt 输入conda create -n pytorch python3.8 命令解释:创建一个叫pytorch&…

Photoshop提示错误弹窗dll缺失是什么原因?要怎么解决?

Photoshop提示错误弹窗“DLL缺失”:原因分析与解决方案 在创意设计与图像处理领域,Photoshop无疑是众多专业人士和爱好者的首选工具。然而,在使用Photoshop的过程中,有时会遇到一些令人头疼的问题,比如突然弹出的错误…

上海亚商投顾:创业板指震荡调整 机器人概念股再度爆发

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 沪指昨日冲高回落,深成指、创业板指盘中跌超1%,尾盘跌幅有所收窄。机器人概念股逆势爆…

(Linux)CentOS7离线安装MinIO(超详细)

目录 前言1. 下载2. 安装VMware3. 安装CentOS4. 离线安装MinIO4.1. ssh工具连接CentOS4.2. 上传MinIO离线包4.2.1 创建data目录4.2.2 上传RPM包到data目录4.2.3 安装RPM包4.2.4 创建MinIO数据目录4.2.5 配置 MinIO 服务4.2.6 启动 MinIO4.2.7 开放端口 4.2.8 访问MinIO 创作不易…

HarmonyOS-高级(四)

文章目录 应用开发安全应用DFX能力介绍HiLog使用指导HiAppEvent 🏡作者主页:点击! 🤖HarmonyOS专栏:点击! ⏰️创作时间:2024年12月11日11点18分 应用开发安全 应用隐私保护 隐私声明弹窗的作…

论文阅读:Statistical Comparisons of Classifiers over Multiple Data Sets

论文地址:Statistical Comparisons of Classifiers over Multiple Data Sets (acm.org) 前面在机器学习之Friedman检验-CSDN博客 中提到了Friedman检验,这里将对这个方法的论文进行详细的阅读,以了解其原理。 摘要 尽管用于在单个数据集上比…

练9:进制转换

欢迎大家订阅【蓝桥杯Python每日一练】 专栏,开启你的 Python数据结构与算法 学习之旅! 文章目录 1 进制转换2 例题分析 1 进制转换 ①任意制转为十进制 【示例】 ②十进制转为任意制 【法一】 【法二】 2 例题分析 题目地址:https:/…

C语言:指针详解续

一、字符指针变量 我们知道有种指针类型为字符指针(char*)。 #include <stdio.h> int main() {char ch w;char* pch &ch;printf("%c\n", *pch);return 0; } 其实它还有一种使用方式。 #include <stdio.h> int main() {char* pstr "hello…

HarmonyOS-高级(一)

文章目录 一次开发、多端部署自由流转 &#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;HarmonyOS专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年12月09日12点19分 一次开发、多端部署 布局能力 自适应布局 拉伸能力均分能力占比能力缩放…

【嵌入式系统】第4章 嵌入式最小系统,供电电路,时钟电路,复位电路,程序下载电路

关注作者了解更多 我的其他CSDN专栏 过程控制系统 工程测试技术 虚拟仪器技术 可编程控制器 工业现场总线 数字图像处理 智能控制 传感器技术 嵌入式系统 复变函数与积分变换 单片机原理 线性代数 大学物理 热工与工程流体力学 数字信号处理 光电融合集成电路…

期权懂|交易个股期权需要注意哪些风险?

期权小懂每日分享期权知识&#xff0c;帮助期权新手及时有效地掌握即市趋势与新资讯&#xff01; 交易个股期权需要注意哪些风险&#xff1f; 一、交易个股期权需要注意合约到期风险&#xff1a; 需关注到期日&#xff0c;及时平仓或行权&#xff0c;避免合约作废。二、交易个…

MVC配置文件配置及位置

配置文件位置 默认位置 WEB-INF目录下&#xff1a;-servlet.xml 指定位置 在web.xml中配置 DispatcherServlet中的contextConfigLocation属性可以指定配置文件位置 确保配置文件存在于类路径&#xff08;Resources&#xff09;下 web.xml <?xml version"1.0" …

可视化逻辑表达式编辑器

优质博文&#xff1a;IT-BLOG-CN 一、QueryBuilder介绍 QueryBuilder 是一个用于创建查询和过滤器的 UI 组件。 QueryBuilder的特点 1、支持的输入属性丰富&#xff0c;常见的 字符串&#xff0c;整数&#xff0c;浮点数&#xff0c;布尔类型&#xff0c;日期类型&#xff0…