二十七、Prefix-Tuning[2021]

论文:《Prefix-Tuning: Optimizing Continuous Prompts for Generation》

  1. 微调是(finetuning )使用大型 pretrained 语言模型执行下游任务(如摘要)的普遍范式,但它需要更新和存储语言模型的所有参数。因此,为了建立和部署依赖大型 pretrained 语言模型的 NLP 系统,目前需要为每个任务来存储语言模型参数的 modified copy 。考虑到当前语言模型的庞大规模,这可能是非常昂贵的,例如,GPT-2774M 参数、GPT-3175B 参数。

    解决这个问题的一个自然方法是lightweight fine-tuning ,它冻结了大部分 pretrained parameters ,并用小的可训练模块来 augment模型。例如,adapter-tuningpretrained 语言模型的层之间插入额外的 task-specific layersadapter-tuning 在自然语言理解和自然语言生成基准上有很好的表现,达到了与微调相当的性能,而只增加了大约 2-4%task-specific parameters

    在另一个方面,GPT-3 可以在没有任何 task-specific tuning 的情况下部署。相反,用户将自然语言的任务指令(例如,TL;DR 用于摘要任务)和一些样本添加到任务输入中,然后从语言模型中生成输出。这种方法被称为 in-context learningprompting

    在本文中,我们提出了 prefix-tuning ,这是一种轻量级的替代微调的方法用于自然语言生成任务,其灵感来自于 prompting 。考虑为数据表格生成文本描述的任务,如 Figure 1 所示,任务输入是一个线性化的表格(例如,"name: Starbucks | type: coffee shop" ),输出是一个文本描述(例如,"Starbucks serves coffee." )。prefix-tuningcontinuous task-specific vectors 序列(我们称之为prefix,在 Figure 1(bottom) 中用红色块描述)前置到输入中。对于随后的 tokensTransformer 可以关注 prefix ,就像它是一串 "virtual tokens" 一样,但与 prompting 不同的是,prefix 完全由 free parameters 组成,不对应于 real tokensFigure 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-2table-to-text generation 任务上、以及使用 BART 在抽象摘要任务上评估 prefix-tuning 。在存储方面,prefix-tuning 存储的参数比 fine-tuning1000 倍。在对完整数据集进行训练时的性能方面,prefix-tuningfine-tuningtable-to-text 任务上不相上下,而 prefix-tuning 在摘要任务上会有小幅下降。在 low-data setting 中,prefix-tuning 在这两项任务上的平均表现都优于微调。prefix-tuning 还能更好地推断出有 unseen 主题的表格(在 table-to-text 任务)和文章(在摘要任务)。

  2. 相关工作:

    • 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-2table-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"网络,该网络通过 summationpretrained model 进行融合。

        • adapter-tuningpretrained LM 的每一层之间插入 task-specific layersadapters )(《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% 的参数,同时保持了相当的性能。

    • Promptingprompting 是指在任务输入中前面添加指令和一些样本,并从语言模型中生成输出。

      • GPT-3 使用手动设计的 prompts 从而适配它的 generation 从而用于不同的任务,这个框架被称为 in-context learning 。然而,由于Transformers 只能对有界长度的上下文进行条件生成(例如,GPT-32048 tokens ),in-context learning 无法完全利用长于上下文窗口的训练集。

      • 《Conditioned natural language generation using only unconditioned language model: An exploration》也通过关键词来提示从而控制 generated sentence 的情感或主题。

      • 在自然语言理解任务中,prompt engineering 已经在之前的工作中为 BERTRoBERTa 等模型进行了探索。例如,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》)或迭代式地更新过去的 activationsPPLM《Plug and play language models: A simple approach to controlled text generation》)。

      然而,目前还没有直接的方法来应用这些可控的生成技术来对所生成的内容进行细粒度的控制,如 table-to-text 任务和摘要任务所要求的。

