Unified Framework1 - 论文精读学习笔记

Towards a Unified View of Parameter-Efficient Transfer Learning 标签:Parameter-Efficient Fine-Tuning
论文链接:Towards a Unified View of Parameter-Efficient Transfer Learning
刊物 & 时间:ICLR 2022(高分文章)
Cook
Published: 2024.09.10 | Last Updated: 2024.09.22

You are what you eat.
And I'm cooking what I eat!
:)

More food...🍜

目录

提前说明:本系列博文主要是对参考博文的解读与重述(对重点信息进行标记、或者整段摘录加深自己的记忆和理解、融合多个博文的精髓、统合不同的代表性的案例),仅做学习记录笔记使用。与君共享,希望一同进步。

 

全文概述

题目翻译:对参数高效迁移学习的统一看法

摘要

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


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

文章探讨了参数高效的微调方法,如适配器、前缀微调和LoRA,用于优化大型预训练语言模型。通过统一的框架,作者分析了这些方法的共性和关键设计因素,并提出新的变体,实现了更少参数的高效性能。实验表明,FFN子层的修改在大容量下效果更优,而小容量时,注意力修改更适用。

这篇工作将最近提出的多种Parameter-Efficient的迁移学习方法联系在了一起,提出了一个统一的框架,并探索了这些方法成功的关键因素是什么。

统一什么?把Adapter、prompt-tuning、LoRA都定义为预训练模型中添加可调整的特定的隐层状态,只是设计的参数维度、修改函数的计算和位置不同。定义成一个统一的框架,顺便还排列组合出几个小变体。

问题

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

为了缓解这个问题,已经提出了一些轻量级的替代方案,只更新少量的额外参数,同时保持大多数预训练参数的冻结,如:Adapters、prefix tuning 与 prompt tuning、LoRA 。其中,adapter tuning在预训练网络的每一层插入称为适配器的小型神经模块,在微调时只训练适配器。

这些方法都在不同的任务集上表现出与完全微调相媲美的性能,通常是通过更新不到1%的原始模型参数。除了节省参数外,参数有效的调整使其有可能快速适应新的任务,而不会出现灾难性的遗忘(Pfeiffer等人,2021),并且在 out-of-distribution 上往往表现出卓越的稳健性。

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

作者接下来针对上面这几种参数有效的方法提出了几个问题:

准备工作

image-20240922113655836

transformer结构和几种最先进的参数有效微调方法的说明。
我们用带虚线的块来表示这些方法所增加的模块。

博文3也有对以下3个方法的介绍,本文未摘录。

首先看一下现有这些方法在Transformer里的结构是如何:

其他 还有一些参数有效的微调方法

背景

现有方法

image-20240919112932617

Adapter:把input representation经过矩阵 Wdown 映射到低维空间,然后经过非线性激活层,比如ReLU,然后再又经过矩阵 Wup 映射回高维空间。 WdownWup 都是低秩矩阵,只能在几个维度上进行调整,所以调整的参数量不大。

Prefix tuning:把每一层attention的key和value前面都prepend一些向量,把attention原本的K和V前面分别加上Pk, Pv,得到新的attention。

👁 推导见博文2

LORA:用两个low rank的矩阵的乘积近似估计原本 WqWk 这两个矩阵的参数更新情况,s 是一个常数超参数(s1),实验前就设定好的。

A Unified Framework

image-20240919113031921

这里发现,prefix tuning实际上是对原来的hidden states作了一个线性插值。将prefix tuning的公式写成这个形式之后,和Adapters就很像了。

这个时候Prefix tuning和Adapters的公式高度相似。且改写后的Prefix tuning公式中的 WdownWup 也是低秩矩阵,秩为prefix tuning在key和value前面加入的向量的数量。

如果我们把公式以及计算流图放在一起对比,发现我们可以说prefix tuning是一种形式的adapters。

Transfer Design Elements

image-20240919113135001

这就启发了作者去寻找一种统一的框架。

于是作者又对比分析了Adapter, Prefix Tuning和LoRA这三种design的具体结构,从四个维度去对比不同设计。

Sequential or Parallel

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

image-20240919113208203


Attention or FFN

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

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

image-20240919113312518

Modified representation是指这些设计是作用于Transformer的具体位置。

composition function表示 Δhh 如何结合。

加ffn主要是增加非线性变换;attention的加权求和本质上只是线性变换。

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

Multi-head or Single head

image-20240919113409000

理论上,多头的结构应该比单头好,但是这里的Prefix tuning(多头结构)并没有比PA (单头的Parallel adapter)好。于是作者猜想,是否在参数很少的情况下,多头的优势才体现出来?

由此可以引出结论:当只想改动少量参数时,用multi-head结构; 当可以调整较大数目参数的时候,可以用ffn结构。

总结

并联比串联好;

通常情况下,feedforward比attention好,而在只调整0.1%参数的情况下,multihead attn比ffn好;

Composition的对比实验这里没有展开,实际上作者也做了,并发现LoRA的设计是比较好的,简单且效果好,Prefix tuning的线性插值是比较复杂的。

 

方法

The Unified Framework

