Prefix-Tuning: Optimizing Continuous Prompts for Generation Xiang Lisa Li Percy Liang Stanford Unive

摘要

微调是利用预训练大型语言模型执行下游任务的标准方法。然而, 它修改了所有语言模型参数, 因此需要为每个任务存储完整的副本。在这篇论文中, 我们提出了前缀微调 (prefix-tuning), 这是一种针对自然语言生成任务的轻量级替代方法, 它保持语言模型参数冻结, 但优化一个小型的(连续的)任务特定向量 (称为前缀)。前缀微调借鉴了提示的方法, 使得后续的令牌可以像 “虚拟令牌” 一样关注这个前缀。我们将在GPT-2上应用前缀微调进行表格到文本生成, 并在BART上用于摘要。我们发现,仅学习参数的 0.1 % 0.1\% 0.1% ,前缀微调在全数据设置下表现出相当的性能, 低数据设置下优于微调, 并且在训练期间未见过的主题的示例上表现得更好。

1 Introduction

在这里插入图片描述

微调是使用大型预训练语言模型 (LMs) 进行下游任务 (如摘要) 的常用方法 ((Radford et al., 2019; Devlin et al., 2019)), 但它需要更新和存储LM的所有参数。因此, 为了构建和部署依赖大型预训练LM的NLP系统, 目前需要为每个任务存储修改后的LM参数副本。考虑到当前LM的庞大规模, 这可能代价高昂; 例如, GPT-2有774M个参数 ((Radford et al., 2019)), 而GPT-3的参数量更是达到了 175   B 175\mathrm{\ B} 175 B ((Brown et al.,2020))。

针对这个问题的一个自然方法是轻量级微调 (lightweight fine-tuning), 它冻结了预训练模型的大部分参数, 并通过添加少量可训练模块来增强模型。例如, adapter-tuning ((Rebuffi et al., 2017; Houlsby et al., 2019)) 会在预训练语言模型的层之间插入专门针对任务的额外层。 adapter-tuning在自然语言理解和生成基准上表现出色,虽然只增加了约 2 − 4 % 2 {-} 4\% 24% 的任务特定参数, 但性能却与微调相当(Houlsby et al., 2019;
Lin et al., 2020)。

在极端情况下, GPT-3(Brown et al., 2020)可以在无需任何任务特定微调的情况下部署。用户只需在任务输入前添加自然语言任务指令 (例如, 对于摘要任务, 可以是“TL;DR”) 和一些示例, 然后让语言模型生成输出。这种方法被称为上下文学习或提示 (prompting)。

本文提出prefix-tuning, 一种针对自然语言生成 (NLG) 任务的轻量级替代微调方法, 灵感来源于提示。以生成数据表格的文本描述为例 (如图??所示), 任务输入是线化的表格 (如 “name: Starbucks | type: coffee shop”), 输出是文本描述 (如 “Starbucks serves cof-fee。”)。prefix-tuning在输入前添加一系列连续的任务特定向量, 我们称之为前缀, 如图?? (底部) 中的红色块所示。对于后续的令牌, Transformer可以像处理虚拟令牌序列一样关注前缀, 但与提示不同的是, 前缀完全由自由参数组成, 不对应于实际的令牌。

与图 (顶部) 中的微调相比, 微调会更新所有Transformer参数, 因此需要为每个任务存储一个微调后的模型副本, 而prefix-tuning仅优化前缀。因此, 我们只需要存储一个大型Transformer的单个副本和一个学习到的任务特定前缀, 为每个额外任务带来的额外开销非常小 (例如, 对于表格到文本任务, 大约 250   K 250\mathrm{\ K} 250 K 参数)。
与微调不同, prefix-tuning是模块化的: 我们训练一个上游前缀来引导下游的LM, 而下游LM保持不变。因此, 一个单一的LM可以同时支持多个任务。在个性化场景中, 如果任务对应不同的用户(Shokri and Shmatikov, 2015; McMahan et al., 2016), 我们可以为每个用户训练一个单独的前缀, 仅使用该用户的数据, 从而避免数据交叉污染。此外, 基于前缀的架构甚至允许我们在单个批次中处理来自多个用户/任务的示例, 这是其他轻量级微调方法无法做到的。

