Towards a Unified View of Parameter-Efficient Transfer Learning对参数高效迁移学习的统一看法

参数高效的微调在NLP中是较新的方法,早期的代表工作是2019年发表的adapter。2021年开始有越来越多的人关注这一方向并有不同的方法被提出, 代表工作有prefix tuning, P-tuning, prompt tuning, bitfit, LoRA等。本文中提供了统一的角度对这些工作进行了分类。

在下游任务上微调大型预训练语言模型已经成为NLP中事实上的学习范式。然而,传统的方法对预训练模型的所有参数进行微调,随着模型大小和任务数量的增长,这变得令人望而却步。最近的工作提出了一系列参数有效的迁移学习方法,这些方法只对少量(额外)参数进行微调以获得强大的性能。虽然有效,但人们对成功的关键因素以及各种方法之间的联系知之甚少。在本文中,我们分解了最先进的参数有效迁移学习方法的设计,并提出了一个统一的框架,在它们之间建立联系。具体来说,我们将它们重新定义为对预训练模型中特定隐藏状态的修改,并定义一组不同方法变化的设计维度,例如计算修改的函数和应用修改的位置。通过对机器翻译、文本摘要、语言理解和文本分类基准的全面实证研究,我们利用统一的观点来确定以前方法中的重要设计选择。此外,我们的统一框架能够在不同的方法之间传递设计元素,因此,我们能够实例化新的参数有效的微调方法,这些方法比以前的方法调整的参数更少,同时更有效,实现了与微调所有四个任务的所有参数相当的结果。

简介

从预训练的语言模型(PLMs)中进行迁移学习现在是自然语言处理中的普遍范式,在许多任务上产生了强大的性能。使通用PLM适应下游任务的最常见方法是微调所有模型参数(完全微调)。然而,这导致每个任务都有一份单独的微调模型参数,当为执行大量任务的模型提供服务时,其成本过高。随着PLM规模的不断扩大,这个问题尤为突出,现在PLM的规模从数亿到数千亿甚至数万亿的参数。

为了缓解这个问题,已经提出了一些轻量级的替代方案,只更新少量的额外参数,同时保持大多数预训练参数的冻结。例如,adapter tuning在预训练网络的每一层插入称为适配器的小型神经模块,在微调时只训练适配器。 图1:transformer结构和几种最先进的参数有效微调方法的说明。我们用带虚线的块来表示这些方法所增加的模块。

图1中这些方法都在不同的任务集上表现出与完全微调相当的性能,通常是通过更新不到1%的原始模型参数。除了节省参数外,参数高效微调使其能够快速适应新的任务,而不会出现灾难性的遗忘,并且在分布外评估中经常表现出卓越的鲁棒性。

本文旨在回答三个问题:(1)这些方法是如何联系的?(2) 这些方法是否有共同的设计元素,这些元素对它们的有效性至关重要,它们是什么?(3) 每种方法的有效成分是否可以转移到其他方法中去,以产生更有效的变体?

以前的参数高效微调方法概述

三种主流方法,都是冻结 PLM 参数,仅仅微调新增参数。 图2:不同方法在XSum总结任务上的表现。微调参数的数量是相对于完全微调时的调整参数而言的

上图给出了几种Parameter-efficient Transfer Learning methods在Xsum数据集上做英文文本摘要任务的效果。 图中横轴的百分比是指这些方法所调整的参数量占full fine-tuning所调整的参数量的比例;纵轴ROUGE-2是该任务的评价指标(越大越好),所以在这个图里左上角的位置是理想化的方法。从图中发现,Adapter[1],Prefix Tuning[2]和LoRA[3]是performance比较好的方法。 适配器Adapters: 适配器方法在transformer层之间插入了小模块(适配器)。适配器层一般使用Wdown∈Rd×r的向下映射,将输入h映射到由瓶颈维度r指定的低维空间,然后使用非线性激活函数f(·),并使用Wup∈Rr×d的向上映射。这些适配器被一个残差连接所包围,导致最终的形式是: 将两个适配器依次放在transformer的一个层内,一个在多头注意力之后,一个在FFN子层之后。Pfeiffer提出了一个更有效的适配器变体,只在FFN "添加&层规范 "子层之后插入。

