论文:
《Compacter: Efficient Low-Rank Hypercomplex Adapter Layers》
SOTA
的预训练语言模型(pretrained language models: PLMs
)在自然语言处理中使用了高度过参数化的表示(over-parameterized representations
),包含数以亿计的参数,从而在广泛的 NLP benchmarks
中获得成功。这些模型通常通过微调来应用于下游任务,这需要更新所有参数并为每个任务存储一个 fine-tuned model
的副本。这会导致巨大的存储成本和部署成本,并阻碍大规模 PLM
应用于实际应用。此外,已经证明 over-parameterized models
在低资源数据集上的微调会出现不稳定性,可能导致较差的性能。
受 John von Neumann
的名人名言的启发,我们问,既然我们已经通过 PLM
学到了通用的 language representations
,那么我们需要多少参数才能在标准 NLP
任务上达到 SOTA
的性能水平。具体来说,我们的目标是开发出实用的、内存高效的方法,在训练最小的参数集合的同时,达到与 full fine-tuning
相当或更好的性能。
最近的文献已经引入了 parameter-efficient fine-tuning
方法。这些方法通常固定 pretrained model
的参数,并为每个任务引入一组可训练的参数,在可训练参数数量以及任务性能之间进行权衡。在另一个研究方向中,prompts
(即,任务的自然语言描述)和 demonstrations
一起,已被用来在某些 benchmarks
上达到合理的性能,而无需任何参数更新(《Language models are few-shot learners》
),但它们的性能通常落后于 fine-tuned
的模型。它们还需要巨大的模型才能正常工作,但随着模型规模的增大,选择好的 prompts
变得更加困难(《True Few-Shot Learning with Language Models》
)。soft prompt
方法将 prompts
视为可训练的连续参数,这些参数被添加到 input layer
或 intermediate layers
的输入中(《Prefix-tuning: Optimizing continuous prompts for generation》
、《Warp: Word-level adversarial reprogramming》
、《The power of scale for parameter-efficient prompt tuning》
)。 然而,这种方法通常需要大型模型才能取得良好的性能,并且对初始化非常敏感,在训练过程中不稳定。
具有理论基础的低秩方法(low-rank methods
)使用随机投影训练位于低维子空间中的少量参数(《Measuring the intrinsic dimension of objective landscapes》
、《Intrinsic dimensionality explains the effectiveness of language model fine-tuning》
)。然而,存储随机投影矩阵(random projection matrix
)会造成大量内存开销,并导致训练时间缓慢。在另一个研究方向,adapter
方法(《Parameter-efficient transfer learning for nlp》
、《Efficient parametrization of multi-domain deep neural network》
)在 pretrained
模型的不同层中插入可训练的 transformations
,需要比上述方法更多的参数,但更加内存高效,并获得与 full fine-tuning
相当的性能(《Parameter-efficient transfer learning for nlp》
、《Exploring versatile generative language model via parameter-efficient transfer learning》
)。
在本文中,我们提出了 Compacter
,一种对大规模语言模型进行微调的方法,与现有方法相比,在可训练参数数量、任务性能和内存占用之间取得了出色的平衡(参考 Figure 1
)。 Compacter
建立在 adapters
(《Parameter-efficient transfer learning for nlp》
)、低秩方法(《Measuring the intrinsic dimension of objective landscapes》
)、以及最近的超复杂乘法层(《Beyond fully-connected layers with quaternions: Parameterization of hypercomplex multiplications with 1/n parameters》
)的概念之上。与 adapters
类似,Compacter
在 pretrained
模型的权重中插入 task-specific
的权重矩阵。每个Compacter
权重矩阵计算为:shared "slow" weights
和 "fast" rank-one matrices
的 Kronecker
乘积之和,其中这个 "slow" weights
和 "fast" matrices
在每个 Compacter layers
上定义(见 Figure 3
)。因此,与常规 adapters
的 Compacter
实现了 adapters
的尺寸为 Compacter
训练了PLM
参数的0.047%
。在标准 GLUE and SuperGLUE benchmarks
中,Compacter
优于其他 parameter-efficient fine-tuning
方法,并获得与 full fine-tuning
相当或更好的性能。在低资源环境中,Compacter
优于标准微调。
Compacter
还是adapters
的变体,但是它有两个优化:
首先,通过两个向量的
Kronecker Product
来获得矩阵(即,秩为 1
的矩阵分解),这降低了参数的数量。其次,通过在多个
adapter
之间来共享,这也降低了参数的数量。 注意:这里并没有跨任务共享
adapter
,只是在单个任务内部跨adapters
共享。
总结一下,我们的贡献如下:
1)
:我们提出了 Compacter
(Compact Adapter)
)layers
,一种参数高效的方法来适配大型语言模型。
2)
:我们证明 Compacter
在 GLUE
和 SuperGLUE
上获得了强大的经验性能。
3)
:我们证明 Compacter
在低资源环境(low-resource settings
)中优于微调。
4)
:我们提供了 Compacter
的参数复杂度分析,显示它需要远少于 adapters
和 fine-tuning
的参数。
5)
:我们系统地评估了最近的 parameter-efficient fine-tuning
方法,关于在训练时间和内存消耗方面的性能。
我们发布了我们的代码以促进未来的工作。
相关工作:
Adapters
:
最近兴起 adapters
作为微调 pretrained
语言模型的新范式(《Parameter-efficient transfer learning for nlp》
)。
在另一条研究方向中,《Udapter: Language adaptation for truly universal dependency parsing》
根据 adapters
和 contextual parameter generator
网络(《Contextual parameter generation for universal neural machine translation》
),提出了一种多语言依存解析(dependency parsing
)方法,其中他们根据 trained input language embeddings
来生成 adapter parameters
。然而,与 base model
相比,这导致大幅增加的参数数量。
同时,《Parameter-efficient multi-task fine-tuning for transformers via shared hypernetworks》
使用单个紧凑的超网络(hypernetwork
),允许根据多个任务、以及 transformer model
的多个 layers
来高效地生成 adapter weights
。
《Conditionally adaptive multi-task learning: Improving transfer learning in NLP using fewer parameters & less data》
还为多任务学习提出了一种 task-conditioned transformer
,参数效率较低。
上述工作与 Compacter
互补,可以潜在地将 Compacter
与 contextual parameter generation
相结合,从而生成 adapter
模块。与 《Parameter-efficient multi-task fine-tuning for transformers via shared hypernetworks》
相比, Compacter++
将参数降低了 6.2
倍。
Hypercomplex representations
:在 hypercomplex
领域的深度学习进展还处于初级阶段,大多数工作都是近期的工作。用 Hamilton
乘法替换标准网络中的矩阵乘法,具有更少的自由度,在单次乘法操作中可以节省多达 4
倍的参数(《Quaternion recurrent neural networks》
、《Lightweight and efficient neural natural language processing with quaternion networks》
)。
最近,《Beyond fully-connected layers with quaternions: Parameterization of hypercomplex multiplications wit h1/n parameters》
以一种方式扩展了这样的方法,在一个温和条件下,可以将全连接层的参数降低到 hypercomplex space
进行大型语言模型的 efficient fine-tuning
。
其它 parameter-efficient
方法:
《Measuring the intrinsic dimension of objective landscapes》
和 《Intrinsic dimensionality explains the effectiveness of language model fine-tuning》
研究了在 low-dimensional randomly oriented subspace
中(而不是原始参数空间中)训练模型。
另一条最近的研究线表明,像 BERT
这样的 pretrained
模型在其能力上是冗余的,允许显著稀疏化而终端指标几乎不降低(《The lottery ticket hypothesis for pre-trained bert networks》
、《When BERT Plays the Lottery, All Tickets Are Winning》
、《Evaluating lottery tickets under distributional shifts》
)。然而,这样的方法目前硬件支持不好,性能通常比专用的高效架构更差(《What is the state of neural network pruning?》
)。
我们首先介绍 Kronecker product
和 adapter layers
所需的背景知识(《Parameter-efficient transfer learning for nlp》
、《Efficient parametrization of multi-domain deep neural networks》
)。
Kronecker Product
:矩阵 Kronecker Product
记做
其中
即,将
中的每个元素与 相乘。
Adapter Layers
:最近的工作表明,微调语言模型的所有参数可能导致次优解,特别是对于 low-resource datasets
(《To tune or not to tune? adapting pretrained representations to diverse tasks》
)。作为替代方法, 《Efficient parametrization of multi-domain deep neural networks》
和 《Parameter-efficient transfer learningfor nlp》
提出了在 pretrained
模型的 layers
中插入小的 task-specific
模块(称 adapter layers
),从而将模型迁移到新任务,如 Figure 2
所示。然后他们只训练 adapters
和 layer normalizations
,而 pretrained
模型的其余参数保持固定。这种方法允许 pretrained
语言模型高效地适应新的任务。
transformer
模型的每一层主要由两个模块组成:一个 attention block
、一个 feed-forward block
。这两个模块之后都有一个 skip connection
。如 Figure 2
所示,《Parameter-efficient transfer learningfor nlp》
建议在 skip connection
之前、在每个 block
之后插入一个 adapter layer
。
adapters
是 bottleneck
架构。通过保持 output dimension
与 input dimension
相同,它们不会改变原始模型的结构或参数。第 adapter layer
down-projection
GeLU
非线性函数(《Gaussian error linear units (gelus)》
)、以及 up-projection
adapter layer
的 bottleneck
维度。adapters
定义为:
其中 input hidden state
。
在本节中,我们提出 Compacter
,一种紧凑的和高效的方法来适配大型 PLMs
。
问题形式化:我们考虑微调大规模语言模型的一般问题,其中给定包含 pretrained
语言模型
在本节中,我们基于最近的 parameterized hypercomplex multiplication layers: PHM
(《Beyond fully-connected layers with quaternions: Parameterization of hypercomplex multiplications with 1/n parameters》
)的进展,引入 adapter layers
的一个高效版本。据我们所知,我们是第一个利用 PHM layer
来为大型 transformer
模型进行 efficient fine-tuning
的。PHM layer
与全连接层具有相似的形式,将输入
其中:bias
向量。
关键区别在于:在 PHM layer
中,Kronecker product
的和。假设 Kronecker products
之和:
其中:
PHM layer
的参数复杂度为 《Beyond fully-connected layers with quaternions: Parameterization of hypercomplex multiplications with 1/n parameters》
)。
这就是推荐算法中常用的矩阵分解方法。
先前的工作表明,pretrained
模型中捕获的一些信息可以被忽略从而用于迁移(《Revisiting Few-sample BERT Fine-tuning》
、《Rethinking Embedding Coupling in Pre-trained Language Models》
)。类似地,也观察到 adapters
中捕获的信息中存在冗余,lower layers
中 adapters
的重要性较低(《Parameter-efficient transfer learningfor nlp》
)。此外,在某些任务上,跨 layers
共享 adapters
仅导致性能上较小的降低(《AdapterDrop: On the Efficiency of Adapters in Transformers》
)。受这些见解的启发,我们提出以下两点扩展,从而使 hypercomplex adapters
更高效:
Sharing information across adapters
:在所有层之间共享所有 adapter parameters
的限制性总体上太强,不能与微调或使用常规 adapters
的性能相媲美(《AdapterDrop: On the Efficiency of Adapters in Transformers》
)。但是,我们如 adapters
分解为
因此,我们将 adaptation weights
分为:
shared parameters
:捕获对适配目标任务有用的通用信息。
adapter-specific parameters
:聚焦于捕获那些适配每个 individual layer
的相关信息。
具体来说,我们将 adapter layers
之间 shared parameters
,而 adapter-specific parameters
。
Low-rank parameterization
:低秩方法(《Measuring the intrinsic dimension of objective landscapes》
、《Intrinsic dimensionality explains the effectiveness of language model fine-tuning》
)表明,通过在低秩子空间中优化任务可以实现强大的性能。类似地,我们假设也可以通过在低秩子空间中学习 transformations
从而有效地适配模型。为此,我们提出将 low-rank parameterized hypercomplex multiplication layer
(LPHM
):
通常,我们设置 1
的矩阵。根据目标任务的复杂性,可以将 Figure 3
说明了我们的方法。总体而言,LPHM layer
将复杂度进一步降低到 LPHM layer
也可以看作利用跨 adapters
共享的 "slow" weights
individual layer
的 adapter-specific information
的 "fast" weights
Compacter
:基于上述公式,我们引入 Compacter layer
,它将 adapters
中的 down-projection layers
和 up-projection layers
替换如下:
其中:
up-projection
权重
down-projection
权重
虽然 transformer
中每层的两个 adapters
都有自己的、秩为 1
的 adapter layers
上共享
是否可以将
和 共享为同一个 ?论文并未说明,可以尝试。
在本节中,我们比较 Compacter
与 adapters
的参数数量。
Adapters parameters
:在标准设置中,transformer
模型的每一层添加两个 adapters
( 《Parameter-efficient transfer learningfor nlp》
)。每个 adapter layer
包含 down-projection
矩阵 up-projection
矩阵 adapter
的 bottleneck
维度。因此,具有 encoder-decoder transformer
模型中, adapters
总参数数量为
encoder
中包含个参数、 decoder
中包含个参数。
PHM-Adapter parameters
:在常规 PHM layer
中(《Beyond fully-connected layers with quaternions: Parameterization of hypercomplex multiplications with 1/n parameters》
),如公式 PHM layer
的总参数量为 adapters
、PHM layer
、以及大型 PLM
(如 T5-large
)的典型取值成立,其中 hidden size
adapter hidden size
PHM layer
降低参数规模到标准全连接层参数数量的几乎
类似地,使用 PHM layer
建模 down-projection
矩阵和 up-projection
矩阵可以提供参数规模降低到近乎 adapter with a PHM layer
总共有 encoder-decoder transformer
模型,PHM-Adapter
的参数总数为
Compacter
参数:Compacter
在所有层之间共享权重矩阵 Compacter
对每个 adapter
也有两个秩为 1
的权重矩阵 down-projection
权重和 up-projection
权重的总参数数量为 encoder-decoder transformer
中, Compacter
的总参数数量为
在大量层的设置中,统治项为 Compacter
的复杂度为 adapters
的 PHM-Adapter
的
在 Compacter
中保持恒定,总共 PHM
和 adapter layers
, 222M
参数的 T5_BASE
模型中,Compacter
仅学习了 0.047%
的参数,同时保持与 full fine-tuning
相当的性能。
数据集:遵循 T5
,我们在 GLUE
和 SUPERGLUE
等 benchmarks
上评估各种方法的性能。这些 benchmarks
涵盖 paraphrase detection
(MRPC,QQP
)、情感分类(SST-2
)、自然语言推理(MNLI,RTE,QNLI,CB
)、linguistic acceptability
(CoLA
)、问答(MultiRC,ReCoRD,BoolQ
)、词义消歧(WiC
)和句子补全(COPA
)等多个任务。由于原始测试集不公开,我们遵循 《Revisiting few-sample bert fine-tuning》
的做法,从训练集中划分出 1k
个样本用作验证集,而使用原始验证数据作为测试集。对于样本数少于 10k
的数据集(RTE,MRPC,STS-B,CoLA,COPA,WiC,CB,BoolQ,MultiRC
),我们将原始验证集等分为两半:一半用于验证、另一半用于测试。
实验详细信息:我们在所有实验中使用当前最 SOTA
的 encoder-decoder T5 model
作为所有方法的底层模型。为了计算效率,我们在 T5_BASE
模型上报告所有结果( 112 encoder and decoder layers
,共有 222M
个参数)。我们使用 T5_BASE
的 HuggingFace PyTorch
实现。我们在大型数据集上微调所有方法 3 epochs
,在 GLUE
的低资源数据集(MRPC,CoLA,STS-B,RTE,BoolQ,CB,COPA,WiC
)上微调 20 epochs
从而使模型收敛(《Revisiting few-sample bert fine-tuning》
)。对于所有adapter-based
的方法,我们实验 adapters
的 bottleneck size
为 {96,48,24}
。我们为所有模型保存每个 epoch
的 checkpoint
,并报告最佳超参数的结果(最佳超参数通过每个任务的验证集上的表现来筛选)。对于 PHM layer
,我们使用 《Parameterized hypercomplex graph neural networks for graph classification》
的 PyTorch
实现。我们在附录 A
中包括 low-level
的详细信息。对于我们的方法,我们实验 B
中包括所有
遵循 《Parameter efficientmulti-task fine-tuning for transformers via shared hypernetworks》
在所有任务上、所有方法中,我们冻结 pretrained
模型的 output layer
。我们在附录 C
中显示了微调 output layer
的结果。
一般而言,需要微调
output layer
(即,prediction head
)。因为这是与具体的任务密切相关的。实验结果表明,冻结pretrained
模型的output layer
,会大大损害下游任务的性能。
遵循 《Parameter-efficient transfer learning for nlp》
,我们在适用的情况下更新所有方法的 layer normalization
参数。
baselines
:我们与几种最近提出的 parameter-efficient fine-tuning
方法进行比较:
T5_BASE
:我们将我们的方法与标准的 T5
微调进行比较,其中我们对每个任务微调模型的所有参数。
ADAPTER
:我们与强大的 adapter baseline
(《Parameter-efficient transfer learning for nlp》
)进行比较,它为每个任务在 T5
的每个 transformer block
的前馈模块之后、以及注意力模块之后添加 adapters
。
PFEIFFER-ADAPTER
:《AdapterFusion: Non-destructive task composition for transfer learning》
提出的一种更高效的 adapter
变体,其中每层只保留一个 adapter
以获得更好的训练效率。我们实验了保留每层的两个 adapters
中的任何一个 adapter
,发现保留自注意力模块后的 adapter
表现最好。
注意,
AdapterFusion
原始论文中保留的是feed-forward layer
之后的adapter
。
ADAPTER-LOWRANK
:我们将每个 adapter
的权重参数化为两个秩为 1
的权重矩阵的乘积。
PROMPT TUNING
:prompt tuning
(《The power of scale for parameter-efficient prompt tuning》
)是 《Prefix-tuning: Optimizing continuous prompts for generation》
的后续变体,在输入前面添加随机初始化的 continuous prompt
(PROMPT TUNING-R
)。
我们还比较了一种变体,它使用 pretrained
语言模型词表的 token embeddings
来初始化 prompts
(PROMPT TUNING-T
)(《The power of scale for parameter-efficientprompt tuning》
)。
INTRINSIC-SAID
:Structure Aware Intrinsic Dimension
(《Intrinsic dimensionality explains the effectiveness of language model fine-tuning》
)通过在较低维子空间
参数 pretrained
模型的参数。
Fastfood
变换(《Fastfood-approximating kernel expansions in loglinear time》
)的随机线性投影。
然后,他们考虑 PLM
中的权重矩阵总数
ADAPTERDROP
:我们将 《AdapterDrop: On the Efficiency of Adapters in Transformers》
的方法应用于 T5
和 ADAPTER
,该方法通过删除 lower transformer layers
中的 adapters
来提高训练效率。因此,我们删除 T5_BASE
中 both the encoder and the decoder
的前五层中的 adapters
。
BITFIT
:《Tinytl: Reduce memory, not parametersfor efficient on-device learning》
提出只训练 bias
而不训练权重。通过不存储 intermediate activations
,该方法实现了可观的内存节省。 《Bitfit: Simple parameter-efficient fine-tuning for transformer-based masked language models》
研究了一种类似的只微调 bias
和 final output layer
的方法。
我们的方法:
PHM-Adapter
:我们如式 PHM layer
学习 adapters
的权重。据我们所知,我们是第一个利用 PHM
思想进行大型语言模型的高效微调的。
Compacter
:我们如 LPHM layers
学习 adapters
的权重。
我们还探索了一个变体,其中我们在每个 transformer block
中只保留 feed-forward layer
之后后的 Compacter layer
(COMPACTER++
)。
GLUE Benchmark
的结果:Table 1
显示了 T5_BASE
在 GLUE
上的结果(T5_SMALL
的结果见附录 E
)。Compacter
和Compacter++
优于所有以前的 parameter-efficient
方法,并与 full fine-tuning
的性能相当,而仅训练 0.07%
(Compacter
)和 0.047%
(Compacter++
)的参数。我们现在详细讨论不同的方法。
Adapter-based methods
:
对于Adapter
,not fine-tuning the classifier
会大大损害性能(85.78 vs 86.48
, 参见附录C
)。
只在 self-attention
模块之后添加 adapters
的 PFEIFFER-ADAPTER
优于标准的 ADAPTER
,而且参数更高效。
ADAPTERDROP
的性能低于微调,表明 encoder-decoder T5 model
中适配 lower layers
对其性能很重要。
另外,ADAPTER-LOWRANK
的表达能力不足以在这个 benchmark
中表现良好。
ADAPTER-LOWRANK
的性能比Adapter
更好,而且参数少得多,因此性价比更高。
Prompt tuning and BitFit
:
对于 PROMPT TUNING
,我们观察到高度依赖初始化和学习率,这也在 《Prefix-tuning: Optimizing continuous prompts for generation》
中得到确认。我们使用多个随机种子进行了实验,但性能明显落后于微调,尤其是在低资源数据集上。这可以用这些方法的灵活性有限来解释,因为所有信息都需要包含在 prefixes
中。因此,该方法只允许与模型的其余部分有限的交互,良好的性能需要非常大的模型(《The power of scale for parameter-efficient prompt tuning》
)。此外,序列长度的增加会导致内存开销,prompt tokens
的数量受模型最大输入长度的限制,这使得这种方法缺乏灵活性,不适合处理大上下文。
类似地,BITFIT
的表现也比微调差,尤其是在低资源数据集上。
Intrinsic-SAID
:有趣的是,只微调模型参数的 0.009%
的 INTRINSIC-SAID
的平均性能仅比 fine-tuning baseline
低 1.05
分。但是,该方法有两个实际缺点:存储随机投影矩阵会导致可观的内存开销、训练非常缓慢。
尽管如此,INTRINSIC-SAID
提供了关于 pretrained
语言模型的低秩优化有效性的见解(《Intrinsic dimensionality explains the effectiveness of language model fine-tuning》
),这推动了 Compacter
等 parameter-efficient
方法的发展。
Compacter
:对于我们提出的方法,我们观察到对 PHM-ADAPTER
和 COMPACTER++
微调输出层没有太大的性能差异(见附录 C
)。
PHM-ADAPTER
将 ADAPTER
的参数从 0.83%
降低到 0.179%
(n=12
),4.64
倍更高的参数效率。
COMPACTER
将参数数量降低到了显著的 0.073%
,同时获得了与 full fine-tuning
相当的结果。
通过删除自注意力之后的 COMPACTER layer
,COMPACTER++
获得了类似的性能,同时将参数降低到 0.047%
。
不更新 layer normalization
的适配可能是一个进一步减少参数的有前途的方向,例如,基于最近的 normalization-free models
的进展(《High-performance large-scale image recognition without normalization》
),我们留待未来工作。
SUPERGLUE Benchmark
的结果:Table 2
显示了这些方法在 SUPERGLUE
上的性能。我们在附录 D
中包括所有 Table 1
中的 GLUE
相似的模式。COMPACTER
和 COMPACTER++
相比其他 parameter-efficient fine-tuning
方法的性能明显更好,甚至优于 full fine-tuning
,同时只训练 0.073%
和 0.048%
的参数。
Efficiency Evaluation
:在本节中,我们在相同的计算预算下比较我们提出的方法,与各种最近提出的 parameter-compact fine-tuning
方法的效率。为此,我们在 MNLI
数据集上对所有方法训练 1 epoch
。
对于每个方法,我们选择最大的 batch size
从而适合固定的 GPU
内存预算(24 GB
)。
对于所有 adapter-based
方法,我们将 bottleneck size
固定为 24
。
对于 PROMPT TUNING
,我们将 prefix tokens
数量设置为 100
。
对于 INTRINSIC-SAID
,我们设置
最后,对于 COMPACTER
及其变体,我们设置
在Table 3
中,我们报告每个任务的 trained parameters
的百分比、每个 epoch
的训练时间、以及每个方法的内存使用情况。 此外,Figure 1
显示了定量性能、trained parameters
百分比、以及内存占用之间的权衡。
我们的方法具有几个有吸引力的属性:
根据 Table 1
中的分析,COMPACTER
和 COMPACTER++
获得了高 GLUE
分数(平均跨所有任务)与明显更少的参数规模(分别为 0.073%
和 0.047%
)的最佳组合。
除了 COMPACTER++
的表现良好之外, COMPACTER++
的内存需求是所有方法中第二低的,相比 T5_BASE
减少了 41.94%
的内存使用。
COMPACTER
和 COMPACTER++
也明显加速了训练,相对于 T5_BASE
分别减少了 13.41%
和 26.51%
的训练时间。
另一方面,BITFIT
通过不存储 intermediate activations
,具有最低的内存需求(相对于 T5_BASE
减少 64.2%
),并且是最快的(相对于 T5_BASE
减少 35.06%
的训练时间),代价是定量性能更差(低 1.53
分,参见 Table 1
)。
除此之外我们还可以看到:
依靠 pruning adapters
的方法,即 PFEIFFER-ADAPTER
和 ADAPTERDROP
减少了内存开销并改进了训练时间。然而,与COMPACTER++
相比,它们的参数数目几乎高出一个数量级,分别多出 9.1
倍和 10.5
倍的参数。
此外, PFEIFFER-ADAPTER
的性能与 full fine-tuning
相当(略有下降,参考 Table 1
), ADAPTERDROP
获得了更低的性能(跨所有任务平均降低0.65
)。我们注意到,从 transformer layers
中删除 adapters
是一种通用技术,可以进一步提高 COMPACTER
的效率,我们留待未来工作。
类似地,尽管 ADAPTER-LOWRANK
减少了内存开销并提高了训练时间,但它的性能更差(Table 1
,跨所有任务平均降低0.68
分)。
在另一个方面,INTRINSIC-SAID
和 PROMPT TUNING
方法的参数最少。但是,它们都带来很高的内存开销(分别相对于 full fine-tuning
高出 41.14%
和 24.42%
),训练最慢,其性能明显落后于 full fine-tuning
(见 Table 1
)。
对于 PROMPT TUNING
,高内存成本是因为 self-attention
需要存储完整的注意力矩阵以进行梯度计算,其计算复杂度与序列长度呈二次方关系。
对于 INTRINSIC-SAID
,高内存需求是由于存储大的随机投影矩阵,这限制了 INTRINSIC-SAID
在微调大型 PLM
上的应用。此外,尽管理论上可以在 FastFood transform
进行投影计算,但即使使用 CUDA
实现,实践中也非常缓慢。对于具有大量参数的 pretrained
语言模型,为完整参数空间分配随机投影是不可行的。虽然 Fastfood transform
通过将内存使用从
总体而言,鉴于大型 transformer
模型具有数百万甚至数十亿个参数,如 T5
,efficient memory usage
对实际应用至关重要。COMPACTER
和 COMPACTER++
在性能、内存使用、以及训练时间方面提供了很好的权衡。我们发现只需要相对较少的额外参数即可进行 PLM
的实用的和高效的适配。
Low-resource Fine-tuning
:与 T5_BASE
相比,COMPACTER++
的参数明显更少。在本节中,我们研究这是否可以帮助COMPACTER++
在资源有限的设置中取得更好的泛化。我们对 GLUE
中的每个数据集进行降采样,样本量范围为{100,500,1000,2000,4000}
。Figure 4
显示了结果。COMPACTER++
在低资源设置中明显改进了结果,表明它在这种情况下的微调更有效。
论文:
《BitFit: Simple Parameter-efficient Fine-tuning for Transformer-based Masked Language-models》
大型 pre-trained transformer based
语言模型,特别是来自 BERT
系列的 bidirectional masked language models
(BERT
、Roberta
、Spanbert
),为许多 NLP
任务带来了显著改进。在常用范式下,模型在大型的、标注的语料上用 LM objective
被预训练,然后在 task-specific
的监督数据上微调。这些模型的 large size
使它们的训练和(更重要的是)部署变得昂贵。 加上对微调必须在何种程度上改变原始模型的理论疑问,已促使研究人员考虑 finetuning variants
,其中识别出模型参数的一个小的子集,这个参数子集需要为下游任务的良好性能而进行参数更新,同时保持所有其他参数不变。
我们提出了一种简单有效的微调方法,其具有以下优点:
每个被微调的任务只改变很少的参数。
为每个任务改变相同的参数集合( task-invariance
)。
被改变的参数在整个参数空间中都是隔离(isolated
)的且局部化(localized
)的。
对于小数据集到中型数据集,仅改变这些参数达到与 full fine-tuning
相同的任务准确率,有时甚至能改善结果。
注意:对于大型数据集,
BitFit
的效果较差。
具体而言,我们展示 fine-tuning only the bias-terms
而冻结网络的大部分是非常有效的。此外,如果我们允许任务在性能上稍微下降,我们可以只微调两个 bias
部分("query" bias
、以及 "middle-of-MLP" bias
),这占模型的 bias
参数的一半,且仅占所有模型参数的 0.04%
。
这一结果在内存受限环境中部署 multi-task fine-tuned models
、以及在大多数参数固定的情况下启用 trainable hardware implementations
方面具有很大实用价值。 此外,它也开辟了一系列关于 pre-trained networks
中 bias
项的作用、以及微调过程的 dynamics
的研究方向。
相关工作:识别最小的参数集合从而微调该参数集合从而在最终任务中取得良好性能,这个问题与模型压缩的实际问题相关,也与预训练和微调过程本质、预训练过程和微调过程诱导的 “语言知识” 、以及它们泛化到不同任务的程度等更基本问题都相关。
Over-parameterization
:大型语言模型被证明是过参数化的:它们包含的参数多于推理所需的参数。《Compressing BERT: studying the effects of weight pruning on transfer learning》
已经证明,可以在微调中利用过参数化(overparmeterization
):裁剪后的网络在 transfer setting
中表现良好。我们的工作设置与之互补,其中整个模型都保留下来,但只更新某些参数。
这些工作的显著成功引发了对 “彩票假设” (lottery-ticket hypothesis
)的兴趣(《The lottery ticket hypothesis: Finding sparse, trainable neural networks》
、《The lottery ticket hypothesis for pretrained BERT networks》
、《When BERT plays the lottery, all tickets are winning》
):大模型在预训练中只需要诱导(以高的概率)已存在的子网络(这个子网络被具有正确 inductive bias
所初始化),并发现这些稀疏网络通常能很好地迁移到不同的任务。
Bias terms
:文献中很少讨论 bias
项及其重要性。
《Masking as an efficient alternative to finetuning for pretrained language models》
描述了一种 masking-based
的微调方法,明确提到忽略 bias
项,因为处理它们 “没有观察到对性能的积极影响”。
一个例外是 《Bias also matters: Bias attribution for deep neural network explanation》
的工作,他们从 attribution
方法的角度分析了 bias
项。他们证明了 last layer bias values
负责 predicted class
,并提出了反向传播其重要性的方法。
《Extreme adaptation for personalized neural machine translation》
微调了 NMT systems
的 output softmax
的 bias
,从而个性化 output vocabulary
。
《Training batchnorm and only batchnorm: On the expressive power of random features in cnns》
证明了仅通过训练 batch-norm layers
可以使随机初始化的 CNN
达到合理的准确率。
最后,最接近我们工作的是,《Tiny transfer learning: Towards memory-efficient on-device learning》
证明了类似于我们的 bias-only fine-tuning
对 pre-trained computer vision models
的适配也是有效的。
我们的工作从经验上展示了 bias parameters
改变网络行为的重要性和力量,呼吁我们进一步分析和关注 bias
项。
在通过模型微调的迁移学习中, input
被馈入 pre-trained encoder network
并生成 contextualized representations
。 然后,在 encoder
顶部添加 task-specific classification layer
(这里我们考虑线性分类器),并将整个网络(encoder + task-specific classifiers
)端到端地训练从而最小化任务损失。
理想的属性:尽管 fine-tuning per-task
非常有效,但它也会导致每个 pre-trained task
都有一个唯一的、大型的模型,这使得很难推断微调过程中发生了什么改变;并且随着任务数量的增加,部署也变得困难。理想情况下,我们希望微调方法:
(1)
:与 fully fine-tuned model
的结果相媲美。
(2)
:仅改变模型参数的一小部分。
(3)
:允许任务以流式的形式到达,而不是需要同时访问所有数据集。
(4)
:对于高效的 hardware based
的部署,如果满足以下条件那就更好:跨不同任务之间,需要改变取值的参数集合是相同的。
Learning vs. Exposing
:是否可以满足上述要求取决于有关大型 pre-trained LM
的微调过程本质的一个基本问题:微调过程诱导了学习新能力的程度有多大、以及暴露在预训练过程中学到的已有能力的程度。
现有方法:两项最近的工作已经证明,通过仅改变参数的一个小的子集就可以适应各种最终任务。
第一项工作,《Parameter-efficient transfer learning for NLP》
通过在 pre-trained model
的层之间注入小的、可训练的 task-specific "adapter" modules
来实现这一目标,其中原始参数在任务之间共享。
第二项工作,《Parameter-efficient transfer learning with diff pruning》
的 "Diff-Pruning"
,通过将稀疏的、 task-specific difference-vector
添加到原始参数来实现相同的目标,其中原始参数保持固定并在任务之间共享。 difference-vector
经过正则化从而是稀疏的。
两种方法都仅为每个任务添加很少的可训练参数(准则 (2)
),并且每个任务都可以在不重新访问前面的任务的情况下被添加(准则 (3)
)。它们也部分满足准则 (1)
,与 full fine-tuning
相比性能只有轻微的下降。
adapter method
还支持准则 (4)
,但是 Diff-Pruning
不支持准则 (4)
。 然而,与 Adapter
方法相比,Diff-Pruning
的参数效率更高(特别是它不添加新参数),并且也取得了更好的任务分数。在实验部分,我们将我们的方法与 Diff-Pruning
和 Adapters
进行了比较,结果表明我们在满足标准 (4)
的同时,在许多任务上表现更佳。
Diff-Pruning
的思想比较简单:固定pretrained parameters
,学习一个 diff vector
,使得 task-specific parameter
为:。我们最小化经验风险函数: 其中:
为训练数据集, 为神经网络, 为损失函数。
为正则化系数, 为正则化项。作者正则化 ,使得它非常稀疏,从而满足: 。因此我们可以选择正则化项为: 因为
L0
正则化难以优化,因此作者采用一个binary mask vector
来获得 : 其中
为待学习的 dense vector
参数。可以进一步松弛
到 上的连续空间从而进行梯度下降。其中:
为 0 ~ 1
上的均匀分布的随机变量。
为 0 ~1
上的连续变量。其中的每个维度代表 对应维度的二元 Bernoulli
分布的参数。
。 ,而 ,它们为两个常量,用于限制 到区间 之间。
。 此时,作者优化
L0
正则化项的期望:最终的目标函数为:
我们提出了一种称为 BIas-Term FIne-Tuning: BitFit
的方法,在该方法中,我们冻结了 transformer-encoder
的大多数参数,仅训练 bias-terms
和 task-specific classification layer
。 BitFit
具有三个关键特性:
(1)
:匹配 fully fine-tuned model
的结果。
(2)
:允许任务以流式的形式到达,因此不需要同时访问所有数据集。
(3)
:仅微调模型参数的一小部分。
该方法是 parameter-efficient
的:每个新任务仅需要存储 bias terms parameter
向量(占总参数规模的不到 0.1%
),以及 task-specific final linear classifier layer
。
具体而言,BERT encoder
由 self-attention heads
开始(即,多头自注意力,key encoder, query encoder, value encoder
,每个 encoder
的形式都是线性层,
其中,encoder layer
的输出(对于第一个 encoder layer
,embedding layer
的输出)。 然后,这些结果使用注意力机制(不涉及新参数)来组合:
得到的结果然后被馈入带有 layer-norm (LN)
的一个 MLP
:
其中,所有的 bias
项。
结构为:
----------------------------skip connection-----
/ \
x -> attention - > h1 -> linear with dropout -> + -> LN -> linear with Gelu -> linear with dropout -> + -> LN -> output
\ /
----------------skip connection-----------------
bias
项是加性(additive
)的,且对应网络的很小一部分;在 BERT_BASE
和 BERT_LARGE
中,bias
参数分别占每个模型总参数数的 0.09%
和 0.08%
。
我们展示通过冻结除了 bias
项以外的所有参数,并仅仅微调 bias
项 bias
参数的一个子集,即与 query
的 bias
、第二个 MLP
的 bias
(full-model fine-tuning
相媲美的准确率。
数据集:GLUE benchmark
。
与以前的工作一致(《Parameter-efficient transfer learning for NLP》
、《Parameter-efficient transfer learning with diff pruning》
),我们排除了 WNLI
任务,在该任务上 BERT
模型并未优于 the majority baseline
。
模型和优化:我们使用公开可用的 pre-trained BERT_BASE, BERT_LARGE
和 pre-trained RoBERTa_BASE
模型,使用HuggingFace
接口和实现。附录 §A.2
列出了 optimization
的详细信息。
与 Diff-Pruning
和 Adapters
的比较:在第一个实验中,我们将 Bit-Fit
与 Diff-Pruning
方法和 Adapters
方法进行了比较,当使用更少的参数时。Table 1
报告了与《Parameter-efficient transfer learning for NLP》
、《Parameter-efficient transfer learning with diff pruning》
等报告的 Adapter
结果、Diff-Pruning
结果相比的验证集和测试集性能。该实验使用 BERT_LARGE
模型。
在验证集上,BitFit
与 Diff-Pruning
相比,在 9
个任务中的 4
个上表现更好,而使用的可训练参数少 6
倍。
在测试集上,BitFit
与 Diff-Pruning
相比有 2
个明显的胜利,与 Adapters
相比有 4
个明显的胜利,同时使用的参数比 Adapters
少 45
倍。
不同的 Base-models
:我们在不同的 base
模型(较小的 BERT_BASE
、以及表现更好的 RoBERTa_BASE
)上重复实验。Table 2
中的结果表明趋势与 Table 1
保持一致。
bias
参数特殊吗:bias
参数特殊,还是任何随机的参数子集都可以?我们从整个模型中随机采样了与 BitFit
中一样多的参数,仅对它们进行了微调(Table 3
中的 "rand uniform"
行)。结果在所有任务上都显著更差。如果我们随机采样参数矩阵中的完整行或完整列,结果也是类似的(Table 3
中的 "rand row/col"
行)
更少的 bias
参数:我们可以仅微调 bias
参数的一个子集吗?
我们将 bias
向量 LM
上的初始值 Figure 1
显示了每一层每个 bias
项的变化量,针对 RTE
任务(其他任务看起来非常相似,见附录 §A.4
)。
"key" bias
《Multi-head attention: Collaborate instead of concatenate》
的理论观察一致。
相比之下,"query" bias
MLP
层的 bias
768
维映射到 3072
维)的变化最大。
Table 3
报告了仅微调 BERT_BASE
模型的 bias
参数的结果只有轻微的下降。仅微调 bias
类型都是必要的。如预期的那样,使用 frozen BERT_BASE
模型会产生更差的结果。
Generalization gap
:尽管在大多数情况下,full fine-tuning
几乎达到 100%
的训练准确率,但我们发现 BitFit
模型的 generalization gap
(训练误差与测试误差之间的差异)要明显更小。
Token-level tasks
:GLUE
任务都是 sentence level
的。 我们还对 PTB POS-tagging
进行了 token-level
实验。BERT_BASE
、BERT_LARGE
和 RoBERTa_BASE
的 full fine-tuning
结果分别为 97.2
、97.4
、97.2
,而 BitFit
结果分别为 97.2
、97.4
、97.1
。
训练数据的规模:GLUE
结果表明,BitFit
达到 full fine-tuning
性能的能力与训练数据集大小之间存在反相关。
为了测试这一点(并验证另一个 token-level task
),我们在 SQuAD v1.0
的不同大小子集上进行了训练。Figure 2
中的结果显示了一个明确的趋势:
在较小的数据集上,BitFit
明显优于full fine-tuning
。
而当有更多可用的训练数据时,则full fine-tuning
优于BitFit
。
我们得出结论:在中小数据集的情况下,BitFit
是一种值得考虑的 targetted finetuning method
。
论文:
《Towards a Unified View of Parameter-Efficient Transfer Learning》
从 pre-trained language models: PLMs
进行迁移学习现已成为自然语言处理的主流范式,在许多任务上都能取得强大的性能。将通用的 PLM
适配到下游任务的最常见方式是:微调所有的模型参数(full fine-tuning
)。然而,这会为每个任务生成一份 fine-tuned model parameters
的副本,当应用于大量任务时,代价昂贵。随着 PLM
规模不断增大,从数亿(GPT-2
、BART
)到数百亿(GPT-3
)乃至万亿参数(《Switch transformers: Scaling to trillion parameter models with simple and efficient sparsity》
),这个问题尤为突出。
为缓解这个问题,一些轻量化的替代方法被提出,只更新少量额外参数而让大多数 pretrained parameters
冻结。例如:
adapter tuning
(《Parameter-efficient transfer learning for nlp》
)在 pretrained network
的每一层插入小的 neural modules
(称为adapters
),在微调期间仅仅训练这些 adapters
。
受 prompting
方法成功启发(prompting
方法通过 textual prompts
来控制 PLMs
,参考 GPT-3
、《Pretrain, prompt, and predict: A systematic survey of prompting methods in natural language processing》
),prefix tuning
( 《Prefix-tuning: Optimizing continuous prompts for generation》
)和 prompt tuning
(《The power of scale for parameter-efficient prompt tuning》
)在 input layers
或 hidden layers
之前追加额外的 tunable prefix tokens
,在微调下游任务时仅仅训练这些 soft prompts
。
最近,《LORA: Low-rank adaptation of large language models》
学习低秩矩阵来逼近 parameter updates
。
我们在 Figure 1
中给出这些方法的示意图。人们报告这些方法在不同任务集上都展示了与 full fine-tuning
相媲美的性能,而且通常所需更新的参数数量仅仅是原始模型参数数量的 1%
以下。除了参数节省,parameter-efficient tuning
使得快速适配新任务时不会造成灾难性遗忘(《Adapter-Fusion: Non-destructive task composition for transfer learning》
),并且通常在 out-of-distribution evaluation
中表现出更强的稳健性(《Prefix-tuning: Optimizing continuous prompts for generation》
)。
然而,我们认为这些 parameter-efficient tuning
方法成功的重要因素理解不足,它们之间的联系仍不清晰。本文旨在回答三个问题:
(1)
:这些方法之间如何关联?
(2)
:这些方法是否共享某些设计元素,而这些设计元素对它们的有效性是必不可少的?如果答案是 yes
,那么这些设计元素是什么?
(3)
每个方法的有效因素能否迁移到其他方法中从而产生更有效的变体?
为回答这些问题,我们首先导出 prefix tuning
的另一形式,揭示 prefix tuning
与 adapters
的紧密联系。基于此,我们然后构想一个统一的框架,将上述方法表述为不同的、修改frozen PLMs
的 hidden representations
的方式。我们的统一框架沿一组共享的设计维度分解之前的方法,如执行 modification
的函数、施加修改的位置、以及如何整合修改。这个框架使我们能够在方法之间传递 design choices
从而提出新的变体,如具有多个 heads
的 adapters
。在实验中,我们首先展示现有的 parameter-efficient tuning
方法在 higher-resource
和具挑战性的任务上仍落后于 full fine-tuning
,如 Figure 2
所示。然后我们利用统一框架识别关键的设计选择,并经验性地验证所提出的变体。我们在涵盖文本摘要、机器翻译、文本分类、以及通用语言理解的四个 NLP benchmarks
上的实验表明,所提出的变体使用的参数比现有方法更少,但效果更好,在所有四项任务上媲美了 full fine-tuning
的结果。
作者提出的
MAM Adapter
结合了prefix tuning
和adapter
:
在
attention sub-layer
上应用prefix tuning
。在
ffn sub-layer
上应用scaled parallel adapter
。
对 Transformer
架构的回顾:Transformer
模型现已成为支撑大多数 SOTA
的 PLMs
的主要架构。本节为完整起见,我们回顾这个模型的公式。Transformer
模型由 blocks
组成,每个 block
(Figure 1
)包含两类子层:多头自注意力层(multi-head self-attention
)、全连接的前馈网络(feed-forward network: FFN
)。
注意力函数将 query
key-value pairs
其中:query
的数量,key-value pairs
的数量,
多头注意力在 queries, keys, values
。给定要执行注意力的序列 query
向量 multi-head attention: MHA
)在每个头上计算输出并将结果拼接起来:
其中:
MHA
中
另一个重要的子层是全连接的前馈网络,它由两个线性变换组成,中间添加非线性激活函数 ReLU
:
其中:FFN
的中间层的维度, Transformer
通常使用较大的
最后,对于这两种类型的子层,都应用了残差连接(residual connection
),并在残差连接之后馈入 layer normalization
。
之前的 Parameter-Efficient Tuning
方法概览:下面及 Figure 1
中,我们介绍几种 SOTA
的 parameter-efficient tuning
方法。除非特别说明,它们只调优被添加的参数而保持 PLM
的参数冻结。
Adapters
(《Parameter-efficient transfer learning for nlp》
):Adapters
方法在 transformer
层之间插入小的模块(adapter
)。adapter layer
一般使用 down-projection
bottleneck
维度 up-projection
adapters
被残差连接(residual connection
)所包围。因此,包含 adapter layer
的公式为:
《Parameter-efficient transfer learning for nlp》
在 transformer
层内串行地放置两个 adapters
,一个在 multi-head attention
后面、一个在 FFN
子层后面。 《Adapter-Fusion: Non-destructive task composition for transfer learning》
提出了一种更高效的 adapter
变体,只在 FFN
的 "add & layer norm"
子层后插入 adapter
。
Prefix Tuning
(《Prefix-tuning: Optimizing continuous prompts for generation》
):受 textual prompting
方法成功的启发(《Pretrain, prompt, and predict: A systematic survey of prompting methods in natural language processing》
),prefix tuning
在每层的 multi-head attention
前追加 tunable prefix vectors
到 keys
和 values
。具体而言,两组 prefix
向量 keys
values
prefixed keys
和 prefix values
上执行多头注意力。因此,多头注意力变为:
head vectors
,head
的 prerfix
向量。prompt-tuning
(《The power of scale for parameter-efficient prompt tuning》
)简化了 prefix-tuning
,只在第一层的 input word embeddings
之前添加 prefix
向量。类似工作还包括 P-tuninng
( 《GPT understands, too》
)。
LORA
(《LORA: Low-rank adaptation of large language models》
):LORA
向 transformer
层内注入可训练的低秩矩阵,从而逼近 weight updates
。对于 pre-trained weight matrix
LORA
用低秩分解来表示权重矩阵的 update
:
其中 Figure 1
所示,LORA
将这个 update
应用于多头注意力中 query projection matrix
和 value projection matrix
对于多头注意力中线性投影的特定输入 LORA
修改投影输出
其中
第二项
就是 LORA
增加的模块。类似于学习率。
其他:其他 parameter-efficient tuning
方法还包括:
BitFit
(《Bitfit: Simple parameter-efficient fine-tuning for transformer-based masked language-models》
),只微调 pretrained
模型中的 bias
向量。
diff-pruning
(《Parameter-efficient transfer learning with diff pruning》
),学习一个稀疏的 parameter update vector
。
我们首先推导 prefix tuning
的等价形式,以建立其与 adapters
之间的联系。然后,我们提出了一个统一框架用于 parameter-efficient tuning
,该框架将几种前沿方法作为其实例。
方程 prefix tuning
的机制,通过在原始的注意力 keys
和 values
前追加 learnable vectors
来改变注意力模块。这里,我们推导出该公式的等价形式,并提供 prefix tuning
的另一种视角。为了描述方便,我们忽略了上标和下标
其中:prefix
上的归一化的注意力权重之和:
注意,在这个视角的 prefix tuning
中:
第一项 prefix
的注意力。
而第二项 position-wise
修改。
该给出了 prefix-tuning
的另一种视角:本质上是通过线性插值对原始的 head attention output
position-wise
修改:
与 Adapters
的联系:我们定义
这与 adapter function
形式非常相似,除了 prefix tuning
执行加权求和而 adapter
没有加权。Figure 3b
展示了从这个视角的 prefix tuning
的计算图,允许我们像抽象 adapter
一样将 prefix tuning
抽象为插件模块(plug-in module
)。此外,我们注意到当 adapters
中的
这个视角还表明,prefix
向量的数量 adapters
中的 bottleneck
维度 modification vector
rank limitation
。因此我们也将 bottleneck
维度。直观而言,秩限制( rank limitation
)意味着对任意输入 basis vectors
)的线性组合。
与 Adapters
的不同之处:除了门控变量 prefix tuning
与 adapters
之间的三个不同之处。
(1)
:如 Figure 3
所示,prefix tuning
使用 PLM layer
的输入)来计算 adapters
使用 PLM layer
的输出)。因此,prefix tuning
可以看作是对 PLM layer
的 “并行”计算,而典型的 adapters
是 “串行”计算。
(2)
:相比prefix tuning
,adapters
在插入位置上更加灵活:adapters
通常修改 attention output
或 FFN output
,而 prefix tuning
只修改每个 head
的 attention output
。经验上,这产生很大差异,我们将在实验章节中展示。
(3)
:方程 attention head
,而 adapters
总是单头的,这使得prefix tuning
更具表达能力:
对于 prefix tuning
,head attention
的维度为 head attention
都有 full rank updates
。
但对整个 attention output
,只有在 adapters
才有 full-rank updates
。
值得注意的是,当 prefix tuning
没有比 adapters
增加更多参数。我们在实验章节经验地验证这样的 multi-head
的影响。
full rank updates
指的是:update matrix
是满秩的。
受 prefix tuning
与 adapters
之间联系的启发,我们提出一个通用框架,旨在统一几种 SOTA
的 parameter-efficient tuning
方法。具体而言,我们将它们建模为学习一个 modification vector
hidden representations
。正式地,我们将直接被修改的 hidden representation
表示为 PLM sub-module
的直接输入为 attention output
和 attention input
。
为描述这个 modification
过程,我们定义一组设计维度,不同方法可通过这些维度上的取值而实例化。我们下面详述这些设计维度,并展示 adapters
、prefix tuning
、LORA
在这些维度上的取值,如 Table 1
所示:
Functional Form
:是计算 adapters
、prefix tuning
、以及 LORA
的函数形式。这些方法的函数形式类似,都有一个 proj_down --> nonlinear --> proj_up
的架构,而在 LORA
中 "nonlinear "
退化为恒等函数。
Modified Representation
:是直接被修改的 hidden representation
。
Insertion Form
:指被添加的模块如何插入到网络中。如前所述:
传统的 adapters
以串行的方式插入特定位置,input
和 output
都是
prefix tuning
和 LORA
等价于将
Composition Function
:指向量 hidden representation
hidden representation
。例如,adapters
执行简单的加法组合,prefix tuning
使用门控的加法组合,LORA
按常数因子缩放 hidden representation
上。
我们注意到,Table 1
之外许多其他方法也适合这个框架。例如:
prompt tuning
以类似 prefix tuning
的方式修改第一层的 head attention
。
各种 adapter
变体(《Adapter-Fusion: Non-destructive task composition for transfer learning》
、《Compacter: Efficient low-rank hypercomplex adapter layers》
)也可以类似 adapter
进行表示。
关键的是,这个统一框架允许我们沿这些设计维度研究 parameter-efficient tuning
方法,识别关键的设计选择,并在方法间迁移设计元素,如下节所示。
在这里和 Figure 3
中,我们描述一些新方法,这些新方法通过上述统一视角来推导,并通过在方法之间迁移设计元素::
Parallel Adapter
:一种变体,它将 prefix tuning
的 parallel insertion
迁移到 adapters
。有趣的是,我们由于其与prefix tuning
的相似性而提出 parallel adapter
,而同期工作(《Serial or parallel? plugable adapter for multilingual machine translation》
)也独立地提出并经验研究了这个变体;
Multi-head Parallel Adapter
:是进一步使 adapters
更类似 prefix tuning
。像 prefix tuning
一样,我们将 parallel adapter
应用了 modify head attention
。通过这种方式,这个变体不费力气地利用了 multi-head projections
提高了模型容量。
Scaled Parallel Adapter
:该变体将 LORA
的组合形式和插入形式迁移到 Adapter
,如 Figure 3e
所示。
到目前为止,我们的讨论和公式抛出了几个问题:
改变上述设计元素的方法是否展现不同特性?
哪些设计维度特别重要?
上述描述的新方法是否产生更好的性能?
我们在下节回答这些问题。
数据集:
XSum
:是一个英文摘要数据集,模型根据新闻文章来预测摘要。
WMT 2016 en-ro
数据集:英语到罗马尼亚语翻译。
MNLI
:是一个英语自然语言推理数据集,模型预测一个句子与另一个句子的关系是否蕴含、矛盾或中性。
SST2
:是一个英语情感分类 benchmark
,模型预测一个句子的情感是积极还是消极。
配置:
我们分别使用 BART_LARGE
和其多语言版本 mBART_LARGE
作为 XSum
和 en-ro
翻译的 pretrained
模型,对于 MNLI
和SST2
使用 RoBERTa_BASE
。
如果需要,我们在 {1,30,200,512,1024}
中变化 bottleneck
维。
我们主要研究 adapters
、prefix tuning
(prefix
)和 LORA
,在我们的实验中它们远超 bitfit
和 prompt tuning
。
在分析部分,我们在 attention layers
或 FFN layers
插入 adapters
以方便分析,但在最终比较中包括在两处同时插入 adapters
的结果。
我们根据各自模型的公开代码重新实现这些方法。实现使用 huggingface transformers
库。完整设置细节见附录 A
。
评估:我们在 XSum
测试集上报告 ROUGE 1/2/L
分数,在 en-ro
测试集上报告 BLEU
分数,在 MNLI
和 SST2
开发集上报告准确率。对于 MNLI
和SST2
,我们取 5
次随机运行的中位数。我们还报告每个 parameter-efficient tuning
方法相对于 full fine-tuning
的参数数量(#params
)。
Tunable Parameters
的数量:BART
和 mBART
有 encoder-decoder
结构,有三种注意力:encoder self-attention
、decoder self-attention
、decoder cross-attention
。RoBERTa
只有 encoder self-attention
。对于每个注意力子层,各方法使用的参数数量是:
prefix tuning
在 keys
和 values
前追加
adapter
有 adapter
)。
如果 adapter
作用在 ffn
上(而不是在 attention
上),则它使用 attention
上的 adapter
相同。
LORA
对 query projection
和 value projection
各自使用了一对
因此,对于特定的 prefix tuning
与 adapter
使用相同数量的参数,而 LORA
使用更多参数。更多细节见附录 B
。
现有方法的结果:我们首先概述四个任务上现有方法的结果。如 Figure 4
和 Table 2
所示,虽然现有方法在 MNLI
和 SST2
上通过调优少于 1%
的参数就能达到与 full fine-tuning
相媲美的性能,但在 XSum
和 en-ro
任务上如果我们调优 5%
的参数,仍与 full fine-tuning
存在较大差距。即使我们将相对参数大小增加到 >10%
,差距仍然显著。T5
在 high-resource
翻译任务上观察到了更大的差距。这表明,许多声称在 GLUE benchmark
上用 encoder-only
模型与 full fine-tuning
达到可比结果的方法(《Parameter-efficient transfer learning with diff pruning》
、bitfit
、《Compacter: Efficient low-rank hypercomplex adapter layers》
),或在相对简单的 generation benchmarks
(如,E2E
)上用 encoder-decoder
模型与 full fine-tuning
达到可比结果的方法(prefix-tuning
)可能无法很好地泛化到其他 standard benchmarks
。
影响因素可能复杂,包括训练样本数量、任务复杂度、或者模型架构。因此,我们倡导未来这方面的研究在更多样的 benchmarks
上报告结果,以展示更完整的性能概况。下面,我们的分析主要聚焦在 XSum
和 en-ro
数据集上,以更好区分不同的设计选择。我们注意到,这两个 benchmarks
是相对 high-resource
的,并且采用 encoder-decoder model
(即,BART
)。
MAM Adapter
是本文提出的方法。
哪种插入形式更好,串行或并行?
我们首先研究插入形式这个设计维度,比较所提出的 parallel adapter: PA
变体与传统的 sequential adapter: SA
,进行 attention modification
或者 FFN modification
。我们还以 prefix tuning
为参考。如 Table 3
所示:
prefix tuning
(它使用并行插入)优于 attention sequential adapters
。
此外,parallel adapter
在所有情况下都优于 sequential adapter
,其中 PA(ffn)
在 XSum
上分别超过 SA(ffn)
1.7 R-2
分,在 en-ro
上超过 0.8 BLEU
分。
鉴于parallel adapter
优于 sequential adapter
,我们在后续部分聚焦parallel adapter
结果。
这里没有比较这种情况:同时在
attn
和ffn
之后插入adapter
。
修改 attention representation
还是 ffn representation
更好?
我们现在研究修改不同 representation
的效果。我们主要比较 attention modification
和 FFN modification
。为了更容易分析,我们将修改 attention sub-layer
中的任何 hidden representations
(如 head output
、query
等)的方法归类为 modifying attention
模块。我们比较 parallel adapters at attention
和 parallel adapters at FFN
、以及 prefix tuning
上的结果。
我们还将 FFN modification
迁移到 LORA
,从而得到一个 LORA(ffn)
变体从而获得完整比较。具体而言,我们使用 LORA
来逼近 FFN
权重 parameter updates
。在这种情况下,LORA
中用于 LORA(ffn)
使用比其他方法更小的
结果如 Figure 5
所示:
首先,任何具有 FFN modification
的方法在所有情况下都优于所有具有 attention modification
的方法(红色标记通常高于所有蓝色标记,唯一的例外是具有 2.4%
参数的 ffn-PA
)。
其次,同一方法应用于 FFN modification
总是优于其 attention modification
。例如,LORA(ffn)
在XSum
上优于 LORA(attn)
1 R-2
分。
我们还强调,prefix tuning
在我们进一步增加容量时并未持续改进,这在 《Prefix-tuning: Optimizing continuous prompts for generation》
中也有观察到。
这些结果表明,无论函数形式或组合函数如何, FFN modification
可以比 attention modification
更有效地利用所添加的参数。我们推测这是因为 FFN
学习 task-specific textual patterns
(《Transformer feed-forward layers are key-value memories》
),而 attention
学习 pairwise positional interactions
,不需要大容量来适应新的任务。
当我们只使用 0.1%
的参数时,情形是否不同?
在前文中,我们推断 prefix tuning
比 adapter(attn)
更具表达力,但这在 Figure 5
中并未反映出来。我们推测这是因为 multi-head attention
仅在参数预算非常小时才具有优势。为验证这一假设,针对添加 0.1%
的 pretrained parameters
,我们比较 prefix tuning
和 parallel adapters
。为了消除组合函数(composition function
)的影响,我们还报告了移除 prefix tuning
的门控的结果,即 multi-head parallel adapter: MH PA
变体的结果。结果如 Table 4
所示。
在使用 0.1%
参数时,多头方法(即,prefix tuning
和 MH PA(attn)
优于所有其他方法至少 1.6 BLEU
分。
令人惊讶的是,将 200
减少到 30
仅导致prefix tuning
0.4 BLEU
的损失,而 PA(attn)
损失 1.9 BLEU
。
prefix tuning
中的 gating composition function
稍微提升了 0.3 BLEU
。
我们强调,MH parallel adapter
相比单头版本提高了 1.6 BLEU
,这再次验证了 multi-head formulation
的有效性。
综合 Figure 5
和 Table 4
的结果,我们得出结论:当参数预算非常小时,modifying head attention
显示了最佳结果;而当参数预算更大时,modifying FFN
效果更好。这表明,与 《Parameter-efficient transfer learning for nlp》
中平等地对待 attention
和 FFN
不同,将更大的参数预算分配给 FFN modification
可能更有效。
哪种组合函数(Composition Function
)更好?
我们在前文中介绍了三种组合函数:简单相加(adapter
)、门控相加(prefix tuning
)、以及缩放后再相加(LORA
)。对于不使用 softmax
的函数形式,如果采用精确的门控相加显得不自然,我们通过在 LORA
上消融、以及比较提出的 scaled parallel adapter: Scaled PA
来检查另外两种形式。我们将 modified representation
约束为 FFN
,因为前面的实验表明:FFN modification
通常更有效。
Table 5
报告了在 XSum
上的结果。我们将 adapter
的 512
、LORA
的 102
,以使它们的 tuned parameters
数量相同。我们根据开发集的 R-2 score
选择 LORA(s=4)
优于 parallel adapter
。但是,如果我们通过设置 LORA
的组合函数插入到 parallel adapter
,产生的 Scaled PA
相比原始 parallel adapter
提高了 0.56 ROUGE-2
分。我们也尝试了可学习的标量,但没有更好的结果。因此,我们得出结论:scaling composition function
优于普通的 additive composition function
,而且易于应用。
通过迁移有利的设计元素进行有效的集成:我们首先强调前面部分的三个发现:
(1)
:scaled parallel adapter
是 modify FFN
的最佳变体。
(2)
:FFN
在更大容量下可以更好地利用 modification
。
即,更大的参数预算下,
FFN modification
要比attention modification
更好。
(3)
:像 prefix tuning
这样修改 head attentions
的方法可以只用 0.1%
的参数达到很强的表现。
受其启发,我们组合这些有利的设计。具体而言,我们在 attention sub-layers
使用具有 small bottleneck dimension
prefix tuning
,并分配更多参数预算使用 scaled parallel adapter
(FFN representation
。由于 prefix tuning
在我们的统一框架中可以看作是 adapter
的一种形式,我们将这个变体称为 Mix-And-Match adapter: MAM Adapter
。在 Table 6
中,我们将 MAM adapter
与各种 parameter-efficient tuning
方法进行比较。
MAM Adapter
结合了prefix tuning
和adapter
:
在
attention sub-layer
上应用prefix tuning
。在
ffn sub-layer
上应用scaled parallel adapter
。
为完整起见,Table 6
中还呈现了其他组合版本的结果:同时在 attention layers
和 FFN layers
使用 parallel adapters
、以及把 prefix tuning(attn)
和 LORA(ffn)
组合起来。这两个组合版本都能改进它们各自的原型。然而,MAM Adapter
在两个任务上都达到了 SOTA
,只更新 pre-trained parameters
的 6.7%
就能匹配我们的 full fine-tuning
结果。在 Table 2
中,我们也呈现了MAM Adapter
在 MNLI
和SST2
上的结果,其中 MAM Adapter
通过添加 0.5%
的 pretrained parameters
达到了与 full fine-tuning
媲美的结果。