摘要
已经证明,在从预训练的基础模型中高效提取知识方面,提示调整(prompt tuning)技术是非常有效的,这些基础模型包括预训练的语言模型(PLMs)、视觉预训练模型以及视觉-语言(V-L)模型。然而,对于所有实例,无论它们内在差异如何,都使用固定软提示与输入拼接的预定位置的有效性仍然不明确。提示在不同实例和任务中的位置、长度和表示等变量,可能会显著影响提示调整的性能。在这种情况下,我们提供了一个理论分析,该分析显示,优化提示的位置以包含输入可以捕捉到传统的前缀或后缀提示调整方法无法捕捉的额外语义信息。基于我们的分析,我们提出了一个统一的动态提示(DP)调整策略,该策略根据特定任务和实例动态确定提示的不同因素。为了实现这一点,我们使用带有Gumble-Softmax的轻量级学习网络,使我们能够学习依赖于实例的指导。实验结果强调了动态提示调整在广泛的任务范围内,包括NLP任务、视觉识别任务和视觉-语言任务上所实现的显著性能提升。此外,我们在全数据、少样本和多任务场景下建立了我们方法的普遍适用性。代码可在 https://github.com/Xianjun-Yang/DPT 获得。
1 引言
近年来,在机器学习领域,普遍的趋势是采用两步法在自然语言处理(NLP)任务[14, 38, 46, 31]、计算机视觉任务[24, 29, 60, 59]和多功能视觉-语言任务[45, 59, 60, 42, 26]中实现显著性能。这种方法包括在庞大且多样化的数据集上进行初始预训练,随后在更小、针对特定任务的监督数据集上进行微调(FT)。尽管这种方法取得了显著成果,但在处理模型不断增长的大小时,从T5 [46]的30亿参数到GPT-3 [7]的惊人1750亿参数,它带来了挑战。因此,研究界热情地致力于开发新的方法,旨在实现参数高效的适应。这一领域有两个突出的策略,即前缀调整(PFT)[32]和提示调整(PT)[30]。这些方法选择性地微调与原始预训练模型不同的一个小参数子集,从而绕过了微调整个基础模型的昂贵过程。另一种探索涉及稀疏微调[5],它仅专注于优化预训练语言模型(PLMs)的偏差项。此外,研究人员还致力于设计稀疏模块,例如巧妙地使用超复数乘法(PHM)层[57]、紧凑型模型[27]和低秩适应(LoRA)[21]。通过操纵大大减少的参数数量,这些方法通常展现出与传统微调相当的性能,特别是在十亿规模的PLMs背景下,这一现象通常被称为规模的力量[30]。
如[36]所述的预训练、提示和预测范式,可以分为软提示和硬提示的领域,从而实现了这一开创性方法的无缝优化和辉煌可视化。然而,大多数先前的研究要么在任务中的所有实例上保持一组静态优化的提示[40, 37],要么仅仅将提示添加到所有输入的开头[51, 18, 17]。最近,[56]提出通过Adapter [20]模块为NLU任务生成依赖于实例的提示,并显示出明显的性能提升。同样,[2]通过从多任务中学习到的提示的注意力混合物动态改变依赖于实例的软提示。然而,它们仍然采用固定的位置和固定的长度来与输入拼接提示,这可能是次优策略。
图1:标准提示调优在SuperGLUE上获得了次优分数。我们的动态提示(adap_*)始终产生优越的结果。T5-XL的微调结果在[1]中有报道。
图2:我们方法的概述。学习网络首先预测与任务或实例相关的提示位置、长度和提示池。然后,将新的软提示与实例连接到冻结的语言、视觉或V-L模型中进行预测。提示和学习网络中的参数同步更新。规范提示调优可以看作是动态提示的一种特殊情况,而所有实例都预先准备了相同的软提示。
据我们所知,对提示位置、长度和提示池的动态操纵的系统探索在文献中尚属空白。受这一空白的驱动,我们受到启发,开始研究动态提示(DP)的各种方法,旨在从大型基础模型中提取宝贵见解。我们的努力包括一个全面的理论分析,揭示了优化与输入拼接的提示位置的可能益处,从而捕捉到传统的前缀或后缀提示调整方法无法封装的额外语义。受我们的分析启发,我们提出了一个动态提示(DP)调整的统一策略,其中不同的因素根据手头的特定任务或实例动态确定。我们新颖方法的概述总结在图2中。具体来说,我们结合使用一层前馈网络和Gumbel-Softmax技术[22]来学习位置或长度的分类分布,从而在任务和实例级别上进行优化。为了彻底评估动态拼接位置、长度和提示池的有效性,我们在SuperGlue基准[52]上进行了独立以及同时的实验。我们研究的实证结果显示,通过动态提示,跨越不同大小的模型取得了显著的性能提升。这一进步有效地缩小了提示调整与传统微调之间的差距,如图1所示。我们的发现强调了动态提示在提升模型能力和揭示其在大型预训练模型领域重要性方面的巨大潜力。
我们的方法作为一个多功能且强大的组件,能够无缝地集成到广泛的问题领域,以解锁更高的性能。除了在NLP任务的提示调整和P-tuning v2中的应用,如先前研究[37]所建立,我们还将我们的方法扩展到包括其他方法论。值得注意的是,我们成功地将我们的框架应用于视觉提示调整(VPT)[24]和MaPLe [29],服务于多功能提示学习的领域。我们动态提示技术的融入在这些不同的方法论中带来了额外的准确度提升。此外,我们的研究不仅展示了动态提示在单任务设置中的有效性,而且在多任务和少样本学习场景中也是如此。这种更广泛的应用进一步放大了我们工作的潜在影响,并巩固了其在各种学习范式中的相关性。
本文的主要贡献包括以下内容:
- 我们是第一个提出依赖于实例的提示位置、长度和表示的动态提示。
- 我们的创新研究产生了一个全面的框架,用于阐明动态调整的软提示与传统提示调整方法相比具有优越性能的机制。
- 我们进行了实验,以验证我们的方法在包括NLP任务、视觉识别任务和视觉-语言任务在内的广泛任务中的有效性。
2 相关工作
提示调整(Prompt Tuning)。提示调整由[30]提出,这是一种简单但有效的机制,用于学习“软提示”(soft prompts),以条件冻结语言模型执行特定的下游任务,作为前缀调整[32]的替代,后者优化了附加到每个变压器层前的一些特定层。这类参数高效调整方法[34, 25, 8]已被证明在调整的参数数量远少于传统微调的情况下依然强大。在P-Tuning v2 [37]中,提示调整通过在每个变压器输入层前添加提示来改进,从而增加了复杂性和可调整的参数。[48]通过提示迁移改进了PT,并研究了软提示在不同下游任务之间的迁移性。他们发现,经过训练的软提示可以有效地迁移到相似的任务上,显著加速训练并在作为初始化时提高性能。[51]也显示,在一个或多个源任务上学习提示,然后使用它来初始化目标任务的提示,可以胜过标准的模型调整。[40]通过一种分层结构化的剪枝消除了负提示标记,进一步探索了提示调整的极限。[54]从理论上证明了提示调整在较弱的非退化条件下获得了下游任务的保证。最近,提示调整也被引入到视觉任务中[24, 9, 33],例如用于持续学习的视觉提示[53],以及用于图像修复[4]。此外,还提出了用于解决多模态应用,如视觉-语言应用[29, 45, 59, 60, 42, 26]的提示技术。
实例依赖的提示调整(Instance-dependent Prompt Tuning)。IDPG [55]提出了一种通过上下适配器模块生成实例依赖提示的方法。他们利用参数化的超复数乘法(PHM)层[57]来减少生成模块的参数数量。[2]通过源多任务提示的注意力混合改进了实例依赖的提示,其中源提示以多任务方式预训练,这也被[49, 3]采用。最近,[11, 50]显示,基于变换器的PLMs通过梯度下降在上下文中学习,这可能是为什么不同的上下文示例可以显著改变结果[35]的原因。多样化的上下文示例可以被视为硬提示,不同的硬提示选择可以显著影响更具挑战性的推理任务[58]。受此观察的启发,我们相信动态调整的软提示对于高效的提示调整也是至关重要的。此外,[19]通过观察注意力和前馈层,并将提示调整视为简化的前缀调整[30, 37],给出了各种参数高效学习方法的统一视角。在这项工作中,我们推导了一个统一框架,以包括各种动态提示方法。
3 方法
在本节中,我们首先在第3.1节中导出提示调优的统一视图,然后描述几种动态提示策略:第3.2节中用于与输入连接的动态位置、动态长度和动态表示,如图2所示。
3.1 统一视图
与规范的提示调优[30]不同,我们将提示分为两部分:前缀和后缀。形式上,对于序列,查询矩阵为,键矩阵为,值矩阵为。将长度为l的软提示符P分成两部分,P = [P1;P2],其中, 。生成的新输入变为,则新的键和值变为和。在这里,表示连接操作。通过矩阵分解,得到:
式中, , , 。
对于新查询,注意头模块变为:
根据上面的定义,我们可以得出一个统一的提示调优视图,如下面的公式所示。详细推导见附录B。
在这个统一的公式中,是标准化的权重,用于控制(前缀)提示调优,后缀和标准注意之间的注意力分配。当不存在时,后缀权重等于0,因此结果相当于标准的提示调优。通过引入, Head可以更加灵活地适应不同的查询x,并可能提供无法捕获的额外语义。理论分析表明,优化提示符的位置以包含输入,可以捕获传统的前缀或后缀提示调优方法无法捕获的额外语义信息。我们的动态提示受到这样一个公式的启发,即期望不同的提示与不同的查询耦合。
3.2 动态提示
在本节中,我们介绍如何使用动态提示(DP)来适应针对任务或实例感知的软提示插入位置、长度和表示的调整。
遵循传统的提示调整[30],给定一个由n个标记组成的序列x,,一个预训练的基础模型,如语言模型T5 [46],生成标记的嵌入,其中d是编码表示的维度。对于视觉提示调整,x是一系列视觉隐藏特征[24]。提示调整引入了一个软提示,其中l是软提示的长度。下一步是将提示P与实际输入X连接成一个矩阵X′ = [P; X],然后将X′输入到模型LM中进行优化,其中只优化P中的参数,而LM的骨干部分保持冻结。
动态位置与输入的连接。如上所述,软提示与输入的连接仅仅是将P作为X的前缀。然而,我们假设这种连接可能不是最佳策略。直观上,前缀P为输入序列提供了额外的信息并提供了一种优化的替代方案,但这可能还不够。因此,我们提出了动态位置来填补这一空白:整数dpos是要为不同任务或实例学习的参数,然后原始的P可以被分成两部分,其中和 。因此,LM的新输入变为
其中dpos ∈ [0, l]是要学习的整数,且当dpos=l时,传统的提示调整是一个特例。由于dpos是分类的,我们使用一层网络和Gumbel-Softmax [22]来优化它。具体来说,给定的输出,,我们需要估计一个同样大小的二进制向量。实现二值化函数的一个简单方法是从中选择最大值的位置,然而,这种方法是不可微分的。有几种方法允许我们通过离散节点传播梯度[6]。在这项工作中,我们采用了Gumbel-Softmax采样方法[23, 41]。因此,我们有
其中τ是由E.1节中详细说明的总训练步骤调整的退火温度。logit是一个(l+1)维二进制向量,其中只有一个元素等于1,其他所有元素都为零。使用Gumbel-Softmax获取插入位置的详细推导包含在附录C中。
先前的研究[30]表明,对于特定模型和任务,提示长度是至关重要的,而超过20个软标记(soft tokens)所带来的收益是微不足道的。因此,在大多数实验中我们采用l=20。这样,当l固定时,软提示的参数与PT相同,使得比较是公平的。唯一的额外参数是由的小型网络带来的,该网络有一个线性层,其大小为d*(l+1)。我们将这种依赖于实例的位置选择方法称为实例级别的自适应位置,简称adap_ins_pos。请注意,对于我们学习任务中所有实例的最优位置的实验,我们只使用一个向量来学习该任务内所有实例的全局最佳位置。我们将这种方法称为任务级别的自适应位置(简称adap_pos)。然后,额外参数的数量是l+1。
动态长度。先前的研究表明,提示长度在提示调整[30]中扮演着重要角色,通常较大的语言模型需要较短的提示长度。但是,提示长度对任务或实例级别的影响尚未被充分探索。我们提出,提示长度也可以动态学习:
同样,l∗∈[0,l]也是分类的,可以通过单层网络LENθ和Gumbel-Softmax进行优化。这里,l表示选择过程允许的最大长度。此外,对于任务级和实例级,附加参数的数量将分别为l+1和d * (l+1)。然而,由于模型通常需要固定的输入矩阵维度,因此实现这种机制带来了实际挑战。鉴于此,我们采用了替代策略,附录D对此进行了详细说明
动态向量。大量证据[55,2]支持在下游任务中使用实例相关提示的优势。提示可以直接通过适配器模块生成,如[56]的研究所示,也可以在多任务训练中使用注意力混合,如[2]的研究所示。我们提出了一种新颖的、流线型的方法来使用提示池生成动态提示。这种方法简化了过程,并允许无缝地生成动态提示。具体来说,假设有一组提示池,其中k是池的大小。然后给定任意输入x,我们学习一个小网络,得到每个提示P (k)相对于x的注意力得分,最后新的软提示变成:
在实践中,k控制提示池的大小和增加的参数。由于依赖于特定的输入实例,因此我们将此设置表示为实例级的Adaptive vector。
组合。注意,前面提到的方法可以组合起来进一步释放动态提示的力量。例如,我们可以同时更新动态位置和提示池,我们将其记为Adaptive instance-vector-position,简称为adap_ins_vec_pos。或者,我们首先使用动态位置来学习最佳任务级位置并更新实例级提示池,表示为自适应位置-实例-向量,简称为adap_pos_ins_vec。我们为以后的工作留下更多的组合。
4 实验
模型。对于语言任务,我们使用基于Huggingface2和Pytorch3构建的OpenPrompt [15]框架来实施我们的实验。我们使用T5-adaptive-LM4版本,因为它在提示调整方面具有优势。在所有实验中,我们冻结了主干语言模型,只优化软提示和学习网络以获取动态信息。我们选择的初始学习率lr来自[0.1, 0.2, 0.3],权重衰减为1e−5,并使用Adafactor [47]作为优化器。
此外,我们使用OpenPrompt5的默认设置来处理提示模板和词语化(verbalizers)。除非另有说明,我们将所有实验中的软标记保持为20。我们每500步评估一次验证集。对于所有微调实验,我们保持与我们的提示调整相同的设置,除了将lr初始化为1e−5,移除添加的软提示,并调整整个语言模型。
为了评估动态学习提示最佳位置以全面覆盖输入的有效性,如第3.1节所讨论,我们已经将我们的动态优化方法纳入了各种方法中,即P-tuning v2[37]、视觉提示调整(VPT)[24]和MaPLe [29]用于多模态提示学习。值得注意的是,由于OpenPrompt只支持在输入层添加提示,我们将实验扩展到了T5系列的预训练模型之外,包括了使用P-tuning v2方法的BERT-Large和Roberta-Large模型。此外,我们已经验证了我们的方法在视觉识别任务领域的有效性,使用带有ViT-B骨干(“sup_vitb16_imagenet21k”)的视觉提示调整(VPT)框架[24],以及在新型类别泛化任务的多模态提示学习背景下的有效性,使用MaPLe [29]作为底层骨干。对于视觉-语言模型验证,我们进行了从基础类别到新型类别的泛化任务。具体来说,我们评估了MaPLe结合我们的动态提示插入技术的泛化能力,并遵循了零样本设置,其中数据集被分为基础类别和新型类别。模型只在基础类别上进行少样本设置训练,并在基础类别和新型类别上进行评估。骨干模型是ViT-B/16 CLIP模型。关于实验配置的进一步细节,请参见附录E。
数据集。遵循先前的工作[15],我们评估我们的方法在五个SuperGLUE [52]数据集上的表现,以测试语言理解能力,分别是BoolQ [10]、MultiRC [28]、CB [12]、RTE [16]和WiC [44]。我们使用默认的训练/开发分割,并在验证集上报告默认指标,因为测试集不是直接可用的。为了与P-tuning v2进行比较,我们使用了八个SuperGLUE数据集。对于视觉提示调整设置,我们遵循[24]并使用了著名的FGVC数据集,该数据集由5个基准数据集组成。对于视觉-语言设置,我们遵循MaPLe [29]并使用了11个不同的数据集。关于数据集的详细信息包含在附录E.6中。
5 结果
为了证明我们方法的效率,在本节中,我们展示了我们提出的简单但强大的方法可以在各种方法中带来显著的准确率提升,包括提示调整(Prompt tuning)、P-tuning v2 [37]、视觉提示调整(VPT)[24]和用于多模态提示学习的MaPLe [29],涵盖了广泛的任务,如NLP任务、视觉识别任务和视觉-语言任务。更多的实验,如案例研究和消融研究(F)、参数敏感性分析(H)和附加结果(G)包含在附录中。
表4:软提示动态定位的三种策略。Fixed Position是默认的提示调优。自适应位置意味着每个任务都学习位置,但对于任务中的所有实例都是固定的,而自适应ins_position则为每个实例学习动态位置。
自适应位置。如表4所示,我们比较了自适应位置的两个变体:adap_pos代表单个任务中所有实例的动态学习位置,而adap_ins_pos表示每个实例都期望存在一个最佳位置。实验是使用T5-LM-Adapt版本(小型、基础型、大型和超大型)进行的,我们在表中报告了最佳结果。我们可以看到在几乎所有五个数据集上都有一个普遍趋势,即adap_ins_pos > adap_pos > fixed_pos。平均而言,T5-Large相比于固定位置的PT,表现出了大约5到7个点的显著提升。对于较小的LM,这些改进不太明显,这与[30]的发现一致,即较大的模型更适合提示调整。考虑到adap_pos的额外参数数量仅为20,而adap_ins_pos则需要数千个,我们可以得出结论,固定位置对于提示调整来说不是最佳选择,而自适应位置始终能带来提升。
表2:固定长度PT与自适应长度PT。
自适应长度。如第3.2节所述,我们只使用了一种长度调整的替代策略。表2显示了自适应长度的结果。为了简单起见,我们只在T5-base上测试了adap_length,在T5-large上测试了adap_ins_length。总体来说,与固定提示长度相比,在任务或实例级别上调整长度是有帮助的。然而,与表4中的自适应位置策略相比,性能提升较低,这可能是由于调整的难度造成的。因此,我们建议使用这种策略来快速定位不同模型的适当长度,而不是进行贪婪搜索。
表1:与表4中只调整位置相比,结合自适应矢量可以进一步缩小微调之间的差距。
Figure 3: Results on SuperGLUE with T5-Large.
自适应提示。通过从提示池中自适应调整合成的提示,软提示预期能更有效地利用冻结的LM。结果报告在表1中,我们在图3中也给出了直方图比较。总的来说,与仅自适应位置相比,添加一个自适应提示向量可以提高性能。但是,当位置和提示都针对每个实例进行优化时,我们在大多数情况下看到了略低的结果,这可能是由于优化难度的增加。我们将更好的优化方法的工作留到未来。附加结果包含在附录G.1中。
Table 3: Few-shot results on T5-LM-Large
Table 5: Multi-task results comparing prompt tuning (PT) and adap_ins_vec on T5-Large under few-shot setting.
少样本。我们在表3中展示了T5-Large上的少样本结果。从所有数据集可以看出,我们的动态提示在只有32个训练样本的情况下始终能提高结果,展示了在低资源环境下的广泛泛化能力。
多任务。为了进一步证明多任务调整可以在学习更好的共享提示池方面跨任务带来益处,我们在表5中也展示了多任务结果。在这里,我们从所有五个数据集中随机抽取了10%或30%的样本并报告了平均性能。结果证实,跨多个任务共享提示池带来了普遍的好处。
多任务。为了进一步证明多任务调整可以在学习更好的共享提示池方面跨任务带来益处,我们在表5中也展示了多任务结果。在这里,我们从所有五个数据集中随机抽取了10%或30%的样本并报告了平均性能。结果证实,跨多个任务共享提示池带来了普遍的好处。
P-tuning V2。在追求推动提示调整(prompt tuning)边界的过程中,[37]深入研究了对语言模型(LMs)内部工作机制的理解,通过在每个变压器层(transformer layer)附加一个提示,超越了简单地将软提示附加到原始输入序列的传统实践。
他们的努力取得了与微调(fine-tuning)相当的结果,突显了提示调整的显著潜力。因此,我们开始了我们的研究,以探索动态提示的全部潜力。我们试图确定我们动态操作软提示,深入到LM内部,能在多大程度上提高准确性。为了确保公平比较,我们采用了[37]所使用的相同设置,在SuperGlue数据集上使用骨干模型BERT-Large[13]和RoBERTa-Large[39]。如图4所示的结果证明了我们自适应提示位置方法的有效性。在大多数数据集上,我们都观察到了性能的提升。我们的技术在BERT-Large上实现了令人印象深刻的绝对平均增益1.74%,在RoBERTa-Large上超过了P-tuning V2的1.34%。从理论上讲,如第3.1节所述,我们的技术使得软提示能够包含输入,捕捉到传统的前缀或后缀提示调整方法无法捕获的额外语义信息。
当我们操纵更多变压器层上的提示时,我们自适应位置的有效性变得越来越明显。更多结果包含在附录G.3中。
视觉提示调整(VPT)。在将大型预训练变压器(Transformers)适应于下游视觉任务领域,一项名为VPT [24]的杰出工作出现了。VPT将额外参数集成到每个变压器层的输入序列中,同时在微调过程中与线性头一起学习。我们的方法更进一步,将我们的方法嵌入到模型中,允许自适应优化提示位置。
在深度设置中应用VPT时,我们保持深层变压器层的提示位置与输入层一致。如表7所示的结果证明了通过智能优化提示位置所获得的性能提升。实例感知的提示位置选择进一步提高了准确性。值得注意的是,这些好处在VPT的浅层和深层设置中都有体现,凸显了我们方法的鲁棒性和有效性。更多结果包含在附录G.4中。
视觉-语言模型。视觉-语言(V-L)模型,如杰出的CLIP [45],因其卓越的能力将语言和视觉模态对齐而广受赞誉。
表6:在11个数据集上,有和没有动态提示位置的MaPLe比较。
MaPLe [29]的开创性工作引入了一个耦合函数,有效地根据语言对应部分条件视觉提示,从而弥合了两种模态之间的差距。受这些进步的启发,我们将自适应提示位置方法纳入文本输入层,利用动态提示操作的力量。我们在附录中概述了详细的实验设置。如表6所总结的引人注目的结果,证实了我们方法的有效性。值得注意的是,通过将自适应提示位置纳入MaPLe,我们在新类别上实现了令人印象深刻的绝对平均增益2.04%,在调和平均上超过了2.17%,超越了最先进的方法MaPLe [29]。这种性能提升是动态提示方法有效性的有力证明,牢固确立了其在V-L模型领域的效力。更多详细结果包含在附录G.5中。
6 结论
在这项工作中,我们首先推导了一个统一的提示调优视图,然后提出了一种新的参数高效提示调优方法,称为动态提示,它可以在仅添加少量额外参数的情况下显著提高提示调优的性能。本工作的主要贡献包括探索动态位置、长度和提示表示在改进传统提示调谐中的有效性,以及系统探索不同动态方法组合下不同场景下的动态提示。在广泛的数据集上进行的综合实验验证了动态提示在各种任务(包括语言理解任务、视觉识别任务和视觉语言任务)中始终如一地取得优异的结果,而不管所采用的模型大小如何。我们还证明了动态提示在多任务和少镜头设置中是有效的。总的来说,我们的工作可以进一步释放各种形式的快速调整的力量。我们希望我们的方法可以帮助有效地使用大型预训练模型,并进一步缩小微调之间的差距。