CoOp(论文解读):Learning to Prompt for Vision-Language Models

Comment: International Journal of Computer Vision (IJCV), 2022. Update: Adds results on the DOSCO (DOmain Shift in COntext) benchmark

CoOp

摘要

像CLIP这样大规模预训练的视觉语言模型在学习表征方面表现出巨大的潜力,并且这些表征可以迁移到广泛的下游任务中。与那些传统的基于离散标签的的表征学习不同,视觉语言预训练模型将图像和文本特征在一个共同的特征空间中对齐,这就允许了可以通过提示的方式将zero-shot迁移到下游任务中,即分类权重从类别的描述性语言中合成。

在这项工作中,本文发现部署这类模型最主要的挑战就是Prompt Engineering,其需要耗费大量的时间对单词进行调整,因为提示中极小的变化就会导致性能巨大的影响。

受到NLP领域中提示学习发展的启发,本文提出CoOp(Context Optimization),专门适用于类似于CLIP的视觉语言模型进行下游任务图像识别。具体来说,CoOp使用可学习的向量对提示的上下文进行建模,同时保持整个预训练过程中参数保持稳定。为来处理不同的图像识别任务,提供了两种CoOp实现:统一上下文和类特定上下文。

通过对11个数据集的广泛实验,本文证明了CoOp仅需要1到2个shot就可以以较大的幅度击败手工设计的提示,并且能够通过更多的shots获得更大的改进,类如使用16shots,平均增益达到15%。尽管CoOp是一种基于学习的方法,但与使用手工制作的提示的zero-shot相比,CoOp实现了较好的领域泛化能力。

Introduction

构建最先进的视觉识别模型的一种最常用的方法就是训练视觉模型使用离散的标签预测一组固定的对象类别。从技术角度来看,这是通过将图像特征(由ResNet 或者ViT等视觉模型生成)与一组固定的权重(这些权重被看作视觉概念并随机初始化)进行匹配起来实现的。尽管训练类别通常有一个文本形式,例如金鱼、卫生纸,但是他们将被转换为离散标签,这是为了简化交叉熵损失的计算,而封装在文本中的语义在很大程度上未被开发。这种学习范式将视觉识别系统限制在封闭的视觉概念中,使他们无法处理新的类别,因为学习新的分类器需要额外的数据。

最近,CLIP、ALIGN等视觉语言预训练模型已经成为视觉表征学习中有前途的方案。其中主要思想就是使用两个独立的编码器对齐图像和原始文本,其中每个编码器对应一个模态。例如CLIP和ALIGN都将对比损失作为学习目标,它们将特征空间中的图像与对应文本之间的尽可能拉近,将不匹配的相似度尽可能的远。通过大规模的预训练,模型可以学习各种视觉概念,并且可以通过提示轻松地迁移到下游任务中。具体来说就是对于任何一个新的分类任务,可以先向文本编码器中提供任务相关类别的描述生成分类权重,然后与图像编码器生成的图像特征进行比较。

我们观察到,在预训练的视觉语言模型中,文本输入(作为提示)在下游数据集中起着关键作用。如论如何,确认正确的提示是一项艰巨的任务,调整单词通常需要占据大量的时间,因为措施的微小变化可能会对性能造成巨大的改变。

解释图1(a):对于 Caltech101(第 2 个与第 3 个提示),在类标记前添加“a”可使准确度提高 5% 以上。此外,提示工程还需要有关任务的先验知识,理想情况下还需要了解语言模型的底层机制。(b-d)所示,添加与任务相关的上下文可以带来显著的改进,即Flowers102的“花”,DTD的“纹理”和EuroSAT的“卫星”。调整句子结构可以带来进一步的改进,例如,在Flowers102的类标记之后加上“一种花”,在DTD的上下文中只保留“texture”,在EuroSAT的“satellite photo”之前添加“centered”。但是,即使进行了广泛的调整,也不能保证生成的提示对于这些下游任务是最佳的。

受到NLP领域中最近的提示学习研究的启发,本文提出了一种CoOp自动化提示工程,特别是对于预训练的视觉语言模型。具体来说,CoOp 使用可学习向量对提示的上下文单词进行建模,这些向量可以使用随机值或预训练单词嵌入进行初始化。