27.1 方法

  1. 考虑一个 conditional generation 任务,输入是一个上下文 x ,输出 ytokens 序列。我们关注两个任务,如 Figure 2(right) 所示:

    • table-to-text 任务中,x 对应的是一个线性化的数据表,y 是一个文本描述。

    • 在摘要任务中,x 是一篇文章,y 是一个简短的摘要。

    这里展示了 decoder-only 模型、encoder-decoder 模型。实际上 encoder-only 模型(如 BERT)也可以采用类似的思路。

  2. 自回归语言模型:假设我们有一个基于 Transformer 架构(如 GPT-2 )的自回归语言模型 pϕ(yx),参数为 ϕ 。如 Figure 2(top) 所示,令 z=[x;y]xy 的拼接,令 Xidx 表示与 x 对应的索引序列,Yidx 表示与 y 对应的索引序列。

    hi(j)Rd 是时间步 i 的第 jTransformer layer 的激活;令时间步 iactivationhi=[hi(1),,hi(n)] ,为这个时间步的所有 activation layers 的拼接。自回归 Transformer 模型将 hi(j) 计算为 zi 和其左侧上下文中 past activations 的函数,如下所示:

    (1)hi(j)=LMϕ(zi,h<i(j))

    其中,最后一层的 hi(n) 用于计算 next token 的分布:

    (2)pϕ(zi+1hi)=softmax(Wϕhi(n))

    其中:Wϕpre-trained 参数矩阵。

    zi 表示拼接后的文本序列的第 itoken

  3. Encoder-Decoder 架构:我们也可以使用 encoder-decoder 架构(例如 BART )来建模 pϕ(yx),其中 x 由双向编码器来编码,解码器自回归地预测 y (以编码后的 x 、以及解码器左侧上下文为条件)。我们使用相同的索引和激活符号,如 Figure 2(bottom) 所示。所有 iXidxhi 由双向Transformer encoder 计算,所有 iYidxhi 由自回归解码器使用相同的方程式 hi(j)=LMϕ(zi,h<i(j)) 来计算。

  4. 微调:在微调框架中,我们用 pretrained parameters ϕ 来初始化。这里 pϕ 是一个可训练的语言模型分布,并且我们对以下对数似然目标进行梯度更新:

    (3)maxϕlogpϕ(yx)=iYidxlogpϕ(zih<i)
  5. Prefix-Tuning 的直觉:基于来自 prompting 的直觉,我们认为有一个适当的上下文可以引导语言模型而不改变其参数。例如,如果我们想让语言模型生成一个单词(如,“奥巴马”),我们可以在输入的签名添加它的常见搭配作为上下文(如,"巴拉克"),语言模型将为所需的单词分配更高的概率。

    将这一直觉延伸到生成单个单词或单个句子之外,我们想找到一个引导语言模型解决 NLG 任务的上下文。直观地说,上下文可以通过指导从 x 中提取什么来影响 xencoding ;也可以通过指导 next token 的分布来影响 y 的生成。然而,这样的上下文是否存在并不是显然的。自然语言任务的指令(例如,"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 的所有层。

  6. Prefix-Tuning 的方法:prefix-tuning 为自回归语言模型添加了一个前缀,得到 z=[Prefix;x;y],或者为编码器和解码器都添加前缀,得到 z=[Prefix;x;Prefix;y] ,如 Figure 2 所示。这里,Pidx 表示前缀的索引序列,我们用|Pidx|表示前缀的长度。

    我们遵循方程 hi(j)=LMϕ(zi,h<i(j)) 中的递归关系,只是 prefix 是自由参数。prefix-tuning 初始化一个尺寸为 |Pidx|×dim(hi) 的可训练矩阵 Pθ(参数为 θ )来存储 prefix parameters

    (4)hi(j)={Pθ[i,:], if iPidxLMϕ(zi,h<i(j)),else

    训练目标为 maxθlogpθ(yx)=iYidxlogpθ(zih<i) ,但可训练参数的集合发生了变化:语言模型参数是固定的,prefix parameters 是唯一可训练的参数。

    注意:这在每一层都添加了相同的 prefix,包括输入层。

    是否可以对不同的层采用不同的 prefix,使得表达能力更强?这就是 P-Tuning V2 的思想。

    这里,hi(对所有 i 而言)是可训练的 Pθ 的函数:

    • iPidx 时,这很清楚,因为 hi 直接从 P 中复制。

    • iPidx时,hi 仍然取决于 Pθ ,因为 prefix activations 总是位于左侧的上下文中,因此会影响其右边的任何 activations

  7. Pθ 的参数化:根据经验,直接更新 Pθ 参数会导致不稳定的优化和性能的轻微下降。因此,我们通过一个由大型前馈神经网络(MLPθ )组成的较小的矩阵(Pθ)来重参数化矩阵 Pθ[i,:]=MLPθ(Pθ[i,:])。注意,PθPθ 有相同的行维度(即前缀长度),但有不同的列维度。一旦训练完成,这些 reparametrization parameters 可以被放弃,只有前缀(Pθ )需要保存。

    这种重参数化为什么能提升效果?作者没有讲解原因。读者猜测是:原始的 Pθ 的自由度太高,而重参数化限制了它的自由度。这相当于降低了模型的容量。

    这种重参数化技巧相当于对 Pθ 增加了先验知识,但是读者感觉:原理上没讲清楚,整体算法不太优雅。

27.2 实验

  1. 我们在三个标准的数据集上评估了 table-to-text generation任务:E2E, WebNLG, DART

    • E2E 只有 1 个领域(即,餐厅评论),包含大约 50K 个样本,有 8 个不同的字段。对于一个 source table,它包含多个 test references ,平均输出长度为 22.9 。我们使用官方的评估脚本,其中报告了 BLEU, NIST, METEOR, ROOUGE-L, CIDEr

    • WebNLG14 个领域,包含 22K 个样本,输入 x(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, WebNLG82K 个样本组成,并应用了一些人工或自动转换。我们使用官方评估脚本并报告 BLEU, METEOR, TER, Mover-Score, BERTScore, BLEURT

    对于摘要任务,我们使用 XSUM 数据集,它是一个关于新闻文章的抽象摘要数据集,有 225K 个样本。文章的平均长度为 431 个单词,摘要的平均长度为 23.3 。我们报告了 ROUGE-1, ROUGE-2, ROUGE-L

  2. baseline

    • 对于 table-to-text generation ,我们将 prefix-tuning 与其他三种方法进行了比较:微调(FINETUNE )、仅对顶部 2 层进行微调(FT-TOP2 )、adapter-tuningADAPTER )。

      我们还报告了目前在这些数据集上的SOTA 结果:

      • E2E 上,《Pragmatically informative text generation》使用了一个没有预训练的 pragmatically informed model

      • WebNLG 上, 《Text-to-text pre-training for data-to-text tasks》T5-large 进行了微调。

      • DART 上,没有发布在这个数据集版本上训练的官方模型。

    • 对于摘要,我们与微调 BART 进行比较。

  3. 实验配置:

    对于 table-to-text ,我们使用 GPT-2_MEDIUMGPT-2_LARGEsource tables 被线性化。对于摘要,我们使用 BART_LARGE ,源文章被截断为 512BPE tokens

    我们的实现是基于 Hugging Face Transformer 模型。在训练时,我们使用 AdamW 优化器和一个线性学习率调度器,正如 Hugging Face 默认设置所建议的。我们调优的超参数包括 epoch 数量、batch size 、学习率、prefix 长度。超参数的细节如下表所示。默认设置是训练 10 epochs ,使用 batch size = 5 ,学习率 5×105prefix 长度为 10

    table-to-text 模型在 TITAN XpGeForce GTX TITAN X 机器上训练。在 22K 样本上,prefix-tuning 每个 epoch 需要 0.2 小时,而微调则需要 0.3 小时。摘要模型在 Tesla V100 机器上训练,在 XSUM 数据集上每个 epoch 需要 1.25 小时。

    在解码时,对于三个 table-to-text 数据集,我们使用 beam size = 5beam search 。对于摘要,我们使用 beam size = 6beam search ,以及 0.8 的长度归一化。对于 table-to-text ,每个句子的解码需要 1.2 秒(没有 batching );对于摘要,每个 batch 的解码需要 2.6 秒(batch size = 10 )。

27.2.1 实验结果

  1. Table-to-text Generation 任务:我们发现,只添加 0.1%task-specific parametersprefix-tuningtable-to-text generation 中是有效的,超过了其他轻量级 baselineADAPTERFT-TOP2 ),并取得了与微调相当的性能。这一趋势在所有三个数据集上都是如此: E2E, WebNLG, DART

    为了公平比较,我们将 prefix-tuningadapter-tuning 的参数数量匹配为 0.1%Table 1 显示,prefix-tuning 明显优于ADAPTER0.1% ),平均每个数据集获得 4.1 BLEU 的改善。

    即使我们与微调(100% )和 adapter-tuning3.0% )相比(它们更新的参数数量要超过 prefix-tuning),prefix-tuning 仍然取得了相当或更好的结果。这表明 prefix-tuningadapter-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

  2. 摘要任务:如 Table 2 所示,在参数为 2% 的情况下,prefix-tuning 获得的性能略低于微调(在 ROUGE-L 中为 36.05 vs. 37.25 )。在只有 0.1% 的参数下,prefix-tuning 的性能低于 full fine-tuning35.05 vs. 37.25 )。

    XSUMtable-to-text 数据集之间有几个不同之处,可以解释为什么prefix-tuningtable-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 = 5Prefix(2%) 对应于 prefix = 100

  3. Low-data Setting:基于 table-to-text 任务和摘要任务的结果,我们观察到,当训练样本的数量较少时,prefix-tuning 具有相对的优势。为了构建 low-data settings ,我们对完整的数据集(table-to-textE2E 、摘要任务的 XSUM )进行降采样,得到大小为 {50, 100, 200, 500} 的小数据集。对于每个大小,我们采样五个不同的数据集,并训练两个 training random seeds 然后取平均。因此,我们对 10 个模型进行平均,以获得每个 low-data setting 的估计。

    Figure 3(right) 显示,prefix-tuninglow-data setting 下平均比微调多出 2.9 BLEU ,此外所需的参数也更少;但随着数据集规模的增加,差距也在缩小。

    从质量上看,Figure 3(left) 显示了由在不同数据量上训练的prefix-tuning modelfine-tuning model 所产生的 8 个样本。虽然两种方法在 low data 区域下都倾向于生成不足(缺失表格内容),但 prefix-tuning 往往比微调更忠实。例如,微调 (100, 200) 错误地声称顾客的评价很低,而真实的评价是平均的;而 prefix-tuning (100, 200) 所生成的描述是忠实于表格的。

    prefix-tuning 和微调在 low-data setting 下的表现,更详细的曲线如 Figure 6 所示。

  4. Extrapolation :我们现在研究了针对 table-to-text 和摘要任务对未见过的主题的推断性能。为了构建一个外推环境,我们对现有的数据集进行了拆分,使训练集和测试集涵盖不同的主题。

    • 对于 table-to-textWebNLG 数据集被 table topics 所标记。有 9 个类别在训练集和验证集中出现,表示为 SEEN5 个类别只在测试集中出现,表示为 UNSEEN 。所以我们通过对 SEEN 类别的训练和对 UNSEEN 类别的测试来评估外推法。

    • 对于摘要,我们构建了两个外推数据子集:

      • news-to-sports 中,我们对新闻文章进行训练,对体育文章进行测试。

      • within-news 中,我们对 {world, UK, business} 新闻进行训练,并对其余新闻类别(如健康、科技)进行测试。

    Table 3Table 1 (中间)的 "U" 列所示,在 table-to-text 任务和摘要任务上,pre-fixtuning 在所有指标下都比微调有更好的外推能力。

    我们还发现,adapter-tuning 取得了良好的外推性能,与 pre-fixtuning 相当,如 Table 1 所示。这种共同的趋势表明,保留语言模型参数确实对外推有积极影响。然而,这种收益的原因是一个开放的问题,我们将在后续章节进一步讨论。

27.2.2 消融分析

  1. Prefix 长度:较长的 prefix 意味着更多的可训练参数,因此有更强的表达能力。Figure 4 显示,性能会随着 prefix 长度的增加而增加,直到一个阈值(摘要任务为 200table-to-text10 ),然后性能会有轻微的下降。

    根据经验,较长的 prefix 对推理速度的影响可以忽略不计,因为整个 prefix 的注意力计算在 GPU 上是并行的。

  2. Full vs Embedding-only:如前文所述,我们讨论了优化"virtual tokens"continuous embeddings 。我们将这一想法实例化,并称之为 embedding-only 消融分析。word embeddings 是自由参数,上层 activation layersTransformer 计算。Table 4 (top) 显示,性能明显下降,表明仅仅调优 embedding layer 并不具有足够的表达能力。

    embedding-only 的消融分析给出了 discrete prompt optimization 的性能上限,因为 discrete prompt 限制了 embedding layer 要完全匹配真实单词的 embedding 。因此,我们有这样一个表达能力递增的链条:discrete prompting < embedding-only ablation < prefix-tuning

    这里的结论是存疑的,因为Pθ 的参数化技巧导致的。这种参数化使得 embedding-only 的自由度降低。应该在采用embedding-only 的时候,去掉参数化技巧(这就是 P-Tuning 的思想)。

  3. Prefixing vs Infixing:我们还研究了可训练的 activations 在序列中的位置如何影响表现。在 prefix-tuning 中,我们把它们放在开头 [Prefix;x;y] 。我们也可以把可训练的 activations 放在 xy 之间(即 [x;Infix;y]),并称其为 infix-tuningTable 4 (bottom) 显示,infix-tuning 的表现略逊于 pre-tuning 。我们认为这是因为 prefix-tuning 可以影响 xyactivations ,而 infix-tuning 只能影响 yactivations

  4. 初始化:我们发现,prefix 的初始化方式在 low-data settings 下有很大的影响。随机初始化会导致高方差的低性能。如 Figure 5 所示,用真实单词的 activations 来初始化prefix ,可以明显改善 generation 。具体而言,用任务相关的单词如 "summarization""table-to-text" 来初始化所获得的性能,比用任务无关的单词如 "elephant""divide" 略好,但使用真实的单词仍然比随机要更好。

    由于我们用语言模型计算的真实单词的 activations 来初始化前缀,这种初始化策略与尽可能地保留 pretrained LM 是一致的。

    注意:这里描述的是参数的初始化,而参数的梯度更新是采用参数化技巧。

    Figure 7 给出了更多的关于初始化的指标。

27.3 讨论

  1. 个性化(Personalization):正如我们在前面章节中指出的,当有大量的任务需要独立训练时,prefix-tuning 是有利的。一个实际的 setting 是用户隐私。为了保护用户隐私,每个用户的数据需要被分开,并且需要为每个用户独立训练一个个性化的模型。因此,每个用户可以被看作是一个独立的任务。如果有数以百万计的用户,prefix-tuning 可以 scale 到这种 setting ,并保持模块化。通过增加或删除用户的 prefix ,可以灵活地增加或删除用户,而不会造成交叉污染。

  2. 跨用户的 Batching:在 personalization setting 下,prefix-tuning 允许对不同用户的 query 进行 batching ,即使这些 query 采用不同的 prefix 。当多个用户用他们的inputsquery 云端 GPU 设备时,将这些用户放在同一 batch 是很有计算效率的。prefix-tuning 可以保持共享的语言模型不变;因此,batching 需要一个简单的步骤,即把 personalized prefix 添加到用户的输入之前,其余所有的计算都是不变的。相比之下,在 adapter-tuning 中,我们不能在不同的用户之间进行 batching ,因为 adapter-tuning在共享的 Transformer layers 之间有 personalized adapters

    batch 内不同样本的 prefix 不同,可以类似于 word embedding 的思路,认为每个用户一个 idprefix vector 就是 id embedding

  3. Prefix-tuning 的归纳偏置(Prefix-tuning):回顾一下,微调会更新所有的 pretrained parameters ,而 prefix-tuningadapter-tuning 则会保留 pretrained parameters 。由于语言模型是在通用语料库上进行预训练的,保留语言模型参数可能有助于泛化到训练期间未见的领域。与这种直觉相一致的是,我们观察到 prefix-tuningadapter-tuningextrapolation settings 中都有明显的性能提升;然而,这种提升的原因是一个开放的问题。

    虽然 prefix-tuningadapter-tuning 都冻结了 pretrained parameters ,但它们调优不同的参数集合来影响 Transformeractivations 。回顾一下,prefix-tuning 保持语言模型的完整,并使用 prefixpretrained attention blocks 来影响后续的 activationsadapter-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 性能。

二十八、P-Tuning[2021]

论文:《GPT Understands, Too》

  1. 语言模型预训练是许多自然语言处理任务的成功方法。有证据表明,在预训练过程中,语言模型不仅学习了 contextualized text representation ,还学习了语法、句法、常识、甚至世界知识。

    根据训练目标,预训练的语言模型可以分为三类:

    • 用于自然语言生成(natural language generation: NLG )的单向语言模型,如GPT

    • 用于自然语言理解(natural language understanding: NLU )的双向语言模型,如BERT

    • 结合前两种范式的混合语言模型,如 XLNetUniLM

    长期以来,研究人员观察到 GPT 风格的模型在具有微调的 NLU 任务中表现不佳,因此认为它们天然地不适合语言理解。

    新兴的 GPT-3 ,以及它在具有手工制作的 promptsfew-shot learningzero-shot learning 上的特殊表现,已经席卷机器学习界。它的成功表明,巨大的单向语言模型加上适当的 manual prompt 可能会对自然语言理解起作用。然而,手工制作一个表现最好的 prompt 就像在干草堆里找一根针,这往往需要不切实际的大型验证集。在许多情况下,prompt engineering 实际上意味着对测试集的过拟合。此外,很容易创建 adversarial prompts ,导致性能大幅下降。鉴于这些问题,最近的工作集中在自动搜索离散的 promptsLPAQALM-BFFMetaprompt),并证明其有效性。然而,由于神经网络本身是连续的,离散的 prompts 可能是次优的。

    在这项工作中,我们提出了一种新的方法 P-tuning ,该方法在连续空间中自动搜索 prompts ,以弥补 GPTNLU applications 之间的 gapP-tuning 利用少数连续的 free parameters 作为 prompts 输入到 pre-trained 的语言模型中。然后,我们使用梯度下降法对 continuous prompts 进行优化,从而作为 discrete prompt searching 的一种替代。

    简单的 P-tuning 方法为 GPT 带来了实质性的改进。我们在两个 NLU 基准上检验了基于 P-tuningGPTLAMA knowledge probingSuperGLUE

    • LAMA knowledge probing 中,其中模型参数是 fixed 的,与原始手工的 prompts 相比,基于 P-tuningGPTPrecision@1 中显示出 26.2%-41.1% 的绝对收益。最好的一个模型在 LAMA 中达到了 64.2% ,大大超过了 SOTA45.2%prompt searching 方法。

    • SuperGlue 中,我们在 few-shot 和完全监督的情况下联合应用 P-tuning 和微调。结果,GPT 的性能与具有相同规模的BERT 模型相比具有竞争力,对于某些数据集,GPT 的性能甚至超过了 BERT

      进一步的实验表明,BERT 风格的模型也可以在一定程度上受益于 P-tuning 。我们表明,带有 P-tuningALBERT 大大超过了以前的方法,并在 few-shot SuperGLUE 基准上取得了新的 SOTA

    我们的发现打破了GPT 只能 generate 而不能 understand 的刻板印象。它还表明,语言模型包含的世界知识、以及 prior-task 知识要比我们以前假设的多得多。P-tuning 也可以作为一种通用的方法来调优 pre-trained 的语言模型,以获得最佳的下游任务性能。总而言之,我们做出了以下贡献:

    • 我们表明,在自然语言理解方面,GPT 可以和 BERT 一样具有竞争力(有时甚至更好),而 P-tuning 可以提高 pre-trained 语言模型的性能。这表明,GPT 风格的架构在自然语言理解方面的潜力被低估了。

    • 我们表明,P-tuning 是一种通用的方法,可以在 few-shot settingfully-supervised setting 下改善 GPTBERT 。尤其地,通过 P-tuning ,我们的方法在 LAMA knowledge probingfew-shot SuperGlue 上的表现超过了 SOTA 的方法,这表明语言模型在预训练期间掌握了比我们之前想象的更多的世界知识和 prior-task 知识。

    论文缺乏消融研究部分,一些关键设计只有结论没有实验的验证。

  2. 相关工作:

    • 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-tokenfact retrieval 数据集。

    • Language Model PromptingGPT-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-tuningtransformer 的每一层都侵入性地拼接了 continuous prompt tokens ,因为作者发现仅仅在输入中 prompting 并没有效果;相反,P-tuning 非侵入性地只在输入中添加 continuous prompts 从而工作良好。

      • 最后,P-tuning 还介绍了如何使用 anchor prompts 来进一步改进。

        即,添加类似于 "?" 这样的 tokenprompts 中。

      尽管存在差异,我们认为我们的 P-tuningprefix-tuning 都指出,学习 continuous prompts 是有用的,并且优于 discrete prompt searching

28.1 方法

  1. 动机:GPT-3DALLE 的奇迹似乎表明,巨型模型总是不折不扣的提升机器智能的万能药。然而,在繁荣的背后,存在着不可忽视的挑战。一个致命的问题是,巨型模型的可迁移性很差。对于这些万亿规模的模型,在下游任务上的微调几乎很难进行。即使是对于 many-shot finetuning setting ,这些模型仍然太大,无法快速记忆 fine-tuning samples《Interventional few-shot learning》)。

    鉴于这一挑战,最近的工作集中在自动化搜索 discrete prompts,通过挖掘训练语料、 token-based 的梯度搜索、以及使用单独的模型来生成 prompts 。然而,我们深入研究了寻找 continuous prompts 的问题,其中 continuous prompts 可以通过微分来优化。

  2. 接下来,我们介绍了 P-tuning 的实现。与 discrete prompts 类似,P-tuning 只对输入进行非侵入性的修改。尽管如此,P-tuning 用它的differential output embeddings 取代了 pre-trained 语言模型的 input embedding

28.1.1 架构

  1. 给定一个 pre-trained 语言模型 M ,以及一个关于离散的 input tokens 的序列 x0:n={x0,x1,,xn}pre-trained embedding layer eMx0:n 映射为 input embeddings {e(x0),e(x1),,e(xn)}。在具体场景中,以上下文 x 为条件,我们经常使用一组 target tokens youtput embeddings 进行下游的处理。例如:

    • 在预训练中,x 指的是 unmasked tokens ,而 y 指的是 [MASK] tokens

    • 在句子分类中,x 指的是 sentence tokens ,而 y 往往指的是 [CLS]

    prompt p 的功能是将上下文 xtarget y 、以及自身组织成一个模板 T 。例如,在预测国家首都的任务中(LAMA-TREx P36 ),一个模板可能是 "The capital of Britain is [MASK]." (如下图所示),其中 "The capital of ... is ... ."prompt"Britain" 是上下文,"[MASK]"targetprompts 可以非常灵活,我们甚至可以将其插入上下文或 target 中。

    V 为语言模型 M 的词表,[Pi] 指的是模板 T 中的第 iprompt token 。为了简单起见,给定一个模板 T={[P0:i],x,[Pi+1:m],y},传统的 discrete prompts 满足 [Pi]V 并且将 T 映射为:

    (5){e([P0:i]),e(x),e([Pi+1:m]),e(y)}

    相反,P-tuning[Pi] 视为 pseudo tokens ,并将模板映射为:

    (6){h0,,hi,e(x),hi+1,,hm,e(y)}

    其中:hi 为可训练的 embedding 张量,0im 。这使我们能够在原始词表 V 之外找到更好的 continuous prompts 。最后,利用下游损失函数 L ,我们可以通过以下方式对 continuous prompt hi,0im 进行优化:

    (7)h^0:m=argminhL(M(x,y))

    其中:h={h1,,hm}

    注意,这里的 prefix 不一定要位于输入的开始,也可以位于输入的 XY 之间、甚至位于 Y 之后。

    关于 prefix 的长度、位置,论文没有进行消融研究。

28.1.2 优化

  1. 虽然训练 continuous prompts 的想法很直接,但在实践中,它面临着两个优化挑战:

    • 离散性:M 的原始 word embedding e 在预训练后已经变得高度离散。如果 h 被初始化为随机分布,然后用随机梯度下降法进行优化,已经被证明只在小范围内改变参数(《A convergence theory for deep learning via over-parameterization》),优化器将很容易陷入局部最小值。

    • association :另一个担忧是,从直觉上讲,我们认为 prompt embeddings hi 的值应该是相互依赖的,而不是独立的。我们需要一些机制来将 prompt embeddings 相互关联起来。

    鉴于这些挑战,在 P-tuning 中,我们建议使用一个由非常简单的神经网络组成的 prompt encoderhi 建模为一个序列,以解决离散性和关联问题。而在实践中,我们选择了一个双向的 long-short term memory network: LSTM ,具有 ReLU 激活的双层 multilayer perceptron: MLP ,从而鼓励离散性。正式地,语言模型 Minput embeddings hi 为:

    (8)hi=MLP([hi:hi])=MLP([LSTM(h0:i):LSTM(hi:m)])

    虽然 LSTM head 的使用确实给 continuous prompts 的训练增加了一些参数,但 LSTM headpre-trained 模型要小几个数量级。而且,在推理中,我们只需要输出 embedding h ,可以舍弃 LSTM head

    Prefix-Tuning 直接采用简单的 MLP ,那么它采用这里的 LSTM + MLP 是否也能提升效果?

    这种优化 h 的方式也不太优雅,与 Prefix-Tuning 一样都是采用了参数化技巧。

    此外,为什么这里要用 LSTM?论文没有进行消融研究。

  2. 此外,我们还发现,在 SuperGLUE 基准测试中,添加一些 anchor tokens 有助于一些自然语言理解任务。例如,对于 RTE 任务,在 prompt 模板 "[PRE][prompt tokens][HYP]?[prompt tokens][MASK]" 中特别添加一个 anchor token "?" ,对性能有很大的影响。通常情况下,这样的 anchor words 代表了每个组件的特性,在这个例子中,"?" 表示 "[HYP]" 作为一个询问部分。

    缺乏消融研究。

28.2 实验

28.2.1 Knowledge Probing

  1. 知识探测,或被称为事实检索(fact retrieval),评估语言模型从预训练中获得了多少现实世界的知识。LAMA 数据集通过从知识库中选择的三元组创建的完形填空测试来评估它。例如,我们将把三元组 (Dante, born-in, Florence) 转化为一个带有人工的 prompt (即,"Dante was born in [MASK].")的完形填空句子,然后我们要求语言模型推断出 target 。因为我们要评估从预训练中获得的知识,所以 pre-trained 语言模型的参数是固定的(即不进行微调)。

  2. 数据集:LAMA

    LAMA 强迫所有的答案都是 single-token 的格式。我们首先采用原始的 LAMA-TREx 数据集,其中包括 41Wikidata 关系和总共 34,039 个测试三元组(即 LAMA-34k ,它涵盖了所有的 BERT 词表)。由于 GPTBERT 的词表不同,我们建立了另一个版本的 LAMA ,它涵盖了 GPT 词表和 BERT 词表的交集。这个子集加起来大约有 29k 个测试三元组,我们把它命名为 LAMA-29k

    至于训练,所有的 prompt searching 方法都需要一些额外的数据来训练或寻找 prompts 。我们遵循 AutoPrompt《Autoprompt: Eliciting knowledge from language models with automatically generated prompts》) 中的设置,作者从原始 TRE-x 数据集中构建了一个训练集。这个训练集与测试集类似,但答案分布略有不同。

  3. 评估:最初,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) 模板?论文并未说明。

  4. 实验结果:结果如下表所示。可以看到:

    • P-tuning 极大地推动了知识探测的效果,在 LAMA-34k 中从 43.3% 提升到 50.6%,在 LAMA-29k 中从 45.2% 提升到最高64.2% 。这一结果有力地表明,语言模型仅仅通过寻找更好的 prompt ,在没有微调的情况下捕获到的知识远比人们以前认为的要多。

    • P-tuning 与以前的 discrete prompt searching 方法如 AutoPromptLPAQA 在相同大小的模型上进行比较时,P-tuning 仍然优于它们。

      AutoPrompt 这一行代表什么含义?是 AutoPrompt 结合 P-tuning ,还是仅仅代表 AutoPrompt ?论文未说明。读者猜测是仅仅代表 AutoPrompt

  5. P-tuning v.s. Fine-tuning:在传统的知识探测中,不允许通过微调来改变 pre-trained 模型的参数。我们试图评估语言模型在预训练期间学到了多少知识。然而,这项工作的基本内容是比较 P-tuningfine-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-tuningfine-tuning-based 方法相当或更好,这令人惊讶但也是合理的。

    令人惊讶的是,微调应该是更有潜力的,因为它调优了所有语言模型的参数,而 P-tuning 则没有调优语言模型的参数。然而,这也是合理的,因为就知识探测而言,许多事实只能是 hard-coded 的,而不是由语言模型推断的。参数的微调可能会导致灾难性的遗忘。相反,P-tuning 并不改变 pre-trained 模型的参数,而是通过寻找更好的 continuous prompt 来唤起所存储的知识。

    此外,有趣的是,看到 BERTP-tuning 的改善、和 GPTP-tuning 的改善之间存在明显的差距。带有高质量人工 prompts 的微调(MP+FT )(PET-2LM-BFF)已被证明是相当有效的,这在我们的实验中也被观察到。然而,令人惊讶的是,GPTMP+FT 中受益的程度不如从 P-tuning 中受益的程度,而 BERTMP+FP 中收益程度与从 P-tuning 中收益程度相当。换句话说,P-tuning 显示出与单向语言模型更好的亲和性。就更大的模型而言,如具有 11B 参数的 MegatronLM ,虽然微调几乎不工作,但 P-tuning 仍然适用,并在 LAMA 上达到了 SOTA