我们在表格到文本生成 (使用GPT-2) 和抽象性摘要 (使用BART) 任务上评估prefix-tuning。在存储方面, prefix-tuning存储的参数数量是微调的 1000 倍。在使用完整数据集训练时, 对于表格到文本任务 (§6.1), prefix-tuning和微调的性能相当, 而对于摘要任务 $($6.2),$ prefix-tuning性能稍有下降。在低数据设置下, prefix-tuning在两个任务上平均优于微调 (§6.3)。prefix-tuning在处理未见过主题的表格 (对于表格到文本) 和文章 (对于摘要) 时,也表现出更好的外推能力 $($6.4)$ 。

2 Related Work

针对自然语言生成的微调。 当前最先进的自然语言生成系统基于预训练语言模型的微调。对于表格到文本生成, Kale (2020) 微调序列到序列模型 (T5; Raffel et al., 2020)。对于抽取式和抽象式摘要, 研究人员分别微调掩码语言模型 (如BERT; Devlin et al., 2019) 和编码-解码模型 (如BART; Lewis et al., 2020) (Zhong et al., 2020; Liu and Lapata, 2019; Raffel et al., 2020)。对于机器翻译和对话生成等其他条件性自然语言生成任务, 微调也是主流方法(Zhang et al., 2020c; Stickland et al., 2020; Zhu et al., 2020; Liu et al., 2020)。本论文专注于使用GPT-2的表格到文本和使用BART的摘要, 但前缀微调可以应用于其他生成任务和预训练模型。

轻量级微调。 轻量级微调冻结大部分预训练参数, 并通过小的可训练模块对其进行修改。关键挑战在于确定高性能的模块架构和要调整的预训练参数子集。一种研究路线是移除参数: 通过在模型参数上训练二进制掩码来消除一些模型权重(Zhao et al., 2020; Radiya-Dixit and Wang, 2020)。另一种路线是插入参数。例如, Zhang et al. (2020a) 训练一个 “侧面” 网络, 通过求和与预训练模型融合: adapter-tuning在预训练LM的每层之间插入任务特定的层(适配器) (Houlsby et al., 2019; Lin et al., 2020; Rebuffi et al., 2017; Pfeiffer et al., 2020)。与这些工作相
比,它们调整大约 3.6 % 3.6\% 3.6% L M \mathrm{LM} LM 参数,而我们的方法进一步减少了 30 倍的任务特定参数, 仅调整 0.1 % 0.1\% 0.1% ,同时保持了相当的性能。

提示。 提示意味着在任务输入前添加指令和一些示例, 然后让LM生成输出。GPT-3(Brown et al., 2020) 使用手动设计的提示来调整其生成以适应不同的任务, 这种框架称为上下文学习。然而, 由于Transformer只能处理有限长度的上下文 (如GPT-3的2048个令牌), 上下文学习无法充分利用超过上下文窗口的训练集。Sun and Lai (2020) 也通过关键词提示来控制生成句子的情感或主题。在自然语言理解任务中, 对于BERT和RoBERTa等模型, 提示工程已在先前的工作中进行过探索(Liu et al., 2019; Jiang et al., 2020; Schick and Schütze, 2020)。例如, AutoPrompt(Shin et al., 2020) 通过搜索离散触发词序列并将其与每个输入连接起来, 从掩码LM中激发情感或事实知识。与AutoPrompt不同, 我们的方法优化连续前缀, 它们更具表达力 (§7.2), 而且我们专注于语言生成任务。

连续向量已被用于引导语言模型; 例如, Subramani et al. (2020) 证明了预训练的LSTM语言模型可以通过优化每个句子的连续向量来重建任意句子, 使向量成为输入特定的。相比之下, 前缀微调优化一个任务特定的前缀, 该前缀适用于该任务的所有实例。因此, 与先前的工作相比, 其应用仅限于句子重建, 前缀微调可以应用于自然语言生成任务。

可控生成。 可控生成的目标是引导预训练语言模型以匹配句子级别的属性 (如积极情感或体育主题)。这种控制可以在训练时实现: Keskar et al. (2019) 预训练了语言模型 (CTRL), 使其能够根据元数据 (如关键词或URL) 进行条件生成。此外, 控制也可以在解码时通过加权解码 (GeDi, Krause et al., 2020) 或迭代地更新过去激活 (PPLM, Dathathri et al., 2020) 来实现。然而, 对于像表格到文本和摘要这样的任务, 要实现对生成内容的精细控制, 目前还没有直接的方法。

3 Problem Statement

我们关注一个条件生成任务, 其中输入是一个上下文 x x x ,输出是一个 token 序列。我们关注两个任务, 如图 ?? (右) 所示: 在表格转文本任务中, x x x 对应于线性化的数据表格, y y y 是一个文本描述: 在摘要任务中, x x x 是一篇文章, y y y 是一个简短的摘要。

3.1 Autoregressive LM

假设我们有一个基于Transformer架构 ( (Vaswani et al., 2017), 如GPT-2(Radford et al., 2019)) 的自回归语言模型 p ϕ ( y ∣ x ) p_{\phi}(y {\mid} x) pϕ(yx) ,参数化为 ϕ \phi ϕ 。如图?? (顶部) 所示,令 z = [ x ; y ] z = \lbrack x;y\rbrack z=[x;y] 表示 x x x y y y 的拼接; X i d x {\mathrm{X}}_{\mathrm{idx}} Xidx 表示 x x x 的索引序列, Y i d x {\mathrm{Y}}_{\mathrm{idx}} Yidx 表示 y y y 的相同内容。
在时间步 i i i 的激活为 h i ∈ R d h_{i} {\in} {\mathbb{R}}^{d} hiRd ,其 中 h i = [ h i ( 1 ) ; ⋯ ; h i ( n ) ] h_{i} = \left\lbrack h_{i}^{(1)};{\cdots};h_{i}^{(n)} \right\rbrack hi=[hi(1);;hi(n)] 是该时间步所有激活层的拼接,而 h i ( j ) h_{i}^{(j)} hi(j) 是第 j j j 个Transformer层在时间步 i i i 的激活。 1
自回归Transformer模型根据 z i z_{i} zi 以及其左侧
上下文中的过去激活来计算 h i h_{i} hi
h i = L M ϕ ( z i , h < i ) , h_{i} = {\mathrm{LM}}_{\phi}\left( z_{i},h_{< i} \right), hi=LMϕ(zi,h<i),
其中, h i h_{i} hi 的最后一个层用于计算下一个 token 的分布: p ϕ ( z i + 1 ∣ h ≤ i ) = softmax ⁡ ( W ϕ ⋅ h i ( n ) ) p_{\phi}\left( z_{i + 1} {\mid} h_{{\leq} i} \right) = \operatorname{softmax}\left( W_{\phi} {\cdot} h_{i}^{(n)} \right) pϕ(zi+1hi)=softmax(Wϕhi(n)) , 其中 W ϕ W_{\phi} Wϕ 是一个预训练矩阵,它将 h i ( n ) h_{i}^{(n)} hi(n) 映射到词汇上的 logit 值。

3.2 Encoder-Decoder Architecture

我们也可以采用编码器-解码器架构 (例如BART; Lewis et al.,2020),来建模 p ϕ ( y ∣ x ) p_{\phi}(y {\mid} x) pϕ(yx) , 其中 x x x 由双向编码器编码,解码器自回归地预测 y y y (基于编码的 x x x 及其左上下文)。我们使用相同的索引和激活表示, 如图?? (底部) 所示。对于所有 i ∈ X i d x , h i i {\in} {\mathrm{X}}_{\mathrm{idx}},h_{i} iXidx,hi 由双向Transformer编码器计算; 对于所有 i ∈ Y i d x , h i i {\in} {\mathrm{Y}}_{\mathrm{idx}},h_{i} iYidx,hi 由自回归解码器使用相同的equation (1)计算。

在这里插入图片描述

3.3 Method: Fine-tuning

在微调框架中,我们使用预训练参数 ϕ \phi ϕ 初始化。这里, p ϕ p_{\phi} pϕ 是一个可训练的语言模型分布, 我们对以下对数似然目标进行梯度更新:

max ⁡ ϕ log ⁡ p ϕ ( y ∣ x ) = ∑ i ∈ Y idx log ⁡ p ϕ ( z i ∣ h < i ) . \mathop{\max}\limits_{\phi} \log p_{\phi}(y \mid x) = \sum\limits_{i \in Y_{\text{idx}}} \log p_{\phi}(z_{i} \mid h_{< i}). ϕmaxlogpϕ(yx)=iYidxlogpϕ(zih<i).

4 Prefix-Tuning

我们提出前缀调优 (prefix-tuning) 作为条件生成任务的一种替代 fine-tuning 方法。我们在 §4.1 部分提供直观解释, 然后在 §4.2 中正式定义我们的方法。(前缀调优)