前缀微调(Prefix Tuning): 受文本提示方法的成功启发,前缀微调在每一层多头注意的键和值上预置了l个可微调的前缀向量。具体来说,两组前缀向量Pk、Pv∈Rl×d与原始键K和值V相连接。然后对新的前缀键值进行多头注意力。公式2中headi的计算变成: Pk和Pv分别分成Nh个头向量,P (i) k , P (i) v∈Rl×d/Nh表示第i个头向量。Prompt-tuning简化了前缀微调,只对第一层的输入词嵌入进行预处理。

LoRA: LoRA将可训练的低等级矩阵注入transformer层以近似权重更新。对于一个预先训练好的权重矩阵W∈Rd×k,LoRA用低秩分解W+∆W=W+WdownWup表示其更新,其中Wdown∈Rd×r,Wup∈Rr×k是可调整参数。LoRA将这种更新应用于多头注意子层中的查询和价值映射矩阵(Wq, Wv),如图1所示。对于多头注意中的线性投影的特定输入x,LoRA将投影输出h修改为: 其中s≥1是一个可调整的标量超参数。

其他:其他的参数高效微调方法包括BitFit,它只对预训练模型中的偏置向量进行微调,以及diff-pruning,它可以学习一个稀疏的参数更新向量。

统一的框架

图3:现有方法和提出的变体的图形说明。"PLM module "表示被冻结的PLM的某个子层(如注意或FFN)。"Scaled PA "表示缩放的并行适配器。为了节省空间,我们在此不包括多头并行适配器。

受prefix tuning和adapters之间联系的启发,我们提出了一个总体框架,旨在统一几种最先进的参数高效微调方法。 具体来说,我们把它们归结为学习一个修改向量∆h,它被应用于各种隐藏表征。 Functional Form是指计算∆h的具体函数。我们在公式4、6和10中分别详细说明了适配器、前缀调整和LoRA的函数形式。 所有这些方法的函数形式都类似于projdown→nonlinear→projup架构,而 "nonlinear "在LoRA中退化为特征函数。

Modified Representation表示哪个隐藏表征被直接修改。

Insertion Form是指添加的模块如何插入到网络中。如上一节所述,如图3所示,传统上适配器是以顺序的方式插入一个位置,其中输入和输出都是h。prefix tuning和LoRA–尽管最初不是这样描述的–原来等同于平行插入,其中x是输入。

Composition Function是指修改后的向量∆h如何与原始的隐藏表达h组成,以形成新的隐藏表达。 例如,适配器执行简单的加法合成,prefix tuning使用门控加法合成,而LoRA通过一个恒定的因子来缩放∆h,并将其添加到原始隐藏表示中,如公式6所示。

我们注意到,许多没有出现在表1中的其他方法也适合这个框架。例如,prompt tuning以类似于prefix tuning和各种适配器变体的方式修改第一层中的头部注意力,可以以类似于适配器的方式表示。 重要的是,这个统一的框架使我们能够沿着这些设计维度研究参数有效的微调方法,确定关键的设计选择,并有可能在不同的方法之间转移设计元素,就像在下面的部分。

转移设计元素

在这里,以及在图3中,我们只描述了几个新的方法,这些方法可以通过我们上面的统一观点,在不同的方法之间转移设计元素而得到:(1)Parallel Adapteris是通过将prefix tuning的平行插入转移到适配器的变体。 有趣的是,虽然我们因其与prefix tuning的相似性而提出了Parallel Adapteris,但同时进行的工作独立地提出了这个变体并对其进行了经验研究;(2)Multi-head Parallel Adapter是使适配器与prefix tuning更加相似的进一步措施:我们应用Parallel Adapteris来修改头的注意力输出,作为prefix tuning。 (3)Scaled Parallel Adapter是通过将LoRA的组成和插入形式转移到适配器中的变体,如图3e所示。 表1:沿定义的设计维度分解的参数有效的微调方法。在这里,为了清楚起见,我们直接将适配器的非线性函数写成常用的ReLU。表的下半部分通过转移现有方法的设计选择举例说明了新的变体。