28.2.2 SuperGLUE

  1. 我们在 SuperGLUE 基准上进行了实验从而评估 P-tuning 。总共有 8 个自然语言理解任务,我们专注于其中的 7 个任务,因为另一个任务 ReCoRD 没有采用 prompts ,因此没有 P-tuning 。这七个任务包括:问答 (BoolQMultiRC )、文本蕴含( CBRTE )、共指解析(WiC )、因果推理(COPA )、以及词义消歧( WSC )。

  2. 对于实验设置,我们考虑了 fully-supervised settingfew-shot setting

    • fully-supervised setting 中,我们使用整个训练集( Dtrain )并使用验证集(Ddev )进行模型选择和超参数调优。

    • 对于 few-shot setting ,我们采用 SuperGLUEfew-shot (也称为 FewGlue )。FewGLUESuperGLUE 的一个子集,每个任务由 32 个训练数据(Dtrain32 )和一个不同规模(数据集大小从 40020000 )的未标记集(Dunlabeled )组成。

      以前的工作(PET finetuning)假定没有任何验证集,并根据经验选择采用固定的超参数(这基本上是过拟合于测试集)。与它不同的是,我们构建了适当的few-shot 验证集(表示为 Ddev32 )。由于已经证明较大的验证集会带来额外的显著优势(LM-BFF),所以 Ddev32 是通过从未使用的训练数据中随机选择样本来构建的,并且严格限制其不大于 few-shot 训练集 Dtrain32 的大小。

    我们采用与PET-2 相同的评价指标。

  3. 我们将自然语言理解任务重新表述为完形填空任务。与PET finetuning 使用带有人类手工制作的 prompts 的模式不同,P-tuninginitial prompt embeddings 放在不同位置,然后与 pretrained 模型一起微调 prompt embeddings

    • 对于 fully-supervised settings ,我们使用具有线性衰减学习率的 AdamW optimizer 。我们对超参数进行网格搜索,在DdevDdev32 上采取最佳的超参数组合。具体而言,我们采用 {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 的微调需要更多步数。

  4. P-tuning 可以用于所有的单向模型和双向模型。我们选择总计算量相似的模型进行公平的比较,其中我们选择 BERT-baseGPT2-base 进行比较、BERT-largeGPT2-medium 进行比较。像 RoBERTa 这样的模型具有类似的模型规模,但是是用更大的计算量来训练的,应该与更大规模的 GPT 进行比较。这将留给未来的工作。

    此外,对于 few-shot learning ,我们也用 albert-xxlarge-v2 进行了实验,它在 PET-2 中被证明是在 few-shot setting 中表现最好的 pretrained 模型。对于每个 pretrained 模型,我们报告了 standard finetuning (即使用 [CLS] embedding 进行分类)、PET finetuningPET zero-shotP-tuning 的性能。

  5. Fully-supervised Learning:主要结果见 Table 3Table 4

    • 首先,对于 bert-base-cased 模型 bert-large-cased 模型,P-tuning7 个任务中的 5 个任务上优于所有其他 bert-based 模型。

      例外的是 WiCMultiRCP-tuning 的表现比 standard fine-tuning 差一点。由于 WiCMultiRC 都有相对较大的训练集,我们猜测这可能是由于 standard fine-tuning 可以从较大的数据集中获得比 P-tuning 更多的优势。相反,P-tuninglow-resource setting 下似乎更有利。类似的观察也在后面的实验中显示。

    • 其次,对于 gpt2-basegpt2-medium 模型,P-tuning 在所有 gpt2-base 模型中取得了最有前景的结果。

    综上所述,我们可以得出结论,P-tuning 可以有效地提高 bert-based 模型和 gpt-based 模型的自然语言理解性能。

    此外:

    • base 模型的规模下,带有 P-tuninggpt2-base7 个任务中的 6 个任务上超过了 BERT-based 模型的最佳结果,同时在 WiC 上取得了相差无几的结果。

    • large 模型的规模下,带有 P-tuningGPT2-medium7 个任务中的 4 个任务上显示出优势,而在 RTEWSC 任务上则具有可比性。唯一的例外是 WiC 任务。我们注意到,在 WiC 任务中,标准微调在不同 setting 的模型上显示出最佳结果。我们推测,这是因为词义消歧任务不适合 prompt-based MLM prediction

    最重要的是,我们得出结论,通过 P-tuningGPT2 实现了与 BERT-based 模型相当的甚至更好的性能。这一发现颠覆了我们的普遍看法,即双向模型(如 BERT )在自然语言理解任务中总是比单向模型(如 GPT2 )更好。

  6. Few-shot learninng

    • 次优的和敏感的 Manual Prompts:最初,PET/iPETSuperGLUEfew-shot learning 任务上,通过几个人工编写的prompts 实现了 SOTA ,这些 prompts 是有效的但却是次优的,而且是劳动密集型的。

      为了全面了解 manual prompts ,我们首先进行了比较实验。Table 6 显示了使用不同 manual promptsP-tuning 的结果。

      • 首先,结果显示,few-shot 的表现与 prompts 的语义、格式、语法没有明显的关联。人类认为合理的prompts 对语言模型不一定有效。

      • 第二,manual prompts 的细微变化会导致大幅度的性能差异。pretrained 语言模型对 prompts 的选择相当敏感。

      我们可以得出结论,人工手写的 prompts 比我们想象的要复杂。此外,Table 6 还证明,使用 Ddev32 不可能找到表现最好的 manual prompts 。这表明,在 few-shot setting 中挑选出最好的 manual prompts 也很有挑战性。相比之下,P-tuning 在自动寻找更好的 prompts 方面似乎很有希望,而手工制作的 prompts 的希望要少得多。

    • SuperGLUE Few-shot Learning 的新的 SOTATable 5 列出了通过 P-tuning 实现的 Super-GLUE few-shot learning 的最新结果。我们将其与几个 baseline 进行了比较,包括 PETGPT-3 ,其中 GPT-3 实现了以前的 SuperGLUE Few-shot SOTA

      值得注意的是,除了 manual prompt finetuning 外,原始 PET 采用了多种额外的技术,包括数据增强、ensemble 、以及知识蒸馏,以提高性能。此外,它通过过拟合测试集来进行模型选择和超参数调优。为了确保公平的比较,PET 在我们的 Ddev32 setting 下进行了重新实验,去除所有的辅助技术(数据增强、ensemble 、知识蒸馏)。考虑到 PET 提供了多个 manual prompts ,这里报告了平均的 prompt 性能和最佳的 prompt 性能。

      Table 5 说明,P-tuning 在所有任务上的表现一直优于具有manual promptsPETDdev32 )和 PET-bestDdev32)。在 7 个任务中的 5 个任务上,解决方案对 PETDdev32 )的改进大于 multiple patterns 的标准差,证明 P-tuning 可以搜索到远比 manual prompts 提示更好的 prompts ,并显著提高 few-shot 任务的性能。在包括 CB, WiC, RTE, WSC 的任务上,P-tuning 甚至优于 PET/iPETDdev ),后者采用了辅助技术(数据增强、ensemble 、知识蒸馏)。与 GPT-3 相比,虽然 GPT-3 的规模比 P-tuning 大得多(albert-xxlargev2 ),P-tuning7 个任务中的 6 个任务中表现优异。结果证明了 P-tuningfew-shot 自然语言理解任务中的优势。

  7. Finetuning v.s. MP finetuning v.s. P-tuningTable 3Table 4 列出了三种 tuning-based 范式在提高自然语言理解的性能方面的结果。我们对这些 tuning-based 范式的不同表现特别感兴趣。

    • 总的来说,P-tuningBERT-based 模型上平均比fine-tuningMP fine-tuning 高出 2 分左右,在 GPT2-based 模型上平均比fine-tuningMP fine-tuning 高出 5 分左右。

    • 具体来说,尽管 P-tuning 在大多数任务上取得了最好的结果,但fine-tuning 在那些难以制定成完形填空问题的任务(如WiC)上可以胜出。

    • 比较 P-tuningMP fine-tuningP-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[2021]

论文:《P-Tuning v2: Prompt Tuning Can Be Comparable to Fine-tuning Universally Across Scales and Tasks》

  1. pretrained 语言模型改善了各种自然语言理解任务的性能。一种广泛使用的方法,即微调,为 target 任务更新整个模型的参数集合。虽然微调获得了良好的性能,但它在训练过程中很耗费内存,因为必须存储所有参数的梯度和 optimizer states 。此外,在推理过程中为每个任务保留一份模型参数是不方便的,因为 pre-trained 模型通常很大。

    另一方面,prompting 冻结了 pretrained 模型的所有参数,并使用自然语言 promptquery语言模型(GPT-3 )。例如,对于情感分析,我们可以将一个样本(例如,"Amazing movie!" )与一个 prompt "This movie is [MASK]" 拼接起来,并要求 pre-trained 语言模型预测 pre-trained"good""bad" 的概率,以决定该样本的标签。prompting 完全不需要训练,只需存储一份模型参数。然而,与微调相比,discrete promptingAutopromptLM-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 tuningprompting 有所改进,但当模型规模不大,特别是小于 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》)的优化的和适配的实现,旨在 generationknowledge probing 。最显著的改进来自于对 pretrained 模型的每一层(而不仅仅是输入层)应用 continuous promptsdeep prompt tuning 增加了 continuous prompts 的能力,并缩小了在各种 setting 下与微调的差距,特别是对于小模型和困难任务。此外,我们提出了一系列优化和实现的关键细节,以确保 finetuning-comparable 的性能。

    实验结果表明,P-tuning v2 在不同的模型规模(从 300M100B 参数)和各种困难的序列标注任务(如抽取式问答、命名实体识别)上的性能与微调相媲美。与微调相比,P-tuning v2 每个任务的可训练参数仅为微调时的 0.1%3% ,这大大降低了训练时间成本、训练内存成本、以及每个任务的存储成本。

    P-tuning v2P-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

29.1 方法

  1. 自然语言理解任务:在这项工作中,我们将自然语言理解任务的挑战分为两个系列:简单的分类任务、困难的序列标注任务。

    • 简单的分类任务涉及 label space 上的分类。GLUESuperGLUE 的大多数数据集都属于这个类别。

    • 困难的序列标注任务涉及对tokens 序列的分类,如命名实体识别、抽取式问答。

  2. Prompt Tuning:令 V 是语言模型 M 的词表,令 eMembedding layer 。在 discrete promptingPET-2)的案例中 ,prompt tokens {"It", "is", "[MASK]"}V 可以用来对一篇电影评论进行分类。例如,给定输入文本 x="Amazing movie!"input embedding sequence 被表述为 [e(x),e("It"),e("is"),e("[MASK]")]

    《The power of scale for parameter-efficient prompt tuning》《Gpt understands, too》 介绍了可训练的 ·continuous prompts,作为自然语言理解任务的自然语言 prompts 的替代,其中 pretrained 语言模型的参数被冻结。给定可训练的 continuous embeddings [h0,,hi]input embedding sequence 被写成 [e(x),h0,,hi,e("[MASK]")] ,如下图所示。事实证明,在简单的分类任务上,在百亿参数的模型上, prompt tuning 与微调不相上下。

    注意,下图和 P-Tuning 的原始论文有差异。在 P-Tuning 原始论文中:

    • continues embeddings 仅应用于输入层,但是这里应用到了 Layer 1 Prompts

    • continues embeddings 不仅仅在序列中间插入,而是可以在序列的头部插入一部分、在序列的中间插入一部分、甚至在序列的尾部插入一部分。

  3. 缺乏普遍性:《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 可以与微调相媲美。然而,对于被广泛使用的中型模型(从 100M1B ),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 和跨自然语言理解任务的通用解决方案。

  4. 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 的分析)。

  5. 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 方法的概念性比较。