4.1 Intuition

根据提示的直觉, 我们认为拥有适当的上下文可以引导语言模型 (LM) 运行, 而无需改变其参数。例如, 如果我们希望LM生成一个词 (如: Obama), 可以在前面添加其常见的搭配 (如: Barack), LM会为所需单词分配更高的概率。我们将这种直观应用到生成单个词或句子之外, 目标是找到一个能引导LM解决自然语言生成 (NLG) 任务的上下文。直观上,上下文可以通过指导从 x x x 中提取什么来影响 x x x 的编码; 并通过调整下一个 token 的分布来影响 y y y 的生成。然而,是否存在这样的上下文并不明显。自然语言任务指令 (如: “用一句话总结以下表格”) 可能对专家标注者有指导作用, 但对于大多数预训练LM来说却无效。(在我们的初步实验中, GPT-2和BART未能在这种情况下工作; 唯一例外的是GPT-3。) 对离散指令进行数据驱动的优化可能会有所帮助, 但离散优化在计算上具有挑战性。

我们选择通过优化连续的词嵌入来替代离散的令牌, 这样其效果会向上传播到所有Transformer激活层, 并向后续的 token 传递。这比要求匹配真实词的离散提示更具有表达力, 但又不如直接干预所有层的激活 (参见&5.2), 因为它避免了长程依赖, 并包含更多的可调参数。因此, Prefix-tuning优化的是所有前缀层。

4.2 Method