本文针对不同任务提供了两种的实现方式:第一种是基于统一上下文,它为所有的类别共享相同的上下文,并在大多数类别上表现良好;另一种是基于类特定上下文,它为每个类别学习一组特定的上下文token,这种方式更适合一些细粒度的类别。

在训练过程中,我们使可学习的上下文向量的交叉熵损失最小化,同时保持整个预训练参数的稳定。梯度可以一直通过文本编码器进行反向传播,从而提炼出参数中编码的丰富知识,用于学习与任务相关的上下文。

为了证明 CoOp 的有效性,我们对 11 个数据集进行了基准测试,这些数据集涵盖了各种视觉识别任务,包括对通用对象、场景、动作和细粒度类别的分类,以及识别纹理和卫星图像等专业任务。结果表明,CoOp 有效地将预训练的视觉语言模型转化为数据高效的视觉学习器,只需一两个样本学习的情况下就可以击败手工制作的提示。使用更多的样本学习可以进一步提高性能,例如,使用 16 个样本时,与手工制作的提示的差距平均约为 15%,最高时达到 45% 以上。CoOp 的性能也优于线性探针模型,线性探针模型被称为强大的少样本学习基线。此外,尽管 CoOp 是一种基于学习的方法,但它比零样本模型(使用手动提示)对领域转移的鲁棒性要强得多。

本文贡献:

(1)本文研究了最近提出的视觉语言模型在下游应用中的适应性问题,并确定了与部署效率相关的一个关键问题,即提示工程。

(2)为了针对预训练的视觉语言模型自动执行提示工程,本文提出了一种基于连续的提示学习的方法,并提供了两种可以处理不同识别任务的实现方式。

(3)本文首次表明,所提出的基于提示学习的方法在下游迁移学习性能和大型视觉语言模型的域偏移下的鲁棒性方面都优于手工制作的提示和线性探针模型。

Methodology

3.1 Vision-Language Pre-training

Models

CLIP 由两个编码器组成,图像编码器和文本编码器。图像编码器将高维图像映射到低维嵌入空间中。图像编码器的架构可以采用 CNN 的形式,如 ResNet-50 或 ViT 。另一方面,文本编码器建立在 Transformer 之上,旨在从自然语言生成文本表示。

具体来说,给定一系列单词(token),例如“A photo of dog ”,CLIP首先将每个标记(包括标点符号)转换为小写的字节对编码(BPE)表示,该字母本质上是唯一的数字ID。CLIP 中的词汇量为 49,152。为了便于小批量处理,每个文本序列都包含[SOS]和[EOS]token并限制77的固定长度。之后,ID 被映射到 512-D 字嵌入向量,然后这些向量被传递给 Transformer。最后,将 [EOS] 令牌位置的特征进行层归一化,并通过线性投影层进一步处理。

Training

CLIP 经过训练,可以分别对齐为图像和文本学习的两个嵌入空间。具体来说,学习目标被表述为对比损失。给定一组图像-文本对,CLIP 最大化匹配对的余弦相似度,同时最小化所有其他不匹配对的余弦相似度。为了学习更易于转移到下游任务的各种视觉概念,CLIP 收集了一个由 4 亿个图像文本对组成的大型训练数据集。

Zero-shot Inference

由于 CLIP 经过预训练,可以预测图像是否与文本描述匹配,因此它适应零样本识别。这是通过将图像特征与文本编码器合成的分类权重进行比较来实现的,文本编码器将指定感兴趣类别的文本描述作为输入。

从形式上讲,f 代表图像编码器为图像 x 提取的图像特征,{wi}K i=1 是文本编码器生成的一组权重向量。K 表示类的数量,每个 wi 都源自一个提示,该提示可能具有“A photo of [CLASS]”的形式,其中类标记被特定的类别名替换,比如狗、猫或汽车。

预测概率为:

与传统的分类器学习方法相比,视觉语言预训练是通过随机向量学习封闭集视觉概念来探索开放集视觉概念,从而产生更广阔的语义空间,进而使学习到的表征更易转移到下游任务。

3.2 Context Optimization

