1 简介
在下游任务对大规模预训练模型进行finetune已经成为目前NLP一种流行的学习方法,然而传统的finetune方法会更新预训练语言模型的全部参数,这种方式随着模型尺寸跟下游任务数量的增加会变得难以承受。
于是乎,出现了一系列高效的更新参数的迁移学习方式,通过只更新少量模型参数来保证下游任务的效果,例如前面章节提及的prompt learning,Adapter,LoRA,BitFit等方法。
这些方法虽然有效,但他们成功的原因跟彼此之间的联系却不明所以,这对我们理解这些关键设计造成了阻碍。
在这个章节,我们介绍一篇ICLR2022相关的论文,它提出一个基于参数更新的迁移学习的统一框架,建立多种参数优化方法之间的联系,从而方便理解不同方法背后的关键设计,进而设计出只更新更少参数同时取得更好效果的参数优化方法。
2 背景
在这个篇章,我们从另一种角度去回顾之前提及的多种高效的参数优化方法,通过一种更加抽象的方式去解析其中的原理跟细节,从而比对彼此之间的共性与差异,构建一个统一的框架。
2.1 Prefix tuning
Prefix tuning会在每层transformer的多个attention的key跟value向量中插入l个用于更新参数的prefix向量,每个attention的计算公式如下,其中的Pk, Pv就是新插入的prefix向量。
图1:prefix tuning
而等式的前半部分是不加入prefix向量的初始attention计算的公式,后半部分则是跟上下文向量C无关的部分,通过一个类似门的机制来计算前后两部分的比重,如果用h表示原本的attention模块输出,那么prefix tuning的attention计算可以写成如下形式,加入prefix的attention模块输出等于原本attention模块输出和一个的与上下文无关的增量之间的加权平均。
2.2 Adapter
Adapter方法在transformer层子模块之间插入一些新的模块,在Adapter内部,它的输入h通过矩阵乘法Wdown,先将特征维度缩小,然后通过一个非线形层f,再通过矩阵乘法Wup将特征维度放大到跟adapter输入一样的尺寸,最后通过一个跨层连接,将adapter的输入跟上述结果加到一起作为最终adapter的输出,即下图形式。
同样包括前面两部分,前面部分还是原先的输入h,而后面部分则是h的一个增量变化,但是相比prefix tuning这里用于计算的前面两部分的权重的门的机制,同样可以把上式改写为以下形式。
2.3 LoRA
LoRA在transformer的权重矩阵旁插入了一个低秩矩阵,用于近似权重更新,对于预训练模型的权重矩阵W,LoRA通过低秩分解将其表示为如下形式,其中s是一个可训练的参数,在形式跟LoRA极其相似,只是少了一个中间非线性运算和多了一个标准化参数s。
3.1 The unified framework
通过对上述几种方法的抽象表示,不难发现这几种方法存在一定的共性,隐藏层的最终表征都由两部分组成,分别是原始的语言模型的输出跟新的增量两部分,虽然很多关键设计有所不同,但是这几种方法都在学习应用于各种隐藏表征的一个修正向量,也就是后半部分。
为了建立统一的框架去理解这些不同方法背后的关键设计,论文定义了以下四个设计维度,并分析了不同方法在这四个维度之间的差异跟联系。
a) Functional Form,修正向量的计算方式,下图中的第二列。
b) Modified Representation,直接调整的隐藏表征位置,作用于attetnion模块还是FFN模块?
c) Insertion Form,新增模块如何插入语言模型中?序列化还是并行化?
如果输入是语言模型的输入,输出是语言模型的输出,则属于并行化,类似于Prefix tuning,如果输入跟输出都是语言模型的输出,则属于序列化,类似于Adapter.
d) Composition Form,修正向量跟原本的隐藏层表征如何结合到一起去构建新的隐藏层表征?
图2:不同方法在4个设计维度下的具体信息
在提出上述统一的框架后,通过调整某些设计维度下的信息,论文提出了3种新的迁移学习方法的设计,具体细节可以参考下图理解。
a) Parallel Adapter,
将prefix tuning的并行插入方式迁移到Adapter,也就是把Adapter的insertion form的属性改成prefix tuning。
b) Multi-head Parallel Adapter
将Parallel Adapter应用到multi head attention的位置,也就是把Parallel Adapter的modified representation的属性改成prefix tuning。
c) Scaled Parallel Adapter
将LoRA的复合函数跟插入方式迁移到Adapter,也就是把Adapter的composition form跟insertion form的属性改成LoRA
图3:多种参数优化方法结构对比
4 实验
为了探索不同的设计维度所隐藏的特性,以及哪些设计维度尤为重要,论文在4个不同类型的下游任务上进行了实验,包括文本总结,文本翻译,文本推断以及情感分类任务,相应的数据集分别为XSum, en-ro, MNLI, SST2。至于语言模型的选择,为了更贴合当前实际,论文使用了encoder-decoder结构的语言模型在前两者上做实验,而使用encoder结构的语言模型在后两者上进行实验。
a) 当下主流方法的表现
在文本推断跟情感分类任务的数据集上,现存的几种主流方法在只更新小于1%的参数量条件下可以达到媲美更新全部模型参数的效果,但在文本总结跟翻译任务数据集上,即便增加要更新的参数量,这几种参数优化的方法距离更新全部模型参数的方法在效果上仍有一定差距。
这也说明那些宣称可以媲美finetune全部参数方法效果的参数优化方法,其实是在只包含encoder的模型并在GLUE上取得,或者是基于encoder-decoder的模型在相对简单的文本生成任务上取得媲美finetune全部参数的效果,不能泛化到其他标准评测任务。
图4:目前几种主流方法的效果对比
b) Insertion Form
下图中,SA指的是Adapter,相应的insertion form是sequential,PA则是Parallel Adapter,相应的insertion form跟prefix tuning一样,都是parallel。
从实验结果看,使用parallel作为插入方式的prefix tuning跟PA效果明显优于SA,从而说明parallel的插入形式更优。
图5:Insertion Form对比
c) Modified Representation
从下图可以看出,直接作用于FFN层的方法的效果明显优化作用于attention层,这些结果显示FFN层可以更高效的利用新增的参数进行调整。这可能是由于FFN层学习的是具体任务的文本模式,而attention层学习的是文本不同位置之间的交互,具有一定泛化能力,不需要特地为新任务做太多调整导致的。
图6:modified representation对比
当更新的参数量从3.6%减少到0.1%时,作用于attention模块的MH PA(attn)跟prefix tuning的方法在效果上领先于其他方法。
图7:multi head attention的有效性
结合上述实验效果,当目标参数量非常少时,作用于attention层的方法可以取得更好效果,反之,则优先选择作用于FFN层的方法。
d) Composition Function
不难看出,scaling的复合函数效果优于简单相加的复合函数。
图8:不同composition function对比
5 总结
基于前面的实验结论,论文有以下重大发现:
a) Scaled parallel adapter是作用于FFN层的最好变体。
b) FFN层可以通过更多的参数从而更好优化下游模型表现。
c) 类似于prefix tuning的作用于attention的方式可以在仅更新0.1%比例参数量的前提下得到不错效果。
于是论文提出一种新的方法Mix-And-Match adapter(MAM Adapter),它包括作用于attention模块30个prefix tuning向量,以及引入更多参数量的scaled parallel adapter,在诸多任务上取得了SOTA效果。融合prefix tuning跟scaled parallel adapter的结构,并根据它们的特点分配合适的优化参数,从而达到一个整体的更优。
之前在学习怎么高效的参数优化方法时总是感觉里面有很多神似的地方,但是建立不了其中的联系,看到这篇论文后,有一种茅塞顿开的领悟,这篇文章提出的统一框架能够帮助大家更好的理解这些参数优化方法,从而更好理解这些关键设计带来的价值。具体到个人,可以根据自己的任务和场景,设计出更加灵活的参数优化的迁移学习方案了。
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !