本文中,包括刘知远、唐杰、孙茂松等在内来自清华大学的研究者对大模型的参数高效微调进行了全方位的理论和实验分析。
预训练语言模型 (PLM) 已经毫无疑问地成为各种 NLP 任务的基础架构,而且在 PLM 的发展中,呈现出了一个似乎不可逆的趋势:即模型的规模越来越大。更大的模型不仅会在已知任务上取得更好的效果,更展现出了完成更复杂的未知任务的潜力。然而,更大的模型也在应用上面临着更大的挑战,传统方法对超大规模的预训练模型进行全参数微调的过程会消耗大量的 GPU 计算资源与存储资源,巨大的成本令人望而却步。
这种成本也造成了学术界中的一种「惯性」,即研究者仅仅在中小规模模型上验证自己的方法,而习惯性地忽略大规模模型。
在近期论文《Delta Tuning: A Comprehensive Study of Parameter Efficient Methods for Pre-trained Language Models》中,来自清华大学和北京智源人工智能研究院的研究者随机选取了 1000 篇来自最近五个 NLP 会议的论文,发现使用预训练模型已经成为了研究的基本范式,但涉及大模型的却寥寥无几(如下图 1 所示)。
图 1:在 1000 篇随机挑选的论文中,使用预训练模型的统计分布。
在这样的背景下,一种新的模型适配方案——参数高效(Parameter-efficient)方法逐渐受到关注,与标准全参数微调相比,这些方法仅微调模型参数的一小部分,而其余部分保持不变,大大降低了计算和存储成本,同时还有着可以媲美全参数微调的性能。研究者认为,这些方法本质上都是在一个「增量」(Delta Paremters)上进行调整,因此将它命名为 Delta Tuning。
- 论文地址:https://arxiv.org/pdf/2203.06904.pdf
- OpenDelta工具包:https://github.com/thunlp/OpenDelta
研究者定义和描述了 Delta Tuning 问题,并通过一个统一的框架对以往的研究进行梳理回顾。在该框架中,现有 Delta Tuning 方法可以被分为三组:增量式(Addition-based)、指定式(Specification-based)和重参数化(Reparameterization)的方法。
除去实践意义之外,研究者认为它还具有非常重要的理论意义,Delta Tuning 在某种程度上昭示着大模型的背后机理,有助于人们进一步发展面向大模型甚至深度神经网络的理论。为此,他们从优化和最优控制两个角度,提出理论框架去讨论 Delta Tuning,以指导后续的结构和算法设计。
此外,研究者对代表性方法进行了全面的实验对比,并在超过 100 个 NLP 任务的结果展示了不同方法的综合性能比较。实验结果涵盖了对 Delta Tuning 的性能表现、收敛表现、高效性表现、Power of Scale、泛化表现、迁移性表现的研究分析。
他们还开发了一个开源工具包 OpenDelta,使从业者能够高效、灵活地在 PLM 上实现 Delta Tuning。
Delta Tuning:方法与分析
给定一个预训练模型和训练数据 D,PLM 适配的目标是生成一个模型的参数为。将定义为在原始模型之上的操作。对于传统的全参数微调来说,有,其中是中所有参数相对于训练数据的更新值。在 Delta Tuning 中,则是指修改少量参数。经验上来说,全参数微调, 而 Delta Tuning 则有。因此可以依据调整的参数形式和结构,将参数高效的 Delta Tuning 划分为三种策略,并且将之前的方法进行梳理:
增量式(Addition-based)方法
这类方法引入在原始模型中不存在的额外可训练神经模块或参数。在这类方法中,依据上述的定义,我们有和。常见的增量式方法包括 Adapter-Tuning、Prefix Tuning、Prompt Tuning 等等。它们不约而同地将小规模的神经模块或者可调参数插入到模型中,并且通过只微调这一小部分参数来达到模型高效适配的效果。其中 Adapter-tuning 是这类方法的开创性工作,它证明仅仅在每一层添加一个简单的神经网络,就可以在很多任务上媲美全参数微调。
同时,Adapter 还彰显了它在多任务和多语言场景下的潜力。Prefix-tuning 和 Prompt Tuning 是最近非常火热的 Delta Tuning 算法,它们将一些可调的向量插入到输入层或者表示层来进行微调。其中,Prompt Tuning 可以视为 Prefix Tuning 的简化版,即只在输入层添加 Soft Prompt。这种做法有一个非常大的好处,就是不用修改模型内部的结构,同时,随着模型参数量增大到 100 亿,它也被证明可以在一些数据上达打到和全参数微调相当的效果。但这类方法也面临着很大的优化问题,实验证明,它的优化效率往往比其他微调范式更低,收敛时间更长,并且在中小型模型上表现不佳。
图3:Delta Tuning的形式化表述。
指定式(Specification-based)方法
这类方法指定原始模型中的特定的某些参数变得可训练,其他参数则被冻结。在这类方法中可以将训练参数集合表示为,此时更新的参数表示为。当时,是从到的增量值,否则。
指定式的方法不会在模型中引入任何新参数,也不寻求改变模型的结构,而是直接指定要优化的部分参数。这个想法很简单,但效果却出奇的好,例如,一些方法只会微调 BERT 和 RoBERTa 最后一层的四分之一,并且可以产生全参数微调的 90% 的性能。
一个工作 BitFit 指出,仅通过优化模型内部的偏项并冻结其他参数,该模型仍然可以在多个基准测试中重现超过 95% 的全参数微调性能。BitFit 的经验结果还表明,即使使用少量随机参数集进行 Delta Tuning(这显然会降低性能),该模型仍然可以在 GLUE 基准测试中产生合格的结果。另一个有价值的观察是,不同的偏置项在模型适应期间可能具有不同的功能。
除了手动或启发式地对要更新的参数进行指定之外,还可以去学习这样的指定。Diff Pruning 就是其中的一个代表性工作,它将微调后的模型参数重参数化为预训练参数和一个差异向量的总和,即。
这时关键的问题就是鼓励差异向量尽可能稀疏,这项工作通过对可微近似来正则化向量,以实现稀疏的目标。实际上,由于在学习阶段引入了要优化的新参数,Diff Pruning 比全参数微调占用更多的 GPU 内存,这可能会在大型 PLM 上的应用中面临挑战。掩码方法(Masking)为 PLM 学习选择性掩码,仅更新特定任务的临界权重。为了学习这样一组掩码,引入了与模型权重相关的二进制矩阵,其中每个值由阈值函数生成。在反向传播期间,矩阵由噪声估计器更新。
重参数化(Reparameterization-based)方法
这类方法通过转换将现有的优化过程重参数化为参数有效的形式。将要重新参数化的参数集表示为,并假设每个都用新参数来进行表示,然后更新的参数表示为,其中存在。
简单来说,重参数化方法往往基于一类相似的假设:即预训练模型的适配过程本质上是低秩或者低维的。因此可以将这个过程等效为参数高效的范式。
例如,我们可以假设模型适配具有一个「本征维度」,通过将微调过程重参数化为一个低维子空间的优化过程,可以仅仅通过微调子空间内的参数就达到令人满意的性能。从这个意义上说,PLM 可以作为通用的压缩框架,将优化复杂度从高维压缩到低维。一般来说,较大的 PLM 通常具有较小的内在维度,并且预训练过程隐含地减少了 PLM 的内在维度。受这些观察的启发,重参数化的 Delta Tuning 方法也被提出,该方法使用低维代理参数对(部分)原始模型参数进行重参数化,仅优化代理参数,从而降低计算和内存成本。
另一个著名的工作 LoRA 则假设模型调整期间权重的变化具有较低的「本征秩」。基于这一假设,他们提出了针对自注意模块中原始权重矩阵的变化优化低秩分解。在部署中,优化的低秩分解矩阵相乘以获得自注意力权重矩阵的增量。通过这种方式,LoRA 可以匹配 GLUE 基准上的微调性能。他们展示了该方法在各种规模和架构的 PLM ,甚至 GPT3 上的有效性。
这类低维假设不仅适用于单任务的适配,还可以将其扩充到多任务的场景。IPT 假设对于多个任务存在着同一个低维本征子空间,而仅仅调整子空间的参数就可以同时在 100 多个 NLP 任务上达到令人满意的效果。此方法没有使用随机子空间,而是试图找到一个由多个 NLP 任务共享的公共子空间。实验表明,在一个 250 维的低维子空间内,仅仅通过调整 250 个参数,就可以在 100 多个 NLP 任务上复现 Prompt Tuning 超过 80% 的性能。
重参数化方法往往基于类似的低维或低秩假设。
Delta Tuning的理论视角
Delta Tuning 本质上是否有共通之处?研究者认为,Delta Tuning 方法不仅具有很高的实用价值,更具有深远的理论意义,它们似乎都在不约而同地证明一件事情:即大模型的适配过程似乎是一个非常低消耗的过程(相比于预训练),它可以通过非常少的数据和非常少的参数调整来完成。Delta Tuning 的成功启发研究人员去进一步地探索模型适配背后的理论框架,本文提出了优化和最优控制两个视角的框架去对 Delta Tuning 进行理论层面的阐释。
优化角度
Delta Tuning 试图通过微调一小部分参数来达到在原大规模语言模型上做全参数微调的效果,并减少内存占用。从优化角度,研究者分析 Delta Tuning 的效果并讨论了在低维假设下的一些 Delta Tuning 方法的设计。使用 Delta Tuning 后,目标函数及其所依赖的参数都可能会发生改变。
对新的目标函数,仅优化其与 Delta Tuning 有关的参数,如果初值足够好,在一定假设意义下模型的性能不会有大的损害。但是为了确保 Delta Tuning 的有效性,有必要去开发问题的结构来设计这个新的目标函数。其出发点是利用问题内在的低维特性。一般而言,在实践中有两种思路被证明是有用的:
- 在特定的低维的子空间内寻找解向量;
- 在特定的低维的函数空间内近似目标函数。
因为对深度学习中的大部分应用,目标函数通常有很多局部极小值点,所以当初值接近一个局部极小值点时,仅仅个别搜索方向是重要的,或者目标函数在此邻域能被更简单的函数近似表示。因此这两种优化思路都有望取得较好效果,并且对低维的参数进行优化通常也更为有效和稳定。
解空间的低维表示。已有研究表明预训练语言模型的参数优化遵循低维的流形 (Aghajanyan et al., 2021), 因此可以将此流形嵌入到解向量的一个低维的表示上。如果这个低维表示是精确的,那么在原模型上的全参数微调等价于在此低维参数上的微调。如果低维表示存在误差,那么当预训练模型的目标函数和新的目标函数满足 Lipschitz 连续性,最终全参数微调和低维参数微调的效果差异也是可控的。
一些 Delta Tuning 方法得益此设计思路。比如,在 LoRA (Hu et al., 2021a) 中,权重矩阵采用低秩近似;在 BitFit (Zaken et al., 2021) 和 diff pruning (Guo et al., 2021),只有一些选定的参数被优化。这些方法本质都是在更小的关于解向量的子空间里更新参数,最终能取得较好的效果。
函数空间的低维表示。另一种做法是直接设计原目标函数的一个近似函数,并期望此函数近似的误差较小。这样的函数近似可以是增量网络 (Houlsby et al., 2019) 或增广特征空间 (Lester et al., 2021)。因为通常更关心语言模型的最终效果,因此直接考虑对目标函数本身的近似效果是合理的。
在实践中构建这样的函数近似有多种不同的做法。最简单的是固定网络中部分参数,只微调其余部分,该方法期望网络的一部分能大致反映整个网络的性能。因为网络中函数的作用由数据流来刻画,所以可以在原网络中的数据通路中注入低秩的表示,得到的新模型是一个增量网络,比如 Adapter。函数的误差由增量网络的表示能力来确定。
如果开发 Transformer 的自回归结构,一些更精细的函数近似也能被得到。比如prompt tuning (Lester et al., 2021) 将一系列 prompt token 作为前缀添加到输入中,并且只对这些 prompt token 依赖的参数微调。这种方式可以视作是对特征空间的增广,并且得益于 Transformer 的性质,这样的函数能较好地近似原函数,并且引导语言模型关注具体的任务。相关的方法还有 prefix tuning (Li & Liang, 2021)。实验观测到 prompt tuning 对更大模型和更大的数据集有更好的优势,这也是合理的,因为这些方法本质是用低维的函数来近似高维的函数,当模型和数据的规模增大时,也自然有更多的自由度来选择函数近似的子空间。
两种低维表示通常可以得到形式上相近的 Delta Tuning 方法。(He et al., 2022) 对 Adapter、prefix tuning 和 LoRA 做了一个形式上统一的表述,这可以被视作从函数近似的角度来看待各种 Delta Tuning 技术。
研究者的讨论表明这些 Delta Tuning 方法都依赖于低维的假设。事实上,在不同的任务上甚至也存在公共的低维子空间 (Qin et al., 2021b)。Su et al. (2021) 以及实验部分也展示了 Delta Tuning 在不同任务间的迁移性。因为 Delta Tuning 的实际效果不可避免地与任务相关,所以为了达到全参数微调的效果,更好地挖掘利用问题本身的结构或者设计一些混合式算法是有益的。
最优控制角度
基于以往的从最优控制角度解释深度学习的理论,研究者从揭示了 Delta Tuning 可以看作寻找最优控制器的过程。对于一个自回归的分类模型来说,模型会在最后一步(标记为位置)生成标签的预测,该优化过程可以表示为,其中。这里的函数定义了 PLM 中在 Delta 的干预下改变的前向传播。具体来说,可学习的激活来自的固定参数,以便在第层的表示可以 被正确地转换为。
因此,两个连续层之间的表示变换由函数和 Transformer 中的残差连接来描述。而无论是对 Addition-based 方法的 Adapter 和 Prefix,还是指定式方法的 BitFit,亦或是重参数化方法的 LoRA,都可以推导出这样一个函数来表示 Delta Tuning(详细推导在论文中)。
研究者把 Delta Tuning 中的 Softmax 函数和正则化项看作是终端,并且将 Delta 参数作为控制变量的运行损失,把 Delta Tuning 问题表述为离散时间控制问题,因而 Delta Tuning 中的前向和后向传播等效于 Pontryagin 最大原理中共态过程的计算。总而言之,增量调整可以看作是为特定下游任务寻求 PLM 的最佳控制器的过程。
研究者的分析可以启发新颖的 Delta Tuning 方法的设计,还证明了 Delta 参数 对 PLM 的干预等同于控制器的设计。通过应用控制器设计的理论,他们期望提出更多具有理论保证的 Delta Tuning 方法,即设计的 delta 结构在充分激发 PLM 的情况下具有原则上的可解释性。
Delta Tuning全方位的实验分析
作为激发并调用大型 PLM 的高效方法,Delta Tuning在各种实际应用场景下具有巨大的潜力。在本节中,研究者进行了系统的实验,以更深入地了解不同主流 delta 调优方法的属性。