29.2 实验

  1. 我们在一组常用的 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 下)进行的。

  2. 自然语言理解任务:首先,我们包括来自 SuperGLUE 的数据集,以测试 P-tuning v2 的通用 NLU 能力。此外,我们还引入了一套序列标注任务,包括命名实体识别、抽取式问答、和语义角色标注。

  3. pre-trained 模型:BERT-large, RoBERTa-large, DeBERTa-xlarge, GLMxlarge/xxlarge 。它们都是为自然语言理解任务设计的双向模型,涵盖了从约 300M10B 的广泛规模。

  4. 多任务学习:对于多任务设置,我们结合每个任务类型的训练集(例如,结合语义角色标注任务的所有训练集)。我们对每个数据集使用单独的线性分类器,同时共享 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) pairspan作为被提取的答案。如果最有把握的 pair 的概率低于阈值,该模型将假定该问题是不可回答的。

      对于multitask setting,我们用于预训练的训练集结合了 SQuAD 1.12.0 的训练集。在预训练时,我们假设所有的问题,无论其来源如何,都可能是无法回答的。

    • 语义角色标注(Semantic Role Labeling: SRL ):任务是为句子中的单词或短语分配标签,表明它们在句子中的语义作用。

      我们在 CoNLL05, CoNLL12 上评估P-tuning v2 。由于一个句子可以有多个动词,我们在每个句子的末尾添加 target verb token ,从而帮助识别哪个动词用于预测。我们根据相应的语义角色 representation ,用线性分类器对每个词进行分类。

      对于multitask setting ,预训练训练集是 CoNLL05CoNLL12propbank-release (用于训练语义角色标注的常见扩展数据)的训练集的组合。多任务训练策略与NER类似。

  5. 跨所有模型大小的结果:下表列出了 P-tuning v2 在不同模型规模上的表现。

    SuperGLUE 中,《The power of scale for parameter-efficient prompt tuning》P-tuning 在较小规模上的表现可能相当差。相反,P-tuning v2 在较小规模的所有任务中都与微调的性能相媲美。P-tuning v2 甚至在 RTE 上明显优于微调。

    就较大尺度(2B10B )的 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 参数。

  6. 跨所有任务的结果:从下表可以看出,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-tuningSQuAD 2.0 上有一些异常的结果。这可能是因为 SQuAD 2.0 包含不可回答的问题,这给 single-layer prompt tuning 带来了优化挑战。

    除了 QA 之外,多任务学习一般会给 P-Tuning v2 的大多数任务带来明显的改进。

  7. 消融研究:

    • Verbalizer with LM head v.s. [CLS] label with linear headVerbalizer with LM head 一直是以前的 prompt tuning 方法的核心组成部分。然而,在 supervised setting 中,对于 P-tuning v2 ,用大约几千个参数来调优一个 linear head 是可以承受的。

      我们在 Table 4 中展示了我们的比较,其中我们保留了其他的超参数,只将 [CLS] labellinear 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-tuningP-tuning v2 的主要区别是 multi-layer continuous prompts 。为了验证它的确切影响,给定一定数量的 k 层来添加 prompts ,我们按照升序和降序选择它们来添加 prompts ;对于其余的层,我们不作任何处理。

      Figure 3 所示,在参数数量相同的情况下(即要添加 promptstransformer layers 数量),按降序添加总是比按升序添加好。在 RTE 的情况下,只在第 17-24 层添加 prompts 可以产生与所有层添加 prompts 非常接近的性能。

    • Embedding v.s. MLP reparameterization:在 prefix-tuningP-tuning 中,作者发现 reparameterization 在提高训练速度、鲁棒性和性能方面很有用。然而,我们进行的实验表明,reparameterization 的效果在不同的 NLU 任务和数据集中是不一致的。

      Figure 4 所示:

      • RTECoNLL04 中,MLP reparameterization 通常表明在几乎所有的 prompt 长度上都比 embedding 的性能好。

      • 然而,在 BoolQ 中,MLPembedding 的结果是相差无几的。

      • CoNLL12 中, embedding 的结果一直优于 MLP

    • Prompt 长度:prompt 长度是 P-tuning v2 的另一个有影响力的超参数,其最佳值因任务而异。从 Figure 4 中我们观察到:

      • 对于简单的 NLU 任务,通常情况下,较短的 prompts 就能获得最佳性能。

      • 对于困难的序列任务,通常情况下,长于 100prompts 会有帮助。

      我们还发现,reparameterization 与最佳 prompt 长度有着密切的联系。例如,在 RTE, CoNLL04, BoolQ 中,MLPreparameterizationembedding 更早达到最佳结果。这一结论可能有助于对 P-tuningoptimization 属性进行一些思考。

三十、The Power of Scale for Parameter-Efficient Prompt Tuning[2021]

论文:《The Power of Scale for Parameter-Efficient Prompt Tuning》

  1. 随着 pre-trained 大型语言模型的广泛成功,出现了一系列的技术来适配这些通用模型的下游任务。ELMo 提出冻结 pre-trained 模型并学习其每层表征的 task-specific weighting 。然而,自 GPTBERT 以来,主流的 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 175BSuperGLUE 上的 few-shot 性能比 fine-tuned T5-XXL17.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 模型,只允许每个下游任务有额外的 ktunable 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 (没有中间层 prefixtask-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-TuningP-TuningP-Tuning v2 都采用了重参数化技巧,这增加了训练的复杂性。

    Prefix-TuningP-Tuning v2 对每一层添加了 continues prompts,相比之下这里仅对输入层添加了 continues prompts

    P-Tuning 也是仅对输入层添加了 continues prompts ,但是 P-Tuning 允许在输入的不同位置插入 continues prompts 。相比之下这里仅在输入的头部插入 continues prompts

30.1 Prompt Tuning

  1. 遵从 T5"text-to-text" 的方法,我们把所有的任务作为 text generation 。我们现在不是将分类任务建模为给定某个输入 X 的条件下输出类别 y 的概率 Pr(yX),其中 Xtokens 的一个序列,y 是单个 class label ;而是将分类任务建模为 conditional generation Pr(YX),其中 Y 是代表一个 class labeltokens 序列 。 T5 建模分类任务为 Prθ(YX),由编码器和解码器组成的 transformer 来建模,θ 为模型参数。

  2. promptinng 是在生成 Y 的过程中为模型添加额外信息的方法。通常情况下,prompting 是通过在输入 X 的前面添加 tokens 序列 P 来完成的,这样模型就能最大化正确的 Y 的似然( Prθ(Y[P;X]) ),同时保持模型参数 θ 固定。在 GPT-3 中,prompt tokens P={p1,p2,,pn}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 消除了提示语 Pθ 参数化的限制;相反,prompt 有自己的专用的、可以被更新的参数 θPprompt design 涉及从frozen embeddingsfixed vocabulary 中选择 prompt tokens ,而 prompt tuning 可以被认为是使用 special tokensfixed prompt ,其中只有这些 prompt tokensembedding 可以被更新。我们新的 conditional generation 现在是 Prθ;θP(Y[P;X]),可以通过反向传播来最大化 Y 的似然从而进行训练,但是只对 θP 应用梯度更新。

    具体而言,给定 ntokens 组成的序列 {x1,x2,,xn}T5 做的第一件事是嵌入 tokens ,形成一个矩阵 XeRn×e,其中 eembedding 空间的尺寸。我们的 soft-prompts 被表示为一个参数 PeRp×e,其中 pprompt 的长度。然后,我们的 prompt 被拼接到 embedded input ,形成单个矩阵 [Pe;Xe]R(p+n)×e,然后像正常一样馈入 encoder-decoder 。我们的模型被训练成最大化 Y 的概率,但只有 promp 参数 Pe 被更新。

    这是 Prefix-tuning 在仅有输入被添加 prefix 的特殊情况,根据 prefix-tuning 的论文,这种情况的效果不佳。猜测原因是:Prefix-tuning 中的模型规模不够大;Prefix-tuning 采用了重参数化技巧的影响。

30.1.1 Design Decisions

  1. 有许多可能的方法来初始化 prompt representations

    • 最简单的是从头开始训练,使用随机初始化。

    • 一个更复杂的选择是将每个prompt token 初始化为一个从模型词表中提取的 embedding 。从概念上讲,我们的 soft-prompt 以与 text preceding the input (即,普通的 prompt )相同的方式来调节 frozen network 的行为,因此,word-like representation 可能会成为一个好的初始化点。

    • 对于分类任务,第三个选择是用列举 output classesembeddings 来初始化 prompt ,类似于 《Exploiting cloze-questions for few-shot text classification and natural language inference》"verbalizers" 。由于我们希望模型在输出中产生这些 tokens ,用 valid target tokensembedding 来初始化 prompt 应该使模型将其输出限制在合法的输出类别中。

    论文 《PPT: Pre-trained Prompt Tuning for Few-shot Learning》 表明:在full-data training 下更小模型上表现好的初始化方法,在few-shot training 下更大模型中不一定有效。

  2. 另一个设计考虑是 prompt 长度。我们方法的参数成本是 e×p,其中 etoken embedding 维度,pprompt 长度。prompt 越短,必须被调优的新参数就越少,所以我们的目标是找到一个仍然表现良好的最小长度。

30.1.2 Unlearning Span Corruption

  1. GPT-3 等自回归语言模型不同,我们试验的 T5 模型使用 encoder-decoder 架构,并对 span corruption objective 进行预训练。具体来说,T5 的任务是 "重建" 输入文本中的 masked spans ,这些 spans 被标记为独特的哨兵 tokenstarget 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>"

  2. 虽然 《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 。事实上,由于 T5span 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 做出良好的响应。与从头开始的预训练相比,这种后期转换的成功率并不明显,而且据我们所知,以前也没有人研究过这种情况。因此,我们对各种训练 stepsadaptation 进行了实验,最高可达 100K 步。

30.2 实验

  1. 实验配置:

    • 模型:各种尺寸的 pre-trained T5 checkpointsSmall, Base, Large, XL, XXL )。我们利用公共的 T5.1.1 checkpoitn ,其中包括对原始 T5.1 的改进。

    • 默认配置为绿色的 x 线,使用经过 LM-adaptedT5 版本(额外训练了 100k 步),使用 class labels 进行初始化,并使用 100 tokensprompt 长度。虽然这比 Prefix-tuning 使用的默认的 10-token prefix 要长,但我们的方法仍然使用较少的 task-specific 参数,因为我们只调优了输入层,而不是覆盖所有网络层的激活。

    • 数据集:SuperGLUE 。我们的每个 prompt 都在单个的 Super-GLUE 任务上进行训练,没有多任务设置或跨任务来混合训练数据。

    • 我们使用 T5 的标准交叉熵损失训练我们的 prompts30k 步,学习率恒定为 0.3batch size = 32checkpoint 是通过验证集上的早停来选择的,其中停止的指标是数据集的默认指标,或者是用多个指标评估的数据集的平均指标。所有实验都在JAX 中运行,使用 Adafactor 优化器,权重衰减 1e-5β2衰减 0.8parameter scaling off 。这些模型在 Flax 中实现。更多细节见附录 A

  2. 实验涉及到的数据的统计信息:

  3. 训练耗时:

  4. 可训练参数的占比:

30.2.1 弥补差距

  1. 为了将我们的方法与标准 model tuning 进行比较。我们考虑两个 baseline

    • "Model Tuning":为了进行一对一的比较,我们对每个任务分别进行调优,就像我们的 prompt tuning setup 一样。

    • "Model Tuning (Multitask)":我们使用 T5multi-task tuning setup 来实现一个更具竞争力的 baseline 。在这种情况下,单个模型在所有的任务上被联合调优,用 text prefix 表示任务名称。

    在下图中,我们看到,随着规模的增加,prompt tuningmodel tuning 的竞争变得更加激烈。在 XXL 规模( 11B 参数)下,prompt tuning 甚至与更强大的 multi-task model tuning 基线相匹配,尽管其 task-specific 参数少了 20000 倍。

    为了与 prompt design 进行比较,我们将 GPT-3 few-shotSuperGLUE dev split 上性能包括在内。下图显示,prompt tuning 以很大的优势击败 GPT-3 prompt designprompt-tuned T5-SmallGPT-3 XL (参数规模超过 16 倍)相匹配, prompt-tuned T5-Large 击败了 GPT-3 175B (参数规模超过 220 倍)。

30.2.2 消融研究

  1. Prompt LengthFigure 3(a)):对于大多数模型规模,增加 prompt 长度超过一个 token 是实现良好性能的关键。值得注意的是,XXL 模型在 single-token prompt 下仍有很好的效果,这表明模型越大,实现目标行为所需的 conditioning signal 就越少。在所有的模型中,增加到 20 tokens 以上只能产生微弱的收益。

    tokens 数量增加到 150 的时候,效果反而下降。这说明发生了过拟合。

  2. Prompt InitializationFigure 3(b)):

    • 对于随机初始化,我们从 [-0.5, 0.5] 范围内均匀采样。

    • 对于 sampled vocabulary 初始化,我们从 在 T5Sentence-Piece 词表中最 "常见" 的 5000 tokens 中随机采样,其中 tokens 按照在预训练语料库中的频次来排序。

    • 对于 class label 初始化,我们采用下游任务每个类别的字符串对应的 embedding 来初始化 prompt 中的一个 token。当一个 class labelmulti-token 时,我们采用 token embeddings 的均值。

      对于较长的 prompt,通常在使用 class label 初始化之后,还剩下很多 prompt tokens 尚未初始化,此时我们采用 sampled vocabulary 初始化。

    我们发现基于 class label 的初始化表现最好。在较小的模型尺寸下,不同的初始化之间有很大的差距,但是一旦模型被放大到 XXL 规模,这些差异就会消失。

  3. Pre-training ObjectiveFigure 3(c)):pre-training objectiveprompt tuning 质量有明显的影响。

    • T5 默认的 "span corruption" objective 并不适合于训练 frozen 的模型从而用于后续的 conditioned by prompts

    • 即使是在下游目标中添加哨兵的 "变通方法" 也没有什么好处。

    • LM adaptation 在所有的模型规模中都增加了效果。

    • 我们最大的 XXL 模型是最宽容的,即使是 span corruption objective 也能给出强有力的结果。

  4. 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 版本在所有模型大小上都工作可靠。

  5. 我们已经发布了 T5 1.1 checkpoint ,使用 LM objective 对所有模型大小进行了 100K 步的适配。

    没有关于训练样本数量的消融研究?这方面的消融研究可以参考 PPT 的实验部分。总体而言,样本数量越少,Prompt TuningFine Tuning 的差异越大。

30.2.3 与相似方法的比较

  1. 如下图所示,在具有可学习参数的方法中,prompt tuning 的参数效率最高,对于超过 1B 参数的模型,需要不到 0.01%task-specific 参数。

    • prefix tuning:学习 prefix 的一个序列,该序列添加到每个 transformer layer 的前面。相比之下,prompt tuning 使用单个 prompt representation ,该 prompt representation 被添加到 embedded input 之前。

      prefix tuning 还需要 prefix 的重参数化来稳定学习,这在训练过程中增加了大量的参数;而我们的配置不需要这种重新参数化。

    • WARPprompt parameters 被添加到输入层。它限制模型产生单个输出,且限制为分类任务。prompt tuning 没有这些限制。

    • P-tuning:可学习的 continuous promptsembedded 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 语言模型中提取知识。 promptinput 的位置关系是基于手工设计的 prommtp prototypes ,每一层都包含一个学到的 Δil 参数,所以参数成本随着模型深度的增加而增加。

    • 《Few-shot sequence learning with transformers》:使用一个可学习的 prepended token 来使 transformer 模型适应各种任务,但重点是小的合成数据集,旨在适应 compositional task representation ,而不是较大的真实世界数据集。

    • 更广泛地说,关于 task prompts 的工作与关于 "adapters" 的工作密切相关,即在 frozen pre-trained network layers 之间插入小型 bottleneck layersadapters 提供了另一种减少task-specific 参数的手段。

      • 《Parameter-efficient transfer learning for NLP》 在冻结 BERT-Large 并只增加 2-4% 的额外参数时,实现了接近 full model tuningGLUE 性能。

      • 《MAD-X: An Adapter-Based Framework for Multi-Task Cross-Lingual Transfer》 在多语言背景下使用多个 adapters ,明确地将语言理解与任务规范分开,与我们的方法类似。

      adaptersprompt tuning 之间的一个核心区别是:这些方法如何改变模型行为。

      • adapters 通过允许重写任何给定层的 activations 来修改实际函数,该函数作用于 input representation 并由神经网络参数化。

      • prompt tuning 通过保持函数的固定、以及增加新的 input representation 来修改行为,这些 new input representation 会影响后续输入的处理方式。

