PEFT论文解读2019-2023
本文旨在梳理2019-2023关于大模型高效微调的经典方法总结,如有遗漏的重要方法烦请告知,不胜感激
全参数微调(FFT) VS 参数高效微调(PEFT)
全参数微调的问题:
- 消费级显卡的全参数微调在时间上和硬件上不可行
- 全参数微调会损失多样性,出现灾难性遗忘,且下游部署、维护繁琐
高效微调:
- 冻结大部分预训练参数,仅仅更新一部分参数使得模型获得更好的能力
- 主要的方法包括:引入额外参数、选取部分参数
2019-Adapter Tuning
Parameter-Efficient Transfer Learning for NLP
故事:
- 当预训练模型的规模较大时,为每一个下游任务进行全参数微调会耗费很多计算资源和时间
- 研究表明fine-tuning比feature-base-transfer的效果要好(fine-tuning是保证模型结构的完整,针对下游任务,利用特定数据进行参数微调的过程;而feature-base-transfer则是保留预训练的embedding比如word、sentence,paragraph,然后将其迁移到其他任务中)
- 同时全参数微调的fine-tuning容易出现知识遗忘的问题(原文中写的是multi-task和continual learning会出现这种情况)
方法:
- 为了解决上述问题,本文提出了一种adapter-tuning的方法,通过添加adapter的方式来进行参数的部分更新,从而达到减少参数更新但是得到和FFT相competitive的效果
- 具体来说就是针对每个下游任务,给预训练模型添加两个adapter,一个添加在MHA投影之后,一个添加在两个前馈层后,两个adapter都添加在残差连接之前(如果在残差连接之后呢?)
- adapter的结构:两个前馈子层构成,将输入降维再升维,一般降维的维度m较小,所以adapter的参数量不会很大,同时其也具有skip connection结构,这样添加好处在于,adapter参数初始化接近0时,如果adapter起不到优化作用,其参数不更新(接近0)时不会损害原模型的能力
细节:
- 以BERT为backbone,在17个数据集上进行广泛的实验
- 参数微调时,只调整adapter和LN的参数
- Adapter 最佳的中间层特征维度m视数据集的大小而异
结果:通过引入adapter-tuning可以在仅仅调整5%以内的参数与FFT的结果相媲美
2019-PALs
BERT and PALs: Projected Attention Layers for Efficient Adaptation in Multi-Task Learning
故事:
- 如何使得一个模型可以适配多个下游任务
方法:
- 提出PALs通过并行的参数添加来完成下游任务的适配
- 不同Bert在模型的上方加入参数来适配下游任务,PALs通过并行参数更新:
h l + 1 = L N ( h l + S A ( h l ) + T S ( h l ) ) \mathbf{h}^{l+1}=\mathrm{LN}(\mathbf{h}^l+\mathrm{SA}(\mathbf{h}^l)+\mathrm{TS}(\mathbf{h}^l)) hl+1=LN(hl+SA(hl)+TS(hl))
T S ( h ) = V D g ( V E h ) \mathrm{TS}(\mathbf{h})=V^{D}g(V^{E}\mathbf{h}) TS(h)=VDg(VEh)
- TS就是添加的并行参数模块
细节:
- 在GLUE的八个NLU任务上利用Bert进行实验
- 关于g函数的形式,作者实验了以下几种:
- 恒等映射(low-rank layers)
- MHA
- MHA+在不同层间共享 V E V^E VE和 V D V^D VD的参数(PALs)
- MLP+不同层间共享 V E V^E VE和 V D V^D VD的参数
结果:
- 实验可知serial connection(顺序连接)的效果比不添加任何adapter的效果还差(可能是添加了新初始化的LN所导致)
- 并行连接可以使得基础模型不容易丢失存储的知识
2020-Adapter-Fusion
AdapterFusion: Non-Destructive Task Composition for Transfer Learning
故事:
- sequential fine-tuning和multi-task learning存在遗忘和数据平衡的挑战。想在一个模型上实现多任务的信息共享有两种方法:sequential fine-tuning的数据训练顺序很重要,容易出现遗忘的风险;multi-task learning任务数据的大小和质量存在挑战( these models often overfit on low resource tasks and underfit on high resource tasks.)
- 而adapter-tuning方法仅仅提供了adapter的插入来解决全参数微调难以训练和知识遗忘的问题,而并没有将每个任务下游adapter收集的信息利用最大化,从而解决信息共享,下游通用,数据顺序的问题。
方法:
- 提出一个两阶段的迁移训练方法:首先在知识抽取阶段利用各下游任务训练adapter,然后在知识整合阶段将训练好的adapter通过adapterFusion进行信息共享。
- 提出一个adapter-fusion模块用于融合各adapter学习到的信息
细节:
- 训练数据集会被使用两次:训练下游任务的adapter时和训练信息融合的adapter-fusion模块
- 以Bert为backbone,知识抽取阶段更新adapter的参数,知识融合阶段更新adapter-fusion的参数
- adapter-fusion模块直接添加到adapter后面,其本质是一个attention计算过程。Q是进入adapter前的输入,而K,V则是adapter的输出
- 第一阶段的训练方法分为两种:ST-A(一个任务使用一个adapter),MT-A(多个任务使用一个adapter联合优化)
结果:
- Head:采用Bert中提到的分类头
- Full:全参数微调
- ST-A:单任务-adapter
- MT-A:多任务-adapter
- F.w/ST-A:ST-A + adapter-fusion
- F.w/MT-A:MT-A+adapter-fusion
- ST-A-Houlsby:adapter-Tunning的方法
2021-Adapter-Drop
AdapterDrop: On the Efficiency of Adapters in Transformers
故事:
- adapter参数的