目前适应预训练模型的操作方法涉及更新所有骨干参数,即全面微调。本文介绍了视觉提示调谐(Visual Prompt Tuning, VPT)作为一种有效的替代方案,在视觉上对大型变压器模型进行全微调。从高效调优大型语言模型的最新进展中获得灵感,VPT在保持模型主干冻结的同时,仅在输入空间中引入少量(不到模型参数的1%)可训练参数。通过对各种下游识别任务的广泛实验,我们表明,与其他参数高效调优协议相比,VPT实现了显着的性能提升。最重要的是,在跨模型容量和训练数据规模的许多情况下,VPT甚至优于完全微调,同时降低了每个任务的存储成本。代码可从github.com/kmnp/vpt获得。
对于大模型适应下游任务时,通常的策略是进行端到端的全面微调,然而这种策略需要为每个人物存储部署单独的主干参数,代价比较高。
我们提出了视觉提示调优(VPT)来适应大型预训练的视觉transformer模型,VPT在Transformer的输入空间中注入少量的可学习参数,并在下游训练阶段保持骨干的冻结。总体框架如图2所示。我们首先在第3.1节定义符号,然后在第3.2节正式描述VPT。
给定一个预训练的Transformer模型,在Embed层之后的输入空间中引入了一组p个连续的维度为d的嵌入,即prompts。VPT有两个变体,即VPT-shallow和VPT-deep,取决于涉及的Transformer层数。
Prompts仅插入到第一个Transformer层L1中:
Prompts引入到每个Transformer层的输入空间中:
第(
i
i
i+1)层的输入prompt集合:
P
i
=
p
k
i
∈
R
d
∣
k
∈
N
,
1
≤
k
≤
m
P_i = {p_{k_i} \in \mathbb{R}^d | k \in \mathbb{N}, 1 \leq k \leq m}
Pi?=pki??∈Rd∣k∈N,1≤k≤m
VPT在存在多个下游任务时非常有益,只需存储每个任务学到的prompts和分类头(Head),并重复使用预训练Transformer模型的原始副本,从而大大减少了存储成本。
给出了在4个不同的下游任务组中平均微调预训练的VPT-b/16的结果
我们提出了可视化提示调优,这是一种新的参数高效方法,可以利用大型视觉Transformer模型进行广泛的下游任务。VPT在输入空间中引入了特定任务的可学习提示,保持预先训练的主干固定。我们证明VPT可以超越其他微调协议(通常包括完全微调),同时极大地降低存储成本。我们的实验也提出了关于不同预训练目标的视觉transformer的微调动力学,以及如何有效地转移到更广泛的视觉识别任务的有趣问题。