Motivation
视觉语言模型如 CLIP 和 ALIGN,为显式地利用人类语言来有效地解决下游识别任务指明方向。通过对比学习来学习图像和文本的对齐嵌入,鼓励图像的表示及其语言描述相似。在下游任务中,提供与任务相关的内容,即类别描述,可以显著地有利于预训练的 VLM 进行识别,甚至可以在没有训练样本的情况下进行 Zero-Shot 识别。
使用手工制作的提示模板构建类别描述。默认提示符是 “一个{类}的照片”,适用于一般的对象识别 (例如 ImageNet 和 STL-10),但处理细粒度的目标识别是困难的。在花卉数据集 (Oxford Flowers 102) 上,更好的提示选择是 “一张{类}的照片,一种花。” 在这种情况下,提示词 “flower” 指示当前任务的上下文,从而提供更精确的描述。
从这个角度来看,提供的文本应该适应任务定义的上下文,即对目标任务的视觉表示的低偏差。然而,手动设计不可避免地会引入人为偏差,并且可能对目标任务不太理想。因此,为不同的识别任务定制合适的提示依赖于重复和耗时的尝试,并且还需要一个大的验证集来选择提示。
另一个挑战来自视觉内容的多样性。由于姿态、变形和光照条件等固有因素,同一类别内的不同样例之间存在显著差异。这种类内差异使提示符很难充分描述视觉差异,Prompt 应该是多样化和信息性的,允许处理视觉表示的变化。现有的工作集成了80个手工制作的提示来预测 ImageNet 上的类别,包括 a photo of a small {class},a photo of a big {class} 等。然而,它仍然有手工设计的限制,需要大量的工作来选择合适但可能不是最优的提示集合。
Soft prompts, also known as continuous prompts, represent the (word) embeddings of the raw (discrete) prompts.
Method
Learning the Prompt Distribution
为了处理不同的视觉变化,ProDA 旨在学习各种提示符的分布。直观地,应该学习一个最优提示分布
p
(
p
)
p(\mathbf{p})
p(p),使经验分类损失最小化。在这种情况下,分类器权重
w
1
:
C
(
P
)
\mathbf{w}_{1:C}(\mathbf{P})
w1:C(P) 遵循由
p
(
P
)
p(\mathbf{P})
p(P) 和文本编码器
g
(
⋅
)
g(·)
g(⋅) 确定的分布,导致预测概率
P
(
y
∣
x
)
P(y|\mathbf{x})
P(y∣x) 为边际似然
E
P
[
p
(
y
∣
x
,
w
1
:
C
(
P
)
)
]
\mathbb{E}_\mathbf{P}[p(y|\mathbf{x}, \mathbf{w}_{1:C}(\mathbf{P}))]
EP[p(y∣x,w1:C(P))]。不幸的是,显式地计算这种边际似然是困难的,需要对
P
\mathbf{P}
P 进行积分。在
P
\mathbf{P}
P 是离散随机变量的特殊情况下,计算是可能的。然而,它限制了整体提示的学习。此外,学习提示的准确分布是困难的,需要一个复杂的序列生成模型。在这项工作中,提出了一种有效的方法,通过学习分类器权值的分布,即类别描述的输出嵌入,来间接学习提示分布。虽然提示符
P
\mathbf{P}
P 的原始分布是复杂的,但在一个类别内生成的权值
w
c
(
P
)
\mathbf{w}_c(\mathbf{P})
wc(P) 是相邻的,可以用多元高斯分布来建模。
具体来说,假设 N ( μ 1 : C , Σ 1 : C ) \mathcal{N}(\mu_{1:C}, \mathbf{Σ}_{1:C}) N(μ1:C,Σ1:C) 是权重 w 1 : C \mathbf{w}_{1:C} w1:C 的 “真实” 分布。可学习的连续提示符集合 P K = Δ { P k } k = 1 K \mathcal{P}^K\stackrel{\Delta}{=}\{\mathbf{P}_k\}^K_{k=1} PK=Δ{Pk}k=1K。“真实” 权重分布的均值和协方差可以通过一系列分类器权重 { w 1 : C ( P k ) } k = 1 K \{\mathbf{w}_{1:C}(\mathbf{P}_k)\}^K_{k=1} {w1:C(Pk)}k=1K 来估计,这些权重是由 P K \mathcal{P}^K PK 的提示生成的。
即使采用高斯分布假设,在多类情况下,边际似然的精确计算仍然是棘手的。为解决这个问题,推出了一个有效优化的损失上界。
Improving Prompt Diversity
由于权重分布的参数是从提示信息收集中估计出来的,因此提示信息的质量会影响得到的权重分布。多样化的提示可以更充分地描述视觉内容,提高测试样本的泛化程度。研究表明,不同的分类器能够增强泛化。
Position Diversity
为了进一步提高提示的多样性,明确区分 P K \mathcal{P}^K PK。组合提示和类别名称的一种常用方法是将类别名称放在提示的末尾。然而,生成的文本描述是有偏差的。为了提高生成的文本描述的多样性,在不同提示符的前面、中间和结尾位置插入类别名称。实验中,这三种类型在 P K \mathcal{P}^K PK 上的比例分别为1/4、1/4和1/2。
Semantic Orthogonality
不同的提示应该表示不同的内容。一种自然的方法是鼓励它们具有不同的语义。输入提示
{
P
k
}
k
=
1
K
\{\mathbf{P}_k\}^K_{k=1}
{Pk}k=1K,而不将类别名称合并到预训练的文本编码器中,以获得它们的语义嵌入
{
g
(
P
k
)
}
k
=
1
K
\{g(\mathbf{P}_k)\}^K_{k=1}
{g(Pk)}k=1K,语义正交性损失用来鼓励提示是不同的:
L
s
o
(
P
K
)
=
1
K
(
K
−
1
)
∑
i
=
1
K
∑
j
=
i
+
1
K
∣
<
g
(
P
i
)
,
g
(
P
j
)
>
∣
\mathcal{L}_{so}(\mathcal{P}^K)=\frac{1}{K(K-1)}\sum^K_{i=1}\sum^K_{j=i+1}|<g(\mathbf{P}_i), g(\mathbf{P}_j)>|
Lso(PK)=K(K−1)1∑i=1K∑j=i+1K∣<g(Pi),g(Pj)>∣
其中
<
⋅
,
⋅
>
<·, ·>
<⋅,⋅> 表示余弦相似度。