论文:
《Prefix-Tuning: Optimizing Continuous Prompts for Generation》
微调是(finetuning
)使用大型 pretrained
语言模型执行下游任务(如摘要)的普遍范式,但它需要更新和存储语言模型的所有参数。因此,为了建立和部署依赖大型 pretrained
语言模型的 NLP
系统,目前需要为每个任务来存储语言模型参数的 modified copy
。考虑到当前语言模型的庞大规模,这可能是非常昂贵的,例如,GPT-2
有 774M
参数、GPT-3
有175B
参数。
解决这个问题的一个自然方法是lightweight fine-tuning
,它冻结了大部分 pretrained parameters
,并用小的可训练模块来 augment
模型。例如,adapter-tuning
在 pretrained
语言模型的层之间插入额外的 task-specific layers
。adapter-tuning
在自然语言理解和自然语言生成基准上有很好的表现,达到了与微调相当的性能,而只增加了大约 2-4%
的 task-specific parameters
。
在另一个方面,GPT-3
可以在没有任何 task-specific tuning
的情况下部署。相反,用户将自然语言的任务指令(例如,TL;DR
用于摘要任务)和一些样本添加到任务输入中,然后从语言模型中生成输出。这种方法被称为 in-context learning
或 prompting
。
在本文中,我们提出了 prefix-tuning
,这是一种轻量级的替代微调的方法用于自然语言生成任务,其灵感来自于 prompting
。考虑为数据表格生成文本描述的任务,如 Figure 1
所示,任务输入是一个线性化的表格(例如,"name: Starbucks | type: coffee shop"
),输出是一个文本描述(例如,"Starbucks serves coffee."
)。prefix-tuning
将 continuous task-specific vectors
序列(我们称之为prefix
,在 Figure 1(bottom)
中用红色块描述)前置到输入中。对于随后的 tokens
,Transformer
可以关注 prefix
,就像它是一串 "virtual tokens"
一样,但与 prompting
不同的是,prefix
完全由 free parameters
组成,不对应于 real tokens
。 Figure 1 (top)
中的微调会更新所有 Transformer parameters
,因此需要为每个任务存储模型的 tuned copy
。与微调相反,prefix-tuning
只优化 prefix
。因此,我们只需要存储大型Transformer
的一个副本、以及学到的一个 task-specific prefix
,为每个额外的任务产生一个非常小的开销(例如,250K
参数用于table-to-text
任务)。
实际上是在模型的每一层
Layer
(包括输入层)都添加了相同的一个prefix
,而不同任务的prefix
不同。
与微调相反,prefix-tuning
是模块化的:我们训练一个上游的prefix
,这个上游的 prefix
引导下游的语言模型,而下游的语言模型保持 unmodified
。因此,单个语言模型可以一次同时支持许多任务。在任务对应不同用户的 personalization
的背景下,我们可以为每个用户准备一个单独的prefix
,这个 prefix
只对该用户的数据进行训练从而避免数据交叉污染。此外,prefix-based
的架构使我们甚至可以在一个 batch
中处理来自多个 users/tasks
的样本,这是其他轻量级微调方法所不能做到的。
我们在使用 GPT-2
在 table-to-text generation
任务上、以及使用 BART
在抽象摘要任务上评估 prefix-tuning
。在存储方面,prefix-tuning
存储的参数比 fine-tuning
少 1000
倍。在对完整数据集进行训练时的性能方面,prefix-tuning
和 fine-tuning
在 table-to-text
任务上不相上下,而 prefix-tuning
在摘要任务上会有小幅下降。在 low-data setting
中,prefix-tuning
在这两项任务上的平均表现都优于微调。prefix-tuning
还能更好地推断出有 unseen
主题的表格(在 table-to-text
任务)和文章(在摘要任务)。
相关工作:
natural language generation: NLG
的微调:目前 SOTA
的自然语言生成系统是基于 fine-tuning pretrained LM
。
对于 table-to-text generation
,《Text-to-text pre-training for data-to-text tasks》
微调了一个 sequence-to-sequence
模型(T5
)。
对于抽取式摘要(extractive summarization
)和抽象式摘要(summarization
),研究人员分别微调 masked language model
(如 BERT
)和 encode-decoder model
(如BART
)。
对于其他的 conditional NLG
任务,如机器翻译和对话生成,微调也是普遍存在的范式。
在本文中,我们关注的是使用 GPT-2
的 table-to-text
任务、以及使用 BART
的摘要任务,但 prefix-tuning
也可以应用于其他 generation
任务、以及其他 pretrained
模型。
轻量级微调:轻量级微调冻结了大部分 pretrained parameters
,并用小的可训练模块来修改 pretrained model
。关键的挑战是如何确定高性能的模块结构、以及要调优的 pretrained parameters
的子集。
一条研究路线是考虑删除参数:通过在模型参数上训练一个 binary mask
从而消除一些模型权重(《Masking as an efficient alternative to finetuning for pretrained language models》
、《How fine can fine-tuning be? learning efficient language models》
)。
另一条研究路线考虑插入参数。例如:
《Side-tuning:A baseline for network adaptation via additive side networks》
训练了一个 "side"
网络,该网络通过 summation
与 pretrained model
进行融合。
adapter-tuning
在 pretrained LM
的每一层之间插入 task-specific layers
(adapters
)(《Parameter-efficient transfer learning for NLP》
、《Exploring versatile generative languagemodel via parameter-efficient transfer learning》
、《Learning multiple visual domains with residual adapters》
、《Adapter-fusion: Non-destructive task composition for transfer learning》
)。
这个研究方向调优了大约 3.6%
的语言模型参数。与之相比,我们的方法在 task-specific parameters
方面进一步减少了30
倍,只调优了 0.1%
的参数,同时保持了相当的性能。
Prompting
:prompting
是指在任务输入中前面添加指令和一些样本,并从语言模型中生成输出。
GPT-3
使用手动设计的 prompts
从而适配它的 generation
从而用于不同的任务,这个框架被称为 in-context learning
。然而,由于Transformers
只能对有界长度的上下文进行条件生成(例如,GPT-3
的 2048 tokens
),in-context learning
无法完全利用长于上下文窗口的训练集。
《Conditioned natural language generation using only unconditioned language model: An exploration》
也通过关键词来提示从而控制 generated sentence
的情感或主题。
在自然语言理解任务中,prompt engineering
已经在之前的工作中为 BERT
和 RoBERTa
等模型进行了探索。例如,AutoPrompt
(《Autoprompt: Eliciting knowledge from language model swith automatically generated prompts》
)搜索 discrete trigger words
的一个序列,并将其与每个输入拼接起来,从而引导被 masked LM
的情感或事实性知识。与 AutoPrompt
相比,我们的方法优化 continuous prefixes
,其表达能力更强。此外,我们专注于语言生成任务。
连续向量已经被用来引导语言模型;例如,《Can unconditional language models recover arbitrary sentences?》
表明,pretrained LSTM
语言模型可以通过优化一个连续向量来重建任意的句子,使向量成为 input-specific
。相比之下,prefix-tuning
优化了一个 task-specific prefix
,适用于该任务的所有实例。因此,与之前的工作(它的应用仅限于句子重建)不同的是,prefix-tuning
可以应用于自然语言生成任务。
可控的 generation
:可控生成的目的是引导 pretrained
语言模型与句子层面的属性(例如,positive
情感、或关于体育的话题)相匹配。
这种控制可以在训练时发生:《Ctrl: A conditional transformer language model for controllable generation》
对语言模型( CTRL
)进行预训练,从而对元数据(如关键词或 URL
)施加条件。
此外,控制可以发生在解码期间,通过加权解码(《GeDi: Generative Discriminator Guided Sequence Generation》
)或迭代式地更新过去的 activations
(PPLM
,《Plug and play language models: A simple approach to controlled text generation》
)。
然而,目前还没有直接的方法来应用这些可控的生成技术来对所生成的内容进行细粒度的控制,如 table-to-text
任务和摘要任务所要求的。
考虑一个 conditional generation
任务,输入是一个上下文 tokens
序列。我们关注两个任务,如 Figure 2(right)
所示:
在 table-to-text
任务中,
在摘要任务中,
这里展示了
decoder-only
模型、encoder-decoder
模型。实际上encoder-only
模型(如BERT
)也可以采用类似的思路。
自回归语言模型:假设我们有一个基于 Transformer
架构(如 GPT-2
)的自回归语言模型 Figure 2(top)
所示,令
令 Transformer layer
的激活;令时间步 activation
是 activation layers
的拼接。自回归 Transformer
模型将 past activations
的函数,如下所示:
其中,最后一层的 next token
的分布:
其中:pre-trained
参数矩阵。
表示拼接后的文本序列的第 个 token
。
Encoder-Decoder
架构:我们也可以使用 encoder-decoder
架构(例如 BART
)来建模 Figure 2(bottom)
所示。所有 Transformer encoder
计算,所有
微调:在微调框架中,我们用 pretrained parameters
Prefix-Tuning
的直觉:基于来自 prompting
的直觉,我们认为有一个适当的上下文可以引导语言模型而不改变其参数。例如,如果我们想让语言模型生成一个单词(如,“奥巴马”),我们可以在输入的签名添加它的常见搭配作为上下文(如,"巴拉克"),语言模型将为所需的单词分配更高的概率。
将这一直觉延伸到生成单个单词或单个句子之外,我们想找到一个引导语言模型解决 NLG
任务的上下文。直观地说,上下文可以通过指导从 encoding
;也可以通过指导 next token
的分布来影响 "summarize the following table in one sentence"
)可能会指导专家标注员解决该任务,但对大多数 pretrained LM
来说是失败的。对离散的指令进行数据驱动的优化可能会有帮助,但 discrete optimization
在计算上具有挑战性。
我们可以将指令作为 continuous word embeddings
来优化,而不是对 discrete tokens
进行优化,其效果将向上传播到所有Transformer activation layers
、并向右传播到后续的 tokens
。严格来说,这比 discrete prompt
更有表达能力,因为 discrete prompt
需要匹配一个真实的单词的 embedding
。同时,这比介入所有层的 activations
(即,微调)的表达能力要差,后者避免了长距离的依赖,并包括更多可调优的参数。因此,prefix-tuning
优化了 prefix
的所有层。
Prefix-Tuning
的方法:prefix-tuning
为自回归语言模型添加了一个前缀,得到 Figure 2
所示。这里,
我们遵循方程 prefix
是自由参数。prefix-tuning
初始化一个尺寸为 prefix parameters
:
训练目标为 prefix parameters
是唯一可训练的参数。
注意:这在每一层都添加了相同的
prefix
,包括输入层。是否可以对不同的层采用不同的
prefix
,使得表达能力更强?这就是P-Tuning V2
的思想。
这里,
当
当prefix activations
总是位于左侧的上下文中,因此会影响其右边的任何 activations
。
reparametrization parameters
可以被放弃,只有前缀(
这种重参数化为什么能提升效果?作者没有讲解原因。读者猜测是:原始的
的自由度太高,而重参数化限制了它的自由度。这相当于降低了模型的容量。 这种重参数化技巧相当于对
增加了先验知识,但是读者感觉:原理上没讲清楚,整体算法不太优雅。
我们在三个标准的数据集上评估了 table-to-text generation
任务:E2E, WebNLG, DART
。
E2E
只有 1
个领域(即,餐厅评论),包含大约 50K
个样本,有 8
个不同的字段。对于一个 source table
,它包含多个 test references
,平均输出长度为 22.9
。我们使用官方的评估脚本,其中报告了 BLEU, NIST, METEOR, ROOUGE-L, CIDEr
。
WebNLG
有 14
个领域,包含 22K
个样本,输入 (subject, property, object)
三元组的序列。平均输出长度为 22.5
。在训练集和验证集,输入描述了来自 9
个不同的 DBpedia
类别的实体(例如,Monument
)。测试集由两部分组成:前半部分包含训练数据中的 DB
类别,后半部分包含 5
个未见过的类别。这些未见过的类别被用来评估外推(extrapolation
)。我们使用官方评估脚本,它报告 BLEU, METEOR, TER
。
DART
是开放领域,使用来自维基百科的 open-domain tables
。它的输入格式 (entity-relation-entity)
三元组与WebNLG
相似。平均输出长度为 21.6
。它由来自 WikiSQL, WikiTableQuestions, E2E, WebNLG
的 82K
个样本组成,并应用了一些人工或自动转换。我们使用官方评估脚本并报告 BLEU, METEOR, TER, Mover-Score, BERTScore, BLEURT
。
对于摘要任务,我们使用 XSUM
数据集,它是一个关于新闻文章的抽象摘要数据集,有 225K
个样本。文章的平均长度为 431
个单词,摘要的平均长度为 23.3
。我们报告了 ROUGE-1, ROUGE-2, ROUGE-L
。
baseline
:
对于 table-to-text generation
,我们将 prefix-tuning
与其他三种方法进行了比较:微调(FINETUNE
)、仅对顶部 2
层进行微调(FT-TOP2
)、adapter-tuning
(ADAPTER
)。
我们还报告了目前在这些数据集上的SOTA
结果:
在 E2E
上,《Pragmatically informative text generation》
使用了一个没有预训练的 pragmatically informed model
。
在WebNLG
上, 《Text-to-text pre-training for data-to-text tasks》
对 T5-large
进行了微调。
在 DART
上,没有发布在这个数据集版本上训练的官方模型。
对于摘要,我们与微调 BART
进行比较。
实验配置:
对于 table-to-text
,我们使用 GPT-2_MEDIUM
和 GPT-2_LARGE
,source tables
被线性化。对于摘要,我们使用 BART_LARGE
,源文章被截断为 512
个 BPE tokens
。
我们的实现是基于 Hugging Face Transformer
模型。在训练时,我们使用 AdamW
优化器和一个线性学习率调度器,正如 Hugging Face
默认设置所建议的。我们调优的超参数包括 epoch
数量、batch size
、学习率、prefix
长度。超参数的细节如下表所示。默认设置是训练 10 epochs
,使用 batch size = 5
,学习率 prefix
长度为 10
。
table-to-text
模型在 TITAN Xp
或 GeForce GTX TITAN X
机器上训练。在 22K
样本上,prefix-tuning
每个 epoch
需要 0.2
小时,而微调则需要 0.3
小时。摘要模型在 Tesla V100
机器上训练,在 XSUM
数据集上每个 epoch
需要 1.25
小时。
在解码时,对于三个 table-to-text
数据集,我们使用 beam size = 5
的 beam search
。对于摘要,我们使用 beam size = 6
的 beam search
,以及 0.8
的长度归一化。对于 table-to-text
,每个句子的解码需要 1.2
秒(没有 batching
);对于摘要,每个 batch
的解码需要 2.6
秒(batch size = 10
)。
Table-to-text Generation
任务:我们发现,只添加 0.1%
的 task-specific parameters
,prefix-tuning
在 table-to-text generation
中是有效的,超过了其他轻量级 baseline
(ADAPTER
和 FT-TOP2
),并取得了与微调相当的性能。这一趋势在所有三个数据集上都是如此: E2E, WebNLG, DART
。
为了公平比较,我们将 prefix-tuning
和 adapter-tuning
的参数数量匹配为 0.1%
。Table 1
显示,prefix-tuning
明显优于ADAPTER
(0.1%
),平均每个数据集获得 4.1 BLEU
的改善。
即使我们与微调(100%
)和 adapter-tuning
( 3.0%
)相比(它们更新的参数数量要超过 prefix-tuning
),prefix-tuning
仍然取得了相当或更好的结果。这表明 prefix-tuning
比 adapter-tuning
更具有帕累托效率:在提高生成质量的同时大大减少了参数。
帕累托效率:效果好的同时参数量也少。
此外,在 DART
上取得良好的性能表明,prefix-tuning
可以泛化到具有不同领域和大量关系的 table
。我们将在后续实验深入研究外推性能(即泛化到对未见过的类别或主题)。
总的来说,prefix-tuning
是一种有效的、节省空间的方法,可以使 GPT-2
适用于 table-to-text generation
。学到的 prefix
有足够的表达能力来引导 GPT-2
,以便正确地从非自然语言的格式中提取内容并生成文本描述。prefix-tuning
也能很好地从 GPT-2_MEDIUM
扩展到 GPT-2_LARGE
,这表明它有可能扩展到具有类似架构的更大的模型,比如 GPT-3
。
摘要任务:如 Table 2
所示,在参数为 2%
的情况下,prefix-tuning
获得的性能略低于微调(在 ROUGE-L
中为 36.05 vs. 37.25
)。在只有 0.1%
的参数下,prefix-tuning
的性能低于 full fine-tuning
(35.05 vs. 37.25
)。
在 XSUM
和 table-to-text
数据集之间有几个不同之处,可以解释为什么prefix-tuning
在 table-to-text
中具有相对优势:
XSUM
包含的样本比三个 table-to-text
数据集平均多 4
倍。
XSUM
输入的文章比 table-to-text
数据集的线性化表格的输入平均长 17
倍。
摘要任务可能比 table-to-text
更复杂,因为它需要阅读理解、以及识别文章的关键内容。
Prefix(0.1%)
和Prefix(2%)
分别代表prefix length
等于多少?论文并未说明。根据读者猜测,Prefix(0.1%)
对应于prefix length = 5
、Prefix(2%)
对应于prefix = 100
。
Low-data Setting
:基于 table-to-text
任务和摘要任务的结果,我们观察到,当训练样本的数量较少时,prefix-tuning
具有相对的优势。为了构建 low-data settings
,我们对完整的数据集(table-to-text
的 E2E
、摘要任务的 XSUM
)进行降采样,得到大小为 {50, 100, 200, 500}
的小数据集。对于每个大小,我们采样五个不同的数据集,并训练两个 training random seeds
然后取平均。因此,我们对 10
个模型进行平均,以获得每个 low-data setting
的估计。
Figure 3(right)
显示,prefix-tuning
在 low-data setting
下平均比微调多出 2.9 BLEU
,此外所需的参数也更少;但随着数据集规模的增加,差距也在缩小。
从质量上看,Figure 3(left)
显示了由在不同数据量上训练的prefix-tuning model
和 fine-tuning model
所产生的 8
个样本。虽然两种方法在 low data
区域下都倾向于生成不足(缺失表格内容),但 prefix-tuning
往往比微调更忠实。例如,微调 (100, 200)
错误地声称顾客的评价很低,而真实的评价是平均的;而 prefix-tuning (100, 200)
所生成的描述是忠实于表格的。
prefix-tuning
和微调在 low-data setting
下的表现,更详细的曲线如 Figure 6
所示。
Extrapolation
:我们现在研究了针对 table-to-text
和摘要任务对未见过的主题的推断性能。为了构建一个外推环境,我们对现有的数据集进行了拆分,使训练集和测试集涵盖不同的主题。
对于 table-to-text
,WebNLG
数据集被 table topics
所标记。有 9
个类别在训练集和验证集中出现,表示为 SEEN
;5
个类别只在测试集中出现,表示为 UNSEEN
。所以我们通过对 SEEN
类别的训练和对 UNSEEN
类别的测试来评估外推法。
对于摘要,我们构建了两个外推数据子集:
在 news-to-sports
中,我们对新闻文章进行训练,对体育文章进行测试。
在 within-news
中,我们对 {world, UK, business}
新闻进行训练,并对其余新闻类别(如健康、科技)进行测试。
如 Table 3
和 Table 1
(中间)的 "U"
列所示,在 table-to-text
任务和摘要任务上,pre-fixtuning
在所有指标下都比微调有更好的外推能力。
我们还发现,adapter-tuning
取得了良好的外推性能,与 pre-fixtuning
相当,如 Table 1
所示。这种共同的趋势表明,保留语言模型参数确实对外推有积极影响。然而,这种收益的原因是一个开放的问题,我们将在后续章节进一步讨论。
Prefix
长度:较长的 prefix
意味着更多的可训练参数,因此有更强的表达能力。Figure 4
显示,性能会随着 prefix
长度的增加而增加,直到一个阈值(摘要任务为 200
、table-to-text
为 10
),然后性能会有轻微的下降。
根据经验,较长的 prefix
对推理速度的影响可以忽略不计,因为整个 prefix
的注意力计算在 GPU
上是并行的。
Full vs Embedding-only
:如前文所述,我们讨论了优化"virtual tokens"
的 continuous embeddings
。我们将这一想法实例化,并称之为 embedding-only
消融分析。word embeddings
是自由参数,上层 activation layers
由 Transformer
计算。Table 4 (top)
显示,性能明显下降,表明仅仅调优 embedding layer
并不具有足够的表达能力。
embedding-only
的消融分析给出了 discrete prompt optimization
的性能上限,因为 discrete prompt
限制了 embedding layer
要完全匹配真实单词的 embedding
。因此,我们有这样一个表达能力递增的链条:discrete prompting < embedding-only ablation < prefix-tuning
。
这里的结论是存疑的,因为
的参数化技巧导致的。这种参数化使得 embedding-only
的自由度降低。应该在采用embedding-only
的时候,去掉参数化技巧(这就是P-Tuning
的思想)。
Prefixing vs Infixing
:我们还研究了可训练的 activations
在序列中的位置如何影响表现。在 prefix-tuning
中,我们把它们放在开头 activations
放在 infix-tuning
。Table 4 (bottom)
显示,infix-tuning
的表现略逊于 pre-tuning
。我们认为这是因为 prefix-tuning
可以影响 activations
,而 infix-tuning
只能影响 activations
。
初始化:我们发现,prefix
的初始化方式在 low-data settings
下有很大的影响。随机初始化会导致高方差的低性能。如 Figure 5
所示,用真实单词的 activations
来初始化prefix
,可以明显改善 generation
。具体而言,用任务相关的单词如 "summarization"
和 "table-to-text"
来初始化所获得的性能,比用任务无关的单词如 "elephant"
和 "divide"
略好,但使用真实的单词仍然比随机要更好。
由于我们用语言模型计算的真实单词的 activations
来初始化前缀,这种初始化策略与尽可能地保留 pretrained LM
是一致的。
注意:这里描述的是参数的初始化,而参数的梯度更新是采用参数化技巧。
Figure 7
给出了更多的关于初始化的指标。
个性化(Personalization
):正如我们在前面章节中指出的,当有大量的任务需要独立训练时,prefix-tuning
是有利的。一个实际的 setting
是用户隐私。为了保护用户隐私,每个用户的数据需要被分开,并且需要为每个用户独立训练一个个性化的模型。因此,每个用户可以被看作是一个独立的任务。如果有数以百万计的用户,prefix-tuning
可以 scale
到这种 setting
,并保持模块化。通过增加或删除用户的 prefix
,可以灵活地增加或删除用户,而不会造成交叉污染。
跨用户的 Batching
:在 personalization setting
下,prefix-tuning
允许对不同用户的 query
进行 batching
,即使这些 query
采用不同的 prefix
。当多个用户用他们的inputs
来 query
云端 GPU
设备时,将这些用户放在同一 batch
是很有计算效率的。prefix-tuning
可以保持共享的语言模型不变;因此,batching
需要一个简单的步骤,即把 personalized prefix
添加到用户的输入之前,其余所有的计算都是不变的。相比之下,在 adapter-tuning
中,我们不能在不同的用户之间进行 batching
,因为 adapter-tuning
在共享的 Transformer layers
之间有 personalized adapters
。
batch
内不同样本的prefix
不同,可以类似于word embedding
的思路,认为每个用户一个id
,prefix vector
就是id embedding
。
Prefix-tuning
的归纳偏置(Prefix-tuning
):回顾一下,微调会更新所有的 pretrained parameters
,而 prefix-tuning
和 adapter-tuning
则会保留 pretrained parameters
。由于语言模型是在通用语料库上进行预训练的,保留语言模型参数可能有助于泛化到训练期间未见的领域。与这种直觉相一致的是,我们观察到 prefix-tuning
和 adapter-tuning
在 extrapolation settings
中都有明显的性能提升;然而,这种提升的原因是一个开放的问题。
虽然 prefix-tuning
和 adapter-tuning
都冻结了 pretrained parameters
,但它们调优不同的参数集合来影响 Transformer
的 activations
。回顾一下,prefix-tuning
保持语言模型的完整,并使用 prefix
和 pretrained attention blocks
来影响后续的 activations
;adapter-tuning
在语言模型的层之间插入可训练的模块,直接将 residual vectors
添加到 activations
中。此外,我们观察到,与 adapter-tuning
相比,prefix-tuning
需要的参数要少得多,同时又能保持相当的性能。我们认为参数效率的提高是因为 prefix-tuning
尽可能地保持了 pretrained LM
的完整性,因此比 adapter-tuning
更能利用语言模型。
《Intrinsic dimensionality explains the effectiveness of language model fine-tuning》
的同期工作使用 intrinsic dimension
表明,存在一个低维度的 reparameterization
,其微调效果与 full parameter space
一样。这解释了为什么只需更新少量的参数就能在下游任务上获得良好的准确率。我们的工作与这一发现相呼应,表明通过更新一个非常小的 prefix
就可以达到良好的 generation
性能。
论文:
《GPT Understands, Too》
语言模型预训练是许多自然语言处理任务的成功方法。有证据表明,在预训练过程中,语言模型不仅学习了 contextualized text representation
,还学习了语法、句法、常识、甚至世界知识。
根据训练目标,预训练的语言模型可以分为三类:
用于自然语言生成(natural language generation: NLG
)的单向语言模型,如GPT
。
用于自然语言理解(natural language understanding: NLU
)的双向语言模型,如BERT
。
结合前两种范式的混合语言模型,如 XLNet
、UniLM
。
长期以来,研究人员观察到 GPT
风格的模型在具有微调的 NLU
任务中表现不佳,因此认为它们天然地不适合语言理解。
新兴的 GPT-3
,以及它在具有手工制作的 prompts
的 few-shot learning
和 zero-shot learning
上的特殊表现,已经席卷机器学习界。它的成功表明,巨大的单向语言模型加上适当的 manual prompt
可能会对自然语言理解起作用。然而,手工制作一个表现最好的 prompt
就像在干草堆里找一根针,这往往需要不切实际的大型验证集。在许多情况下,prompt engineering
实际上意味着对测试集的过拟合。此外,很容易创建 adversarial prompts
,导致性能大幅下降。鉴于这些问题,最近的工作集中在自动搜索离散的 prompts
(LPAQA
、LM-BFF
、Metaprompt
),并证明其有效性。然而,由于神经网络本身是连续的,离散的 prompts
可能是次优的。
在这项工作中,我们提出了一种新的方法 P-tuning
,该方法在连续空间中自动搜索 prompts
,以弥补 GPT
和 NLU applications
之间的 gap
。P-tuning
利用少数连续的 free parameters
作为 prompts
输入到 pre-trained
的语言模型中。然后,我们使用梯度下降法对 continuous prompts
进行优化,从而作为 discrete prompt searching
的一种替代。
简单的 P-tuning
方法为 GPT
带来了实质性的改进。我们在两个 NLU
基准上检验了基于 P-tuning
的 GPT
: LAMA knowledge probing
和 SuperGLUE
。
在 LAMA knowledge probing
中,其中模型参数是 fixed
的,与原始手工的 prompts
相比,基于 P-tuning
的 GPT
在 Precision@1
中显示出 26.2%-41.1%
的绝对收益。最好的一个模型在 LAMA
中达到了 64.2%
,大大超过了 SOTA
的 45.2%
的 prompt searching
方法。
在 SuperGlue
中,我们在 few-shot
和完全监督的情况下联合应用 P-tuning
和微调。结果,GPT
的性能与具有相同规模的BERT
模型相比具有竞争力,对于某些数据集,GPT
的性能甚至超过了 BERT
。
进一步的实验表明,BERT
风格的模型也可以在一定程度上受益于 P-tuning
。我们表明,带有 P-tuning
的 ALBERT
大大超过了以前的方法,并在 few-shot SuperGLUE
基准上取得了新的 SOTA
。
我们的发现打破了GPT
只能 generate
而不能 understand
的刻板印象。它还表明,语言模型包含的世界知识、以及 prior-task
知识要比我们以前假设的多得多。P-tuning
也可以作为一种通用的方法来调优 pre-trained
的语言模型,以获得最佳的下游任务性能。总而言之,我们做出了以下贡献:
我们表明,在自然语言理解方面,GPT
可以和 BERT
一样具有竞争力(有时甚至更好),而 P-tuning
可以提高 pre-trained
语言模型的性能。这表明,GPT
风格的架构在自然语言理解方面的潜力被低估了。
我们表明,P-tuning
是一种通用的方法,可以在 few-shot setting
和 fully-supervised setting
下改善 GPT
和 BERT
。尤其地,通过 P-tuning
,我们的方法在 LAMA knowledge probing
和 few-shot SuperGlue
上的表现超过了 SOTA
的方法,这表明语言模型在预训练期间掌握了比我们之前想象的更多的世界知识和 prior-task
知识。
论文缺乏消融研究部分,一些关键设计只有结论没有实验的验证。
相关工作:
Pre-trained Language Model
:最近,自监督预训练语言模型的突破,推动了自然语言处理的发展。
GPT
首次利用 transformer
架构对大规模 web text
进行预训练。
BERT
提出了 masked language modeling
,并创建了 pre-train/finetuning
范式。
XLNet
创新性地提出了 permutation language modeling
。
RoBERTa
进行了详细的实验,展示了与预训练有关的有用技术。
BART, T5, UniLM
,它们试图统一语言理解和语言生成。
作为知识库的语言模型:自语言模型诞生以来,研究人员观察到,语言模型不仅学习了 contextualized text representation
,还学习了各种类型和数量的知识,包括语言知识和世界知识。
《A structural probe for finding syntax in word representations》
证明了语言模型产生的 contextualized representation
可以在 embedding
空间中形成解析树。
《A multiscale visualization of attention in the transformer model》
、《What does bert look at? an analysis of bert’s attention》
研究了 multi-head attention internal transformers
,发现某些 attention head
可能对应于一些语法功能,包括共指关系(co-reference
)和名词修饰。
另一个重要的方向是关于语言模型学习了多少世界知识或事实性知识。
LAMA
提出利用从知识库中的 fact
三元组转化而来的完形填空测试来考察语言模型在记住 fact
的能力,其中答案是以单个 token
的形式给出的。
在 《Language models are openk nowledge graphs》
中,作者研究了 attention
矩阵,发现 attention
也会表明上下文中包含的知识三元组,从而开发了一个开放的知识图谱构建框架。
《X-factr: Multilingual factual knowledge retrieval from pretrained language models》
基于 LAMA
开发了一个 multi-token
的 fact retrieval
数据集。
Language Model Prompting
:GPT-3
的诞生、以及 GPT-3
在多任务和 few-shot learning
中的出色表现让人们感到震撼。然而,GPT-3
并不是为微调而设计的,它在很大程度上依赖手工的 prompts
(或 in-context learning
)从而迁移到下游任务中。为了更好地将大型语言模型应用于自然语言理解,最近的工作集中在自动化搜索 discrete prompts
,通过挖掘训练语料(《How can we know what language models know?》
)、 token-based
的梯度搜索(《Autoprompt: Eliciting knowledge from language models with automatically generated prompts》
)、以及使用单独的模型(《Making pre-trained language models better few-shot learners》
)如 T5
来生成 prompts
。然而,由于神经网络的连续性的特点,在离散空间中的搜索是具有挑战性的和次优的。
最近, 《Prefix-tuning: Optimizing continuous prompts for generation》
提出了用于自然语言生成任务的 prefix-tuning
,它采用了与我们的 P-tuning
类似的策略来训练 continuous prompt
。然而,它们在几个方面是不同的。
首先,prefix-tuning
是为自然语言生成任务和 GPT
设计的,而 P-tuning
则针对自然语言理解任务和所有类型的语言模型。
事实上,
prefix-tuning
也可以用于所有类型的任务、所有类型的模型。
第二,prefix-tuning
只允许在输入序列的开头添加 prompt tokens
,而 P-tuning
可以在任何地方插入 tokens
。
第三,prefix-tuning
在 transformer
的每一层都侵入性地拼接了 continuous prompt tokens
,因为作者发现仅仅在输入中 prompting
并没有效果;相反,P-tuning
非侵入性地只在输入中添加 continuous prompts
从而工作良好。
最后,P-tuning
还介绍了如何使用 anchor prompts
来进一步改进。
即,添加类似于
"?"
这样的token
在prompts
中。
尽管存在差异,我们认为我们的 P-tuning
和 prefix-tuning
都指出,学习 continuous prompts
是有用的,并且优于 discrete prompt searching
。
动机:GPT-3
和 DALLE
的奇迹似乎表明,巨型模型总是不折不扣的提升机器智能的万能药。然而,在繁荣的背后,存在着不可忽视的挑战。一个致命的问题是,巨型模型的可迁移性很差。对于这些万亿规模的模型,在下游任务上的微调几乎很难进行。即使是对于 many-shot finetuning setting
,这些模型仍然太大,无法快速记忆 fine-tuning samples
(《Interventional few-shot learning》
)。
鉴于这一挑战,最近的工作集中在自动化搜索 discrete prompts
,通过挖掘训练语料、 token-based
的梯度搜索、以及使用单独的模型来生成 prompts
。然而,我们深入研究了寻找 continuous prompts
的问题,其中 continuous prompts
可以通过微分来优化。
接下来,我们介绍了 P-tuning
的实现。与 discrete prompts
类似,P-tuning
只对输入进行非侵入性的修改。尽管如此,P-tuning
用它的differential output embeddings
取代了 pre-trained
语言模型的 input embedding
。
给定一个 pre-trained
语言模型 input tokens
的序列 pre-trained embedding layer
input embeddings
target tokens
output embeddings
进行下游的处理。例如:
在预训练中,unmasked tokens
,而 [MASK] tokens
。
在句子分类中,sentence tokens
,而 [CLS]
。
prompt
target
LAMA-TREx P36
),一个模板可能是 "The capital of Britain is [MASK]."
(如下图所示),其中 "The capital of ... is ... ."
是 prompt
,"Britain"
是上下文,"[MASK]"
是 target
。prompts
可以非常灵活,我们甚至可以将其插入上下文或 target
中。
令 prompt token
。为了简单起见,给定一个模板 discrete prompts
满足
相反,P-tuning
将 pseudo tokens
,并将模板映射为:
其中:embedding
张量,continuous prompts
。最后,利用下游损失函数 continuous prompt
其中:
注意,这里的
prefix
不一定要位于输入的开始,也可以位于输入的X
和Y
之间、甚至位于Y
之后。关于
prefix
的长度、位置,论文没有进行消融研究。
虽然训练 continuous prompts
的想法很直接,但在实践中,它面临着两个优化挑战:
离散性:word embedding
《A convergence theory for deep learning via over-parameterization》
),优化器将很容易陷入局部最小值。
association
:另一个担忧是,从直觉上讲,我们认为 prompt embeddings
prompt embeddings
相互关联起来。
鉴于这些挑战,在 P-tuning
中,我们建议使用一个由非常简单的神经网络组成的 prompt encoder
将 long-short term memory network: LSTM
,具有 ReLU
激活的双层 multilayer perceptron: MLP
,从而鼓励离散性。正式地,语言模型 input embeddings
虽然 LSTM head
的使用确实给 continuous prompts
的训练增加了一些参数,但 LSTM head
比 pre-trained
模型要小几个数量级。而且,在推理中,我们只需要输出 embedding
LSTM head
。
Prefix-Tuning
直接采用简单的MLP
,那么它采用这里的LSTM + MLP
是否也能提升效果?这种优化
的方式也不太优雅,与 Prefix-Tuning
一样都是采用了参数化技巧。此外,为什么这里要用
LSTM
?论文没有进行消融研究。
此外,我们还发现,在 SuperGLUE
基准测试中,添加一些 anchor tokens
有助于一些自然语言理解任务。例如,对于 RTE
任务,在 prompt
模板 "[PRE][prompt tokens][HYP]?[prompt tokens][MASK]"
中特别添加一个 anchor token "?"
,对性能有很大的影响。通常情况下,这样的 anchor words
代表了每个组件的特性,在这个例子中,"?"
表示 "[HYP]"
作为一个询问部分。
缺乏消融研究。
知识探测,或被称为事实检索(fact retrieval
),评估语言模型从预训练中获得了多少现实世界的知识。LAMA
数据集通过从知识库中选择的三元组创建的完形填空测试来评估它。例如,我们将把三元组 (Dante, born-in, Florence)
转化为一个带有人工的 prompt
(即,"Dante was born in [MASK]."
)的完形填空句子,然后我们要求语言模型推断出 target
。因为我们要评估从预训练中获得的知识,所以 pre-trained
语言模型的参数是固定的(即不进行微调)。
数据集:LAMA
。
LAMA
强迫所有的答案都是 single-token
的格式。我们首先采用原始的 LAMA-TREx
数据集,其中包括 41
个 Wikidata
关系和总共 34,039
个测试三元组(即 LAMA-34k
,它涵盖了所有的 BERT
词表)。由于 GPT
和 BERT
的词表不同,我们建立了另一个版本的 LAMA
,它涵盖了 GPT
词表和 BERT
词表的交集。这个子集加起来大约有 29k
个测试三元组,我们把它命名为 LAMA-29k
。
至于训练,所有的 prompt searching
方法都需要一些额外的数据来训练或寻找 prompts
。我们遵循 AutoPrompt
(《Autoprompt: Eliciting knowledge from language models with automatically generated prompts》
) 中的设置,作者从原始 TRE-x
数据集中构建了一个训练集。这个训练集与测试集类似,但答案分布略有不同。
评估:最初,LAMA
为每个关系提供了如 Table 1
所示的人工 prompt
,这些 prompt
是有效的,但却是次优的。对于双向 masked language model
,我们只需要将 "[X]"
替换为主语实体、将 "[Y]"
替换为 [MASK] token
;对于 GPT
等单向语言模型,遵循LAMA
最初在 Transformer-XL
上的设置,我们使用 target position
之前的模型输出。在进行 P-tuning
方面 ,我们对双向模型使用 (3, sub, 3, obj, 3)
模板,对单向模型使用 (3, sub, 3, obj)
模板,其中数字表示 prompt tokens
的数量。在这个知识探测任务中,我们不使用任何 anchor tokens
。在训练过程中,我们将学习率设置为 1e-5
,并使用 Adam
优化器。
为什么要采用
(3, sub, 3, obj, 3)
模板、(3, sub, 3, obj)
模板?论文并未说明。
实验结果:结果如下表所示。可以看到:
P-tuning
极大地推动了知识探测的效果,在 LAMA-34k
中从 43.3%
提升到 50.6%
,在 LAMA-29k
中从 45.2%
提升到最高64.2%
。这一结果有力地表明,语言模型仅仅通过寻找更好的 prompt
,在没有微调的情况下捕获到的知识远比人们以前认为的要多。
当 P-tuning
与以前的 discrete prompt searching
方法如 AutoPrompt
、LPAQA
在相同大小的模型上进行比较时,P-tuning
仍然优于它们。
AutoPrompt
这一行代表什么含义?是AutoPrompt
结合P-tuning
,还是仅仅代表AutoPrompt
?论文未说明。读者猜测是仅仅代表AutoPrompt
。
P-tuning v.s. Fine-tuning
:在传统的知识探测中,不允许通过微调来改变 pre-trained
模型的参数。我们试图评估语言模型在预训练期间学到了多少知识。然而,这项工作的基本内容是比较 P-tuning
和 fine-tuning
,特别是在 GPT
这样的单向性语言模型上。我们对以下问题特别感兴趣: 单向和双向语言模型是否从 P-tuning
中获得了相似的改进?
为了对现有的 tuning
方法进行全面回顾,我们包括以下方法:
Manual Prompt: MP
:使用 LAMA
的原始的人工 prompts
。
Fine-tuning: FT
:只呈现 subject
并微调模型以预测 object
。
Manual Prompt with Fine-tuning: MP+FT
:用人工 prompts
对语言模型进行微调。
P-tuning
:使用 continuous prompts
,同时固定语言模型的参数。
我们在 LAMA-29k
中实现了这四种策略(见 Table 2
的右侧),我们发现 P-tuning
与 fine-tuning-based
方法相当或更好,这令人惊讶但也是合理的。
令人惊讶的是,微调应该是更有潜力的,因为它调优了所有语言模型的参数,而 P-tuning
则没有调优语言模型的参数。然而,这也是合理的,因为就知识探测而言,许多事实只能是 hard-coded
的,而不是由语言模型推断的。参数的微调可能会导致灾难性的遗忘。相反,P-tuning
并不改变 pre-trained
模型的参数,而是通过寻找更好的 continuous prompt
来唤起所存储的知识。
此外,有趣的是,看到 BERT
在 P-tuning
的改善、和 GPT
在 P-tuning
的改善之间存在明显的差距。带有高质量人工 prompts
的微调(MP+FT
)(PET-2
、LM-BFF
)已被证明是相当有效的,这在我们的实验中也被观察到。然而,令人惊讶的是,GPT
从 MP+FT
中受益的程度不如从 P-tuning
中受益的程度,而 BERT
从 MP+FP
中收益程度与从 P-tuning
中收益程度相当。换句话说,P-tuning
显示出与单向语言模型更好的亲和性。就更大的模型而言,如具有 11B
参数的 MegatronLM
,虽然微调几乎不工作,但 P-tuning
仍然适用,并在 LAMA
上达到了 SOTA
。
我们在 SuperGLUE
基准上进行了实验从而评估 P-tuning
。总共有 8
个自然语言理解任务,我们专注于其中的 7
个任务,因为另一个任务 ReCoRD
没有采用 prompts
,因此没有 P-tuning
。这七个任务包括:问答 (BoolQ
、MultiRC
)、文本蕴含( CB
、RTE
)、共指解析(WiC
)、因果推理(COPA
)、以及词义消歧( WSC
)。
对于实验设置,我们考虑了 fully-supervised setting
和 few-shot setting
。
在 fully-supervised setting
中,我们使用整个训练集(
对于 few-shot setting
,我们采用 SuperGLUE
的 few-shot
(也称为 FewGlue
)。FewGLUE
是 SuperGLUE
的一个子集,每个任务由 32
个训练数据(400
到 20000
)的未标记集(
以前的工作(PET finetuning
)假定没有任何验证集,并根据经验选择采用固定的超参数(这基本上是过拟合于测试集)。与它不同的是,我们构建了适当的few-shot
验证集(表示为 LM-BFF
),所以 few-shot
训练集
我们采用与PET-2
相同的评价指标。
我们将自然语言理解任务重新表述为完形填空任务。与PET finetuning
使用带有人类手工制作的 prompts
的模式不同,P-tuning
将 initial prompt embeddings
放在不同位置,然后与 pretrained
模型一起微调 prompt embeddings
。
对于 fully-supervised settings
,我们使用具有线性衰减学习率的 AdamW optimizer
。我们对超参数进行网格搜索,在{1e-5, 2e-5, 3e-5}
的学习率、以及 {16, 32}
的 batch size
。
对于小数据集(COPA, WSC, CB, RTE
),我们对 pretrained
模型微调 20
次。对于较大的数据集(WiC, BoolQ, MultiRC
),我们将 training epochs
的数量减少到 10
个,因为模型会更早收敛。我们评估每个 epoch
的性能。我们使用早停来避免对训练数据的过拟合。
对于 few-shot learning
,我们使用与PET-2
相同的超参数,只是将微调 steps
扩大到 3500
步(而不是该论文中的 250
步),因为 prompt embeddings
的微调需要更多步数。
P-tuning
可以用于所有的单向模型和双向模型。我们选择总计算量相似的模型进行公平的比较,其中我们选择 BERT-base
与GPT2-base
进行比较、BERT-large
与 GPT2-medium
进行比较。像 RoBERTa
这样的模型具有类似的模型规模,但是是用更大的计算量来训练的,应该与更大规模的 GPT
进行比较。这将留给未来的工作。
此外,对于 few-shot learning
,我们也用 albert-xxlarge-v2
进行了实验,它在 PET-2
中被证明是在 few-shot setting
中表现最好的 pretrained
模型。对于每个 pretrained
模型,我们报告了 standard finetuning
(即使用 [CLS] embedding
进行分类)、PET finetuning
、PET zero-shot
和 P-tuning
的性能。
Fully-supervised Learning
:主要结果见 Table 3
和 Table 4
。
首先,对于 bert-base-cased
模型 bert-large-cased
模型,P-tuning
在 7
个任务中的 5
个任务上优于所有其他 bert-based
模型。
例外的是 WiC
和 MultiRC
,P-tuning
的表现比 standard fine-tuning
差一点。由于 WiC
和 MultiRC
都有相对较大的训练集,我们猜测这可能是由于 standard fine-tuning
可以从较大的数据集中获得比 P-tuning
更多的优势。相反,P-tuning
在low-resource setting
下似乎更有利。类似的观察也在后面的实验中显示。
其次,对于 gpt2-base
和 gpt2-medium
模型,P-tuning
在所有 gpt2-base
模型中取得了最有前景的结果。
综上所述,我们可以得出结论,P-tuning
可以有效地提高 bert-based
模型和 gpt-based
模型的自然语言理解性能。
此外:
在 base
模型的规模下,带有 P-tuning
的 gpt2-base
在 7
个任务中的 6
个任务上超过了 BERT-based
模型的最佳结果,同时在 WiC
上取得了相差无几的结果。
在 large
模型的规模下,带有 P-tuning
的GPT2-medium
在 7
个任务中的 4
个任务上显示出优势,而在 RTE
和 WSC
任务上则具有可比性。唯一的例外是 WiC
任务。我们注意到,在 WiC
任务中,标准微调在不同 setting
的模型上显示出最佳结果。我们推测,这是因为词义消歧任务不适合 prompt-based MLM prediction
。
最重要的是,我们得出结论,通过 P-tuning
,GPT2
实现了与 BERT-based
模型相当的甚至更好的性能。这一发现颠覆了我们的普遍看法,即双向模型(如 BERT
)在自然语言理解任务中总是比单向模型(如 GPT2
)更好。
Few-shot learninng
:
次优的和敏感的 Manual Prompts
:最初,PET/iPET
在 SuperGLUE
的 few-shot learning
任务上,通过几个人工编写的prompts
实现了 SOTA
,这些 prompts
是有效的但却是次优的,而且是劳动密集型的。
为了全面了解 manual prompts
,我们首先进行了比较实验。Table 6
显示了使用不同 manual prompts
和 P-tuning
的结果。
首先,结果显示,few-shot
的表现与 prompts
的语义、格式、语法没有明显的关联。人类认为合理的prompts
对语言模型不一定有效。
第二,manual prompts
的细微变化会导致大幅度的性能差异。pretrained
语言模型对 prompts
的选择相当敏感。
我们可以得出结论,人工手写的 prompts
比我们想象的要复杂。此外,Table 6
还证明,使用 manual prompts
。这表明,在 few-shot setting
中挑选出最好的 manual prompts
也很有挑战性。相比之下,P-tuning
在自动寻找更好的 prompts
方面似乎很有希望,而手工制作的 prompts
的希望要少得多。
SuperGLUE Few-shot Learning
的新的 SOTA
:Table 5
列出了通过 P-tuning
实现的 Super-GLUE few-shot learning
的最新结果。我们将其与几个 baseline
进行了比较,包括 PET
、GPT-3
,其中 GPT-3
实现了以前的 SuperGLUE Few-shot SOTA
。
值得注意的是,除了 manual prompt finetuning
外,原始 PET
采用了多种额外的技术,包括数据增强、ensemble
、以及知识蒸馏,以提高性能。此外,它通过过拟合测试集来进行模型选择和超参数调优。为了确保公平的比较,PET
在我们的 setting
下进行了重新实验,去除所有的辅助技术(数据增强、ensemble
、知识蒸馏)。考虑到 PET
提供了多个 manual prompts
,这里报告了平均的 prompt
性能和最佳的 prompt
性能。
Table 5
说明,P-tuning
在所有任务上的表现一直优于具有manual prompts
的 PET
(PET-best
(7
个任务中的 5
个任务上,解决方案对 PET
(multiple patterns
的标准差,证明 P-tuning
可以搜索到远比 manual prompts
提示更好的 prompts
,并显著提高 few-shot
任务的性能。在包括 CB, WiC, RTE, WSC
的任务上,P-tuning
甚至优于 PET/iPET
(ensemble
、知识蒸馏)。与 GPT-3
相比,虽然 GPT-3
的规模比 P-tuning
大得多(albert-xxlargev2
),P-tuning
在7
个任务中的 6
个任务中表现优异。结果证明了 P-tuning
在few-shot
自然语言理解任务中的优势。
Finetuning v.s. MP finetuning v.s. P-tuning
:Table 3
和 Table 4
列出了三种 tuning-based
范式在提高自然语言理解的性能方面的结果。我们对这些 tuning-based
范式的不同表现特别感兴趣。
总的来说,P-tuning
在 BERT-based
模型上平均比fine-tuning
和 MP fine-tuning
高出 2
分左右,在 GPT2-based
模型上平均比fine-tuning
和 MP fine-tuning
高出 5
分左右。
具体来说,尽管 P-tuning
在大多数任务上取得了最好的结果,但fine-tuning
在那些难以制定成完形填空问题的任务(如WiC
)上可以胜出。
比较 P-tuning
和 MP fine-tuning
,P-tuning
一般比 MP fine-tuning
平均显示出更多的优势,因为 MP fine-tuning
要找到好的 manual prompts
是很困难的。相比之下,P-tuning
总是能够自动搜索到更好的 prompts
。
作为调优pretrained
模型的新范式,P-tuning
在调优 pretrained
模型的参数时,可以在广阔的 prompt space
中搜索。结果表明,它在 prompting
难以微调的 larger-scale pre-trained
模型方面具有竞争性的潜力。
论文:
《P-Tuning v2: Prompt Tuning Can Be Comparable to Fine-tuning Universally Across Scales and Tasks》
pretrained
语言模型改善了各种自然语言理解任务的性能。一种广泛使用的方法,即微调,为 target
任务更新整个模型的参数集合。虽然微调获得了良好的性能,但它在训练过程中很耗费内存,因为必须存储所有参数的梯度和 optimizer states
。此外,在推理过程中为每个任务保留一份模型参数是不方便的,因为 pre-trained
模型通常很大。
另一方面,prompting
冻结了 pretrained
模型的所有参数,并使用自然语言 prompt
来 query
语言模型(GPT-3
)。例如,对于情感分析,我们可以将一个样本(例如,"Amazing movie!"
)与一个 prompt
"This movie is [MASK]"
拼接起来,并要求 pre-trained
语言模型预测 pre-trained
是 "good"
和 "bad"
的概率,以决定该样本的标签。prompting
完全不需要训练,只需存储一份模型参数。然而,与微调相比,discrete prompting
(Autoprompt
、LM-BFF
)在许多情况下会导致次优的性能。
prompt tuning
是一种只调优continuous prompts
的想法。具体来说,《Gpt understands, too》
、《The power of scale for parameter-efficient prompt tuning》
提出在 input word embeddings
的原始序列中添加可训练的 continuous embeddings
(也叫 continuous prompts
)。在训练期间,只有 continuous prompts
被更新。虽然在许多任务上,prompt tuning
比 prompting
有所改进,但当模型规模不大,特别是小于 10B
参数时,它仍然不如微调的表现(《The power of scale for parameter-efficient prompt tuning》
)。此外,正如我们的实验所显示的那样,与微调相比,prompt tuning
在几个难的序列标注任务上的表现很差,如 extractive
的问答。
我们在本文中的主要贡献是一个新的经验发现,即适当优化的 prompt tuning
可以在不同的模型规模和自然语言理解任务中与微调相媲美。与之前工作中的观察相反,我们的发现揭示了 prompt tuning
在自然语言理解中的普遍性和潜力。
从技术上讲,我们的方法 P-tuning v2
在概念上并不新颖。它可以被看作是 Deep Prompt Tuning
(《Prefix-tuning: Optimizing continuous prompts for generation》
、《Learning how to ask: Querying lms with mixtures of soft prompts》
)的优化的和适配的实现,旨在 generation
和 knowledge probing
。最显著的改进来自于对 pretrained
模型的每一层(而不仅仅是输入层)应用 continuous prompts
。deep prompt tuning
增加了 continuous prompts
的能力,并缩小了在各种 setting
下与微调的差距,特别是对于小模型和困难任务。此外,我们提出了一系列优化和实现的关键细节,以确保 finetuning-comparable
的性能。
实验结果表明,P-tuning v2
在不同的模型规模(从 300M
到 100B
参数)和各种困难的序列标注任务(如抽取式问答、命名实体识别)上的性能与微调相媲美。与微调相比,P-tuning v2
每个任务的可训练参数仅为微调时的 0.1%
到 3%
,这大大降低了训练时间成本、训练内存成本、以及每个任务的存储成本。
P-tuning v2
与P-tuning
的核心变化是:P-tuning v2
不仅在输入层插入continues prompts
,而且在每个layer
插入了continues prompts
。这似乎就是Prefix-Tuning
的思想?与
Prefix-Tuning
的区别在于实现细节不同:
P-Tuning v2
直接采用Classification Head
,这类似于BERT
。
P-Tuning v2
发现某些任务上,重参数化技巧导致效果下降。此外,论文实验部分聚焦于
fully-supervised setting
,即有大量的标记数据用于训练。这主要是因为P-Tuning v2
包含更多的trainable parameters
,包括:每一层的trainable continues prompts
、以及Linear Classification Head
。
自然语言理解任务:在这项工作中,我们将自然语言理解任务的挑战分为两个系列:简单的分类任务、困难的序列标注任务。
简单的分类任务涉及 label space
上的分类。GLUE
和 SuperGLUE
的大多数数据集都属于这个类别。
困难的序列标注任务涉及对tokens
序列的分类,如命名实体识别、抽取式问答。
Prompt Tuning
:令 embedding layer
。在 discrete prompting
(PET-2
)的案例中 ,prompt tokens
input embedding sequence
被表述为
《The power of scale for parameter-efficient prompt tuning》
和 《Gpt understands, too》
介绍了可训练的 ·continuous prompts
,作为自然语言理解任务的自然语言 prompts
的替代,其中 pretrained
语言模型的参数被冻结。给定可训练的 continuous embeddings
input embedding sequence
被写成 prompt tuning
与微调不相上下。
注意,下图和
P-Tuning
的原始论文有差异。在P-Tuning
原始论文中:
continues embeddings
仅应用于输入层,但是这里应用到了Layer 1 Prompts
。
continues embeddings
不仅仅在序列中间插入,而是可以在序列的头部插入一部分、在序列的中间插入一部分、甚至在序列的尾部插入一部分。
缺乏普遍性:《The power of scale for parameter-efficient prompt tuning》
、《Gpt understands, too》
在许多 NLP
应用中被证明相当有效,但由于缺乏普遍性,在取代微调方面仍有不足,如下所述。
缺少跨尺度的普遍性:《The power of scale for parameter-efficient prompt tuning》
表明,当模型规模超过 10B
参数时,prompt tuning
可以与微调相媲美。然而,对于被广泛使用的中型模型(从 100M
到 1B
),prompt tuning
的表现比微调差很多。
缺少跨任务的普遍性:尽管《The power of scale for parameter-efficient prompt tuning》
、《Gpt understands, too》
在一些自然语言理解基准上表现出了优越性,但 prompt tuning
在困难的序列标注任务上的有效性并没有得到验证。sequence tagging
为每个input token
来预测标签序列,这可能更难,而且与 verbalizers
不兼容(PET-2
)。在我们的实验中,我们表明《The power of scale for parameter-efficient prompt tuning》
、《Gpt understands, too》
在典型的序列标注任务上的表现比微调差。
考虑到这些挑战,我们提出了 P-tuning v2
,它将 deep prompt tuning
(《Prefix-tuning: Optimizing continuous prompts for generation》
、《Learning how to ask: Querying lms with mixtures of soft prompts》
)作为一个跨 scales
和跨自然语言理解任务的通用解决方案。
Deep Prompt Tuning
:在《The power of scale for parameter-efficient prompt tuning》
、《Gpt understands, too》
中,continuous prompts
只被插入到 input embedding sequence
中(参照 Figure 2(a)
)。这导致了两个挑战:
首先,由于序列长度的限制,可调优的参数的数量是有限的。
第二,input embeddings
对模型预测有相对间接的影响。
为了解决这些挑战,P-tuning v2
采用了 deep prompt tuning
。如 Figure 2
所示,在不同的层中,prompts
视为 prefix tokens
而被加入。
一方面,P-tuning v2
有更多可调优的 task-specific
参数(从 0.01%
到 0.1%-3%
),从而允许更多的 per-task
容量,同时具有parameter-efficient
。
另一方面,被添加到更深的层的prompts
对模型预测有更加直接的影响(见附录B
的分析)。
Optimization and Implementation
:为实现最佳性能,有一些有用的优化和实施细节。
Reparameterization
:之前的工作通常利用 reparameterization encoder
(如 MLP
)(《Prefix-tuning:Optimizing continuous prompts for generation》
、《Gpt understands, too.》
)来转换 trainable embeddings
。然而,对于自然语言理解,我们发现其有用性取决于任务和数据集。对于一些数据集(如 RTE, CoNLL04
),MLP
带来了持续的改进;对于其他数据集,MLP
导致的结果影响很小,甚至是负面的(如 BoolQ, CoNLL12
)。更多分析见附录 B
。
prompt
长度:prompt
长度在 P-Tuning v2
中起着关键作用。我们发现,不同的自然语言理解任务通常会在不同的 prompt
长度下达到最佳性能(参见附录 B
)。一般来说,简单的分类任务更喜欢较短的 prompt
(少于 20 tokens
);困难的序列标注任务更喜欢较长的 prompt
(大约 100
个)。
多任务学习:在对单个任务进行微调之前,多任务学习用共享的 continuous prompts
联合优化多个任务。多任务在 P-Tuning v2
中是可选的,但可以通过提供更好的初始化来进一步提高性能(《Ppt: Pre-trained prompt tuning for few-shot learning》
)。
Classification Head
:使用 language modeling head
作为 verbalizers
(《It’s not just size that matters: Small language models are also few-shot learners》
)一直是 prompt tuning
的核心(《Gpt understands, too》
),但我们发现它在 full-data setting
中没有必要,而且与序列标注任务不兼容。P-tuning v2
反而像 BERT
一样,在 tokens
之上应用了一个随机初始化的分类头(参考 Figure 2
)。
为了澄清 P-tuning v2
的主要贡献,我们在 Table 1
中提出了与现有 prompt tuning
方法的概念性比较。
我们在一组常用的 pre-trained
模型、以及自然语言理解任务上进行了广泛的实验,以验证 P-tuning v2
的有效性。在这项工作中,除了微调,所有的方法都是在冻结的语言模型骨架上进行的,这与 《The power of scale for parameter-efficient prompt tuning》
的设置一致,但与 《Gpt understands, too》
的 tuned setting
有所不同。task-specific
参数的比率(例如 0.1%
)是通过比较 continuous prompts
的参数和 transformers
的参数得出的。另外需要注意的是,我们的实验都是在 fully-supervised setting
下(而不是 few-shot setting
下)进行的。
自然语言理解任务:首先,我们包括来自 SuperGLUE
的数据集,以测试 P-tuning v2
的通用 NLU
能力。此外,我们还引入了一套序列标注任务,包括命名实体识别、抽取式问答、和语义角色标注。
pre-trained
模型:BERT-large, RoBERTa-large, DeBERTa-xlarge, GLMxlarge/xxlarge
。它们都是为自然语言理解任务设计的双向模型,涵盖了从约 300M
到 10B
的广泛规模。
多任务学习:对于多任务设置,我们结合每个任务类型的训练集(例如,结合语义角色标注任务的所有训练集)。我们对每个数据集使用单独的线性分类器,同时共享 continuous prompts
。
命名实体识别(Name entity recognition: NER
):给定一个句子,任务是预测某些类别的实体(如,地理名、人名、机构名)在句子中的 span
。
我们采用了 CoNLL03, OntoNotes 5.0, CoNLL04
数据集。所有的数据集都是以 IOB2
格式标记的。我们使用序列标注来解决NER
任务,通过分配标签来标记某些类别实体的开始以及内部。语言模型为每个 token
生成一个 representation
,我们使用一个线性分类器来预测标签。我们使用官方脚本来评估结果。
对于多任务设置,我们结合三个数据集的训练集进行预训练。我们对每个数据集使用不同的线性分类器,同时continuous prompts
。
抽取式问答(Extractive Question Answering
):任务是从给定的上下文和问题中提取答案。我们使用 SQuAD 1.1, SQuAD 2.0
。
遵循传统,我们将问题表述为序序列标注,为每个 token
分配两个标签之一: "start"
或 "end"
,最后选择最有把握的 (start, end) pair
的 span
作为被提取的答案。如果最有把握的 pair
的概率低于阈值,该模型将假定该问题是不可回答的。
对于multitask setting
,我们用于预训练的训练集结合了 SQuAD 1.1
和 2.0
的训练集。在预训练时,我们假设所有的问题,无论其来源如何,都可能是无法回答的。
语义角色标注(Semantic Role Labeling: SRL
):任务是为句子中的单词或短语分配标签,表明它们在句子中的语义作用。
我们在 CoNLL05, CoNLL12
上评估P-tuning v2
。由于一个句子可以有多个动词,我们在每个句子的末尾添加 target verb token
,从而帮助识别哪个动词用于预测。我们根据相应的语义角色 representation
,用线性分类器对每个词进行分类。
对于multitask setting
,预训练训练集是 CoNLL05
、CoNLL12
、propbank-release
(用于训练语义角色标注的常见扩展数据)的训练集的组合。多任务训练策略与NER
类似。
跨所有模型大小的结果:下表列出了 P-tuning v2
在不同模型规模上的表现。
在 SuperGLUE
中,《The power of scale for parameter-efficient prompt tuning》
和 P-tuning
在较小规模上的表现可能相当差。相反,P-tuning v2
在较小规模的所有任务中都与微调的性能相媲美。P-tuning v2
甚至在 RTE
上明显优于微调。
就较大尺度(2B
到 10B
)的 GLM
而言,《The power of scale for parameter-efficient prompt tuning》
、 P-tuning
与微调之间的差距逐渐缩小。在 10B
规模上,我们有一个与《The power of scale for parameter-efficient prompt tuning》
报告类似的观察,即 prompt tuning
变得与微调相媲美。
也就是说,P-tuning v2
在所有规模上都与微调相当,但与微调相比,只需要 0.1%
的 task-specific
参数。
跨所有任务的结果:从下表可以看出,P-tuning v2
在所有任务上都可以与微调相媲美。P-tuning
和《The power of scale for parameter-efficient prompt tuning》
的表现要差得多,特别是在 QA
上,这可能是三个任务中最具挑战性的。
我们还注意到,《The power of scale for parameter-efficient prompt tuning》
和 P-tuning
在 SQuAD 2.0
上有一些异常的结果。这可能是因为 SQuAD 2.0
包含不可回答的问题,这给 single-layer prompt tuning
带来了优化挑战。
除了 QA
之外,多任务学习一般会给 P-Tuning v2
的大多数任务带来明显的改进。
消融研究:
Verbalizer with LM head v.s. [CLS] label with linear head
:Verbalizer with LM head
一直是以前的 prompt tuning
方法的核心组成部分。然而,在 supervised setting
中,对于 P-tuning v2
,用大约几千个参数来调优一个 linear head
是可以承受的。
我们在 Table 4
中展示了我们的比较,其中我们保留了其他的超参数,只将 [CLS] label
的 linear head
改为 verbalizer with LM head
。在这里,为了简单起见,我们对 SST-2, RTE, BoolQ
使用 "true"
和 "false"
、对 CB
使用 "true", "false", "neutral"
。结果表明,verbalizer
和 [CLS]
的表现没有明显区别。
prompt depth
:《The power of scale for parameter-efficient prompt tuning》
、 P-tuning
和 P-tuning v2
的主要区别是 multi-layer continuous prompts
。为了验证它的确切影响,给定一定数量的 prompts
,我们按照升序和降序选择它们来添加 prompts
;对于其余的层,我们不作任何处理。
如 Figure 3
所示,在参数数量相同的情况下(即要添加 prompts
的 transformer layers
数量),按降序添加总是比按升序添加好。在 RTE
的情况下,只在第 17-24
层添加 prompts
可以产生与所有层添加 prompts
非常接近的性能。
Embedding v.s. MLP reparameterization
:在 prefix-tuning
和 P-tuning
中,作者发现 reparameterization
在提高训练速度、鲁棒性和性能方面很有用。然而,我们进行的实验表明,reparameterization
的效果在不同的 NLU
任务和数据集中是不一致的。
如 Figure 4
所示:
在 RTE
和 CoNLL04
中,MLP reparameterization
通常表明在几乎所有的 prompt
长度上都比 embedding
的性能好。
然而,在 BoolQ
中,MLP
和 embedding
的结果是相差无几的。
在 CoNLL12
中, embedding
的结果一直优于 MLP
。
Prompt
长度:prompt
长度是 P-tuning v2
的另一个有影响力的超参数,其最佳值因任务而异。从 Figure 4
中我们观察到:
对于简单的 NLU
任务,通常情况下,较短的 prompts
就能获得最佳性能。
对于困难的序列任务,通常情况下,长于 100
的 prompts
会有帮助。
我们还发现,reparameterization
与最佳 prompt
长度有着密切的联系。例如,在 RTE, CoNLL04, BoolQ
中,MLP
的 reparameterization
比 embedding
更早达到最佳结果。这一结论可能有助于对 P-tuning
的 optimization
属性进行一些思考。
论文:
《The Power of Scale for Parameter-Efficient Prompt Tuning》
随着 pre-trained
大型语言模型的广泛成功,出现了一系列的技术来适配这些通用模型的下游任务。ELMo
提出冻结 pre-trained
模型并学习其每层表征的 task-specific weighting
。然而,自 GPT
和 BERT
以来,主流的 adaptation
技术是 model tuning
(也叫做 "fine-tuning"
),其中所有的模型参数在 adaptation
期间被调优,正如 《Universal language model fine-tuning for text classification》
所提出的。
最近,GPT-3
表明,prompt design
(也叫做 "priming"
)在通过 text prompts
来调节 frozen GPT-3 model
的行为方面是惊人的有效。prompts
通常由一个任务描述和/或几个典型的示例组成。这种回到 "冻结" pre-trained
模型的做法很有吸引力,特别是在模型规模不断扩大的情况下。与其说每个下游任务都需要一个单独的模型副本,不如说一个通用模型可以同时为许多不同的任务服务。
不幸的是,prompt-based adaptation
有几个关键的缺点。任务描述容易出错并需要人的参与,而且 prompt
的有效性受限于模型输入中能容纳多少 conditioning text
。因此,下游的任务质量仍然远远落后于 tuned model
。例如,尽管使用了 16
倍的参数,GPT-3 175B
在 SuperGLUE
上的 few-shot
性能比 fine-tuned T5-XXL
低 17.5
分( 71.8 vs. 89.3
)。
人们最近提出了一些 automate prompt design
的努力。AutoPrompt
提出了一种在单词的离散空间中的搜索算法,该算法被下游应用的训练数据所指导。虽然这种技术优于 manual prompt design
,但相对于 model tuning
来说仍有差距。
《Prefix-tuning: Optimizing continuous prompts for generation》
提出了 "prefix tuning"
,并在生成式任务上显示了强大的结果。这种方法冻结了模型参数,并将tuning
过程中的误差反向传播到 prefix activations
,这些 prefix activations
被放置在 encoder stack
中每一层(包括输入层)之前。《WARP: Word-level Adversarial ReProgramming》
通过将可训练的参数限制在 masked language model
的输入子网和输出子网上,简化了这个配方,并在分类任务上显示了合理的结果。
在本文中,我们提出了 prompt tuning
作为适配语言模型的进一步简化。我们冻结了整个 pre-trained
模型,只允许每个下游任务有额外的 tunable tokens
被添加到 input text
之前。这种 "soft prompt"
是经过端到端训练的,可以浓缩来自完整的 labeled
数据集的信号,使我们的方法能够胜过 few-shot prompts
,并缩小与 model tuning
的质量差距(Figure 1
)。同时,由于单个 pre-trained
模型用于所有下游任务,我们保留了 frozen model
的高效 serving
的优势(Figure 2
)。
虽然我们与《Prefix-tuning: Optimizing continuous prompts for generation》
以及 《WARP: Word-level Adversarial ReProgramming》
同时开发了我们的方法,但我们是第一个表明单独的 prompt tuning
(没有中间层 prefix
或 task-specific
输出层)足以与 model tuning
竞争。通过详细实验,我们证明语言模型容量是这些方法成功的关键因素。如 Figure 1
所示,随着规模的扩大,prompt tuning
变得更具竞争力。
我们在实验中与类似的方法进行比较。明确地将 task-specific
参数与一般语言理解所需的 "通用" 参数分开,有一系列额外的好处。我们在实验中表明,通过捕获在 prompt
中的任务定义,同时保持通用参数的固定,我们能够实现对 domain shift
的更好的适应性。此外,我们表明"prompt ensembling"
,即为同一任务来学习多个prompts
,可以提高质量,并且比传统的 model ensembling
更有效率。最后,我们研究了我们学到的 soft prompts
的可解释性。
本论文的方法是
full-data training
的,而不是few-data training
。
总而言之,我们的主要贡献是:
提出了prompt tuning
,并展示了其在大型语言模型领域中与 model tuning
的竞争力。
消除了许多设计的选择,并表明质量和鲁棒性随着模型规模的扩大而提高。
显示在 domain shift
问题上,prompt tuning
优于 model tuning
。
提出 "prompt ensembling"
并显示其有效性。
Prefix-Tuning
和P-Tuning
、P-Tuning v2
都采用了重参数化技巧,这增加了训练的复杂性。
Prefix-Tuning
和P-Tuning v2
对每一层添加了continues prompts
,相比之下这里仅对输入层添加了continues prompts
。
P-Tuning
也是仅对输入层添加了continues prompts
,但是P-Tuning
允许在输入的不同位置插入continues prompts
。相比之下这里仅在输入的头部插入continues prompts
。
遵从 T5
的"text-to-text"
的方法,我们把所有的任务作为 text generation
。我们现在不是将分类任务建模为给定某个输入 tokens
的一个序列,class label
;而是将分类任务建模为 conditional generation
class label
的 tokens
序列 。 T5
建模分类任务为 transformer
来建模,
promptinng
是在生成 prompting
是通过在输入 tokens
序列 GPT-3
中,prompt tokens
representation
是模型的 embedding table
的一部分,通过被冻结的 prompt
需要选择 prompt tokens
,通过手动搜索、或非微分( non-differentiable
)的搜索方法(《How can we know what language models know?》
、《AutoPrompt: Eliciting Knowledge from Language Models with Automatically Generated Prompts》
)。
prompt tuning
消除了提示语 prompt
有自己的专用的、可以被更新的参数 prompt design
涉及从frozen embeddings
的 fixed vocabulary
中选择 prompt tokens
,而 prompt tuning
可以被认为是使用 special tokens
的 fixed prompt
,其中只有这些 prompt tokens
的 embedding
可以被更新。我们新的 conditional generation
现在是
具体而言,给定 tokens
组成的序列 T5
做的第一件事是嵌入 tokens
,形成一个矩阵 embedding
空间的尺寸。我们的 soft-prompts
被表示为一个参数 prompt
的长度。然后,我们的 prompt
被拼接到 embedded input
,形成单个矩阵 encoder-decoder
。我们的模型被训练成最大化 promp
参数
这是
Prefix-tuning
在仅有输入被添加prefix
的特殊情况,根据prefix-tuning
的论文,这种情况的效果不佳。猜测原因是:Prefix-tuning
中的模型规模不够大;Prefix-tuning
采用了重参数化技巧的影响。
有许多可能的方法来初始化 prompt representations
。
最简单的是从头开始训练,使用随机初始化。
一个更复杂的选择是将每个prompt token
初始化为一个从模型词表中提取的 embedding
。从概念上讲,我们的 soft-prompt
以与 text preceding the input
(即,普通的 prompt
)相同的方式来调节 frozen network
的行为,因此,word-like representation
可能会成为一个好的初始化点。
对于分类任务,第三个选择是用列举 output classes
的 embeddings
来初始化 prompt
,类似于 《Exploiting cloze-questions for few-shot text classification and natural language inference》
的"verbalizers"
。由于我们希望模型在输出中产生这些 tokens
,用 valid target tokens
的 embedding
来初始化 prompt
应该使模型将其输出限制在合法的输出类别中。
论文
《PPT: Pre-trained Prompt Tuning for Few-shot Learning》
表明:在full-data training
下更小模型上表现好的初始化方法,在few-shot training
下更大模型中不一定有效。
另一个设计考虑是 prompt
长度。我们方法的参数成本是 token embedding
维度,prompt
长度。prompt
越短,必须被调优的新参数就越少,所以我们的目标是找到一个仍然表现良好的最小长度。
与 GPT-3
等自回归语言模型不同,我们试验的 T5
模型使用 encoder-decoder
架构,并对 span corruption objective
进行预训练。具体来说,T5
的任务是 "重建" 输入文本中的 masked spans
,这些 spans
被标记为独特的哨兵 tokens
。target output text
由所有 masked text
组成,用哨兵 tokens
分开,再加上 final sentinel token
。例如,从文本"Thank you for inviting me to your party last week"
中,我们可以构建一个预训练样本,输入是 "Thank you <X> me to your party <Y> week"
,target
输出是 "<X> for inviting <Y> last <Z>"
。
虽然 《Exploring the limits of transfer learning with a unified text-to-text transformer》
发现这种架构和 pre-training objective
比传统的语言建模更有效,但我们假设这种 setting
并不适合产生一个 frozen model
,其中这个 frozen model
可以随时通过 prompt tuning
来控制。具体而言,一个专门针对 span corruption
进行预训练的 T5
模型(如 T5.1.1
),从未见过真正自然的输入文本(不含哨兵 tokens
),也从未被要求预测真正自然的 targets
。事实上,由于 T5
的 span corruption preprocessing
的细节,每一个 pre-training target
都会以一个哨兵 token
开始。虽然这种输出哨兵的 "非自然" 倾向很容易通过微调来克服,但我们怀疑,由于解码器的先验无法被调整,仅通过 prompt
就很难覆盖这种倾向。
考虑到这些问题,我们在三种情况下实验了 T5
模型:
"Span Corruption"
: 我们使用现成的 pre-trained T5
作为我们的 frozen
模型,并测试它为下游任务输出预期文本的能力。
"Span Corruption + Sentinel"
: 我们使用相同的模型,但在所有的下游targets
之前放置一个哨兵 token
,以便更接近于预训练中看到的 targets
。
"LM Adaptation"
: 我们继续以少量的额外 steps
进行 T5
的自监督训练,但使用 T5
原始论文中的 "LM" objective
:给定一个自然文本前缀作为输入,模型必须产生自然文本的延续作为输出。至关重要的是,这种 adaptation
只发生一次,产生单个 frozen
模型,我们可以在任何数量的下游任务中作为 prompt tuning
来重复使用。
通过 LM Adaptation
,我们希望将 T5
"快速" 转变为一个与 GPT-3
更相似的模型,其中 GPT-3
总是输出真实的文本,并且作为一个 "few-shot learner"
对 prompts
做出良好的响应。与从头开始的预训练相比,这种后期转换的成功率并不明显,而且据我们所知,以前也没有人研究过这种情况。因此,我们对各种训练 steps
的 adaptation
进行了实验,最高可达 100K
步。
实验配置:
模型:各种尺寸的 pre-trained T5 checkpoints
(Small, Base, Large, XL, XXL
)。我们利用公共的 T5.1.1 checkpoitn
,其中包括对原始 T5.1
的改进。
默认配置为绿色的 x
线,使用经过 LM-adapted
的 T5
版本(额外训练了 100k
步),使用 class labels
进行初始化,并使用 100 tokens
的 prompt
长度。虽然这比 Prefix-tuning
使用的默认的 10-token prefix
要长,但我们的方法仍然使用较少的 task-specific
参数,因为我们只调优了输入层,而不是覆盖所有网络层的激活。
数据集:SuperGLUE
。我们的每个 prompt
都在单个的 Super-GLUE
任务上进行训练,没有多任务设置或跨任务来混合训练数据。
我们使用 T5
的标准交叉熵损失训练我们的 prompts
达 30k
步,学习率恒定为 0.3
, batch size = 32
。checkpoint
是通过验证集上的早停来选择的,其中停止的指标是数据集的默认指标,或者是用多个指标评估的数据集的平均指标。所有实验都在JAX
中运行,使用 Adafactor
优化器,权重衰减 1e-5
,0.8
, parameter scaling off
。这些模型在 Flax
中实现。更多细节见附录 A
。
实验涉及到的数据的统计信息:
训练耗时:
可训练参数的占比:
为了将我们的方法与标准 model tuning
进行比较。我们考虑两个 baseline
:
"Model Tuning"
:为了进行一对一的比较,我们对每个任务分别进行调优,就像我们的 prompt tuning setup
一样。
"Model Tuning (Multitask)"
:我们使用 T5
的 multi-task tuning setup
来实现一个更具竞争力的 baseline
。在这种情况下,单个模型在所有的任务上被联合调优,用 text prefix
表示任务名称。
在下图中,我们看到,随着规模的增加,prompt tuning
与 model tuning
的竞争变得更加激烈。在 XXL
规模( 11B
参数)下,prompt tuning
甚至与更强大的 multi-task model tuning
基线相匹配,尽管其 task-specific
参数少了 20000
倍。
为了与 prompt design
进行比较,我们将 GPT-3 few-shot
在 SuperGLUE dev split
上性能包括在内。下图显示,prompt tuning
以很大的优势击败 GPT-3 prompt design
,prompt-tuned T5-Small
与 GPT-3 XL
(参数规模超过 16
倍)相匹配, prompt-tuned T5-Large
击败了 GPT-3 175B
(参数规模超过 220
倍)。
Prompt Length
(Figure 3(a)
):对于大多数模型规模,增加 prompt
长度超过一个 token
是实现良好性能的关键。值得注意的是,XXL
模型在 single-token prompt
下仍有很好的效果,这表明模型越大,实现目标行为所需的 conditioning signal
就越少。在所有的模型中,增加到 20 tokens
以上只能产生微弱的收益。
tokens
数量增加到150
的时候,效果反而下降。这说明发生了过拟合。
Prompt Initialization
(Figure 3(b)
):
对于随机初始化,我们从 [-0.5, 0.5]
范围内均匀采样。
对于 sampled vocabulary
初始化,我们从 在 T5
的 Sentence-Piece
词表中最 "常见" 的 5000 tokens
中随机采样,其中 tokens
按照在预训练语料库中的频次来排序。
对于 class label
初始化,我们采用下游任务每个类别的字符串对应的 embedding
来初始化 prompt
中的一个 token
。当一个 class label
是 multi-token
时,我们采用 token embeddings
的均值。
对于较长的 prompt
,通常在使用 class label
初始化之后,还剩下很多 prompt tokens
尚未初始化,此时我们采用 sampled vocabulary
初始化。
我们发现基于 class label
的初始化表现最好。在较小的模型尺寸下,不同的初始化之间有很大的差距,但是一旦模型被放大到 XXL
规模,这些差异就会消失。
Pre-training Objective
(Figure 3(c)
):pre-training objective
对 prompt tuning
质量有明显的影响。
T5
默认的 "span corruption" objective
并不适合于训练 frozen
的模型从而用于后续的 conditioned by prompts
。
即使是在下游目标中添加哨兵的 "变通方法" 也没有什么好处。
LM adaptation
在所有的模型规模中都增加了效果。
我们最大的 XXL
模型是最宽容的,即使是 span corruption objective
也能给出强有力的结果。
adaption
长度(Figure 3(d)
):较长的 adaption
(最高可达 100K
步)提供了额外的收益。这表明,从 span corruption
到语言建模目标的 "过渡" 不是一个微不足道的变化,有效的过渡需要投入训练资源(原始 T5
预训练的 10%
的 steps
)。
此外,我们观察到 XXL
模型对非理想的配置也很稳健。在这种规模下, adaption
的收益是相当小的。
对于 non-optimal "span corruption" setting
,我们观察到不同大小的模型的不稳定性:Small
模型的表现优于较大的 Base, Large, XL
模型。经检查,我们发现对于许多任务,这些中型模型从未学会输出一个合法的类别标签,因此得分为 0%
。此外,这种糟糕的表现并不是由于 "span corruption" setting
的随机方差造成的,因为我们观察到每个大小的模型在 3
次运行中的方差很低。这些结果表明,使用用 "sparn corruption" objective
预训练的模型可能是不可靠的,5
个模型中只有 2
个工作良好,而LM adapated
版本在所有模型大小上都工作可靠。
我们已经发布了 T5 1.1 checkpoint
,使用 LM objective
对所有模型大小进行了 100K
步的适配。
没有关于训练样本数量的消融研究?这方面的消融研究可以参考
PPT
的实验部分。总体而言,样本数量越少,Prompt Tuning
和Fine Tuning
的差异越大。
如下图所示,在具有可学习参数的方法中,prompt tuning
的参数效率最高,对于超过 1B
参数的模型,需要不到 0.01%
的 task-specific
参数。
prefix tuning
:学习 prefix
的一个序列,该序列添加到每个 transformer layer
的前面。相比之下,prompt tuning
使用单个 prompt representation
,该 prompt representation
被添加到 embedded input
之前。
prefix tuning
还需要 prefix
的重参数化来稳定学习,这在训练过程中增加了大量的参数;而我们的配置不需要这种重新参数化。
WARP
:prompt parameters
被添加到输入层。它限制模型产生单个输出,且限制为分类任务。prompt tuning
没有这些限制。
P-tuning
:可学习的 continuous prompts
在 embedded input
中交错出现,使用基于 human design
的模式。我们的方法通过简单地将 prompt
添加到输入的开头,消除了这种复杂情况。
为了达到强大的 SuperGLUE
结果,P-tuning
必须与 model tuning
结合使用,也就是说,模型联合更新 prompt
参数和 main model parameters
,而我们的方法保持原始语言模型是冻结的。
P-tuning
的原始论文中,原始语言模型也是冻结的。
《Learning how to ask: Querying LMs with mixtures of soft prompts》
:使用 "soft words"
来学习 prompts
,以便从 pre-trained
语言模型中提取知识。 prompt
与 input
的位置关系是基于手工设计的 prommtp prototypes
,每一层都包含一个学到的
《Few-shot sequence learning with transformers》
:使用一个可学习的 prepended token
来使 transformer
模型适应各种任务,但重点是小的合成数据集,旨在适应 compositional task representation
,而不是较大的真实世界数据集。
更广泛地说,关于 task prompts
的工作与关于 "adapters"
的工作密切相关,即在 frozen pre-trained network layers
之间插入小型 bottleneck layers
。adapters
提供了另一种减少task-specific
参数的手段。
《Parameter-efficient transfer learning for NLP》
在冻结 BERT-Large
并只增加 2-4%
的额外参数时,实现了接近 full model tuning
的 GLUE
性能。
《MAD-X: An Adapter-Based Framework for Multi-Task Cross-Lingual Transfer》
在多语言背景下使用多个 adapters
,明确地将语言理解与任务规范分开,与我们的方法类似。
adapters
和 prompt tuning
之间的一个核心区别是:这些方法如何改变模型行为。
adapters
通过允许重写任何给定层的 activations
来修改实际函数,该函数作用于 input representation
并由神经网络参数化。
prompt tuning
通过保持函数的固定、以及增加新的 input representation
来修改行为,这些 new input representation
会影响后续输入的处理方式。
通过冻结 core language model parameters
,prompt tuning
防止模型修改模型对语言的通用理解。相反,prompt representations
间接地调节了输入的 representation
。这减少了模型通过记忆特定的词汇线索、以及记忆虚假的相关关系来过拟合数据集的能力。这一限制表明,prompt tuning
可能会提高对 domain shift
的鲁棒性,即输入的分布在训练和评估之间有所不同。
我们在两个任务上研究 zero-shot domain transfer
:问答、paraphrase detection
。
问答任务:MRQA
数据集作为 in-domain
数据集,然后我们在下表中的数据集(作为 out-of-domain
)上评估。prompt tuning
大多数 out-of-domain
数据集上优于 model tuning
。在 domain shifts
较大的情况下(如 BioASQ
中的生物医学或 TextbookQA
中的数据集),prompt tuning
的收益更大。
paraphrase detection
:第一个任务是 QQP
,它询问社区问答网站 Quora
的两个问题是否是 "重复的"。第二个任务是 MRPC
,它询问的是来自新闻文章的两个句子是否是转述。和前面一样,我们在 "in-domain"
任务上进行训练,用 in-domain
验证集选择 checkpoint
,并在"out-of-domain"
任务上进行 out-of-domain
评估。
结果表明:在 QQP
数据上训练一个轻量级的 prompt
并在 MRPC
上进行评估,比调优整个模型的性能好得多。在另一个方向上,结果要接近得多,prompt tuning
显示了准确率的小幅提高和 F1
的小幅下降。
这些结果支持这样的观点:model tuning
可能是过度参数化的,更容易过拟合训练任务,对不同领域的类似任务不利。
在相同数据上从不同的初始化而训练出来的一组神经模型,对这组模型的 ensembles
被广泛观察到:改善了任务表现,并且对于估计模型的不确定性很有用。然而,随着模型规模的增加,ensembling
可能变得不切实际。除了存储 T5-XXL
的每个副本需要 42GiB
),运行
prompt tuning
提供了一种更有效的方式来ensemble
pre-trained
语言模型的多个 adaptations
。通过在同一任务上训练 prompts
,我们为一个任务创建了 core language modeling parameters
。除了大幅降低存储成本外,prompt ensemble
还使推断更有效率。为了处理一个样本,与其计算 batch size = N
的单次前向传播,在整个 batch
中复制该样本并改变 prompt
。这些节约反映了 Figure 2
中多任务处理的情况。
为了证明 prompt ensembling
的可行性,我们为每个 SuperGLUE
任务训练了五个 prompts
,使用一个 frozen T5-XXL
模型和我们默认的超参数。我们使用简单的多数投票来计算 ensemble
的预测结果。Table 3
显示,在所有的任务中,ensemble
都比单个 prompt
的均值要好,也比最好的单个 prompt
要好或与之匹配。
一个理想的可解释的 prompt
由自然语言组成,它清楚地描述了手头的任务,明确地要求模型做出一些结果或行动,并使人容易理解为什么 prompt
会从模型中引导这样的行为。
由于 prompt tuning
是在连续的 embedding space
而不是离散的 token space
中工作,解释 prompt
变得更加困难。为了测试我们学到的 soft prompts
的可解释性,我们从冻结的模型词表中计算出每个 prompt token
的最近邻(余弦相似度作为距离指标)。
我们观察到,对于一个给定的 learned prompt token
,top-5
最近邻居成了紧密的语义簇。例如,我们看到词汇上相似的簇,如 { Technology / technology / Technologies/ technological / technologies }
,以及更多样化但仍然强烈相关的簇,如 { entirely / completely / totally / altogether/ 100% }
。这些簇的性质表明,这些 prompts
实际上是在学习 "word-like" representation
。我们发现,从 embedding space
中抽取的随机向量并不显示这种语义聚类。
当使用 "class label"
策略初始化 prompts
时,我们经常发现 class labels
在训练中一直存在。具体来说,如果一个 prompt token
被初始化为一个给定的 label
,在调优之后,那么这个 label
往往是在 learned token
的近邻中。
当用 "Random Uniform"
或 "Sampled Vocab"
方法初始化时,class label
也可以在 prompts
的最近邻中找到;但是它们往往作为多个 prompt tokens
的邻居出现。
这表明,模型正在学习将预期的输出类别存储在 prompts
中作为参考,而将 prompt
初始化为输出类别使之更容易、更集中化。
这是否意味着:在
discrete prompts
的设计过程中,我们可以将候选答案也加入到prompts
中?比如:Options: postive, negative. Question: [X]. The sentiment is :
。
当检查较长的 prompts
(如长度为 100
)时,我们经常发现有几个 prompt
具有相同的近邻。这表明,要么prompt
中存在过剩的容量,要么prompt representation
中缺乏序列结构使得模型难以将信息定位到特定的位置。
正如
P-Tuning
所述:从直觉上讲,他们认为prompt embeddings
的值应该是相互依赖的,而不是相互独立的。如何很好地建模这种依赖性?这是一个挑战。
虽然作为序列的 learned prompts
显示出很少的可解释性,但我们确实观察到像 science, technology, engineering
这样的单词作为在 BoolQ
数据集上训练的 prompt
的最近邻的频率很高,大约 20%
的问题属于 "自然/科学" 类别。虽然还需要更多的调查,但这表明 prompt
的一个作用可能是引导模型解释特定领域或背景下的输入(例如 "科学")。
论文:
《Learning How to Ask: Querying LMs with Mixtures of Soft Prompts》
pretrained
语言模型(如 ELMo
、BERT
、和 BART
)已被证明在其他自然语言处理任务中提供有用的 representations
。最近, 《Language models as knowledge bases?》
和 《How can we know what language models know?》
证明语言模型还包含可以通过 prompt
引发的事实知识和常识知识。例如,要查询莫扎特的出生日期,我们可以使用 prompt
“ ___ was born in ___
”,其中我们将第一个空填入了 “莫扎特”,并要求一个完形填空语言模型(cloze language model
)填写第二个空。《Language models as knowledge bases?》
使用手动创建的 prompts
,而 《How can we know what language models know?》
使用基于挖掘(mining
)和释义(paraphrasing
)的方法来自动地扩充 prompt
集合。
了解幼儿知道什么知识是困难的,因为他们对问题的形式非常敏感(《Children’s Minds》
)。民意调查也对问题设计敏感(《The assumptions and theory of public opinion polling》
)。我们观察到,当我们查询一个语言模型而不是一个人时,我们有机会使用梯度下降来调优 prompts
,从而更好地引发所需类型的知识。
神经语言模型将 prompt
视为连续的单词向量的序列。我们在这个连续空间中进行调优,放宽了向量必须是实际英语单词的 embedding
的约束。允许使用 "soft prompts"
(由 "soft words"
组成)不仅方便优化,而且更加表达力强。soft prompts
可以强调特定单词(通过增加它们的向量长度)或这些单词的特定维度。它们还可以调整那些具有误导性、模糊性的或过于具体的单词。考虑以下用于 relation date-of-death
的 prompt
:
___x performed untile his death in __y
这个 prompt
可能适用于男歌手 Cab Calloway
,但如果我们希望它也适用于女画家 Mary Cassatt
,可能有助于软化 "performed"
和 "his"
,以避免强调错误的职业和性别,并且可以将 "until"
软化为一个较弱的介词(因为事实上 Cassatt
在她最后的几年里失明无法继续绘画)。
另一种将这些情况联系起来的方法是:一个 prompt
使用 "performed"
,另一个 prompt
使用 "painted"
。一般来说,可能有许多不同的词汇模式可以表明特定的 relation
,使用更多的模式将获得更好的覆盖率。因此,我们提出了学习 mixture of soft prompts
的方法。
我们在几个完形填空语言模型上测试了这个想法,训练了用于补全三个数据集中的事实关系和常识关系的 prompts
。通过对 held-out
样本进行比较,我们的方法显著优于先前的工作,即使是随机初始化的情况下也是如此。因此,当将其视为近似知识库时,语言模型知道的东西比我们意识到的要多。我们只是需要找到正确的提问方式。
相关工作:
大多数先前的工作都是手动创建 prompts
来从 trained
语言模型中提取答案。
LM Prompt And Query Archive: LPAQA
方法通过挖掘语料库、或 paraphrasing
现有 prompts
来搜索新的 prompts
。
AutoPrompt
通过使用梯度信号搜索 improved prompts
,然而其 prompts
仅限于实际(hard
)的英语单词的序列,与我们的方法不同。
我们将我们的新型 soft prompts
与所有这些系统进行比较。
在我们于 2020
年 11
月提交本文之后,arXiv
上出现了两篇尚未发表的论文,它们也研究了 soft prompts
。
《Prefix-tuning: Optimizing continuous prompts for generation》
考虑了从 pretrained
语言模型( GPT-2
或 BART
)以 prompt
为条件来生成文本。为了改进结果,他们在 prompt
之前添加了一些 task-specific "soft tokens"
,并仅仅微调了这些 tokens
的 embedding
(在所有 embedding layers
上)。
《GPT understands, too.》
采用了与我们类似的策略,通过在连续空间中调优 fill-in-the-blank prompts
来对 GPT-2
和BERT
模型进行测试,然而他们没有使用我们提出的增强方法。
与我们的工作类似,这两篇论文都取得了很大的进展。
在其他工作中:
《Inducing relational knowledge from BERT》
从语料库中挖掘 prompts
,然后对整个语言模型进行微调,以使其更准确地补全 prompts
。
PET
、PET-2
的方法类似,但是对于每个 prompts
,他们以不同的方式微调语言模型。
我们的方法通过调优 prompts
本身来补充这些方法。
询问语言模型对特定句子的了解程度的 probing system
通常使用前馈网络而不是进一步的自然语言 prompts
。然而, AutoPrompt
展示了如何使用自然语言 prompts
来询问特定句子。我们的方法可能适用于这些 prompts
,或者适用于包含 input-output examples
的 few-shot learning
(GPT-3
)。
给定一个固定的 pretrained
语言模型、一个 特定的关系 date-of-death
)、一个由关系 pairs
组成的训练数据集 held-out
pairs
上评估该系统。
prompt
query
,我们用
假设 word embedding
的维度为 soft prompt
,即 tokens
可以为任意的 embedding
。然而,我们可以连续地调优这些向量。
Deeply Perturbed Prompts
:对于 prompt
中的每个 token
representation
prompt
。我们通过添加一个小的扰动向量 prompt
,其中
仅仅调优 layer 0
等价于直接调优 early stopping
或其他形式的正则化技术从而保持很小。我们的直觉是:小的扰动将产生与 LM
所训练得到的 activation patterns
更加相似的 activation patterns
。
和
Prefix-tuning
的唯一区别在于:这里施加正则化技术使得每次的更新很小。 事实上,这可以在
Prefix-tuning
中采用较小的学习率、以及梯度范数截断来实现。
Mixture Modeling
:给定关系 soft prompts
ensemble predictive distribution
:
其中:
soft promtps
这就是
《How Can We Know What Language Models Know?》
中采用的Prompt Ensembling
策略。
Data-Dependent Mixture Modeling
:作为扩展,我们可以将 neural softmax model
来优化
其中
需要两次推断:一次预测
、另一次预测 。
Training Objective
:给定 soft promtps
mixture weights
略。
本论文和
Prefix-Tuning
非常类似,因此实验部分省略。
论文:
《PPT: Pre-trained Prompt Tuning for Few-shot Learning》
近年来,微调预训练语言模型(pre-trained language model: PLM
)取得了重大进展。通过调优整个模型的参数,可以将从大规模 unlabeled
语料库中获得的各种各样的知识适用于处理各种自然语言处理任务,并超越从头开始学习模型的方法(《Pre-trained models: Past, present and future》
)。为简单起见,我们将这种完全模型的微调称为 "FT"
。如 Figure 1 (b) and (c)
所示,有两种主流的FT
方法:
第一种是 task-oriented fine-tuning
,在 PLM
之上添加 task-specific head
,然后通过优化相应训练数据上的 task-specific objectives
来对整个模型进行微调。
第二种是 prompt-oriented finetuning
(《Exploiting cloze questions for few-shot text classification and natural language inference》
),其灵感来自最近利用语言prompts
来探索 PLM
中的知识的工作(LAMA
、GPT-3
)。在 prompt-oriented finetuning
中,数据样本被转换为包含 prompt tokens
的序列,并将下游任务形式化为语言建模问题。如 FIgure 1(c)
所示,通过在句子中添加 prompt
"It was <X>."
,我们可以通过在 mask position
预测 "great"
或 "terrible"
来确定其情感极性。如 Figure 1
所示,与 task-oriented fine-tuning
相比, prompt-oriented finetuning
更类似于 pre-training objectives
(masked language modeling
),从而有助于更好地利用 PLM
中的知识,并经常获得更好的性能。
虽然 FT
已经显示出有希望的结果,但随着模型规模的迅速增长,为每个下游任务进行整个大模型的微调和存储变得更加昂贵。为了解决这个挑战,《The power of scale for parameter-efficient prompt tuning》
提出了 prompt tuning: PT
,以更低的成本将大型 PLM
适应于下游任务,如 Figure 1(d)
所示。具体而言,PT
使用由 continuous embeddings
组成的 soft prompts
,而不是hard prompts
(离散的语言短语)。这些 continuous prompts
通常是随机初始化并进行端到端学习。为了避免为每个下游任务存储整个模型,PT
冻结所有 PLM
参数,仅微调 soft prompts
,而不添加任何中间层和 task-specific
组件。
如果训练样本足够多,也可以把
Prompt Tuning
中的Verbalizer
替换为Task Head
。在数据稀疏的条件下,Verbalizer
的效果可能更好。
PT
具有两个有前景的优势:
首先,与 hard prompts
相比,soft prompts
可以进行端到端学习。
其次,PT
是大规模 PLM
实际使用的一种高效而有效的范例,当下游数据足够时,与 FT
相媲美( Figure 2 (a)
)。
然而,如 Figure 2(b)
所示,我们发现在 few-shot settings
下,PT
的性能远远低于 FT
,这可能阻碍 PT
在各种低资源场景(low-resource scenarios
)中的应用。
因此,在本文中,我们通过 PT
探索如何以高效且有效的方式利用 PLM
进行 few-shot learning
。具体而言,我们进行了实证实验,以分析 PT
在 PLM
上的有效性,而这个方面在大多数现有研究中被忽视。我们的发现如下:
选择合适的 verbalizer
对性能有很大影响。
简单地用 concrete word embeddings
来初始化 soft prompts
无法改善性能。
soft prompts
和 hard prompts
的结合是有帮助的。
所有这些方法都不能很好地处理 few-shot prompt tuning
问题。
以上观察结果揭示了 PLM
的 prompt searching
并不是一件简单的事情,仔细地初始化 soft prompt tokens
至关重要。
为了帮助模型找到合适的 prompts
,我们使用自监督任务在大规模 unlabeled
语料库上预训练 soft prompt tokens
。为了确保pre-trained prompts
的泛化性,我们将典型的分类任务分为三种格式:sentence-pair classification
、multiple-choice classification
、single-text classification
,每种格式对应一个自监督预训练任务。此外,我们发现 multiple-choice classification
在这些格式中更为通用,可以将所有分类任务统一到该格式中。我们将这个 Pre-trained Prompt Tuning
框架命名为 "PPT"
。我们在几个数据集上基于三个 11B PLM
( T5-XXL
、mT5-XXL
和 CPM-2
)上评估了 PPT
在 few-shot
场景下的性能。实验结果表明,PPT
不仅可以大幅提升 PT
的性能,达到甚至超越 FT
方法,而且可以降低 few-shot learning
的方差。除了有效性外,PPT
还保留了 PT
的 parameter efficiency
,这对于将来在大规模 PLM
上的应用是有价值的。
本文的核心思想:
Prompt Tuning
的自监督预训练,从而提升few-shot
场景下的性能。注意:自监督的预训练非常消耗资源(算力成本、时间成本)。大多数用户没有足够的资源来支撑大模型的
PPT
。
相关工作:
PLM and Task-oriented Fine-tuning
:最近,人们提出了各种强大的 PLM
,例如 GPT
、BERT
、RoBERTa
和 T5
。为了将这些 PLM
适应于下游 NLP
任务,究人员提出了task-oriented fine-tuning
,其中使用 PLM
作为骨干并添加一些 task-specific heads
来优化 task-specific objectives
。然后,使用 task-specific data
对 PLM
和 additional heads
的所有参数进行微调。结果表明,task-oriented fine-tuning
可以在一系列NLP
任务上胜过从头开始训练的模型。
Prompt-oriented Fine-tuning
:大多数现有的 PLM
是使用 language modeling objectives
进行预训练的,然而下游任务的目标却有很大的差异。为了弥合预训练和下游任务之间的差距,人们引入了 prompt-oriented fine-tuning
。在 prompt-oriented fine-tuning
中,下游任务也被形式化为语言建模问题,通过插入language prompts
,语言建模的结果可以对应到下游任务的 solutions
。
knowledge probing
(《Language models as knowledge bases?》
、《A simple method for commonsense reasoning》
、《Commonsense knowledge mining from pretrained models》
)是激发prompts
的发展的开创性工作。在 knowledge probing
中,语言 triggers
被广泛用于诱导 PLM
生成 relational facts
。这些开创性的工作表明,language prompts
可以有效地引导 PLM
的知识。受此启发,由离散的单词所组成的人工设计的 hard prompts
首次用于 prompt-oriented fine-tuning
(PET
、PET-2
)。考虑到手动设计 prompts
既耗时又难以找到最佳选择,后来的研究(LM-BFF
、LPAQA
、AutoPrompt
)提出了自动生成 prompts
的方法。然而,这些方法仍然将自动生成的 prompts
限制在离散空间中,而这通常不是最优的。
为了克服离散空间的缺点,Prefix-Tuning
、P-Tuning
、《PTR: prompt tuning with rules for text classification》
、《WARP: Word-level adversarial reprogramming》
和 OptiPrompt
探索了将 hard prompt
和 soft prompts
相结合。与使用 concrete and discrete tokens
的 hard prompts
不同,soft prompts
由几个连续的可学习的 embedding
组成,这些 embedding
是随机初始化的。为了进一步发展,一些研究(《Prefix-tuning: Optimizing continuous prompts for generation》
、《Learning how to ask: Querying lms with mixtures of soft prompts》
、《The power of scale for parameter-efficient prompt tuning》
)提出仅调优 soft prompts
并固定整个 PLM
参数。当模型足够大时,这种方法可以与full-model tuning
相媲美。
Few-shot Learning with PLM
:由于长尾分布在实际应用中很常见,few-shot learning
对于稳定有效地使用 PLM
非常有意义,因此近年来受到了广泛关注。除了 GPT-3
和 PET
展示了 PLM
在 few-shot
场景中的优势外,一些后续的工作 《True few-shot learning with language models》
、《FLEX: Unifying evaluation for few-shot nlp》
也讨论了通过限制验证集的大小、以及提出统一框架来评估 few-shot
性能的合理的 few-shot settings
。也有一些工作 《Cutting down on prompts and parameters: Simple few-shot learning with language models》
指出 PT
在 few-shot learning
中的表现较差,但他们主要关注的是参数少于 400M
的 PLM
。本文研究了大型 11B PLM
的 few-shot learning
。
本节中,我们展示了few-shot learning
的 PT
的初步实验。我们分析了三种策略,包括 hybrid prompt tuning
、verbalizer selection
、以及 real word initialization
。我们遵循 《The power of scale for parameter-efficient prompt tuning》
的方法,使用 T5-XXL
( 11B
参数)进行 PT
,并使用了 100
个可调优的 soft prompt tokens
。
我们按照 PET-2
的方法,从原始训练数据中随机选择 32
个样本来构建训练集 few-shot learning setting
(《True few-shot learning with language models》
)。我们按照 《Revisiting few-sample bert fine-tuning》
和 《Making pre-trained language models better few-shot learners》
的方法,使用原始验证集作为测试集
Hybrid Prompt Tuning
:在 hybrid prompt tuning
中,同时使用 soft prompts
和 hard prompts
( 《GPT understands, too》
、《PTR: prompt tuning with rules for text classification》
)。然而,之前的工作是联合训练 soft prompts
和整个模型的。在只有 prompt tokens
可调优的 PT
中,hybrid prompts
的有效性尚未得到充分探索。在 Table 1
中,我们展示了在情感分类任务上结合 soft prompts
hard prompts
、以及两个自动生成的 hard prompts
(《Making pre-trained language models better few-shot learners》
)的结果。我们可以看到:
hard prompts
改善了PT
,但仍然表现不如 FT
。
此外,不同的 hard prompts
对性能影响显著,因此需要进行大量的人力来进行 prompt design
和 prompt selection
。
Verbalizer Selection
:verbalizer
是将 task-specific labels
映射到具体的 tokens
。例如,在 Figure 1(c) and (d)
中,verbalizer
将标签 "Positive"
映射到 "great"
。从 Table 1
中可以看出,verbalizer
的选择对性能有显著影响。通常情况下,解释相应标签含义的 common words
效果较好。这也指导了我们对 PPT
的 verbalizer selection
。
Real Word Initialization
:在 real word initialization
中,我们使用 concrete words
的 embedding
来初始化 soft prompt
,并测试了四种初始化策略。先前的工作(《The power of scale for parameter-efficient prompt tuning》
)已经验证了这种方法在小型 PLM
(少于 3B
参数)上的有效性。然而,从在 SST-2
和 BoolQ
上的实验结果(Table 2
)中,我们发现对于 11B
模型,在 few-shot
场景下,real word initialization
对性能几乎没有影响,甚至可能产生负面影响。这表明对小模型的观察不能直接应用于大模型,并且对 soft prompts
的良好初始化仍有待探索。
注意:这里不仅是模型大小的差异,还有
full-data training
和few-data training
的差异。
总之,尽管上述enhancement
策略不能使 PT
在 few-shot settings
下达到与 FT
相媲美的结果,但它们仍然是影响 PT
性能的关键因素。在接下来的章节中,我们将描述我们的 PPT
框架,并通过实验证明 PPT
不仅提供了良好的 prompt initialization
,而且充分利用了良好的 verbalizer
,并且与 hybrid prompts
互补。
在这一节中,我们将描述 PPT
的整个框架,包括如何预训练 prompts
、以及如何将这些 pre-trained prompts
用于特定任务。
遵从 T5
和 《The power of scale for parameter-efficient prompt tuning》
的方法,我们以 text-to-text
的格式解决所有下游任务。如 Figure 1(c)
所示,为了减少预训练和下游任务之间的 objective gap
,prompt-oriented fine-tuning
将下游任务转换为完形填空风格的 objective
。以分类任务为例,给定一个输入句子 label
pattern mappingn
PLM
的词表,prompt tokens
作为提示,而且还保留了 mask token
PLM
预测在 masked positions
的 tokens
。然后,一个 verbalizer
label tokens
pattern-verbalizer pair
其中:tunable parameters
,尤其是 PLM
的参数。
为方便起见,我们用 "PVP"
来表示这种 pattern-verbalizer pair
(《Exploiting cloze questions for few-shot text classification and natural language inference》
)。
在 PT
(《The power of scale for parameter-efficient prompt tuning》
)中,一组 soft prompts
由于大型 PLM
的力量,上式被验证为在 full-data settings
下与这些 FT
方法相媲美。然而,我们发现很难学习到有效的 soft prompts
,这可能会导致在各种 few-shot
场景下的低性能。parameter initialization
通常对模型训练和优化的难度有很大影响,我们的初步实验表明,现有的初始化策略对大型 PLM
的 PT
性能影响不大,甚至有负面影响。初步实验的更多细节在实验章节详述。
最近,预训练已经被证明是一种有效的方法来寻找一个好的模型初始化。受此启发,我们建议对 soft prompts
进行预训练。我们注意到,下游任务的一些 groups
与某些自我监督任务(这些自监督任务建立在 unlabeled
预训练语料上)有关。例如,一些 sentence-pair classification
形式的任务,如自然语言推理(natural language inference
)、句子相似性,与预训练阶段使用的 next sentence prediction: NSP
任务相似。如 Figure 3
所示,这些任务都以两个句子为输入,并比较其语义。因此,由NSP
所预训练的 soft prompts
可以成为这些 sentence-pair
任务的良好初始化。
形式上,假设我们可以将下游任务分为 soft prompts
之后,我们得到 pre-trained prompts
soft prompts initialization
来优化公式
这里对每一类任务(而不是每一个任务)来预训练一个
soft prompt
。这里结合了
soft prompt
(即,)和 hard prompt
(即,)。
在本节中,我们以三个典型的分类任务为例,描述了用于 prompt pre-training
的 pattern-verbalizer pair
Sentence-Pair Classification
:sentence-pair classification
任务(如自然语言推理、句子相似性)以两个句子 PVP
,我们将 BERT
的 next sentence prediction
扩展为 3-class
分类作为预训练任务,label
空间为 label = 2
)、相似的(label = 1
)和不相关的(label = 0
)。为了从 unlabeled
文档中构建信号,我们将彼此相邻的两个句子设为 label = 2
、将来自同一文档但非真正相邻的两个句子设为 label = 1
、将来自不同文档的两个句子设为 label = 0
。我们考虑标签集合 sentence pair
任务。则
根据
input sentence pair
代替。
如果一个任务是二分类的,那么我们取
如果一个任务需要衡量两个句子之间的相似性,那么
Multiple-Choice Classification
:许多任务可以被表述为 multiple-choice classification
,它需要一个 query
和几个候选答案作为输入。我们设计了一个 next sentence selection
任务来预训练 prompt
。给定一个句子作为 query
query
不相邻的句子、以及来自其他文档的四个句子。对于
大多数 multiple-choice tasks
可以直接使用 PVP
。对于像阅读理解这样的任务,输入可能包含一个段落和一个问题。我们将它们拼接起来形成 query
。
Single-Sentence Classification
:对于 single-sentence classification
,我们为 prompt pre-training
创建伪标签。以情感分类为例,我们使用另一个小模型为预训练语料库中的句子标注情感标签,并过滤掉那些分类概率低的句子。在实践中,我们使用 RoBERTa_BASE
模型,并且该模型在我们评估的 few-shot datasets
之外的 5-class
情感分类数据集上被微调过。然后给定语料库中的一个句子
对于有 5-class
的情感分类任务,我们可以使用 5-class
的任务,我们从
尽管上述方法提高了模型的性能,但我们不得不指出,它在推广到不同领域和不同 label
集合大小的其他 single-sentence classification
任务上仍然是有限的。因此,我们提出了下一节所述的方法来解决这个问题。
上述用于预训练的 PVP
可以统一为一种格式:multiple-choice classification
。具体而言:
对于 sentence-pair classification
,query
是两个句子的拼接,有三个选项:{no, maybe, yes}
。
对于 single-sentence classification
,query
是输入句子,选项是具体的标签。请注意,通过这种方式,pre-trained PVP
可以用于任意领域的 single text classification
任务。
根据论文
《Finetuned Language Models Are Zero-Shot Learners》
,在分类任务的prompts
中添加options
(即,task label space
)是有益的。
构建一个统一的 PVP
类似于MultiQA
和 UnifiedQA
的思想。最近,《Adapting language models for zero-shot learning by meta-tuning on dataset and prompt collections》
使用一些 hard prompts
将几个任务统一为一个 meta question answering
任务。他们在一组 QA
数据集上用这个 meta task
来调优整个模型,然后迁移到 low-resource settings
下的其他分类任务。然而,我们的 PPT
侧重于在 PLM
主体被固定的情况下调优 soft prompts
,我们的预训练是在完全无监督的数据上进行的(而不是监督数据)。
由于不同的任务可能有不同的候选数量和长度,我们构建的预训练样本的选项数量从 2
到 16
不等,选项长度从 50
到 20
。我们使用 PVP
进行预训练,然后应用 pre-trained soft prompts
来解决上述的三个分类任务。
配置:
同时考虑中文任务和英文任务(数据集如 Table 3
所示)。对于少于 5-class
的任务,我们用原始训练数据中的 32
个样本构建 TNews
和 YahooAnswer
这样超过 5-class
的任务,很难用 label-balanced
的样本组成一个数据集。因此,我们为每种标签随机选择 8
个样本。
对于英语数据集,我们基于 11B
参数的 T5-XXL
进行 PT
,因为之前的工作(《The power of scale for parameter-efficient prompt tuning》
、《CPM-2: Large-scale cost-effective pretrained language models》
)表明,T5-XXL
在 full-data setting
下与 FT
相当。我们还在不同规模的 T5
上评估了 FT
,以验证更大的模型表现更好,因此基于 T5-XXL
来改进 PT
是有意义的。
对于中文的数据集,我们基于 11B
模型 CPM-2
进行 PT
。 由于 CPM-2
没有提供其他尺寸的模型,我们将其与不同尺寸的 mT5
进行比较。
一致的是,我们对 PT
使用 100
个 soft tokens
。因此,tunable parameters
只有 FT
的 11B
(PT
只需要为每个任务存储小 3000
倍的参数。
对于 prompt pre-training
,我们从OpenWebText
数据集中为英语任务采样 10GB
数据, 从 WuDaoCorpora
数据集中为中文任务采样 10GB
数据。我们使用 Yelp-5
数据集来训练前文中提到的 RoBERTa_BASE
模型(生成情感分类伪标签从而用于 Single-Sentence Classification
)。
更多关于训练超参数的细节可以在附录 C
中找到。
英文和中文数据集的主要结果显示在 Table
中。在 FT block
中,我们展示了 T5
模型在 small
尺寸到 XXL
尺寸的 FT
结果。在PT block
中,我们展示了 PPT
和其他基线的结果:
第一个基线是Vanilla PT
,其中 soft prompts
是从正态分布中随机初始化的。
第二个基线是 Hybrid Prompt Tuning
。
我们还考虑了 《The power of scale for parameter-efficient prompt tuning》
使用的 LM Adaption
,其中 T5
模型用语言建模目标进一步预训练了 10K
步,以减少预训练和 PT
之间的差距。
我们测试了 PPT
的两个变体:
Hybrid PPT
:精心设计的 hard prompts
与 pre-trained soft prompt
相结合。
Unified PPT
:所有任务都统一为 multiple-choice classification
格式。
从 Table 4
中我们可以看到四个观察结果:
首先,较大的模型取得了较好的整体性能,这意味着增加模型的大小在 few-shot setting
下仍然有帮助。因此,我们在大规模pre-trained
的模型上研究 PT
。请注意,在中文的实验中,CPM-2
和 mT5-XXL
共享相同的参数规模。由于 CPM-2
在所有的任务中都优于 mT5-XXL
,我们使用 CPM-2
作为 base
模型。
其次,PPT
在大多数数据集上明显优于 Vanilla PT
和 LM Adaption
。虽然 PPT
在 BoolQ
上比 Hybrid PT
差,但结合 PPT
和 hard prompts
( Hybrid PPT
)的表现优于所有基线。这意味着 pre-training soft prompts
和 using hybrid prompts
是互补的。在其他数据集如 RACE-m
、LCQMC
和 C3
上也观察到类似的现象,在 PPT
中加入 hard prompts
会继续改善结果。
第三,PPT
在所有中文数据集和大多数英文数据集上的表现都优于 FT
。这表明,在 masked language modeling
和下游任务之间仍然存在差距。prompt pre-training
在一定程度上弥补了这个差距。基于这一观察,我们方法的一个直观扩展是用 PT
,我们将此作为未来工作。
PPT
没有根据下游任务来微调模型,而只有预训练任务。
第四,PPT
在大多数数据集上的方差较低。few-shot learning
因其不稳定性而臭名昭著,这在 Vanilla PT
中变得非常明显。对于一些数据集,如 SST-2
,方差达到 15.5
,这意味着在一些随机种子下,模型的表现并不比随机猜测更好。结合 hard prompt
或进一步的语言建模预训练可以在一定程度上缓解这个问题。但是在一些数据集上,如 CCPM
,Hybrid PT
增加了方差,LM Adaption
不能保证平均性能。在预训练的帮助下,所有数据集的方差都保持在一个较低的水平。
Unified PPT
:将所有格式统一为 multiple-choice classification
格式是 PPT
的另一个变体。在 Table 4
中,我们可以看到,Unified PPT
达到了与 PPT
和 Hybrid PPT
相当的性能,仍然优于其他 PT
基线。然而,到目前为止,我们所考虑的数据集的标签规模不超过 5
个。对于有更大标签规模的任务,Unified PPT
是一个不错的选择。在 Table 5
中,我们在超过 5-class
的数据集上测试Unified PPT
。对于 PT
和 FT
,我们使用 verbalizer
将标签映射到直观选择的单词上。PT (MC)
意味着我们以 multiple-choice classification
的形式解决任务,而不需要 prompt pre-traini
。我们不使用 PPT
进行 single-sentence classification
,因为很难找到其他合适的数据集来训练 pseudo label annotator
。然而,我们可以看到,Unified PPT
仍然取得了最好的性能,甚至以很大的幅度超过了 FT
。
Sample Efficiency
:我们讨论当训练样本数量增加时,FT, PT, PPT
的性能如何变化。在 Figure 4
中,我们显示了这些方法在RACE-m
和 CB
数据集上的趋势:
对于 32
到 128
个样本,PPT
一直优于 PT
。
当样本数量增长到 256
时,三种方法的性能逐渐收敛。
我们还比较了给定完整训练数据的不同的 tuning
方法。从 Table 6
中,我们可以看到:PPT
和 Unified PPT
在大多数数据集上的表现仍然优于 Vanilla PT
。
此外,我们观察到,尽管 PT
在单个 optimization step
中比 FT
快,但它的收敛速度要慢得多,这导致了更长的训练时间。我们认为,PPT
可以成为解决这一问题的有效方案。如 Figure 5
所示,有了 pre-trained initialization
,PPT
在 RACE-m
和 CB
数据集上都加快了 Vanilla PT
的收敛速度。
虽然
PPT
可以加速Vanilla PT
,但是预训练阶段很耗时间和资源。
我们在附录 E
中对训练消耗做了更详细的分析。由于 PPT
的收敛速度仍然比 FT
慢一些,如何进一步加快 PT
的收敛速度是值得在未来的工作中研究的。
论文:
《SPoT: Better Frozen Model Adaptation through Soft Prompt Transfer》
过去几年,pre-trained
语言模型的规模不断扩大,多项研究表明增加模型规模是实现最佳性能的关键因素(BERT
、T5
、GPT-3
)。尽管这一趋势不断推动自然语言处理各项 benchmarks
的发展,但模型规模的巨大也对其实际应用提出了挑战。对于超过 100B
参数的模型来说,为每个下游任务进行微调和部署单独的模型实例的成本将是难以承受的。为了克服微调的不可行性, GPT-3
提出了 Prompt Design
,将每个下游任务都视为一项语言建模任务,并且在推理时通过提供 manual text prompts
并以 manual text prompts
为条件来指导 frozen pre-trained
模型执行不同的任务。他们展示了使用单个 frozen GPT-3
模型的出色的 few-shot
性能,然而其性能高度依赖于 prompt
的选择(《Calibrate before use: Improving few-shot performance of language models》
),且仍然远落后于 SOTA
的微调结果。
较新的研究探索了学习 soft prompts
的方法,这可以看作是注入到语言模型中的额外的可学习参数。《The power of scale for parameter-efficient prompt tuning》
提出了 Prompt Tuning
,这是一种简单的方法,通过在 adaptation
过程中为每个下游任务学习一个小的 task-specific prompt
( tunable tokens
的一个序列,被添加到每个样本之前),以调节 frozen
的语言模型以执行该任务。引人注目的是,随着模型容量的增加, Prompt Tuning
在性能上逐渐与 Model Tuninng
相媲美,而后者在每个下游任务上对整个模型进行微调。然而,在较小的模型规模(小于 11B
参数)下, Prompt Tuning
与 Model Tuninng
之间仍存在较大差距。
在本文中,我们提出了SPOT: Soft Prompt Transfer
,这是一种新颖的迁移学习方法,适用于 Prompt Tuning
。SPOT
首先在一个或多个源任务上训练一个 prompt
,然后使用得到的 prompt
来初始化目标(下游)任务的 prompt
。我们的实验证明,SPOT
在各种任务和模型规模上都显著改进了 Prompt Tuning
。例如,在 SUPERGLUE
基准测试中,使用 T5 BASE
( 220M
参数)和 T5 XXL
( 11B
参数)模型,我们分别获得了 +10.1
和 +2.4
的平均准确率的提升。更重要的是,SPOT
在所有模型规模上与 Model Tuninng
相媲美甚至表现更好(见 Figure 1
)。
在这些结果的推动下,我们通过 soft task prompts
的视角探究了任务之间的可迁移性。我们的目标是回答两个问题:
(a)
:对于给定的目标任务,什么时候从源任务初始化prompt
能够提升目标任务的性能?
(b)
:我们能否利用 task prompts
高效地预测哪些源任务能够在新的目标任务上有效迁移?
为了回答问题 (a)
,我们对 T5
模型进行了系统性的研究,使用了 26
个自然语言处理任务,共计 160
种源任务和目标任务的组合。我们的结果表明,许多任务可以通过 prompt transfer
相互受益。为了回答问题 (b)
,我们将 learned task prompts
解释为 task embeddings
,构建了一个针对任务的语义空间,并形式化了任务之间的相似性。我们设计了一种高效的检索算法来衡量 task embedding
的相似性,使从业者能够识别可能有 positive transfer
效果的源任务。
基于预训练好的
soft prompt
来进行初始化,这个思想已经在《PPT: Pre-trained Prompt Tuning for Few-shot Learning》
中被采纳。区别在于:PPT
是在大量的未标记语料库上针对soft prompt
进行自监督的预训练,而SPOT
是在大量的监督任务上进行多任务学习。
总之,我们的主要贡献有:
我们提出了 SPOT
,一种新颖的 prompt-based
的迁移学习方法,并展示了在不同规模下 Prompt Tuning
与 Model Tuninng
性能匹配的能力;在 SUPERGLUE
上,SPOT
在所有模型规模上与 Model Tuninng
相媲美甚至更好。
我们对任务的可迁移性进行了大规模的、系统的研究,展示了任务通过 prompt transfer
相互受益的条件。
我们提出了一种高效的检索方法,将 task prompts
解释为 task embeddings
,构建了一个关于任务的语义空间,并通过测量task embedding
的相似性来识别哪些任务可以相互受益。
为了促进 prompt-based learning
的未来研究,我们将发布我们的 task prompts
库和 pretrained
模型,并为 NLP
从业者提供实际的适用建议,网址为 https://github.com/google-research/prompt-tuning/tree/main/prompt_tuning/spot
。
相关工作:
parameter-efficient
的迁移学习:大型 pre-trained
语言模型已经在许多自然语言处理任务中展现出卓越的性能。为了提高这些模型的实用性,早期的工作使用压缩技术获得轻量级模型。其他工作涉及仅更新模型的一小部分(《Bitfit: Simple parameter-efficient fine-tuning for transformer-based masked language models》
)或 task-specific
模块,如适配器或低秩结构,同时保持模型的其余部分固定。
最近,GPT-3
通过 Prompt Design
展示了令人印象深刻的 few-shot
性能,他们的模型在推断时通过 manual text prompt
来执行不同的任务。此后,一些工作专注于开发 prompt-based learning
方法,其中包括精心设计的 prompt
(PET-2
)、prompt mining and paraphrasing
(LPAQA
)、gradient-based search
用于改善 prompts
(AutoPrompt
)和自动的 prompt generation
(LM-BFF
)。然而,使用 hard prompts
被发现不够最优,并且对 prompt
的选择敏感(《Calibrate before use: Improving few-shot performance of language models》
、《Gpt understands, too》
)。因此,最近的研究开始转向学习 soft prompts
,它们可以看作是注入到模型中的可学习参数。对于 prompt-based learning
研究的最新综述,我们建议读者参考 《Pretrain, prompt, and predict: A systematic survey of prompting methods in natural language processing》
的论文。
在与之并行的工作中,《PPT: Pre-trained prompt tuning for few-shot learning》
也探索了 prompt transfer
的有效性。他们的方法使用手动设计的预训练任务,该预训练任务针对特定类型的下游任务进行了裁剪,因此在适用于新的下游任务方面可能扩展性较差。相比之下,我们使用现有的任务作为源任务,并展示了即使在源任务与目标任务之间存在不匹配(例如任务类型或输入/输出格式)时,prompt transfer
仍然可以带来好处。
任务的可迁移性:我们还建立在现有的任务可迁移性研究基础上。之前的工作表明,从数据丰富的源任务(《Sentence encoders on stilts: Supplementary training on intermediate labeled-data tasks》
)、需要复杂推理和推断的任务(《Intermediate-task transfer learning with pretrained language models: When and why does it work?》
)、或与目标任务相似的任务(《Exploring and predicting transferability across NLP tasks》
) 可以有效地进行迁移。也有工作在预测任务的可迁移性。 《Exploring and predicting transferability across NLP tasks》
使用从输入文本、或模型的 diagonal Fisher information matrix
导出的 task embeddings
,而 《What to pre-train on? Efficient intermediate task selection》
则探索了 adapter-based
的替代方法。
在这里,我们使用相同的模型(没有 task-specific
组件)和统一的 text-to-text
格式,可以更好地对任务空间进行建模。此外,相比较而言,prompt-based task embeddings
的获取成本更低。
为了改善 Prompt Tuning
在目标任务上的性能,SPOT
引入了 source prompt tuning
,这是在语言模型预训练和 target prompt tuning
之间的中间训练阶段(Figure 2 (left)
),用于在一个或多个源任务上学习一个 prompt
(同时保持 base
模型冻结),然后将其用于初始化 target task
的 prompt
。
我们的方法保留了 Prompt Tuning
的所有计算优势:对于每个目标任务,它只需要存储一个小的 task-specific prompt
,从而使得单个 frozen pretrained model
可以在所有任务之间重复使用。在本节中,我们提供了一个通用的 SPOT
方法,其中单个可迁移的 prompt
被用于所有目标任务。在后面的正文中,我们探索了一种 targeted
方法,为不同的目标任务检索不同的 source prompts
。
右图中,
Source Task Embeddings
和Source Prompts
有啥区别?二者不是一个概念吗?论文没有说明。
我们的 frozen
模型是建立在所有规模的pretrained T5 checkpoints
上的:SMALL、BASE、LARGE、XL、XXL
,分别具有 60M、220M、770M、3B、11B
参数。在我们使用 SPOT
进行实验时,我们利用了 T5
的 LM adapted
版本,《The power of scale for parameter-efficient prompt tuning》
发现该版本对于 Prompt Tuning
来说更容易优化。
Baselines
:
Prompt Tuning
:《The power of scale for parameter-efficient prompt tuning》
的原始 prompt tuning
方法,直接在每个目标任务上独立训练一个 prompt
。
Model Tuning
和 Multi-Task Model Tuning
:我们将 prompt tuning
方法与 Model Tuning
进行比较, Model Tuning
是标准的微调方法(BERT
、T5
),其中所有模型参数在每个目标任务上单独进行微调。
为了进行公平比较,我们还包括 Multi-Task Model Tuning
作为一个更有竞争力的基线模型,它在对 SPOT
所使用的相同源任务的 mixture
上进行微调后,再对各个目标任务进行微调。
评估数据集:GLUE
和 SUPERGLUE
。我们进行固定步数的训练,并在与每个数据集相关联的验证集上报告结果。
用于 source prompt tuning
的数据:与语言模型预训练一样,训练数据的选择对于成功的 prompt transfer
至关重要。为了研究源训练数据对下游性能的影响,我们比较了多种不同的源任务。
单个无监督学习任务:我们首先考虑使用Colossal Clean Crawled Corpus: C4
数据集的一部分来训练 prompt
,使用 T5
中讨论的 prefix LM objective
。尽管这个任务已经被用于预训练我们的 frozen T5
模型,但它仍然对学习通用的 prompt
有帮助。
单个有监督学习任务:另一种选择是使用有监督任务来训练 prompt
。我们使用 MNLI
或 SQUAD
作为单个源任务。MNLI
在许多sentence-level
分类任务中显示出帮助作用(《Sentence encoders on stilts: Supplementary training on intermediate labeled-data tasks》
),而 SQUAD
被发现对于问答任务具有良好的泛化能力(《MultiQA: An empirical investigation of generalization and transfer in reading comprehension》
)。
多任务混合:到目前为止,我们一直使用单个源任务。另一种方法是多任务训练。在 T5
的统一的 text-to-text
框架中,这简单地对应于将不同的数据集混合在一起。我们探索了来自不同 NLP benchmarks
或任务族的数据集混合,包括 GLUE
、SUPERGLUE
、自然语言推理(NLI
)、paraphrasing/semantic similarity
、情感分析、MRQA
上的问答、RAINBOW
上的常识推理、机器翻译、摘要生成、以及GEM
上的自然语言生成。我们从上述每个 NLP benchmarks
或任务族中创建源任务的mixture
,以及一个包含所有数据集(C4 + 55
个标记数据集)的 mixture
,使用 T5
中的 examples-proportional
混合策略,人工设定一个 dataset size
限制为
读者猜测:这里不同的任务采用相同的
soft prompt
,对应于Figure 2(Left)
。
训练细节:我们严格按照 《The power of scale for parameter-efficient prompt tuning》
的训练过程进行操作。具体来说,在 source prompt tuning
和 target prompt tuning
期间引入的唯一新参数是一个 shared prompt
embedded
的)输入序列的开头,其中 prompt
长度,embedding size
。在所有情况下,我们设置 tokens
,并以固定的 steps
数量 prompt
。虽然 《The power of scale for parameter-efficient prompt tuning》
中将 30K
,但我们发现在大型数据集上进行额外的调优是有帮助的。因此,遵从 T5
,我们将 Table 1
中的消融实验( "--longer tuning"
的行)使用
在 source prompt tuning
期间,prompt token embeddings
从 sampled vocabulary
中进行初始化(即 5000 most common tokens
)。在 target prompt tuning
期间,我们每 500
步保存一次 checkpoint
,并在具有最高 validation
性能的 checkpoint
上报告结果。附录 C
包含了 Prompt Tuning
和 model tuning
方法的训练细节。
SPOT
的效果:我们在 Table 1
和 Figure 1
中对比了 SPOT
和其他方法的结果。以下,我们详细总结和分析了我们的每一个发现。
SPOT
显著提高了 Prompt Tuning
的性能和稳定性:我们在 T5 BASE
上对 GLUE
和 SUPERGLUE
的 benchmarks
的结果(Table 1
)表明,prompt transfer
为 Prompt Tuning
提供了一种有效的改进性能的手段。例如,最佳的 SPOT
变体在 GLUE
和SUPERGLUE上
的表现明显优于平凡的 Prompt Tuning
方法,分别获得 +4.4
和+10.1
点的平均准确率提升。
我们的消融研究表明,longer tuning
也是实现最佳性能的重要因素,并且与 prompt transfer
相辅相成。此外,当省略 longer tuning
时,我们观察到 SPOT
可以提高 runs
的稳定性。
在SPOT
中,我们可以比较不同 source mixtures
的有效性(参见 Table 1
)。
在 GLUE
上进行的 source prompt tuning
在GLUE
和 SUPERGLUE
上表现最好,分别获得 82.8
和 73.2
的平均分。
有趣的是,对 C4
进行的无监督的 source prompt tuning
(与我们的 frozen
模型的预训练使用的相同任务)仍然能够取得显著的改进,甚至在 SUPERGLUE
任务上超过使用 SUPERGLUE
数据集进行 source prompt tuning
的效果。
使用 MNLI
或 SQUAD
作为 single source dataset
在各个目标任务上也特别有帮助。
其他 source mixtures
可以带来显著的收益,其中一些任务类别(例如 NLI
和 paraphrasing/semantic similarity
)比其他任务类别获益更多。
将所有数据集混合在一起并不能获得最佳结果,可能是由于任务干扰/负迁移问题,即在一个或多个 source tasks
上取得良好的性能可能会对目标任务的性能产生负面影响。
SPOT
有助于在所有模型规模上缩小与Model Tuning
之间的差距:Figure 1
显示了我们在不同模型规模下在 SUPERGLUE
上的结果(完整结果见附录 A
)。正如 《The power of scale for parameter-efficient prompt tuning》
所示,Prompt Tuning
随着模型规模越大越有竞争力,并且在 XXL
规模上,它几乎与 Model Tuning
的性能相媲美。然而,在较小的模型规模下,两种方法之间仍然存在较大差距。我们展示了 SPOT
如何缩小这些差距,并在多个模型规模上大幅超过 Model Tuning
的性能,同时保留了 Prompt Tuning
所带来的所有计算优势。最后,在 XXL
规模上,SPOT
取得了最好的平均分数 91.2
,比强大的 Multi-Task Prompt Tuning baseline
高 1.1
个点,尽管SPOT
比 multi-task source tuning
和 target tuning
中使用的 task-specific parameters
要少 27000
倍。
作为对 SPOT
有效性的最终测试,我们将 XXL
模型的预测结果提交到 SUPERGLUE
排行榜,获得了 89.2
的分数。这远远超过了所有先前的使用 parameter-efficient adaptation
(例如 GPT-3
的71.8
)的提交,并且几乎与 fully fine-tuned T5 XXL
(89.3
)相匹配,尽管SPOT
参数要少 27000
倍。据我们所知,SPOT
是第一个在与调优十亿级参数的方法相媲美的 parameter-efficient adaptation
方法。详细信息请参见附录 D
。
到目前为止,我们已经看到 soft prompt transfer
可以显著提升 prompt tuning
的性能,但选择正确的源任务进行迁移至关重要。例如,通过广泛的搜索,我们发现 GLUE
和 MNLI
提供了出色的源任务从而用于迁移至个别的 GLUE
和 SUPERGLUE
任务。但在资源受限的情况下,用户无法详尽搜索一组源任务时该怎么办?我们能否预测哪些任务最适合迁移到新的目标任务,而无需逐个测试这些源任务?
为了调查这个问题,我们进行了一项大规模的实证研究,涉及 26
个 NLP
任务。我们首先衡量所有任务组合之间的可迁移性。接下来,我们展示了通过将 task prompts
解释为 task embeddings
,我们可以构建一个关于任务的语义空间,其中相似的任务聚类在一起。基于这个观察,我们提出了一种检索算法,对于给定的新的目标任务,利用 task embeddings
的相似性来选择源任务(Figure 2(right)
)。我们提出的方法可以消除 69%
的源任务搜索空间,同时保持 90%
的 best-case quality gain
。
我们研究了一组多样化的 16
个源数据集和 10
个目标数据集(见 Table 2
)。我们考虑了所有 160
个可能的 source-target pairs
,并从每个源任务迁移到每个目标任务。所有源任务都是数据丰富的,或者已经在之前的研究中显示出正面的迁移效果。为了模拟真实情境,我们将低资源任务(训练样本少于 10K
)作为目标任务。
为了限制计算成本,在我们的任务可迁移性实验中,我们使用了 T5 BASE
模型。我们对每个源任务进行了 262,144
次 prompt tuning steps
。选择具有最高 source task validation
性能的 prompt checkpoint
来初始化 different target tasks
的 prompts
。由于目标数据集较小,我们只对每个目标任务进行了 100,000
次 prompt tuning steps
。我们使用不同的随机数种子重复每个实验三次。其他训练细节与 “实验配置 -- 训练细节” 相匹配。
通过 prompt transfer
,任务之间可以互相受益:Figure 3
显示了我们的结果的热力图(完整结果见附录 E
)。
在许多情况下, prompt transfer
对目标任务产生了显著的增益:MNLI --> CB
的迁移导致 relative error reduction
最大,为 58.9%
,从平均分数 92.7
提高到 97.0
;其次是 MNLI --> COPA
(29.1%
)和 RECORD --> WSC
(20.0%
)。
注意:它衡量的是错误率的下降,而不是正确率的上升。
对于每个目标任务使用最佳 source prompt
(从 48
个中挑选)显著提高了 10
个目标任务的平均得分,从 74.7
提高到80.7
。总体而言,
从涉及句子之间语义关系的高级推理的大型源任务(例如 MNLI
)进行有效迁移,或者当源任务和目标任务相似时(例如 CXC --> STS-B
),可以实现正面的迁移效果。有趣的是,相对不相似的任务之间也可以发生正面的迁移(例如 RECORD --> WSC, SQUAD --> MRPC, CXC --> WIC
)。
由于在特定任务的 prompt tuning
过程中仅更新 prompt
参数,所以 learned prompts
很可能包含了 task-specific
的知识。这表明它们可以用来推理任务的性质和任务之间的关系。为了验证这个想法,我们将 task prompts
解释为 task embeddigns
,并构建任务的语义空间。更具体地说,我们将 task embeddigns
定义为在该任务上训练了 10,000 steps
之后的 prompt checkpoint
。请注意,使用 early checkpoints
可以快速计算新目标任务的 task embeddings
。
我们使用以下度量方法,通过测量两个任务 task embeddings
average tokens
的余弦相似度:我们计算 prompt tokens
的 average pooled representations
之间的余弦相似度:
其中 token
、 prompt token
;
per-token
的平均余弦相似度:我们计算每个 prompt token pair
注意,根据前文描述,所有的
prompt
的长度都是。
task embeddings
捕捉到任务之间的关系:Figure 4
显示了使用average tokens
的余弦相似度来计算的 task embeddings
之间的 hierarchically-clustered
热力图。我们观察到我们学到的task embeddings
捕捉到了许多直观的任务关系。
具体而言:相似的任务聚集在一起形成簇,包括问答任务(簇 SQUAD, RECORD,DROP
,簇 MULTIRC, BOOLQ
)、情感分析( YELP-2, SST-2, CR
)、自然语言推理(簇MNLI, CB
,簇 DOCNLI, RTE
)、语义相似性( STS-B, CXC
)、paraphrasing
( MRPC, QQP
)和常识推理(WINOGRANDE, HELLASWAG, COSMOSQA
)。
值得注意的是,由 SQUAD
数据集构建的 NLI
任务 QNLI
与 SQUAD
不是密切相关的,这表明我们的 task embeddings
对于 task type
的敏感性高于 domain similarity
。
有趣的是,它们还捕捉到了非直观的案例: RECORD
向 WSC
的可迁移性较高。
此外,来自同一任务的 different prompts
的 task embeddings
之间具有较高的相似性分数(请参见附录 F
)。
我们利用 task embeddings
来预测和利用任务的可迁移性。具体而言,我们探索了预测对于给定的目标任务最有利的源任务的方法,并利用它们的 prompts
来提高目标任务的性能。为了扩大我们的 source prompts
集合,我们使用每个源任务上三次不同的 prompt tuning
运行的 prompts,
,共得到 48
个 source prompts
。给定目标任务 task embedding
source prompts
embeddings
source prompts
列表记为 ranked source prompts
:
这需要首先对每个任务(包括目标任务)进行预训练,然后才能得到
。然后再重新初始化 target prompt
,并重新训练目标任务。因此,目标任务需要被训练两次。
Best of Top-k
:我们选择 top-k source prompts
,并将每个 source prompt
单独用于初始化 target prompt
。这个过程需要在目标任务 prompt tuning
。我们使用这 prompt tuning
中最好的结果来评估该方法的有效性。
Top-k
加权平均:我们用 top-k source prompts
的加权平均值 target prompts
,以便我们只需在目标任务 prompt tuning
。权重
其中 task embedding
。
Top-k
多任务混合:我们首先确定 top-k prompts
所对应的源任务,并将这些源任务的数据集和目标任务的数据集混合在一起,使用 T5
的 examples-proportional
混合策略。然后,我们在这个多任务 mixture
上进行 prompt tuning
,并使用 final prompt checkpoint
来初始化 prompt
从而用于 target prompt tuning
。
我们报告每种方法在所有目标任务上实现的平均分数。为了比较,我们测量相对于 baseline
(在每个目标任务上从头开始进行 prompt tuning
,即没有任何 prompt transfer
)的绝对改进和相对改进。此外,我们还包括了 ORACLE
结果,即通过暴力搜索确定每个目标任务的 48 source prompts
中最佳 prompts
所实现的结果。
任务相似性与任务可迁移性之间的相关性:Figure 5
显示了在目标任务上 relative error reduction
随着 source and target task embeddings
之间的相似性变化的情况。
总体而言,我们观察到在四个目标任务(一共 10
个目标任务)上 task embedding
相似性和任务可迁移性之间存在显著的正相关性,其中包括: STS-B (p < 0.001), CB (p < 0.001), WSC (p < 0.01), RTE (p < 0.05)
;而在其他任务上相关性较弱。
在某些情况下(例如在 BOOLQ
上),尽管余弦相似度较低(0.4
),我们观察到较大的 relative error reduction
( 19.0%
,通过 MNLI
的一个 source prompt
来实现的)。这表明除了任务相似性之外(数据大小、任务难度、领域相似性等),还可能有其他因素影响可迁移性的确定。
通过 task embeddings
来检索 targeted source tasks
是有帮助的:Table 3
比较了不同方法用于确定哪些 source prompts
对于给定的目标任务可能是有益的。
总体而言,我们的结果显示Best of Top-k
的有效性:
仅仅选择与目标任务具有最高 task embedding
相似性的 source prompt
,使用每个 per-token
的余弦相似性,可以显著改善 baseline
结果(从 74.7
的平均分数提高到 76.7
,平均 relative error reduction
达 12.1%
)。
对于每个目标任务,尝试所有的 top-3 source prompts
(一共 48
个)会得到 77.5
的平均分数。
通过增加 oracle selection
的大部分好处( 80%
增益,90%
增益),同时消除了超过 source prompts
。
Top-k
加权平均与 Best of Top-k
( prompt tuning
的情况下,这可能是 Best of Top-k
的一个有吸引力的替代方案。
最后,Top-k
多任务混合也提供了一种方式,获得了平均分为 77.8
的较好的性能,甚至超过了 Best of Top-k
(
由于其他 parameter-efficient adaptation
方法在特定情况下可能优于 Prompt Tuning
,测试类似于 SPOT
的方法是否可以成功地扩展到这些方法将是非常有趣的。与此同时,我们相信 Prompt Tuning
有其自身的优点。随着 pre-trained
语言模型变得越来越大, Prompt Tuning
相对于其他方法的一些优势在于:
在当前的可学习参数的方法中, Prompt Tuning
是参数效率最高的,在大多数模型规模下,只需要低于 0.01%
的 task-specific parameters
。
Prompt Tuning
比其他方法更简单,因为它不修改内部模型结构(参见 Prefix Tuning
方法,该方法在 Transformer
的 encoder
和 decoder
的每一层都添加了 prefix
);因此, Prompt Tuning
允许 mixed-task inference
,并促进任务间的迁移学习。
随着模型容量的增加, Prompt Tuning
与 Model Tuning
相媲美。据我们所知,其他方法尚未显示出这一点。
Soft prompts
可能被解释为自然语言指令。
此外,由于我们 prompt-based task embedding
方法并没有捕捉到影响任务可迁移性的所有因素,因此我们将对其他 task embedding
方法的进一步探索留待未来工作中进行。
论文:
《Factual Probing Is [MASK]: Learning vs. Learning to Recall》
pretrained
语言模型(如 BERT
)被优化用于预测 internet
语料库中的单词分布。自然而然地,这个分布编码了关于世界事实的信息。最近,研究人员对于衡量语言模型从预训练中获取多少事实信息产生了兴趣。《Language models as knowledge bases?》
在 LAMA
基准测试中正式定义了这个 project
,该 benchmark
由(subject, relation, object)
三元组以及人工编写的表达每种关系的模板组成。他们展示了 BERT
能够根据完形填空风格的 prompt
(例如,Dante was born in [MASK]
)预测 objects
,并将结果作为 BERT
所编码的事实信息量的下界。随后的工作尝试通过找到更好的 prompts
来缩紧这个下界。
LPAQA
使用文本挖掘和 paraphrasing
来找到一组候选 prompts
,并选择在训练集上准确率最高的 prompts
。
AutoPrompt
训练一个模型来自动生成 prompts
,通过搜索使得 gold object label
的期望似然最大化的 tokens
序列。
这两种方法都从 Wikidata
中收集了额外的三元组来用于调优 prompts
。
在本文中,我们在寻找更好的 promots
方面迈出了下一步:不再限制搜索空间为离散的 input tokens
,而是直接在 input embedding space
中进行优化,找到最能引导事实的 real-valued input vectors
。我们还发现,使用manual prompts
进行初始化可以为搜索过程提供更好的起点。我们的方法 OptiPrompt
简单而计算高效,在 LAMA
基准测试上将准确率从 42.2%
提高到48.6%
,相比于以前的 discrete
方法有显著提升。在更困难的 LAMA-UHN
分组中,OptiPrompt
将准确率从 31.3%
提高到38.4%
。
同时,我们观察到在训练数据上优化的 prompts
可能会利用 facts
的底层分布中的一些规律。我们如何确保我们的 prompts
仅仅从语言模型中恢复信息?类似的问题最近在语言探究中得到了探索,其目标是探索在 contextualized word representations
中编码的语言属性。例如,通过观察从语言模型返回的 representation
,看看分类器是否可以预测 "chef"
是 "made"
的 nominal subject
( Figure 1
)。最近的工作尝试将 representation
中所编码的信息与 probe
所学到的信息进行解耦。然而,这个问题在 factual probing
中尚未被探索,部分原因是因为假设仅仅通过观察其他实体的一组不重叠的事实,无法预测一个 knowledge fact
。例如,了解到但丁出生在佛罗伦萨,对于 John Donne
的出生地没有任何意义。
我们分析了我们的训练数据,并发现这个假设是不合理的。尽管训练数据是独立于 LAMA
基准测试收集的,但在 Wikidata
关系的底层分布中存在足够的规律性,以至于一个简单的在训练数据上拟合的分类器,可以达到令人惊讶的良好性能。此外,我们的实验揭示了所有基于数据驱动的 prompt-search
方法(包括先前的方法和我们提出的 OptiPrompt
),都能够利用这些信息来提高预测准确性。在给定一些训练数据的情况下,一个良好的搜索算法可以利用简单的 class
统计和更高阶的词汇规律从而找到这样的 propmts
:该 prompts
从神经网络中恢复出一定数量的 "facts"
。
这一发现使得解释知识探测任务上的相对准确率分数变得具有挑战性。我们展示了我们的对照实验如何让我们更详细地了解不同 probes
的行为。例如,通过将测试集分成 "easy"
和 "hard"
两个子集,其中 easy
样本可以被 random controls
来预测,而 hard
样本则不行,我们可以得出一些关于哪些 facts
不太可能从训练数据中学到的结论。 OptiPrompt
在这两个子集中均优于先前的方法,表明它在从训练数据中学习、以及从语言模型中引导事实方面都更加优秀。我们最后提出了一些关于未来工作的建议,这些工作可能对训练数据的混淆效应(confounding effect
)更不敏感。
这就是
P-Tuning
的核心思想。整篇论文讲的是:判断
pretrained LM
的factual probing
是来自于语言模型编码好的知识、还是来自于模型的学习能力?作者进行了一些实验,也没有得出什么有价值的结论。整体而言,没有多少实际价值,可以忽略不看。
相关工作:
我们的工作延续了 《Language models as knowledge bases?》
所开展的 factual probing
实验系列,他们引入了 LAMA
基准用于完形填空式 factual probing
。随后的 LAMA
相关工作介绍了用于优化 prompts
的数据驱动方法(LPAQA
、AutoPrompt
)。《BERT is not a knowledge base (yet): Factual knowledge vs. name-based reasoning in unsupervised qa》
指出LAMA
中的许多事实可以通过词汇线索进行预测,并引入了一个新的 benchmark
(LAMA-UHN
),该 benchmark
对这些启发式方法不太敏感。我们的工作继承了这些项目,并引入了更有效的优化 prompts
技术:更有效的方法来优化 prompts
、更全面的方法来解释 train/test overlap
的作用。
与我们同时进行的工作中,其他作者探索了 continuous prompt optimization
:
《BERTese: Learning to speak to BERT》
使用编码器将手动编写的prompt
映射为 continuous vectors
序列,然后用 embedding
空间中附近的离散 tokens
替换它们。
《Prefix-tuning: Optimizing continuous prompts for generation》
提出了 Prefix-Tuning
,用于对自回归语言模型中最左侧的 hidden representations
进行微调。
《GPT understands, too》
使用 LSTM
生成 prompt vectors
序列。
prompting
也被广泛应用于通过语言模型实现"few-shot learning"
。
linguistic probing
是一个广泛研究的领域,我们在此不尝试总结全部内容(有关概述,请参阅《A primer in bertology: What we know about how bert works》
)。我们的工作与最近有关如何衡量 probe
是从 representation
中提取信息、还是学习从 probe training data
中 predict annotation
的方法相关。这些方法包括 random baselines
(《Designing and interpreting probes with control tasks》
)和信息论度量(《Information theoretic probing with minimum description length》
)。我们采用了 《Information-theoretic probing for linguistic structure》
的 control functions
的概念。
我们的研究还与诊断 neural NLP models
中的 "shortcut learning"
(《Shortcut learning in deep neural networks》
)的更大范畴的工作相关。《Right for the wrong reasons: Diagnosing syntactic heuristics in natural language inference》
发现 BERT
等模型往往是 "right for the wrong reason"
,利用浅层启发式方法而非潜在的语言结构,类似的效果在许多其他任务中也被发现(《What makes reading comprehension questions easier?》
、《Universal adversarial triggers for attacking and analyzing NLP》
)。
LLAMA
:factual probing setting
是由 LAMA benchmark
引入的,旨在衡量 pretrained
语言模型中编码的事实信息量。在LAMA
中,事实被定义为三元组 subject
(例如Dante
)、place of birth
)、object
(例如 Florence
)。LAMA
的事实来源于多个 sources
,包括 Wikidata、ConceptNet、SQuAD
。我们遵从最近的 factual probing
工作,这些工作专注于 T-REx split
,其中包含了 41
种Wikidata
关系类型,每种类型最多 1000
个 capital of
这样的 1-1
关系、像place of birth
这样的 N-1
关系、像 shares border with
这样的 N-M
关系。
在 LAMA
评估中,每种关系与一个人工编写的 prompt
相关联,该 prompt
包含一个 [MASK] token
,例如 "[X] was born in [MASK]."
。为了适应 BERT
等掩码语言模型( masked language models: MLM
),LAMA
仅限于 object label
是预定义的词表 token
。给定 subject
relation prompt
subject
占位符 prompt template
。如果 gold object
LAMA
是一个评估基准,因此没有训练数据。它的构建使得 pretraiend
语言模型可以在 “开箱即用” 的情况下进行评估,无需额外的微调。《Language models as knowledge bases?》
指出,他们的基准只提供了 pretrained
语言模型中存储的事实信息量的一个下界估计,因为他们手动编写的 prompts
可能不是引发事实的最佳选择。因此,随后的工作重点是通过使用额外的训练数据找到更优的 prompts
来收紧这个下界。
LPAQA
:《How can we know what language models know?》
使用一系列 text-mining
和 paraphrasing
技术为每个 relation
生成候选 prompts
集合。他们从 Wikidata
收集了一个训练数据集,确保与 LAMA
基准中的 subject-object pairs
没有重叠,并通过在该训练数据上测量准确率来选择 prompts
。他们考虑了一些 selecting prompts
的规则,包括基于top-K
的基线方法、 "optimized ensemble"
方法(在训练数据上调优了每种关系的多个 prompts
的权重)。他们的 prompt dataset
(即,LPAQA
)可以在线上获得。
AutoPrompt
:《AutoPrompt: Automatic prompt construction for masked language models》
进一步推进了 prompt optimization
的发展,通过训练一个统计模型 AutoPrompt
从而在 input tokens
空间中搜索能够引发正确预测的 prompts
。他们为每种关系类型收集了 1000
个 T-REx
数据集、要么来自 Wikidata
,但不包含出现在 LAMA
基准中的三元组。他们为给定关系 prompt
,即 subject
后跟一定数量的 "trigger" tokens
:
其中:
subject
所替代。
trigger token
,该 token
可以是词表中的任何 token
。
trigger tokens
的数量。
这些 trigger tokens
被初始化为 [MASK] token
,然后通过迭代式地更新,在每一步使用 gradient-based
搜索算法从而将其中一个 trigger token
替换为最大化在训练集上 gold label
概率的 token
。
我们的方法受到一种观点的启发,即将搜索限制在 vocabulary tokens
空间内是一种次优且人为的约束。在 AutoPrompt
的情况下,在离散的子空间上优化也是低效的:在每一步中,我们必须枚举一组候选 tokens
,替换 selected trigger token
,并重新运行模型。Table 1
中的示例也说明,即使由英语词表中的 tokens
组成,optimized textual prompts
可能是难以理解的。这削弱了支持自然语言 prompts
的一个论点,即它们易于阅读,因此可能更容易解释。
在这种观点下,我们提出了 OptiPrompt
,一种用于 continuous prompt optimization
的方法。OptiPrompt
不局限于离散 tokens
的空间,而是直接搜索 optimal prompts
,使用 embeddign
空间中的任何向量来构成 prompts
。我们首先遵从 AutoPrompt
的方法,以如下形式来定义一个 prompt
:
其中:innput embeddingn
维度(对于 BERT-base
为
OptiPrompt
更类似于P-Tuning
:它们都是仅在输入上插入continous prompt
;支持在输入的头部、中间、以及尾部插入continuous prompt
。
将 promtps
视为稠密向量可以更高效地搜索 optimal prompts
。给定一些
其中:
(subject, object ) pairs
所构成的训练集。
prompt template
,其中占位符 [X]
被 subject tokens
根据公式,该方法是监督学习,并且采用
zero-shot
的模板形式(而不是few-shot
)。
在这种基本形式中,我们选择一个固定的 tokens
。我们还考虑了一种更复杂的形式,使用 manual prompts
(我们使用LAMA
基准测试中提供的 prompts
)来决定每种关系的 tokens
的数量 manual prompts
中的相应 tokens
使用 pre-trained input embedding
来初始化每个 Table 1
所示,我们可以将 manual prompts
"[X] is [MASK] citizen"
转换为:
并分别使用 is
和 citizen
的 embedding
来初始化
OptiPrompt
支持个性化的prompt length
,这在Prefix-Tuning
、P-Tuning
、Prompt-Tuning
中都未试验过。
设置:我们使用 AutoPrompt
原始论文所收集的数据来训练 OptiPrompt
,该数据包含 800
个训练样本,其中有 200
个用于验证集。在我们的主要实验中,我们对 BERT-base-cased
模型进行 probe
,并在附录 C
中比较其他预训练语言模型。我们报告了 top-1 micro-averaged accuracy
:
其中:(subject, object)
集合;
更多实现细节参考附录的 B.1
。
LAMA
结果:我们的结果在 Table 2
中呈现。总体而言,OptiPrompt
在 LAMA benchmark
的准确率方面优于先前报告的结果
与AutoPrompt
相比,我们的模型在 LAMA
上的表现提高了 5.4%–6.4%
,在更困难的 LAMA-UHN benchmark
上提高了 6.2%–7.1%
。
这种改进在所有类别中都是一致的,除了 "1-1"
类别,该类别包含两个关系,即 capital
和 capital of
(后者是前者的逆关系)。有趣的是,在这个类别中,产生最好结果的 prompts
是 manual prompt
,而 LPAQA prompts
和 AutoPrompt prompts
的表现逐渐变差。我们推测,很少有 prompts
能以高准确率引导这种关系;而且,即使有这种 prompts
,也难以通过随机的、非凸的 optimization
来找到。
我们还发现,使用手动编写的 prompts
来初始化 prompt vectors
可以持续改善性能。这验证了我们的直觉,即 manual initialization
为在非凸优化问题中找到一个好的解提供了很好的先验信息。结果按 relation
分类在附录的 Table 8
中进行了详细说明。
我们的实证探测结果证实了 OptiPrompt
是一种有效的方法,在 LAMA benchmark
上的表现超过了先前最好的方法 6.4%
。然而,我们能否得出结论:BERT
编码了比先前所知的更多的事实?我们的,就像 LPAQA
和 AUTOPROMPT
,是在 in-distribution Wikidata relations
上进行优化的,这可能意味着它们利用了底层 fact distribution
中的某些规律性。在本节中,我们旨在回答两个问题。
首先,Wikidata fact distribution
中是否存在模式,其中统计模型理论上可以利用该模型来预测 unseen facts
?
其次,optimized prompts
能否在实践中利用这些模式?
可以从训练数据中预测事实:我们首先研究是否可能仅通过查看训练数据来预测任何 facts
。最简单的模式是 class prior
object labels
在关系 subject
实体如何,猜测它们都更容易。一种更复杂的模式是找到 subject tokens
和 object labels
之间的相关性,即估计 subject
名称的 tokens
。
为了确定是否存在这样的模式,我们对 AutoPrompt
原始论文收集的 Wikidata
训练集拟合了两个简单的概率模型:
第一个模型总是预测 majority class
,其中 majority class
的先验概率是从训练数据中学习的。
第二个模型是一个朴素贝叶斯分类器(bag-of-words
),采用 sdd-one smoothing
(详见附录 B.2
中的详细信息)。
Table 3
显示了这些模型在 LAMA benchmark
上的准确率,对 relation
进行了平均。
majority class
模型表现良好,因为在某些关系中,超过一半的样本属于多数类。
朴素贝叶斯 baselien
模型在所有类别中表现更好。
这个分析补充了 《BERT is not a knowledge base (yet): Factual knowledge vs. name-based reasoning in unsupervised qa》
的观察,他们指出 BERT
可以利用 cloze prompt
中的表面信息 “猜测” 正确答案,例如预测具有典型意大利人名字的人可能出生在罗马。我们的结果表明,即使没有关于实体名称的先验信息,也有可能学习这些相关性,并且在 Wikidata
分布中可能存在其他更微妙的模式。
prompts
可以利用训练数据:我们已经表明训练数据明显编码了某些规律性,简单的统计模型可以学习拟合训练数据。接下来,我们研究一个由 pretrained
语言模型构建的 prompt optimization
方法是否在实践中具有足够的表达能力来利用这些规律性。我们通过两个随机对照实验来试图回答这个问题,这些对照实验受到 linguistic probing
中类似提议的启发。
在我们的随机模型(Random Model: RM
)基线中,我们优化 prompts
来引导具有与 pretrained
语言模型相同架构但参数随机初始化的神经网络中的 facts
。这类似于 《Information-theoretic probing for linguistic structure》
的 control function
,该函数从 linguistic representation
中删除信息。在这种 setting
下,任何成功的预测都必须是在训练数据上进行优化的结果。
我们还考虑了随机嵌入(Random Embedding: RE
)基线,在这个基线中,我们仅重新初始化 input embeddings
。这类似于一个 control task
(《Designing and interpreting probes with control tasks》
),是 probing task
的一种变体,其中单词类型与随机 labels
相关联。我们的动机是,Model setting
更难优化,因此可能低估了 prompt model
从训练数据中利用信息的方式。
最后,我们直接在重新初始化的 BERT
模型上进行微调,目标是更好地估计可以从训练数据中预测到的 LAMA
事实的数量。
结果如 Figure 2
所示(有关实现细节和更多结果,请参见附录 B.1
和 Table 8
)。
在 RE setting
下,AutoPrompt
和 OptiPropmt
都能够找到引出一些正确预测的 prompts
。
在 RM setting
下,AutoPrompt
的预测准确率为 0%
,可能是因为它更难优化;但是 OptiPrompt
仍然能够找到成功的 prompts
。大多数成功的预测是通过找到引出 majority class labels
的 prompts
来实现的,然而 OptiPrompt
也做出了一些正确的、不属于 majority class labels
的预测。我们的定性分析表明,这些 prompts
利用了类别统计信息、objects and subject tokens
之间的相关性(附录 A.2
)。
微调 BERT
模型导致更高的准确率,表明存在一些 prompts
未能利用的模式。随机对照实验对于 prompt optimization
来说是一种具有挑战性的设置,可能在 full pretrained
的 BERT
模型下, prompts
更好地利用了训练数据。我们通过计算每个 prompt
在 LAMA
数据集上引出 training class majority label
的频率来证明这一点,并将结果绘制在 Figure 3
中。AutoPrompt
和 OptiPrompt
都容易过度预测 majority class label
。例如,尽管在 RM setting
中 AutoPrompt
的准确率为 0%
,但它在 pretrained BERT
模型上进行优化时,对于六个关系,它找到的 prompt
引出 majority label
的频率超过 95%
。
LPAQA
的 prompts
较少地预测 majority class
,可能是因为它们在拟合训练分布方面的效果较差。然而,显然 LPAQA
的 prompts
也编码了训练数据的分布。例如,LPAQA
发现的最高排名的 occupation prompts
包括 "[MASK] and actors [X]
和 "[MASK] and player [X]"
等 prompts
,其中 occupation prompts
反映了 Wikidata
中最常见的几个职业。在附录 A.2
中,我们还讨论了一些例子,其中 LPAQA
发现:对 prompt template
进行细微修改会导致模型更频繁地预测 majority label
,相对于manual prompt
和 true test distribution
。所有上述证据表明,optimized prompts
在某种程度上可以学习到新的事实。
我们在前面的分析显示,optimized prompts
可以从训练数据中预测新的 facts
。在这个背景下,我们如何解释我们的 factual probing
结果呢?为了从另一个角度评估相对改进的情况,我们将 LAMA
数据集划分为 easy
子集和 hard
子集(每个子集的例子可以在 Table 5
中找到)。
easy
子集由这类 facts
组成:这些 facts
可以由三种模型之一来正确地预测,包括朴素贝叶斯模型、token embeddings
重新初始化的 fine-tuned BERT
模型、所有参数重新初始化的 fine-tuned BERT
模型。 easy
子集可作为可以从训练数据中预测的 facts
的估计。
hard
子集包含剩余的事实。
Table 4
显示了每个 prompts
在 LAMA
的这两个子集上的结果(每个 relation
的结果见 Table 9
)。
首先,我们观察到所有的 probing
方法在 easy
子集上的准确率都要高得多。使用更复杂的 prompt optimization
技术往往会在 LAMA
的 easy
子集上取得较大的改进,而在 hard
子集上的改进较小。
OptiPrompt
在 easy
子集上的改进比AutoPrompt
高出 7.4%
;而在 hard
子集上,OptiPrompt
也取得了较大的改进(+6.3%
)。这表明 OptiPrompt
在从训练数据中学习和引导语言模型产生事实方面都表现更好。
为了进行更详细的定性分析,我们从每个子集中随机抽取了十个事实,仅保留那些至少有一个模型预测正确且不具有 majority class label
的事实示例。这些示例在 Table 5
中展示,更好地展示了不同 prompts
引发的预测类型。
例如,AutoPrompt
和OptiPrompt
在某些情况下似乎在利用训练数据。
在 easy
子集中,它们在答案是 subject name
中的一个 token
时引发了更准确的预测。
在 hard
子集中,它们显示出对训练分布的过拟合迹象,错误地预测了最常见的 object labels
:如,洲(南极洲)、制造商(IBM
)。
OptiPrompt
在两个类别的某些事实中表现优于其他 prompts
。
在一个容易的职业示例中, AutoPrompt
错误地预测了majority label
(政治家),OptiPrompt
(以及我们的朴素贝叶斯模型)明显编码了 subject
的某些方面与正确标签(演员)之间的词汇相关性。
另一方面,在两个更困难的示例中,OptiPrompt
表现优于其他prompts
:"Francis Hagerup used to work in Oslo."
和 "William Lyon Mackenzie King used to work in Ottawa."
。在这两种情况下,LPAQA
预测训练中的majority label
(伦敦),AutoPrompt
更接近地预测了地理位置(哥本哈根和蒙特利尔),而 OptiPrompt
预测了正确的城市。
我们注意到,我们不能得出结论说:没有办法从训练数据中预测这些 "had"
的事实。这种分析的一个更普遍的限制是我们无法确定模型使用哪种策略来进行特定的预测。许多事实既可以通过学习 class prior
、学习 subject tokens
和 object
之间的词汇相关性、利用语言模型中的词汇信息来预测,也可能是因为语言模型真正编码了关于特定实体的信息。尽管如此,定性示例展示了 prompt model
行为中的有趣模式,这些模式无法从 LAMA benchmark
的summary accuracy
结果中观察到,而通过查看一系列 prompts
的具体预测,我们可以更多地得到关于语言模型对特定事实编码的信息。
continuous vs. discrete prompts
:我们发现 continuous prompts
和 discrete prompts
都能够找到利用训练数据的 prompts
。
即使 prompts
是离散的,也很少清楚为什么某个 prompts
会引发特定的预测。因此,我们认为 continuous promtps
更可取,因为它更容易、更高效地进行优化,并且能够做出更好的预测(无论是在 easy
子集还是 hard
子集上)。
另一方面,OptiPrompt
(与 AutoPrompt
共享)的一个缺点是我们需要对语言模型进行白盒访问以计算梯度。在模型参数不可用的情况下,仍然需要 discrete prompts
,例如在通过 API
提供的大型语言模型的情况下。
learning vs. learning to recall
:无论我们选择如何优化 prompts
,要解释模型为什么做出特定预测仍然很困难,无论这些预测是从训练数据中学到的还是在语言模型中编码的。未来的研究方向之一可能是考虑将预测归因于特定的训练样本的技术,目标是在预训练或 prompt optimization
过程中开发对 facts
获取方式的因果理解。更一般地说,我们的真正目标是理解预训练语言模型是如何学习和表示信息的。prompt-based probing
可能会为这个问题提供一些见解,但我们希望未来的研究最终能够对神经网络行为提供更多机制性解释。例如,了解神经网络参数中的实体信息是如何组织的,并在input prompt
的响应中被检索出来,将是一个有趣的研究方向。