Comment: NeurIPS 2022
视觉语言模型中用于zero-shot泛化的测试期间提示调优
摘要
预训练的视觉语言模型在许多具有恰当文本提示的下游任务中表现出不错的zero-shot泛化。最近的研究并非使用手动设计的提示,而是使用下游任务中的训练数据来学习提示。虽然这种方法是有效的,但是对于特定领域的数据进行训练,当面对不可见的新领域时,模型的泛化能力会下降。
本文提出了TPT(Test-time prompt tuning),这是一种可以使用单个测试样本动态学习自适应提示的方法。对于图像分类,TPT通过最小化熵(置信度筛选 )来优化提示,以至于模型在每个测试样本的不同增强视图中具有一致的预测。
在评估对自然分布偏移的泛化时,TPT将CLIP的Zero-shot top-1准确性平均提高了3.6%,超过了先前需要额外任务特定训练数据的调优方法。在评估具有不可见类别的跨数据集泛化时,TPT 的性能与使用额外训练数据的最新方法相当。
Introduction
视觉语言预训练模型的最新研究,如CLIP 和ALIGN,为开发视觉任务的基础模型提供了一个很有前途的方向。这些基础模型在数百万含噪声的图像-文本对上训练后编码了广泛的视觉概念,并且可以在没有特定任务训练数据的情况下以zero-shot的方式应用于下游任务。这可以通过设计适当的指令提示来实现。
解释图1:使用提示' a photo of a '预定一个类别名称。然后使用CLIP来测量图像与各种类别描述的对齐度,进而对图像进行分类。因此,设计提示在以zero-shot的方式将基础模型应用于下游任务中起着至关重要的作用。然而,这种手工设计的提示需要特定领域的启发,并且可能不是最优的。
最近的工作提出使用下游任务的训练数据直接学习提示来解决这个问题。可以使用训练数据微调提示,因为提示嵌入是模型输入的一部分并且关于损失函数是可微的。这种方法可以找到比手工制作的提示更好的提示,但是学习到的提示仅限于训练数据对应的分布和任务,除此之外可能具有有限的泛化性。此外,这种方法需要带有标注的训练数据,这可能是昂贵的,并且对于零样本任务是不可用的。
本文方法:为了解决以上挑战,本文提出测试时间提示调优( TPT ),它仅使用给定的测试样本实时地调整提示。调整后的提示适应于每个任务,使其适用于zero-shot泛化,而不需要任何任务特定的训练数据或标注。由于没有使用额外的训练数据或标注,TPT保留了零样本泛化设置。
本文在两种不同的下游任务上探索TPT:图像分类和上下文相关的视觉推理。针对每个下游任务,本文设计了符合任务本质的定制化测试时间调优策略。保证一般性,考虑CLIP作为视觉语言基础模型,因为它在设计上的简单性和它的广泛适用性。
对于图像分类,一个测试样本就是一个输入图像。给定测试时的单个样本,通过随机生成多个增强视图来进行提示调优,并优化文本提示,使模型在不同的增强视图中具有一致的预测。这是通过最小化增强视图输出之间的边际熵来实现的。此外,由于某些增强视图可能会误导模型预测,因此本文提出置信度选择来过滤掉带有噪声的增强视图。我们丢弃了具有高预测熵(即低置信度)的增强视图,在一致性优化中只包含高置信度的视图。
本文评估了TPT在两种图像分类设置下的zero-shot的泛化能力:自然分布偏移和跨数据集泛化。对于评估自然分布偏移的设置,TPT在zero-shot设置下将CLIP的Top - 1准确率平均提升了3.6 %,与之前需要额外训练数据的提示调优方法相比,达到了相当的准确率。相比于使用手工提示,TPT在ImageNet - A上最大提升了6.9 %,超过了现有few-shot提示调优方法5.1 %。对于评估包含未知类别的跨数据集泛化的设置,TPT采用最先进的少样本快速调优方法,无需额外的训练数据或标注,实现了准性能。
对于上下文相关视觉推理的第二个任务,例如Bongard-HOI,一个测试样本包含两组支持图像和一个用于评估的查询图像。这两组支持图像的集合分别体现了人-物体交互(HOI)概念(例如骑自行车)的存在与不存在,然后要求模型推断查询图像是否包含底层概念。给定一个测试样本,我们使用提示调优来应用TPT,来更好的区分两个支持集,以至于更好对查询图像进行分类。尽管使用了支持集,本文仍然被认为是zero-shot的视觉推理,因为既没有使用来自其他概念的训练任务,也没有使用测试时查询图像的标注来更新测试任务的提示。通过将TPT应用于上下文相关的视觉推理,我们比现有方法高出4.1%。
本文贡献
(1)本文提出了测试时域提示调优(TPT),它不需要任何训练样本或标注来优化提示。本文是第一个以zero-Shot方式对单个测试样本进行提示调优的。
(2)本文引入了置信度选择作为TPT用于图像分类的即插即用的模块。它通过过滤带有噪声的增强视图来改善增强视图之间的熵最小化。
(3)本文在自然分布偏移、跨数据集泛化和上下文相关的视觉推理下对图像分类进行了广泛的实验。TPT以零样本的方式改进CLIP,使其与需要额外训练数据的提示调优方法相当。
TPT:Test-Time Prompt Tuning
本节首先讨论如何使用手工提示且以zero-shot的方式将CLIP应用于下游任务中。然后介绍使用下游任务的训练来进行CLIP提示调优方法的发展。最后介绍如何将本文的方法应用到图像分类中。本文也介绍用于上下文相关的视觉推理的TPT及其背景知识。
3.1 Background
Contrastive Language-Image Pre-training (CLIP)
CLIP包含两个并行的编码器,其中图像编码器将图像输入映射为特征向量,文本编码器将文本输入映射为文本的特征向量。CLIP通过促进两个特征向量之间发相似性对比损失来训练,从而促使文本和图像在特征空间中对齐。F = {Evisual, Etext}表示CLIP模型,Evisual表示图像编码器, Etext表示文本编码器。
首先回顾如何使用手工提示且以zero-shot方式将CLIP应用于下游任务。本文以图像分类为例。对于K类分类问题,y类的单个测试图像Xtest。在zero-shot的基线设置中,我们在每个类别Y = {y1,y2,,,,yk}前加一个手工设置的提示前缀p=”a photo of a”,形成特定的文本输入{p;yi}。然后将这些类别描述输入到文本编码器中,得到文本特征{ t1,t2,..,tK },其中ti = Etext( { p ; yi })。将每个文本特征ti与图像特征v = Evision ( X )进行匹配,计算相似度得分si = sim(ti·v),其中sim( ,)表示余弦相似度。图像X在k个类别上的预测概率为:
Prompt tuning using downstream training data
当下游任务的数据标注可以获得情况下,提示调优方法没有使用手工设计的提示,而是训练提示信息提高性能。在文本嵌入空间中,使用来自下游任务中的带有标注的训练数据Dtrain = {(Xi, yi)}来优化提示(L为token数目,D为token维度)。目标是获得文本输入{ p;Y } = { { P;Yi } for yi∈Y },可以为模型提供关于任务的最有用的上下文信息。对于具有交叉熵损失L的图像分类问题,该问题可以表述为:
Context-dependent visual reasoning
对于上下文相关的视觉推理任务,如Bongard- HOI,一个测试样本包含两组支持图像和一个用于评估的查询图像。这两组支持图像分别体现了人-物体交互( HOI )概念(例如, "骑自行车")的存在和不存在,然后要求模型推断查询图像是否包含底层概念。具体来说,该任务中的每个概念是一个视觉关系c =〈s,a,o〉,其中s是主语( s = HOI任务中的"人"),a表示动作,o表示对象。每个测试样本Xtest通过在一组支持图像(正例)中呈现c =〈s,a,o〉来捕捉这个概念,而在另一组支持图像(反例)中呈现c′=〈s,a′,o〉,其中a′≠a。值得注意的是,o和a都不是显式给定的,它依赖于模型的推理能力来预测查询图像是否包含测试样本的特征概念c。
现有方法通过在一组相似任务上训练模型来逼近Bongard-HOI问题,使其能够在测试时刻对测试样本做出相似推断。当将CLIP应用于该任务时,我们不使用额外的训练数据,因为CLIP学习了丰富的视觉概念,因此自然适用于此类视觉推理任务。
3.2 TPT: Test-Time Prompt Tuning
Why optimize prompts?
CLIP包含了在海量多样的数据集上通过预训练得到的丰富知识。然而,如何有效地提取这些知识仍然是一个开放的问题。一个简单的策略是直接在一个输入类别上对模型进行端到端或子集层的微调。然而,先前的工作表明,这种微调策略会导致模型针对特定领域,从而失去基础模型的分布外泛化性和鲁棒性。另一方面,提示调优通过修改模型输入的上下文信息,在预训练模型之外工作,从而不扭曲预训练的特征。
本文目标是利用CLIP的现有知识,以zero-shot的方式提高其泛化能力。因此提示调优是实现该目标的好方法。更进一步,本文将测试时间提示调优作为一种方法,为模型提供针对单个测试样本的情境,这有助于精确检索CLIP的知识。
在推理阶段,唯一可用的信息就是没有标签信息的单个测试样本Xtest。因此,TPT在单个测试样本的基础上对测试时刻的提示P进行了优化。一般来说,本文的目标可以表述为:
与以上使用下游任务数据进行提示调优的方法不同的是本文方法不需要任何标签或zero-shot测试样本以外的任何数据。
TPT for image classification.
因为测试期间提示调优中不可获得标签数据,因此本文必须选择无监督损失用于提示调优。本文设计的TPT目标为对于给定测试样本的不同增强视图之间预测的一致性。具体来说,我们使用一组随机增广操作A来对测试样本进行操作得到多个增强视图,并且最小化平均预测概率分布的熵:
其中代表当提供提示p和第i个增强视图时,模型产生的类别概率向量。
此外,为例减少随机增强产生的噪声,本文提出置信度筛选来过滤掉低置信度(高熵)预测的视图。图像的这些视图可能缺乏正确分类的重要信息,例如随机裁剪可能剪掉了重要的图像内容。本文选择熵值低于τ的自信样本,为每个测试样本自适应调整τ,将N个增强视图按照熵值由低到高排序(也就是置信度由高到低排序),然后取ρ分位点的熵值。对于τ,置信度筛选可以写成增广样本[H(pi) ≤ τ ]上的掩码,其中H表示增广视图上预测的自熵。
在N个增强视图熵使用ρ分位数截断进行置信度筛选,公式4平均概率改为:
TPT for context-dependent visual reasoning.
与图像分类不同,每幅图像只有一个真实标签,而在Bongard-HOI 中预测的正确性依赖于上下文(也就是图像样本),即是二进制的(也就是包含概念c或者不包含概念c)。在二元标签的情况下, 一种简单的提示策略是对正例和反例进行手工标注,例如真假或者Yes/No。另一方面,对于我们提出的TPT,我们可以直接在测试样本的示例图像上学习一个最优的标签token cls。更重要的是,对于视觉推理,TPT可以以文本提示的形式显示学习上下文(视觉概念),并借助语言上下文辅助视觉语言模型的视觉推理。形式上,给定每个测试样本中的M个支持图像,上下文相关推理的TPT目标可以写为:
其中y ∈ {0, 1}分别代表正例或者负例,用于计算交叉熵损失。
与图像分类不同的是,我们同时调节二值标签token cls = {cls1, cls2}和提示p。对于每张图像,我们将输入到CLIP的文本集合为T = {T1, T2 | Ti = {p, clsi}}。
需要注意的是,支持集是Bongard-HOI中必不可少的一部分,它为上下文相关的任务提供了上下文。因此,本文的方法仍然是在测试期间工作,没有训练数据或标注。
Conclusion
本文研究如何充分挖掘预训练视觉-语言基础模型作为更好的zero-shot学习器的潜力。本文提出了测试时间提示调优( Test-time Prompt Tuning,TPT ),一种新的提示调优方法,它可以通过单个测试样本学习自适应提示。本文使用CLIP作为基础模型,证明了在对自然分布偏移和跨数据集泛化的鲁棒性上的有效性。在不需要任何训练数据或标注的情况下,TPT提高了CLIP的零样本泛化能力。