论文:
《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