30.2.4 对 Domain Shift 的恢复能力

  1. 通过冻结 core language model parametersprompt tuning 防止模型修改模型对语言的通用理解。相反,prompt representations 间接地调节了输入的 representation 。这减少了模型通过记忆特定的词汇线索、以及记忆虚假的相关关系来过拟合数据集的能力。这一限制表明,prompt tuning 可能会提高对 domain shift 的鲁棒性,即输入的分布在训练和评估之间有所不同。

  2. 我们在两个任务上研究 zero-shot domain transfer:问答、paraphrase detection

  3. 问答任务:MRQA 数据集作为 in-domain 数据集,然后我们在下表中的数据集(作为 out-of-domain )上评估。prompt tuning 大多数 out-of-domain 数据集上优于 model tuning 。在 domain shifts 较大的情况下(如 BioASQ 中的生物医学或 TextbookQA 中的数据集),prompt tuning 的收益更大。

  4. paraphrase detection :第一个任务是 QQP ,它询问社区问答网站 Quora 的两个问题是否是 "重复的"。第二个任务是 MRPC ,它询问的是来自新闻文章的两个句子是否是转述。和前面一样,我们在 "in-domain" 任务上进行训练,用 in-domain 验证集选择 checkpoint ,并在"out-of-domain" 任务上进行 out-of-domain 评估。

    结果表明:在 QQP 数据上训练一个轻量级的 prompt 并在 MRPC 上进行评估,比调优整个模型的性能好得多。在另一个方向上,结果要接近得多,prompt tuning 显示了准确率的小幅提高和 F1 的小幅下降。

    这些结果支持这样的观点:model tuning 可能是过度参数化的,更容易过拟合训练任务,对不同领域的类似任务不利。

30.2.5 Prompt Ensembling

  1. 在相同数据上从不同的初始化而训练出来的一组神经模型,对这组模型的 ensembles 被广泛观察到:改善了任务表现,并且对于估计模型的不确定性很有用。然而,随着模型规模的增加,ensembling 可能变得不切实际。除了存储 N 个模型所需的空间外(例如T5-XXL 的每个副本需要 42GiB ),运行 N 个不同的模型(无论是并行还是串联)都有很大的推断成本。

    prompt tuning 提供了一种更有效的方式来ensemble pre-trained 语言模型的多个 adaptations 。通过在同一任务上训练 Nprompts ,我们为一个任务创建了 N 个独立的 "模型",同时仍然在整个过程中共享 core language modeling parameters 。除了大幅降低存储成本外,prompt ensemble 还使推断更有效率。为了处理一个样本,与其计算 N 个不同模型的前向传播,我们可以执行一个 batch size = N 的单次前向传播,在整个 batch 中复制该样本并改变 prompt 。这些节约反映了 Figure 2 中多任务处理的情况。

  2. 为了证明 prompt ensembling 的可行性,我们为每个 SuperGLUE 任务训练了五个 prompts ,使用一个 frozen T5-XXL 模型和我们默认的超参数。我们使用简单的多数投票来计算 ensemble 的预测结果。Table 3 显示,在所有的任务中,ensemble 都比单个 prompt 的均值要好,也比最好的单个 prompt 要好或与之匹配。

30.2.6 可解释性

  1. 一个理想的可解释的 prompt 由自然语言组成,它清楚地描述了手头的任务,明确地要求模型做出一些结果或行动,并使人容易理解为什么 prompt 会从模型中引导这样的行为。

    由于 prompt tuning 是在连续的 embedding space 而不是离散的 token space 中工作,解释 prompt 变得更加困难。为了测试我们学到的 soft prompts 的可解释性,我们从冻结的模型词表中计算出每个 prompt token 的最近邻(余弦相似度作为距离指标)。

    • 我们观察到,对于一个给定的 learned prompt tokentop-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 的一个作用可能是引导模型解释特定领域或背景下的输入(例如 "科学")。

三十一、Querying LMs with Mixtures of Soft Prompts[2021]

论文:《Learning How to Ask: Querying LMs with Mixtures of Soft Prompts》

  1. pretrained 语言模型(如 ELMoBERT、和 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-deathprompt

    这个 prompt 可能适用于男歌手 Cab Calloway ,但如果我们希望它也适用于女画家 Mary Cassatt ,可能有助于软化 "performed""his" ,以避免强调错误的职业和性别,并且可以将 "until" 软化为一个较弱的介词(因为事实上 Cassatt 在她最后的几年里失明无法继续绘画)。

    另一种将这些情况联系起来的方法是:一个 prompt 使用 "performed" ,另一个 prompt 使用 "painted" 。一般来说,可能有许多不同的词汇模式可以表明特定的 relation ,使用更多的模式将获得更好的覆盖率。因此,我们提出了学习 mixture of soft prompts 的方法。

    我们在几个完形填空语言模型上测试了这个想法,训练了用于补全三个数据集中的事实关系和常识关系的 prompts 。通过对 held-out 样本进行比较,我们的方法显著优于先前的工作,即使是随机初始化的情况下也是如此。因此,当将其视为近似知识库时,语言模型知道的东西比我们意识到的要多。我们只是需要找到正确的提问方式。

  2. 相关工作:

    • 大多数先前的工作都是手动创建 prompts 来从 trained 语言模型中提取答案。

      • LM Prompt And Query Archive: LPAQA 方法通过挖掘语料库、或 paraphrasing 现有 prompts 来搜索新的 prompts

      • AutoPrompt 通过使用梯度信号搜索 improved prompts ,然而其 prompts 仅限于实际(hard )的英语单词的序列,与我们的方法不同。

      我们将我们的新型 soft prompts 与所有这些系统进行比较。

    • 在我们于 202011 月提交本文之后,arXiv 上出现了两篇尚未发表的论文,它们也研究了 soft prompts

      • 《Prefix-tuning: Optimizing continuous prompts for generation》考虑了从 pretrained 语言模型( GPT-2BART )以 prompt 为条件来生成文本。为了改进结果,他们在 prompt 之前添加了一些 task-specific "soft tokens",并仅仅微调了这些 tokensembedding (在所有 embedding layers 上)。

      • 《GPT understands, too.》 采用了与我们类似的策略,通过在连续空间中调优 fill-in-the-blank prompts 来对 GPT-2BERT 模型进行测试,然而他们没有使用我们提出的增强方法。

      与我们的工作类似,这两篇论文都取得了很大的进展。

    • 在其他工作中:

      • 《Inducing relational knowledge from BERT》从语料库中挖掘 prompts ,然后对整个语言模型进行微调,以使其更准确地补全 prompts

      • PETPET-2的方法类似,但是对于每个 prompts ,他们以不同的方式微调语言模型。

      我们的方法通过调优 prompts 本身来补充这些方法。

    • 询问语言模型对特定句子的了解程度的 probing system 通常使用前馈网络而不是进一步的自然语言 prompts 。然而, AutoPrompt 展示了如何使用自然语言 prompts 来询问特定句子。我们的方法可能适用于这些 prompts ,或者适用于包含 input-output examplesfew-shot learningGPT-3 )。

31.1 方法

  1. 给定一个固定的 pretrained 语言模型、一个 特定的关系 r (如 date-of-death )、一个由关系 r(x,y) pairs 组成的训练数据集 Er ,我们训练一个系统用于从 x 中预测 y ,然后在相同关系的 held-out (x,y) pairs 上评估该系统。

    prompt t 是一个包含两个空格的句子或短语。为了提出 query,我们用 x 填充第一个空格,然后要求语言模型预测单个单词来填充第二个空格。

  2. 假设 word embedding 的维度为 d 。我们允许 tsoft prompt,即 t 中的 tokens 可以为任意的 d 维向量。我们可以将这些向量初始化为某些真实的英语单词的 embedding 。然而,我们可以连续地调优这些向量。

  3. Deeply Perturbed Prompts:对于 prompt 中的每个 token i ,它的向量 representation vi 参与了语言模型的计算从而补全 prompt 。我们通过添加一个小的扰动向量 Δi(l) 到每个 vi(l) 来调优 prompt ,其中 l 表示网络的第 l 层。

    仅仅调优 layer 0 等价于直接调优 vi 。我们也可以调优所有的层。扰动向量可以通过 early stopping 或其他形式的正则化技术从而保持很小。我们的直觉是:小的扰动将产生与 LM 所训练得到的 activation patterns 更加相似的 activation patterns

    Prefix-tuning 的唯一区别在于:这里施加正则化技术使得每次的更新 Δi(l) 很小。

    事实上,这可以在 Prefix-tuning 中采用较小的学习率、以及梯度范数截断来实现。

  4. Mixture Modeling:给定关系 r 的一组 soft prompts Tr ,我们能够定义 ensemble predictive distribution

    (9)p(yx,r)=tTrp(tr)×pLM(yt,x)

    其中:

    • pLM(yt,x) 为语言模型的条件输出分布。

    • p(tr)soft promtps tTr 的权重。

    这就是 《How Can We Know What Language Models Know?》 中采用的 Prompt Ensembling 策略。

  5. Data-Dependent Mixture Modeling:作为扩展,我们可以将 p(tr) 替换为 p(tr,x) 。即,对于不同的输入 x 选择不同的权重。我们没有直接建立 neural softmax model 来优化 p(tr,x) ,而是基于贝叶斯理论将 p(tr,x) 重写为:

    (10)p(tr,x)p(tr)×p(xt,r)1/T

    其中 T 为超参数。我们使用这个固定的语言模型来预估第二项为:

    (11)p(xt,r)=ypLM(x,yt,r)

    需要两次推断:一次预测 p(xt,r) 、另一次预测 p(yt,x)

  6. Training Objective:给定 Tr 的初始集合,我们联合优化 soft promtps tTr 和它们的 mixture weights p(tr)