近年来提出了多种参数高效的迁移学习方法, 这些方法仅微调少量(额外) 参数即可获得强大的性能。虽 然有效, 但人们对为什么有效的关键要素以及各种高效微调方法之间的联系知之甚少。 Adapter 、Prefix Tuning、 LoRA (在结构上和公式上)看起来都不太一样,但是这三种方法有近似的效果?
MAM Adapter
分解先进的参数高效迁移学习方法(Adapter 、Prefix Tuning 和 LoRA)的设计, 并提出了一种新方法 MAM Adapter (论文: TOWARDS A UNIFIED VIEW OF PARAMETER EFFICIENT TRANSFER LEARNING), 一个在 Adapter、Prefix Tuning 和 LoRA 之间建立联系的统一方法。具体来说, 将它们重新构建为对预训练模型中特定隐 藏状态的修改,并定义一组设计维度,不同的方法沿着这些维度变化。
通过对前面 Prefix Tuning 变换,发现 Prefix Tuning 和 Adapters 的公式高度相似。作者进一步对最先进的 PEFT 方法进行了解构, 并提出了一个统一的框架来建立它们之间的联系。将它们重新定义为对预训练模型中特定隐 藏状态的修改(修改 h),并定义了一组设计维度, 包括计算修改的函数和应用修改的位置等, 这些维度在不同 方法之间存在变化。
现有方法和提出的变种的示例说明。 ”PLM 模块” 表示 PLM (例如注意力或前馈网络) 的某个子层被冻 结。 ”Scaled PA” 表示缩放的并行适配器。
上图分析不同微调方法的内部结构和结构插入形式的相似之处, 图中展示了高效微调方法 Adapter、Prefix Tuning 、LoRA 以及新变体(通过更换一些元素, 设计了前人的工作里没有的变体) Parallel Adapter 、Scaled PA的结构。
-
Parallel Adapteris:通过将 prefix tuning 的平行插入转移到适配器的变体。有趣的是, 虽然我们因其与prefix tuning 的相似性而提出了 Parallel Adapteris,但同时进行的工作独立地提出了这个变体并对其进行了经验研 究
-
Multi-head Parallel Adapter:使适配器与 prefix tuning 更加相似的进一步措施:我们应用 Parallel Adapteris 来 修改头的注意力输出,作为 prefix tuning。
-
Scaled Parallel Adapter:通过将 LoRA 的组成和插入形式转移到适配器中的变体,如上图e 所示。
高效微调方法 Adapter、Prefix Tuning、LoRA 以及新变体对比示意图
上表展示了高效微调方法 Adapter、Prefix Tuning、LoRA 以及新变体在新增可训练参数结构形式(functional form)、结构插入形式(Insertion form)、新增结构在 PLM 修改的具体位置(modified representation)、新增结构与 PLM 的组合函数(composition function)。其中, 新增可训练参数结构形式为需要学习的部分(注:Prefix Tuning 为经过转换后的格式);插入形式有串联或并联;模型修改的具体位置有 Attention 、FFN 层。
这个统一的框架使我们能够沿着这些设计维度研究参数有效的微调方法, 确定关键的设计选择, 并有可能 在不同的方法之间转移设计元素。通过最终的实验结果, 可以看到 MAM Adapter 在仅用了 6.7% 参数量(相比 全量微调) 的情况下, 在 Xsum 和 MT 这两个任务上达到了和全量微调相近的效果, 并且该方法大大优于 BitFit 和 Prompt Tuning,并始终优于 LoRA 、Adapter 和 Prefix Tuning。
UniPELT
近年来, 涌现出了许多针对语言模型的参数高效微调(PELT) 方法, 在模型训练参数极大的减少的情况下, 模型效果与全量微调相当。但是不同的 PELT 方法在同一个任务上表现差异可能都非常大, 这让针对特定任务 选择合适的方法非常繁琐。基于此, 提出了 UniPELT 方法, 将不同的 PELT 方法作为子模块, 并通过门控机制学习激活最适合当 前数据或任务的方法。
UniPELT (论文: UNIPELT: A Unified Framework for Parameter-Efficient Language Model Tuning) 是 LoRA、 Prefix Tuning 和 Adapter 的门控组合,其中:
-
LoRA:通过低秩分解,将优化预训练参数 W0 转换为优化外挂层 Wdown ,Wup 的参数矩阵 WB ,WA ;
-
PrefixTuning:在每个层的多头注意力中, 在 key 和 value 的前面添加了 l 个可调节的前缀向量。具体来说, 两组前缀向量 Pk , Pv ∈ Rl×d 与原始键 K 和值 V 进行连接。然后在新的前缀键和值上执行多头注意力计 算。
-
Adapter:在 Transformer 块的 feed-forward 子层之后添加 Adapter 模块。
UniPELT的结构示意图
更具体地说, LoRA 重新参数化用于 WQ 和 WV 注意力矩阵, Prefix Tuning 应用于每一 Transformer 层的 key 和 value,并在 Transformer 块的 feed-forward 子层之后添加 Adapter。然后组合这三个模块, 每个模块使用门控机 制(实现为线性层) 来控制, 通过 GP 参数控制 Prefix-tuning 方法的开关, GL 控制 LoRA 方法的开关, GA 控制 Adapter 方法的开关。可训练参数包括 LoRA 矩阵 WA (Down) 和 WB (Up),提示调优参数 Pk 和 Pv 、Adapter 参数和门函数权重。整个结构如上图所示,图中蓝颜色的参数为可学习的参数。
UniPELT 仅用 100 个示例就在低数据场景中展示了相对于单个 LoRA 、Adapter 和 Prefix Tuning 方法的显著 改进。在更高数据的场景中, UniPELT 的性能与这些方法相当或更好。
对不同的高效微调方法的训练参数量、训练/推理时间进行了分析:
-
从训练速度来看, UniPELT 比之前微调的方法多一些,但是还在能接受的范围,
-
从推理时间来看, BitFit 方法增加的最少, UniPELT 方法时间增加了 27%。
-
从训练参数量来看, LoRA ,BitFit ,Prefix-tuning 都比较小, UniPELT 参数量相对会多一些。
ps: 欢迎扫码关注公众号^_^.