Advertisement

PPT: Pre-trained Prompt Tuning for Few-shot Learning

阅读量:

文章汇总

当前的问题

image.png

现有的研究者(a)、(b)、©均采用了基于预训练语言模型的微调方法来适应下游任务。尽管表现出良好的效果,但这一方法一方面在计算资源消耗上显著,另一方面在针对小规模数据的情况时表现欠佳。本文提出的方法是:通过特定的预训练任务,固定全部语言模型参数,仅进行软标签指导,而不引入任何中间层或任务专用组件。
从公式的角度来看:目标都是希望掩码预测的结果与标签v(y)保持一致。

image.png

公式(1)即为之前的做法:微调的为encoder/decoder的参数\theta

image.png

公式(2)即为推荐的做法:添加上软提示\bm P,微调的为软提示\bm P

作者的预训练做法

image.png

按照m种不同的分类\{\tau_1,\tau_2,\ldots,\tau_m\}划分下游任务目标。为了确保模型参数固定不变的情况下实现多任务学习能力,在预训练阶段我们引入了软提示机制,并通过公式(2)对这些特定的任务进行了联合预训练处理。这样会生成m组特殊的预训练提示矩阵\{\bm P_1,\bm P_2,\ldots,\bm P_m\}其中每一个矩阵\bm P_i都对应于特定分类标签\tau_i下的下游任务提示信息。随后将这些矩阵分别应用于各自对应的推理过程以获得优化效果。然而由于每个矩阵仅适用于单一分类标签下的特定场景作者又开发了一种通用的预训练策略能够适应不同分类标签下的多样化需求

1.句对分类

预训练任务:PVP^{pre}_i=(f^{pre}_i,v^{pre}_i)v^{pre}_i为标签,f^{pre}_i为训练数据。

image.png

选取两个句子x = (s₁, S₂)作为输入的基础。设定标签集合\mathcal{Y} = \{0, 1, 2\}为三元分类任务。在\mathcal{Y}中各标签分别对应两种句子间的语义关联关系:一致(标记为2)、相似(标记为1)以及不相关(标记为0)。

2.选择分类

设定输入句子作为查询依据,在候选的六个相关句中选出最邻近的文本,并标记其位置编号。
考虑输入元组x包含查询句s_q以及六个候选句s_1s_6中的一个或多个,并定义其中(f^{pre}_i,v^{pre}_i)表示用于评估的特征向量和相似度分数。

image.png

3.单句情感分类

在给定的语料库中存在一个特定的句子s。其中输入x被定义为(s)。其预设特征(f^{pre}_i,v^{pre}_i)被提取并用于后续计算过程。

image.png

统一的提示P

在多选分类方面,针对两句话匹配任务,系统会将两句话连接成一个查询语句,并设置三种可能的结果类别:'否'(no)、'可能'(maybe)和'是'(yes)。而对于单句匹配场景,系统则会将输入视为一个查询语句,并将其划分为明确的结果类型。值得注意的是,通过这种设计,我们成功实现了基于预训练模型的选择性标注机制(PVP) ,该模型不仅适用于来自任意领域的一段文本进行多类别的细粒度划分,而且支持这些关键应用场景下的丰富标签配置。为了充分涵盖不同复杂度的任务需求,我们在预训练阶段构建了多样化的数据集:选项数量范围在2至16之间,每个选项平均长度大约在50至20字左右。此外,我们采用基于第2章中介绍的选择性标注机制(PVP) 进行模型训练,并通过微调优化使其能够适应多个关键应用场景下的多样化需求。

摘要

预训练语言模型(PLMs)的提示通过弥合预训练任务和各种下游任务之间的差距,显示出了显著的性能。在这些方法中,提示调优(prompt tuning)冻结PLM,只调整软提示,为大规模PLM适应下游任务提供了一种高效的解决方案。然而,提示调整尚未得到充分的探索。在我们的先导实验中,我们发现当下游数据充足时,提示调优的性能与传统的全模型调优相当,而在小样本学习设置下,提示调优的性能要差得多 ,这可能会阻碍提示调优的应用。我们将这种低性能归因于初始化软提示的方式。因此,在本工作中,我们提出通过在预训练阶段添加软提示来预训练提示,以获得更好的初始化 。我们将这个预训练提示调整框架命名为“PPT”。为了保证PPT的泛化性,我们将类似的分类任务制定成统一的任务表单,并针对统一的任务预训练软提示。大量的实验表明,在全数据和小样设置下,对下游任务的预训练提示进行调优可以达到甚至优于全模型微调。我们的方法对于在实践中使用大规模PLM是有效和高效的。该代码可在https://github.com/thu-coai/PPT公开获得。

1 介绍

image.png