前缀调优 (Prefix-Tuning) 是在自回归语言模型 (LM) 前添加前缀,以得到 $z = $ [ PreFIX ⁡ ; x ; y ] \left\lbrack \operatorname{PreFIX};x;y \right\rbrack [PreFIX;x;y] ,或者同时为编码器和解码器添加前缀,即 z = [ PREFIX ⁡ ; x ; PREFIX ⁡ ′ ; y ] z = \left\lbrack \operatorname{PREFIX};x;{\operatorname{PREFIX}}^{{\prime}};y \right\rbrack z=[PREFIX;x;PREFIX;y] ,如图 ?? 所示。其中, P i d x {\mathrm{P}}_{\mathrm{idx}} Pidx 表示前缀的索引序列,我们用 ∣ P i d x ∣ \left| {\mathrm{P}}_{\mathrm{idx}} \right| Pidx 表示前缀的长度。
我们遵循 equation (1) 中的递归关系, 但这里的前缀是 (可学习的) 参数。前缀调优初始化一个可训练的矩阵 P θ P_{\theta} Pθ (参数化为 θ \theta θ ),其维度为 ∣ P i d x ∣ × dim ⁡ ( h i ) \left| {\mathrm{P}}_{\mathrm{idx}} \right| {\times} \dim\left( h_{i} \right) Pidx×dim(hi) ,用于存储前缀参数。
h i = { P θ [ i , : ] ,  if  i ∈ P i d x , LM ⁡ ϕ ( z i , h < i ) ,  otherwise.  h_{i} = \begin{cases} P_{\theta}\lbrack i, : \rbrack, & \text{ if }i {\in} {\mathrm{P}}_{\mathrm{idx}}, \\ {\operatorname{LM}}_{\phi}\left( z_{i},h_{< i} \right), & \text{ otherwise. } \end{cases} hi={Pθ[i,:],LMϕ(zi,h<i), if iPidx, otherwise. 
训练目标与equation (2)相同, 但可训练参数集发生了变化: 语言模型参数 ϕ \phi ϕ 被固定,而前缀
参数 θ \theta θ 是唯一的可训练参数。
这里, h i h_{i} hi (对于所有 i i i ) 是可训练的 P θ P_{\theta} Pθ 的函数。当 i ∈ P i d x i {\in} {\mathrm{P}}_{\mathrm{idx}} iPidx 时,这是显而易见的,因为 h i h_{i} hi 直接来自 P θ P_{\theta} Pθ 。当 i ∉ P i d x i {\notin} {\mathrm{P}}_{\mathrm{idx}} i/Pidx 时, h i h_{i} hi 仍然依赖于 P θ P_{\theta} Pθ ,因为前缀激活始终位于左上下文中, 因此会对其右侧的任何激活产生影响。( P i d x {\mathrm{P}}_{\mathrm{idx}} Pidx 为前缀位置集)

4.3 Parametrization of P θ P_{\theta} Pθ

在实践中,直接更新 P θ P_{\theta} Pθ 的参数会导致优化不稳定且性能略有下降。2 因此, 我们通过一个较小的矩阵 P θ ′ P_{\theta}^{{\prime}} Pθ (由一个大型的前馈神经网络 M L P θ {\mathrm{MLP}}_{\theta} MLPθ 组成) 来重参数化 P θ P_{\theta} Pθ ,即 P θ [ i , : ] = M L P θ ( P θ ′ [ i , : ] ) P_{\theta}\lbrack i, : \rbrack = {\mathrm{MLP}}_{\theta}\left( P_{\theta}^{{\prime}}\lbrack i, : \rbrack \right) Pθ[i,:]=MLPθ(Pθ[i,:]) 。请注意, P θ P_{\theta} Pθ P θ ′ P_{\theta}^{{\prime}} Pθ 具有相同的行维度 (即前缀长度), 但列维度不同。3训练完成后, 这些重参数化的参数可以丢弃, 只需保存前缀 P θ P_{\theta} Pθ 即可。

5 Experimental Setup

5.1 Datasets and Metrics

我们在三个标准的神经生成数据集上进行评估, 用于表格到文本任务: E2E (Novikova et al., 2017)、WebNLG (Gardent et al., 2017) 和 DART (Radev et al., 2020)。这些数据集按复杂度和规模递增排列。E2E仅包含一个领域(即餐厅评论); WebNLG有 14 个领域, 而DART是开放领域的, 使用来自维基百科的开放领域表格。
E2E数据集包含大约 50,000 个示例, 有 8 个不同的字段: 每个源表格有多个测试参考, 平均输出长度为 22.9 。我们使用官方评估脚本, 报告BLEU (Papineni et al., 2002)、NIST (Belz and Reiter, 2006)、METEOR (Lavie and Agarwal, 2007)、ROUGE-L (Lin, 2004)和CIDEr (Vedan-tam et al., 2015)。WebNLG (Gardent et al., 2017)数据集包含 22 , 000 22,000 22,000 个示例,输入 x x x 是一个 (主体、属性、对象) 三元组序列。平均输出长度为 22.5 。在训练和验证集上, 输入描述来自9个不同的DBpedia类别 (如纪念碑) 的实体。测试集分为两部分: 前半部分包含训练数据中见过的DB类别, 后半部分包含 5 个未见过的类别。这些未见过的类别用于评估外推。我们使用官方评估脚本, 报告BLEU、METEOR和TER (Snover et al., 2006)。

DART (Radev et al., 2020)是一个开放领域的表格到文本数据集, 与WebNLG具有相似的输入格式(实体-关系-实体三元组)。平均输出长度为 21.6。它包含 来 自WikiSQL、 WikiTableQuestions、 E2E和WebNLG的82,000个示例, 并应用了一些手动或自动转换。我们使用官方评估脚本, 报告BLEU、METEOR、TER、MoverScore (Zhao et al., 2019)、BERTScore (Zhang et al., 2020b) 和BLEURT (Sellam et al., 2020)。

对于摘要任务, 我们使用XSUM (Narayan et al., 2018)数据集, 这是一个新闻文章的抽象概括数据集, 共有 225,000 个示例。文章的平均长度为 431 个单词, 摘要的平均长度为 23.3 。我们报告ROUGE-1、ROUGE-2和ROUGE-L。

5.2 Methods

对于表格到文本生成任务, 我们对比了prefix-tuning与三种其他方法: 微调 (FINE-TUNE) (仅调整整个模型) (Lin et al., 2020), 仅调整顶层 2 层的微调(FT-TOP2), 以及adapter-tuning(ADAPTER)。同时, 我们也报告了这些数据集上的当前最佳结果: 在E2E任务上, Shen et al. (2019) 使用了预先未经训练的具有语境感知的模型。在WebNLG上, Kale (2020) 对T5-large进行了微调。在DART上, 由于官方未发布针对此版本数据集训练的模型 4 {}^{4} 4 。对于摘要任务, 我们与BART微调(Lewis et al.,
2020)的结果进行了比较。

5.3 Architectures and Hyperparameters

对于表格到文本任务, 我们 使 用 G P T − 2 MEDIUM  G P T 2 L A R G E c − Ξ Σ Θ 5 X f i J ( B A R T L A R G E Θ 6 ∗ : 512 ∗ B P E t o k e n θ GPT-2 {}_{\text{MEDIUM }}GPT{}^{2} LARGE {}^{c {-}}\Xi\Sigma{\Theta}^{5}X{\mathrm{fi}}_{\mathrm{J}}(BART_{\mathrm{LARGE}}{\Theta}^{6} * : 512 * BPEtoken\theta GPT2MEDIUM GPT2LARGEcΞΣΘ5XfiJ(BARTLARGEΘ6:512BPEtokenθ

我们的实现基于Hugging Face Trans-former模型(Wolf et al., 2020)。训练时, 我们使用AdamW优化器(Loshchilov and Hutter, 2019)和线性学习率调度, 这符合Hugging Face的默认设置。我们调整的超参数包括训练轮数、批次大小、学习率和前缀长度。详细超参数见附录。默认设置下, 模型训练 10 个epoch, 批次大小为 5 , 学习率为 5 × 10 − 5 5 {\times} {10}^{{-}5} 5×105 ,前缀长度为 10 。表格到文本模型在TITAN Xp或GeForce GTX TITAN X机器上训练。前缀调优在 22   K 22\mathrm{\ K} 22 K 个示例上每轮训练耗时&0.2小时, 而微调大约需要 0.3 小时。

摘要模型在Tesla V100机器上使用XSUM数 据集, 每轮训练耗时1.25小时。
在解码阶段, 对于三个表格到文本数据集, 我们使用大小为 5 的束搜索。对于摘要任务, 我们使用大小为 6 的束搜索和长度规范化因子 0.8 。解码阶段, 表格到文本每句耗时 1.2 秒 (不进行批量处理), 而摘要每批 (批量大小为 10) 耗时 2.6 秒。

6 Main Results

6.1 Table-to-text Generation

我们发现,仅添加 0.1 % 0.1\% 0.1% 的任务特定参数 (对 于 E 2 E \mathrm{E}2\mathrm{E} E2E 250   K , 250\mathrm{\ K},\quad 250 K, WebNLG为 250   K 250\mathrm{\ K} 250 K , DART为 500   K 500\mathrm{\ K} 500 K ,相 对 于GPT-2的 345 M 345\mathrm{M} 345M 参数), 前缀调优在表格到文本生成任务中表现出色, 超越了其他轻量级基线 (ADAPTER和FT-TOP2), 并且与微调达到相当的性能。这种趋势在所有三个数据集上都成立: E2E、WebNLG 7 {}^{7} 7 和DART。

为了公平比较, 我们将前缀调优和适应器调优的参数数量调整为 0.1 % 0.1\% 0.1% 。表?? 显示,前缀调优明显优于 ADAPTER ( 0.1 % ) (0.1\%) (0.1%) ,在每个数据 集上的BLEU得分平均提高了4.1。即使与更新 参数显著多于前缀调优的微调 (100%) 和适应器调优 ( 3.0 % 3.0\% 3.0% ) 相比,前缀调优仍然能获得与之相当或更好的结果。这表明前缀调优在参数减少的同时提高了生成质量, 更具帕累托效率。

此外, DART上的良好表现表明前缀调优能够泛化到具有多样领域和大量关系的表格。我们将深入探讨外推性能(即对未见类别或主题的泛化) 在 § 6.4 {§}6.4 §6.4 中。
总的来说, 前缀调优是一种有效且节省空间的方法, 用于将GPT-2适应到表格到文本生成。学习到的前缀足够表达力, 能够引导GPT-2正确提取非自然格式中的内容, 并生成文本描述。前缀调优也很好地扩展到GPT- 2 MEDIUM  2_{\text{MEDIUM }} 2MEDIUM  到GPT-2LARGE,暗示它有可能在类似架构的更大模型, 如GPT-3, 上进行扩展。

6.2 Summarization

如 ?? 所示,使用 2 % 2\% 2% 的参数,prefix-tuning 的性能略低于微调 (ROUGE-L 为 36.05 对比 37.25)。当仅使用 0.1 % 0.1\% 0.1% 的参数时,prefix-tuning 的表现逊于完全微调 (35.05 对比 37.25)。XSUM 与这三个表格到文本数据集之间存在几个差异, 这可能解释了为什么prefix-tuning 在表格到文本任务中具有相对优势: (1) XSUM 的示例数量平均比这三个表格到文本数据集多出 4 倍; (2) 输入的文章长度是表格到文本数据集线性化表格输入的平均 17 倍; (3) 摘要可能比表格到文本更复杂, 因为它需要阅读理解并从文章中识别关键内容。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

6.3 Low-data Setting

根据表格到文本(§6.1)和摘要(§6.2)的结果, 我们观察到, 当训练样本数量较少时, 前缀调优具有相对优势。为了构建低数据场景, 我们从全数据集 (E2E用于表格到文本, XSUM用于摘要) 中随机抽样, 得到大小为 { 50 , 100 , 200 , 500 } \{50,100,200,500\} {50,100,200,500} 的子集。对于每个大小, 我们抽取 5 个不同的子集, 并对 2 个随机种子进行训练, 从而平均得到 10 个模型, 以估计每个低数据设置的性能。8
?? (右列) 显示, 前缀调优在低数据环境下平均比微调高出 2.9 个BLEU分数, 同时需要的参数显著减少, 但随着数据集大小的增加, 这种差距会缩小。
从定性角度看, ?? (左列) 展示了在不同数据量下, 由前缀调优和微调模型生成的8个示例。在低数据情况下, 两种方法都倾向于

在这里插入图片描述

6.4 Extrapolation

现在, 我们研究表到文本和摘要生成的未见过主题的外推性能。为了构建一个外推设置, 我们划分现有的数据集, 使得训练和测试覆盖不同的主题。对于表到文本任务, WebNLG数据集的表格主题被标记。训练和开发集中有 9 个类别 (称为 SEEN), 而测试集中有 5 个只在测试时出现的类别 (称为UNSEEN)。因此, 我们通过在SEEN类别上训练并在UNSEEN类别上测试来评估外推性能。
对于摘要生成, 我们构建了两个外推数据划分 10 {}^{10} 10 : 在news-to-sports中,我们用新闻文章训练, 用体育文章测试。在within-news中, 我们用世界、英国和商业新闻训练, 测试剩余的新闻类别 (如健康和科技)。
在表格到文本和摘要任务上, 如 ?? 和 ?? (中间的 ‘U’ 列) 所示, prefix-tuning 在所有指标下都显示出更好的外推性能。

在这里插入图片描述

我们还发现, adapter-tuning 也实现了良好的外推性能, 与 prefix-tuning 相当, 如 ?? 所示。这种共同的趋势表明, 保留语言模型参数确实对外推有积极影响。然而, 这种改进的原因仍然是一个待探讨的问题,我们将在 § 8 {§}8 §8 中进一步讨论。

7 Intrinsic Evaluation

我 们 比 较 了prefix-tuning的 不同 变体。(\&7.1部分探讨了前缀长度的影响。) §7.2 部分研究了仅调整嵌入层的情况, 这更类似于调整离散提示。(§7.3部分比较了前缀和内插,即在 x x x y y y 之间插入可训练的激活。) §7.4部分研究了各种前缀初始化策略的效果。

7.1 Prefix Length

更长的前缀意味着更多的可训练参数, 从而带来更强的表达能力。(可训练参数更多, 表达能力更强)。??显示, 随着前缀长度的增加 (摘要任务中为 200 , 表格转文本任务中为 10), 性能会提升, 直到达到一个阈值后出现轻微下降。 11
实际上, 较长的前缀对推理速度的影响微乎其微, 因为GPU会并行计算整个前缀的注意力。

在这里插入图片描述

7.2 Full vs Embedding-only

§ 4.1 {§}4.1 §4.1 中,我们曾讨论过优化”虚拟词”连续嵌入的选择。我们将这个想法具体化, 称之为仅嵌入的消融实验。词嵌入是自由参数, 而上层激活由Transformer计算。Table 4 (顶部) 显示了性能大幅下降, 表明仅调整嵌入层的表达能力不足。
仅嵌入的消融实验界定了离散提示优化 ((Shin et al., 2020)) 的性能上限, 因为离散提示要求嵌入层必须精确匹配实际词汇的嵌入。因此, 我们有这样一条递增表达能力的序列: 离散提示 $ < $ 仅嵌入消融 $ < $ 前缀调优。

7.3 Prefixing vs Infixing

我们还研究了可训练激活在序列中的位置如何影响性能。在前缀调优中, 我们将它们放置在序列的开始位置,即 [ PREFIX ⁡ ; x ; y ] \left\lbrack \operatorname{PREFIX};x;y \right\rbrack [PREFIX;x;y] 。我们也可以将可训练激活置于 x x x y y y 之间 (即 [ x ; INFIX ⁡ ; y ] \left\lbrack x;\operatorname{INFIX};y \right\rbrack [x;INFIX;y] ),这称为内插调优。Table 4 (底部) 显示, 内插调优的性能略逊于前缀调优。我们认为这是因为前缀调优可以影响 x x x y y y 的激活,而内插调优只能影响 y y y 的激活。(内插调优)

在这里插入图片描述

7.4 Initialization

我们发现, 前缀的初始化方式在低数据设置下会产生重大影响。随机初始化会导致性能低且波动大。使用真实词汇的激活值初始化前缀能显著提升生成效果, 如 ?? 所示。特别是, 使用与任务相关的词汇 (如 “摘要” 和 “表格到文本”) 比使用与任务无关的词汇(如“大象” 和 “除法” ) 略显效果更好, 但仍然优于随机初始化。(任务相关词汇(task-relevant words) 和 任务无关词汇(task-irrelevant words))
由于我们使用语言模型计算的真实词汇的激活值来初始化前缀, 这种策略与尽可能保留预训练语言模型是一致的。

8 Discussion

在本节中, 我们将讨论prefix-tuning的一些有利特性, 并提出一些开放问题。(prefix-tuning)

8.1 Personalization

正如我们在 § 1 {§}1 §1 中所指出的,当需要独立训练大量任务时, 前缀调优具有优势。一个实际场景是用户隐私保护(Shokri and Shmatikov, 2015; McMahan et al., 2016)。为了保护用户隐私, 每个用户的资料需要分开, 并为每个用户独立训练个性化模型。因此, 每个用户可以看作一个独立的任务。如果用户数量达到百万级别, 前缀调优能够适应这种规模, 保持模块化, 允许灵活地添加或删除用户, 只需添加或删除相应的前缀, 避免了跨用户的数据污染。

8.2 Batching Across Users

在相同的个性化设置下, prefix-tuning 允许对不同用户的不同查询进行批量处理, 即使它们背后使用的是不同的前缀。当多个用户使用输入查询云GPU设备时, 将他们放入同一批次是计算上高效的。prefix-tuning 保持了共享的语言模型不变; 因此, 批量处理只需要在用户输入前添加个性化的前缀, 其余计算保持不变。相比之下, adapter-tuning 由于在共享Transformer层之间有个性化的适配器, 我们无法对不同用户进行跨批次处理。(prefix-tuning, adapter-tuning)

8.3 Inductive Bias of Prefix-tuning

回想一下, 微调会更新所有预训练参数, 而前缀调整和适配器调整会保留它们。由于语言模型是基于通用语料库预训练的, 保留这些参数可能有助于在训练期间未见过的领域进行泛化。这与我们的直觉相符, 我们观察到前缀调整和适配器调整在扩展设置 (§6.4) 中都取得了显著的性能提升; 然而, 这种提升的原因仍然是一个未解的问题。
尽管前缀调整和适配器调整都冻结了预训练参数, 但它们调整不同的参数集以影响Transformer的激活层。请记住, 前缀调整保持了语言模型不变, 使用前缀和预训练注意力块来影响后续的激活; 而适配器调整在语言模型层之间插入可训练模块, 直接为激活添加残差向量。此外, 我们观察到前缀调整在保持与适配器调整相当的性能的同时, 需要的参数数量少得多。我们认为这种参数效率的提高是因为前缀调整尽可能地保留了预训练的LM, 因此比适配器调整更有效地利用了LM。
同时进行的工作, Aghajanyan et al. (2020) 通过内在维度表明, 存在一个低维重参数化, 其在微调时与整个参数空间同样有效。这解释了为什么仅更新少量参数就能在下游任务上获得良好的准确性。我们的工作与这一发现相呼应, 表明通过更新一个非常小的前缀, 可以获得良好的生成性能。

9 Conclusion

我们提出了prefix-tuning, 这是一种轻量级的替代方法, 针对自然语言生成任务, 它在输入前添加了一个可训练的连续前缀。(prefix-tuning) 我们发现, 尽管prefix-tuning学习的参数数量只有 fine-tuning 的 1 / 1000 1/1000 1/1000 ,但在全数据环境下, 其性能能够与之相当, 并在低数据和外推设置中超越fine-tuning。

  • 18
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值