本文提出了CoOp(上下文优化)方法,它通过使用连续的向量对上下文单词进行建模,从而避免了手动调整提示,这些向量是从数据中端到端学习的,同时冻结了大量的预训练模型的参数。

Unified Context

(1)首先引入了统一的上下文版本,在所有的类别中共享这些上下文提示。可学习的上下文提示的格式为:

其中每个[V]m(m在1到M之间)都是一个向量,其维度和单词嵌入的维度是一致的,M是上下文token数目的超参数。

(2)将提示t传入文本编码器g(),就会得到一个代表视觉概念表征的分类权重向量(来自于[EOS]位置)。预测概率为:

其中每个提示中的类别token被第i个类名的相应单词嵌入向量替换。

(3)除了像等式(2)中将类标签放在序列的末尾外,我们可以将其放在中间位置:

这增加了学习的灵活性:补充描述:提示可以利用序列后面的单元格添加补充描述,这有助于提供更多关于类别的上下文信息;提前终止:通过使用终止信号,如句号,模型可以学习在适当的时候提前结束序列,而不是必须填充到序列的末尾。

Class-Specific Context

另一种实现方式是设计特定于类的上下文 (CSC),其中上下文向量独立于每个类。作为统一上下文的替代方法,我们发现 CSC 对于一些细粒度的分类任务特别有用。

Training

通过训练,将基于交叉熵的标准分类损失降至最低,梯度可以一直反向传播到文本编码器g(·),利用参数中编码的丰富知识来优化上下文。连续表示的设计也允许在词嵌入空间中进行充分的探索,这有利于对任务相关上下文的学习。

3.3 Discussion

我们的方法专门解决了最近提出的大型视觉语言模型(如 CLIP)的适应新问题。我们的方法与在 NLP 中开发的用于语言模型的提示学习方法之间存在一些差异。

首先,CLIP等视觉语言模型和语言模型的骨干架构明显不同——前者将视觉和文本数据作为输入,并生成用于图像识别的对齐分数,而后者仅为处理文本数据而定制。

其次,预训练目标不同:对比学习与自回归学习。这将导致不同的模型行为,因此需要不同的模块设计。

Conclusion, Limitations and Future Work

大型预训练视觉语言模型在各种下游应用中显示出令人惊讶的强大能力。然而,鉴于这些模型具有“至关重要的核心但不完整”的性质,也称为视觉基础模型,需要使用自动化技术进行调整,以获得更好的下游性能和效率。

本文提供了关于如何使用提示学习将 CLIP等视觉语言模型转变为数据高效的学习器,并揭示了尽管 CoOp 是一种基于学习的方法,但在领域泛化方面的表现比手动提示要好得多。这些结果有力地证明了提示学习对于大型视觉模型具有潜力。

虽然性能非常出色,但 CoOp 的结果相对难以解释,就像 NLP 中的其他连续提示学习方法一样。实验还表明,鉴于 Food101 上的性能较弱,CoOp 对嘈杂的标签很敏感。

尽管如此,CoOp 的简单性使其易于扩展到未来的工作中,并且仍有许多有趣的问题需要探索,例如跨数据集传输和测试时适应。研究大规模视觉模型的更通用的适应方法也很有趣。

  • 22
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CoOp和CoCoOp是两个不同的模型,它们在上下文标记的数量上有所区别。CoOp中引入了较少的上下文标记数量,而CoCoOp引入了更多的参数,即Meta-Net。通过消融实验可以发现,增加参数大小并不是关键,因为用较大的GPU内存来训练CoCoOp相比CoOp会消耗更多的资源。因此,在实验中,CoCoOp使用了批大小为1的训练,并进行了10个epochs的训练。综合来看,CoCoOp在一些方面表现介于CoOp和CLIP之间。对于基类来说,CoCoOp不如CoOp,但超过了CLIP;对于未知类来说,CoCoOp不如CLIP,但超过了CoOp。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [CoOp & CoCoOp](https://blog.csdn.net/qq_46563097/article/details/130281970)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [CoCoOp: Conditional Prompt Learning for Vision-Language Models](https://blog.csdn.net/LuvLive/article/details/130601750)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值