图1:预训练(屏蔽语言建模)、全模型调优(面向任务的微调和面向提示的微调)和提示调优的范例。语言表达器是一个将任务标签映射到具体单词的功能。< X >表示典型预训练编码器-解码器模型的掩码。
微调预训练语言模型(PLM) (Devlin等人,2019;Radford等人,2019;rafael et al ., 2020)近年来取得了很大进展。通过调整整个模型参数,从大规模未标记语料库中获得的通用知识可以适应处理各种NLP任务并且优于从头开始学习模型的方法(Han et al ., 2021a)。为简单起见,我们将这种全模型调优命名为“FT”。如图1 (b)和©所示,有两种主流的FT方法。第一种是面向任务的微调,在PLM之上添加一个特定任务的头部,然后通过在相应的训练数据上优化特定任务的目标来对整个模型进行微调。
第二个是面向提示的微调(Schick和sch策,2021a),其灵感来自最近使用语言提示来探索PLMs中的知识的作品(Petroni等人,2019;Brown et al, 2020)。在面向提示的微调中,数据样本被转换为包含提示符号的序列,下游任务被形式化为语言建模问题。如图1 ©所示,通过在句子中添加提示“It was .”,我们可以通过预测掩码位置的“great”或“terrible”来确定其与plm的情感极性。如图1所示,与面向任务的微调相比,面向提示的微调更类似于预训练目标(掩模语言建模),从而有助于在PLM中更好地使用知识,并通常获得更好的性能。
尽管FT(Fine Tuning)显示出了令人满意的结果,但随着模型规模的快速增长,为每个下游任务微调和存储整个大型模型的成本要高得多 。为了应对这一挑战,Lester等人(2021)提出了提示调整(Prompt Tuning),以使大型PLM适应下游任务,如图1 (d)所示。具体而言,PT使用由连续嵌入组成的软提示,而不是硬提示(离散语言短语)。这些连续提示通常是随机初始化和端到端学习的。为了避免为每个下游任务存储整个模型,PT冻结所有PLM参数并仅调整软提示,而不添加任何中间层和任务特定组件。

image.png

图2展示了PT与FT的对比情况

首要优势在于其能够实现端-to-end learnability

然而,在小样本场景下其性能表现仍有待提升

本研究旨在探索如何通过优化提示机制实现小样本学习目标

为了实现这一目标,在第4节中我们提出了一个自监督预训练方案

2 先导实验

在本节中, 我们探讨了PT方法在少量学习情境下的适应性策略. 通过深入分析, 我们识别出三种关键指导原则: 混合提示优化、语言器选择以及实字初始化. 基于Lester等人的研究框架[1], 我们采用了T5-XXL模型(具11B参数)来进行评估, 并设置了单个可调软提示令牌的数量为1.

基于Schick and Sch (2021b), 本研究从原始训练数据集中随机选取了32个样本构成训练集D_{train}. 为了优化超参数配置, 我们从原始数据集中提取相同数量的样本形成验证集D_{dev}, 并确保两者的规模相等以模拟小样本学习场景(Perez et al., 2021). 研究借鉴了Zhang等人(2021)与Gao等人(2021)的工作, 将原始验证集作为测试集D_{test}进行评估.]

Hybrid Prompt Tuning

image.png

如表1所示,在SST-2数据集上进行小样本学习(共32个样本)时(PT),硬指示与语言表达器的选择对其性能表现具有显著影响。其中P代表软指示;S代表输入句子;"Manual"表示人工设计的硬指示,“Generated"则表示自动生成的hard hints.

用言语表达选择

具体任务中的标识符会被语言表达者对应于其具体意义。例如,在图1中的©(a)和(d)部分, 语言表达器会将"Positive"这一标识符对应于"great"这一表述. 通过表1的数据分析可知, 言语者的策略选择对绩效表现具有显著影响. 通常情况下, 通过阐述其意义, 常用术语能够有效传达信息. 这一原则同样适用于第3节中的PPT设计.

实字初始化

在实际单词初始化过程中,我们采用了具体单词的嵌入来进行软提示的初始化,并对四种不同的初始化策略进行了评估.先前的研究已经证实了这种方法的有效性(Lester et al., 2021).然而,通过SST-2(Socher et al., 2013)与BoolQ(Clark et al., 2019)等实验(见表2)表明,针对拥有11B参数的大规模模型而言,尤其是在小样本学习情况下,真实单词初始化对性能的影响较小甚至呈负面效果.这表明小规模模型上的实验结果难以直接推广至大规模模型,因此寻找一种合适的软提示初始化方法仍有进一步探索的空间.

3 Pre-trained Prompt Tuning (PPT)

在本节内容中,我们详细阐述了PPT的完整结构,并具体说明了预设提示的构建方法以及这些提示如何实现特定目标的具体应用流程。

3.1 概述