受 prefix tuning 和 Adapter 之间联系的启发,作者提出了一个总体框架,旨在统一几种最先进的参数有效的调谐方法。

具体来说,作者把它们看作是学习一个向量 Δh,它被应用于各种隐藏表征。形式上,作者把要直接修改的隐藏表征表示为 h,把计算 h 的PLM子模块的直接输入表示为 x

为了描述这个修改过程,作者定义了一组设计维度,不同的方法可以通过改变这些维度的值而被实例化。并在Table 1 中说明了Adapters、prefix tuning 和LoRA在这些维度上的情况。

image-20240922151321265

沿定义的设计维度分解的参数有效的微调方法。
在这里,为了清楚起见,我们直接将适配器的非线性函数写成常用的ReLU。
表的下半部分通过转移现有方法的设计选择举例说明了新的变体。

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

变体组合 —— 通过在不同的方法之间转移设计元素而得到

image-20240922151842310

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

受prefix tuning和adapters之间联系的启发,我们提出了一个总体框架,旨在统一几种最先进的参数高效微调方法。 具体来说,我们把它们归结为学习一个修改向量 Δh,它被应用于各种隐藏表征。

实验

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

三种主流方法,都是冻结 PLM 参数,仅仅微调新增参数。

Figure 2 说明,在数据较为充沛、比较有挑战的任务中,现有的方法距离 Full Fine-tuning还有一定差距:

image-20240922152155395

不同方法在XSum总结任务上的表现。
微调参数的数量是相对于完全微调时的调整参数而言的

Figure 2 给出了几种Parameter-efficient Transfer Learning methods在Xsum数据集上做英文文本摘要任务的效果。

从图中发现,Adapter[1],Prefix Tuning[2]和LoRA[3]是performance比较好的方法。

Sequential or Parallel

Parallel 和 Sequential 哪个方式更好?

image-20240922152315915

Parallel Adapter在所有情况下都能够击败 Sequential Adapter。

Which Modified Representaion — Attention or FNN?

适配器修改放在Transformer哪里比较好?

image-20240922152428310

image-20240922152504756

XSum(左边)和en-ro(右边)的结果。PA代表并行适配器。
蓝色和红色标记分别适用于attention和FFN子层的修改。

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

哪个Composition Function比较好

LoRA的设计是比较好的,简单且效果好,Prefix tuning的线性插值是比较复杂的。

image-20240922152544452

使用不同组合函数时XSum的结果。
修改后的表示法是FFN。(Scaled) PA的瓶颈尺寸r=512,LoRA的瓶颈尺寸r=102。

简单composition(Adapter)、门控composition( prefix tuning )和缩放composition(LoRA)。

缩放的 composition 函数,同时也很容易适用。

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

我们首先强调前几节的三个发现:

1 按比例的并行适配器是修改FFN的最佳变体;

2 FFN可以在更大的容量下更好地利用修改;

3 修改头部注意力如前缀调整可以在只有0.1%的参数下实现强大的性能。

在他们的启发下,我们混合了这些发现背后的有利设计:具体来说,我们在注意力子层使用小瓶颈维度(l=30)的前缀调谐,并分配更多的参数预算,使用缩放的并行适配器(r=512)修改FFN表示。由于前缀微调可以被看作是我们统一框架中的一种适配器形式,我们将这种变体命名为Mix-And-Match适配器(MAM适配器)。

补充

博文2 总结

(1) Scaled parallel adapter 是修改FFN的最佳变体。

(2) FFN可以在更大的容量下更好地利用修改。

(3) 像 prefix tuning 这样修改头部注意力可以在只有0.1%的参数下实现强大的性能。

结论

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

参考博文

  1. Towards a Unified View of Parameter-Efficient Transfer Learning

    点评:★★★★☆,这篇博文主要是对论文的内容进行ppt分享,也给了我们看论文的另一个思路,看作者的presentation的slides,也能让我们脱离枯燥的文稿直接看到最核心的内容

  2. Towards a Unified View of Parameter-Efficient Transfer Learning

    点评:★★★★☆,这篇博文把文章内容更有组织的呈现出来了,把脉络理的更加详细,很不错!

  3. 论文阅读:Towards a Unified View of Parameter-Efficient Transfer Learning对参数高效迁移学习的统一看法

    点评:★★★★☆,这篇博文也是对论文的梳理,加上前2篇,应该可以达到对博文的理解目的了。无奈每次无法完整吸收,所以先整合下来,慢慢看吧

 

博文免责声明

  1. 本条博文信息主要整合自网络,部分内容为自己的理解写出来的,如有断章截句导致不正确或因个人水平有限未能详尽正确描述的地方,敬请各位读者指正;

  2. 引用出处可能没有完全追溯到原始来源,如因此冒犯到原创作者,请联系本人更正/删除;

  3. 博文的发布主要用于自我学习,其次希望帮助到有共同疑惑的朋友。

欢迎随时联系讨论,一起成长进步。

1 He J, Zhou C, Ma X, et al. Towards a unified view of parameter-efficient transfer learning[J]. arXiv preprint arXiv:2110.04366, 2021.