我如何决定CoOp:CLIP的文本模板?
三个要点
✔️ CLIP的及时工程是一个重大的实际挑战
✔️ 我们提出CoOp,它可以自动学习Prompt工程的端到端方式
✔️ 我们在11个数据集上展示了CoOp的有效性和稳健性。
Learning to Prompt for Vision-Language Models
written by Kaiyang Zhou, Jingkang Yang, Chen Change Loy, Ziwei Liu
(Submitted on 2 Sep 2021 (v1), last revised 21 Sep 2021 (this version, v2))
Comments: Published on arxiv.
Subjects: Computer Vision and Pattern Recognition (cs.CV); Artificial Intelligence (cs.AI); Machine Learning (cs.LG)
code:![]()
![]()
本文所使用的图片要么来自该文件,要么是参照该文件制作的。
简介
在这篇文章中,我们介绍了提出CoOp(Context Optimization)的论文。
OpenAI的CLIP是一个多模态模型,在来自互联网的大量数据上进行训练,这些数据由图像和语言说明组成,其衍生产品DALL-E和StyleCLIP在社交网站上大放异彩。
CLIP有两个编码器,一个图像编码器和一个语言编码器。每个人都通过将图像和语言说明(用Prompt表示)投射到表示空间并测量它们的相似度来进行分类。
然而,CLIP论文中的Prompt是由人类根据经验准备的。有必要为不同的数据集准备不同的Prompt,并且需要计算资源来调整它们。特别是,Prompt的微小变化对分类准确性有很大影响。例如(图1),"一张[CLASS]的照片 "和 "一张[CLASS]的照片 "之间的区别,以及Caltech101数据集中没有 "a "的情况。光是这一点就有大约5%的差异。
因此,出于实际目的,CLIP的即时工程是一个主要问题。对于 "我如何决定CLIP的文本模板(Prompt)"这一问题,有一个答案。这个问题有一个答案。这个问题有一个答案:CoOP,一种自动提示工程的方法。CoOP的一个特点是,它允许你用以前学过的CLIP,以端到端的方式学习Prompts。
建议的方法:CoOp
由于本文提出的CoOp是基于CLIP的,我们为CLIP制定了Zero-Shot推理。
在公式(1)中,f和w_i分别是由图像编码器和语言编码器投射到表示空间的图像和提示语。w_i表示从CLASS i获得的提示语表示。然后,我们计算f和每个w_i在表示空间中的余弦相似度(<.,>)。得到的余弦相似度再乘以一个系数1/τ,并应用于一个softmax函数来计算分类类别概率。然而,我们使用预训练的CLIP的图像编码器、语言编码器和1/τ系数。
图2显示了所提出的方法CoOp的整体图,它是CLIP的一部分,学习Prompt输入到语言编码器。
本节介绍了所提出的CoOp方法中学习Prompt的部分。
按照公式(2),将提示输入扩展到语言编码器。[V]_m(m=1,2....M)是一个具有语言嵌入维度的向量(对于CLIP来说是512),其中M是一个超参数,决定了要设计的Prompt中的标记数量,在我们的实验中被设定为16。
如果我们将Prompt t输入到语言编码器g(⋅)中,拟议方法CoOp的表述就变成了公式(3)。
建议的方法,即CoOp,可以有一个中心词表示提示中的CLASS,也可以对每个CLASS有不同的参数V。在本研究中,我们对这两种CoOp方法的四个不同组合进行了实验。
实验:与CLIP的比较
少见的学习
对于新的数据集,提议的方法CoOp能够用少量的样本学习CLIP提示。在我们的实验中,我们在CLIP论文中使用的11个图像分类数据集上,将在Few-Shot学习设置中训练的拟议方法CoOp的提示与两个基线进行比较。第一个是使用CLIP论文中设计的Prompt的Zero-Shot CLIP。第二种是CLIP论文中提出的线性探针CLIP,它为CLIP增加了一个线性分类器。
结果(图3.)显示,所提出的方法CoOp在Few-Shot学习中表现良好。第一个图显示了11个数据集的平均值。对于所设计的CLIP提示,用平均两个样本的两次更新训练的提示表现更好。也可以看出,所提出的方法在大多数数据集上都优于线性探针CLIP。
接下来,我们分别将所提出的方法与Zero-Shot CLIP和Linear Probe CLIP进行比较。图4显示了所提出的方法CoOp在16次射击中比零枪射击CLIP的准确性有所提高。在7/11个数据集上实现了10%的准确性提高。准确率提高5%是很重要的,因为ImageNet是一个1000级的分类。
接下来,与线性探针CLIP相比,提出的方法CoOp在8/11个数据集上更有优势。特别是,平均而言,当这8个镜头都被训练时,所提出的方法CoOp比线性探针CLIP的性能高出10%以上。从这些结果来看,作者认为所提出的方法CoOp能够学习与数据集相关的Prompt。
对分布转移的稳健性
与CLIP不同,提议的方法CoOp是在一个特定的数据分布上训练的。因此,存在着学习伪相关的风险,无法归纳到未知的数据分布。在这里,我们比较了在ImageNet上训练的拟议方法与Zero-Shot CLIP和Linear Probe CLIP在目标数据集ImageNetV2、ImageNet-Sketch、ImageNet-A和ImageNet-R上的不同数据分布的情况。在目标数据集ImageNetV2、ImageNet-Sketch、ImageNet-A和ImageNet-R上探测CLIP。
可以看出,所提出的方法CoOp在目标数据集上显示出比Zero-Shot CLIP和Linear Probe CLIP更好的准确性。然而,CoOp在源数据集ImageNet上的准确性已经比基线好了5%左右,所以表1.中的结果被作者认为是合理的。
进一步分析
最后,我们介绍了一些额外的比较实验,因为CLIP的Prompt不是唯一定义的,这在CLIP的论文中提到过,我们提出了Prompt Ensembling,一种同时使用多个Prompt的方法。表2.显示,我们的CoOp比Prompt Ensembling更好。
图5显示了在M=4,8的情况下提出的CoOp方法的准确性和在提出的CoOp方法中使用的Vision backnone的比较。可以看出,M=16是最好的。
摘要
我们相信,在2021年提出的CLIP和ALIGN之后,图像-语言多模态预训练模型将大幅增长。在处理这类模型时,不可避免地要为语言编码器设计Prompt输入。这也是自然语言处理NLP的一个热门领域。特别是在GPT-3之后,对Prompt的研究有越来越多的趋势(如何从GPT-3中获得最佳效果)。这是因为Prompt允许我们在预训练阶段了解下游任务,从而开发出更通用的预训练模型。
考虑到这一点,我们引入了CoOp,一种在CLIP中学习Prompt的方法。
与本文相关的类别