遵循T5 (rafael等人,2020)和PT (Lester等人,2021)的方法,我们以文本到文本的格式解决所有下游任务。如图1 ©所示,为了减少预训练与下游任务之间的目标差距,面向提示的微调将下游任务转换为完形目标。以分类为例,给定一个输入句子x\in\mathcal{V}^*和它的标签y\in\mathcal{Y},一个模式映射f:\mathcal{V}^*\rightarrow\mathcal{V}^*首先应用于将x转换成一个新的序列f(x),其中\mathcal{V}是PLM的词汇表。f(x)不仅添加了一些提示令牌作为提示,而且保留了掩码令牌,以便PLM预测掩码位置的令牌。然后,言语表达v:\mathcal{Y}\rightarrow\mathcal{V}^*用于将y映射到一些标签标记v(y)。对于f(\cdot)v(\cdot),分类任务可以用模式-语言器对(f,v):

image.png

其中\theta表示所有可调参数,特别是PLM的参数。为方便起见,我们使用“PVP”来表示这种模式-语言表达器对(Schick和sch tze, 2021a)。
在PT (Lester et al ., 2021)中,将一组软提示\bm P连接到序列的开头,模型输入变为[\bm P;f(x)],其中[\cdot,\cdot]是连接操作。通过调整\bm P Eq.(1)被

image.png

基于大规模PLM的强大功能特性,在全数据设置条件下进行Eq.(2)的实验验证分析后发现其性能与现有的FT方法相当。然而,在学习有效的软提示时遇到困难的情况下可能导致各种小样本场景下的模型性能低下现象

参数初始化策略对模型训练和优化过程的影响程度具有较大差异性

image.png

图3:在句子对任务中应用PPT的一个实例。P表示软提示(soft prompt)。它表明T5、CPM-2等典型编码解码器模型的掩码(mask)

3.2 设计模式-言语者对进行预训练

在本节中,我们阐述了用于快速预训练的模式语化器的设计方案,并基于三个具有代表性的分类任务进行了详细说明。

3.2.1 句对分类

句对分类任务,如自然语言推理和句子相似度,取两个句子x = (s1,S2)作为输入。为了为这些任务设计PVP,我们将Devlin等人(2019)的下一个句子预测扩展为标签\mathcal{Y}={0,1,2}3分类作为预训练任务。\mathcal{Y}中的这些标签可以分别表明两个句子之间的语义关系是一致的(标签2),相似的(1)和不相关的(0)。为了从未标记的文档中构建信号,我们将相邻的两个句子设置为标签2,将来自同一文档但不真实的句子设置为1,将来自不同文档的句子设置为0。我们考虑标签集|\mathcal{Y}|\le 3,因为它涵盖了大多数句子对任务。PVP{pre}_i=(f{pre}_i,v^{pre}_i)KaTeX parse error: Expected 'EOF', got '#' at position 118: …071d67047f8.png#̲averageHue=%23f…PVPk_i=(fk_i,vk_i)根据PVP{pre}_i,它很简单。s_1s_2可以被输入的句子对替换。如果一个任务输出两个标签,那么我们取v_ik(\mathcal{Y})=[\text{no,yes}]。如果一个任务输出三个标签,我们设置v_ik=v_i^{pre}。如果一个任务要求测量两个句子之间的相似性,概率大于{\text{no,yes}}可以胜任这项任务。

3.2.2 选择分类

许多任务可以公式化为多项选择分类,它以一个查询和几个候选答案作为输入。我们设计了一个下一个句子选择任务来预训练提示符。给定一个句子作为查询平方,训练模型从6个候选句子中选择相邻的句子,记为s_1 \sim s_6,因此标签集为\mathcal{Y}=\{1,2,3,4,5,6\}。这些候选词由正确答案、来自同一文档但与查询不相邻的一个句子以及来自其他文档的四个句子组成。对于x=(s_q,s_1,\ldots,s_6)(f^{pre}_i,v^{pre}_i)

image.png

大部分选择题都可采用\{f^{pre}_i,v^{pre}_i\}作为其PVPs。针对阅读理解这类任务,在输入中通常会包含一篇文章和一个问题,并将它们结合起来构建查询。

3.2.3 单句分类

在单句分类任务中,我们生成并利用伪标签作为快速预训练阶段的基础。以情感分析任务为例,在一个包含大量文本数据的预训练语料库里,通过另一个小型模型对每个句子进行情感标记处理,并筛选出那些具有较高信心分数的句子实例来进行后续学习操作。我们在实际应用中采用RoBERTaBASE模型对该数据集进行了微调训练,并选择基于验证集表现最佳的版本作为最终模型。针对语料库中的某个特定句子s而言,在输入x=(s)的情况下(即输入仅包含该单一文本),其对应的标签集合\mathcal{Y}=\{1,2,3,4,5\}包含了该句子的情感类别信息。(其中f^{pre}_iv^{pre}_i分别代表第i个子任务的情感预测结果及其置信度评分)

image.png

针对涉及5个标签的情感分类任务而言,在这种情况下我们可以采用PVP^{k}_i=PVP^{pre}_i这一策略。在那些仅包含少于5个标签的任务中,则需要从v_i^{pre}(\mathcal{Y})这个集合中选出一个子集来作为新的标签。尽管上述方法虽然显著提升了模型性能的表现水平但其局限性在于无法直接推广至不同领域以及拥有不同数量标签的多标签单文本分类问题。为此我们提出了以下解决方案。

3.3 统一任务格式

用于预训练的PVPs可被整合为一种统一格式的选择题形式。具体而言,在涉及两个句子的任务中(即句子对分类),查询由两个句子构成,并提供三种选项:no、maybe及yes;而在单一句子分类任务中(即单句分类),查询则为输入句子本身,并提供具体的标签选项。值得注意的是,在这种设计下不仅可以应对来自不同领域的一类文本分类任务(CPT),还能提供更为丰富的标签选择。
类似于MultiQA (Talmor and Berant, 2019)及UnifiedQA (Khashabi et al, 2020)的理念,构建统一的问题-回答范式(PVP)是一种合理的选择。最近研究中使用硬提示将多个任务整合为元问答任务的方法也值得借鉴。然而与之不同的是,在本研究中我们专注于通过软提示而非硬提示来整合多个任务;我们固定了PLM主体并采用无监督预训练的方式对模型进行微调;这与以往基于有监督数据集的方法有所不同。
在实验设计方面我们采用了从选项数量到选项长度均进行多维度考量的方法;具体而言在选项数量方面我们设置了2至16个备选答案而在选项长度上则控制在50至20个字符左右以适应不同场景的需求

4 实验

4.1 设置

image.png

表3:评估用的数据集表

4.2 主要结果

主要研究结果体现在表4中

image.png

image.png

表5展示了超过5个标签的单文本分类实验结果

4.3 样品效率

我们探讨了不同方法(如FT、PT和PPT)在训练样本数量增加时的表现变化情况。图4展示了这些方法在RACE-m和CB数据集上的表现趋势。当样本数量处于32到128之间时,在多数情况下PPT表现优于PT;而当样本数达到256时,则三种方法的表现趋于一致。此外,在针对完整训练数据进行优化的方法比较中发现,在多数情况下PPT及其统一版本仍然优于传统PT方法。值得注意的是,在单个优化步骤中Vanilla PT比FT更快;然而其收敛速度较慢,并导致较长的训练时间。基于以上分析结果可以看出,P P T能够有效地解决上述问题.如图5所示,基于预训练模型,P P T显著地加快了传统的Vanilla PT,并在此基础上实现了更好的收敛效果.我们在附录e中对这一过程进行了详细的数据验证.尽管如此,由于P P T相较于FT仍存在一定的收敛速度劣势,因此进一步提高Vanilla PT的收敛速度仍值得在未来的研究工作中探索.

image.png

图表4展示了三种方法在不同训练数据量下的比较结果。当训练数据量较小时, PPT的表现更为突出;随着训练数据量的增加, 则这三种方法的表现逐渐趋近于一致.

image.png

第5幅图展示了三种预训练模型(包括传统自监督学习方法、以及改进型自监督学习架构)在性能上的对比分析。通过实验结果可以看出,在相同条件下相比起传统的自监督学习方法(PT),改进型自监督学习架构(PPT)在收敛速率上明显落后于改进型方法;值得注意的是,在采用预训练初始化策略后,改进型方法展现出显著的优势

image.png

表6中包含了FT(全连接层)、PT(池化层)、PPT(投影增强池化)以及Unified PPT(统一增强池化)这四种模型在经过充分训练的数据集上的性能表现。我们基于三个独立随机初始化的验证集进行评估,并计算了其平均指标及标准差。

5 相关工作

6 结论与未来工作

在本研究中,我们构建了一个名为PPT的框架,该框架旨在通过提示调整提升小样本学习的效果。具体而言,我们建议将下游任务归类为若干标准形式,并针对每种形式制定自监督预训练目标,随后在这些目标上进行提示预训练。接着,基于预训练获得的初始化参数,我们对下游任务进行提示优化配置。大量实验表明,与现有提示优化基准相比,我们的方法显著优于现有提示优化基准,其执行效果与全面模型优化相当甚至更为出色。

参考资料

论文下载(ACL 2022)

https://arxiv.org/abs/2109.04332

image.png

代码地址

https://github.com/thu-coai/PPT

全部评论 (0)

还没有任何评论哟~