实验

Sequential or Parallel

并联适配器(PA)在所有情况下都能击败串联适配器(SA)

Attention or FFN

对于modified representation,作者对比了加在attention上和加在feed forward上的效果,并发现总体来说,加在feed forward上效果更好。

结果:如图5所示,任何带有FFN修改的方法在所有情况下都优于所有带有attention修改的方法(红色标记一般高于所有蓝色标记,唯一的例外是ffn-PA,参数为2.4%),往往参数更少。同样的方法应用于FFN时,总是比它的attention的对应方有所提高。 这些结果表明,FFN修改可以比attention更有效地利用增加的参数,不管功能形式或组成函数是什么。 我们假设这是因为FFN学习特定任务的文本模式,而attention学习的是成对的相互作用,不需要很大的能力来适应新的任务。 图5:XSum(左边)和en-ro(右边)的结果。PA代表并行适配器。蓝色和红色标记分别适用于attention和FFN子层的修改。

结合图5和表4的结果,我们得出结论,当参数预算非常小的时候,修改头的注意力显示出最好的结果,而FFN在较大的容量下可以更好地利用修改。 这表明,将更大的参数预算分配给FFN修改可能是有效的,而不是将注意力和FFN同等对待。

Composition Function

LoRA的设计是比较好的,简单且效果好,Prefix tuning的线性插值是比较复杂的。 表5:使用不同组合函数时XSum的结果。 修改后的表示法是FFN。(Scaled) PA的瓶颈尺寸r=512,LoRA的瓶颈尺寸r=102。

通过转移有利的设计元素进行有效的整合

我们首先强调前几节的三个发现:(1)按比例的并行适配器是修改FFN的最佳变体;(2)FFN可以在更大的容量下更好地利用修改;(3)修改头部注意力如前缀调整可以在只有0.1%的参数下实现强大的性能。 在他们的启发下,我们混合了这些发现背后的有利设计:具体来说,我们在注意力子层使用小瓶颈维度(l=30)的前缀调谐,并分配更多的参数预算,使用缩放的并行适配器(r=512)修改FFN表示。由于前缀微调可以被看作是我们统一框架中的一种适配器形式,我们将这种变体命名为Mix-And-Match适配器(MAM适配器)。 在表6中,我们将MAM适配器与各种参数有效的微调方法进行比较。为了完整起见,我们还在表6中列出了其他组合版本的结果:在注意层和FFN层使用并行适配器,以及将预微调(attn)与LoRA(ffn)相结合–这些组合版本都能比它们各自的原型有所改进。 然而,MAM适配器在这两项任务中都取得了最好的性能,并且只需更新6.7%的预训练参数就能达到我们完全微调的效果。 在表2中,我们也介绍了MAM适配器在MNLI和SST2上的结果,其中MAM适配器只增加了0.5%的预训练参数,就取得了与完全微调相当的结果。

结论

我们的工作提出了一种对预训练模型,特别是语言模型进行有效微调的方法。预训练的语言模型有各种各样的积极应用,例如我们论文中描述的总结、翻译或语言理解的应用。在环境影响方面,本文提出的方法为现有模型增加了少量的额外参数和组件,因此它们对训练和推理时间产生了名义上的负面影响–例如,在我们的四个基准中,最终的MAM Adapter需要100%-150%的训练时间,因为参数高效微调通常需要更多的epochs来收敛;推理时间与完全微调得到的模型大致相同。 另一方面,由于本文提出的方法可以避免完全微调的需要,这也可以大大降低服务模型的成本(在内存/部署的服务器方面)。

精彩内容

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: