1 概述
该文件主要介绍了“参数高效微调(Parameter Efficient Fine-Tuning, PEFT)”在深度学习中的应用,尤其是如何在大规模预训练模型(例如大型语言模型和视觉Transformer)上实现高效的微调。以下是文件的主要内容概括:
- PEFT的背景与定义:讨论了在对大型预训练模型进行微调时,传统的全参数微调方法在计算和内存方面非常昂贵,尤其是当模型参数数量非常大时。因此,PEFT旨在以更少的参数实现与全参数微调相当的性能。
- 少样本学习(Few-shot Learning):介绍了两种少样本学习的方法:A)监督微调(Supervised Fine-Tuning),需要访问模型权重并进行反向传播;B)上下文学习(In-context Learning),只需使用API访问,不需要反向传播,但存在性能和时间复杂度的挑战。
- PEFT的方法:
-
选择子集微调(Subset Fine-Tuning):仅微调模型的部分层或参数。
-
Adapters:在模型中添加较少参数的层,仅微调这些层的参数。
-
低秩适应(LoRA, Low-Rank Adaptation):为每个参数矩阵学习一个小的低秩变化,保持原始参数固定。
-
Prefix Tuning:为Transformer模型模拟存在一段预设的上下文,并微调这些上下文的键和值。
-
LoRA方法的详细介绍:LoRA旨在通过低秩矩阵分解来高效微调大型模型,保持预训练模型的参数固定,只学习一个小的加性修改。文件详细介绍了LoRA的工作原理、初始化方法、在Transformer中的应用,以及其在大型语言模型(例如GPT-3)上的表现。实验结果显示,LoRA能以远少于全参数微调的参数数量,获得接近甚至优于全参数微调的性能。
-
PEFT在视觉Transformer中的应用:讨论了PEFT如何应用于视觉Transformer模型(Vision Transformer, ViT),并展示了PEFT在各种计算机视觉任务上可以实现与全参数微调相当甚至更好的性能。
文件通过大量图表和实验证明,PEFT方法能够有效地减少模型微调所需的参数数量,显著降低计算和存储成本,同时保持或提升模型性能。
2 摘录
2.1 为什么 Fine-Tuning 仍然重要?
因为,对于大多数模型,微调后的准确率都胜过上下文学习。
2.2 参数高效微调(PEFT)的目标、方法
- 目标:用更少的参数进行微调,但在下游任务上获得与全参数微调相当的性能。
- PEFT的方法:
- 选择子集(Subset):选择模型的一个参数子集,仅对这些参数进行微调。例如,仅微调一个深度神经网络中最顶层的K层。
- Adapters:在模型中添加额外的层,这些层参数较少,仅微调这些层的参数,保持其他层固定。
- LoRA(Low-Rank Adaptation):对每个参数矩阵学习一个小的低秩变化,保持原始参数不变。
- Prefix Tuning:对Transformer模型,模拟在序列之前存在许多token,微调这些token对应的键和值。
2.2.1 方法1:选择子集微调——微调顶层
- 方法:保持所有参数固定,除了最顶层的K层,梯度只需要通过这K层进行反向传播。
- 优点:减少了内存使用,因为不需要存储整个计算图的梯度。
2.2.2 方法2:Adapters
Adapters的工作原理
- 定义:Adapter层是一个带有残差连接的前馈神经网络,输入和输出维度相同,但中间的维度会缩小到一个较低的值m。
- 通常选择m远小于输入维度d,这样Adapter层的参数占总参数的0.5%-8%。
- 将Adapter层添加到深度神经网络(如Transformer)后,仅对这些Adapter层的参数进行微调,而保持预训练模型的其他参数不变。
Adapters的效果
- 实验结果:在预训练模型(如BERT-Large)上,Adapters可以实现与全参数微调几乎相同的性能,甚至有时会超过全参数微调,但所需微调的参数要少得多。
2.2.3 方法3:Prefix Tuning
ym总结:
- Prefix Tuning的目的:通过新增极少量的可训练参数,实现在其他数据集上的高效微调,以适应特定任务。
- Prefix Tuning的核心思想:借鉴大模型中使用的prompt(提示),其提供先验知识从而提高模型精度。与显式构造的prompt不同,Prefix Tuning引入了一种隐式提示方式,通过增加可学习的前缀token来为模型提供任务特定的引导。
- 具体实现方法:在Transformer的multi-head attention结构内部,新增2个可训练的参数矩阵 P k P_k Pk 和 P v P_v Pv,它们的维度为 M × d M \times d M×d,其中 M M M 是你想新增的前缀token数量, d d d 是每个token的向量维度。在注意力计算中, P k P_k Pk 和 P v P_v Pv 分别与原始的 K K K 和 V V V 矩阵进行拼接,模拟出输入数据中增加了 M M M 个前缀token的信息。
- 为什么会有效:由于这 M M M 个可学习的“前缀token”在每一层的注意力计算中发挥作用,能够调整整个输入序列的注意力分布。在特定数据集上微调时,这些虚拟的前缀token能有效引导模型的注意力,优化模型在特定任务上的表现。
2.2.4 方法4:LoRA
LoRA(Low-Rank Adaptation)是目前针对大型语言模型最有效的微调方法之一。它通过固定原始模型的权重,新增两个低秩矩阵来参与计算,从而实现高效的参数微调。在微调过程中,仅更新这两个低秩矩阵的参数。
LoRA的工作原理
- 定义低秩矩阵:LoRA方法中引入了两个低秩矩阵 A A A 和 B B B,用于模拟模型的权重更新。
-
A A A 的维度是 d × r d \times r d×r, B B B 的维度是 r × d r \times d r×d,其中 r ≪ d r \ll d r≪d。
-
通常 r r r 取值为1、2、4、8或64,意味着引入的参数量远远小于原模型的参数 W W W。
-
位置与组合:在Transformer中,LoRA的低秩矩阵 A A A 和 B B B 通常应用在多头自注意力机制中的 W q W_q Wq、 W k W_k Wk、 W v W_v Wv、 W o W_o Wo 全连接层,以及前馈网络(FeedForward)层上。原始权重 W W W 的输出将与通过 A A A 和 B B B 计算出的权重变化相加,形成最终的输出。
-
微调过程:在训练时,保持原始模型的权重 W W W 不变,只对新增的低秩矩阵 A A A 和 B B B 进行梯度下降,从而实现参数高效的微调。
LoRA的优点
- 减轻过拟合风险:由于新增的参数矩阵 A A A 和 B B B 维度较小,能够有效降低微调过程中过拟合的风险。
- 计算效率高:新增参数仅占整个模型参数的1%以内,训练时冻结原始模型参数,微调速度快,推理时也几乎不增加额外计算时间。
- 知识保留:保持预训练模型的原始权重不变,这意味着模型能够保留原有的知识和语义理解能力。
- 稳定性与鲁棒性:原始权重保持不变,模型在不同任务和数据分布中能够表现出更好的稳定性和鲁棒性。
- 超强效果:在实际应用中,LoRA往往能够实现与甚至超过全参数微调的性能。
- 便捷部署和切换:部署时,只需加载或替换LoRA权重文件,方便模型在不同任务间的切换。
为什么LoRA有效?
LoRA的有效性源于大型模型的过参数化特性。在特定任务中,实际上只有一部分参数是活跃的。LoRA通过引入少量的低秩矩阵,调整关键参数,直接影响模型的行为,从而高效地适应和优化特定任务。
LoRA效果
LoRA性能优秀:LoRA在应用于GPT-3时,能够实现与全参数微调相当甚至更好的性能表现,同时所需参数远远少于全参数微调。
- LoRA性能优秀:LoRA在应用于GPT-3时,能够实现与全参数微调相当甚至更好的性能表现,同时所需参数远远少于全参数微调。
- 适应性强:对于某些数据集而言,LoRA在秩 r = 1 r = 1 r=1 的情况下就能达到令人满意的效果,进一步说明了它在参数效率方面的优势。
- 数据规模适应性:LoRA在不同规模的数据集(从小数据集到大数据集)上都能表现出色,既适用于小样本学习,也能在大规模数据上保持高性能。
- 灵活部署:LoRA可以灵活地应用在多头自注意力的不同位置,对权重矩阵 W q W_q Wq、 W k W_k Wk、 W v W_v Wv、 W o W_o Wo 等的调整表现出稳定的优异性能。
2.2.5 方法5:BitFit
BitFit只对模型的bias进行微调(占全部参数的0.1%左右)。在小规模-中等规模的训练数据上,BitFit的性能与全量微调的性能相当,甚至有可能超过,在大规模训练数据上,与其他fine-tuning方法也差不多。
2.3 PEFT 在Vision Transformer中的应用
第一张图:LoRA在Vision Transformer中的应用
- LoRA的应用:
-
由于Vision Transformer(ViT)本质上也是一种Transformer模型,因此可以直接应用LoRA方法对其进行微调。
-
LoRA通过添加两个低秩矩阵 A A A 和 B B B,以一种参数高效的方式实现对模型的微调。图中展示了将LoRA应用在ViT的不同部分,包括位置嵌入(Position + Patch Embedding)、Patch Embedding,以及Transformer Encoder内部的多头自注意力(MSA)和多层感知机(MLP)结构中。
-
LNLORA:
- LNLORA是一种LoRA的变体,它在LoRA线性模块(LoRALinear)中引入了LayerNorm操作。图中显示在MLP和MSA层中,LNLORA与LayerNorm相结合以提高性能。
-
工作流程:
- 图中展示了完整的ViT工作流程,图像首先通过Patch Embedding模块处理,再通过带有LNLORA的Transformer Encoder层,最终由一个带有LNLORA的MLP Head完成分类任务(例如图中“Class: Church”)。
第二张图:PEFT在Vision Transformer上的性能比较
- VTAB-1k数据集:
-
图中的实验基于VTAB-1k数据集,这是一个包含19个不同视觉任务的集合,图中显示的是各方法在这些任务上的平均准确率表现。
-
性能对比:
- 横轴表示可训练参数的数量(单位是百万),纵轴表示平均准确率(%)。结果显示LoRA在参数效率方面非常突出,能够在训练较少参数的情况下取得较高的准确率。
- LoRA的表现(红色倒三角)接近于全参数微调(Full Fine-Tuning),但所需的可训练参数却少得多。这说明LoRA在ViT上不仅能够有效地进行迁移学习,还能极大地降低训练成本。
- FacT-TT和FacT-TK是另一种低秩方法(FacT,Factorized Tuning),它在减少可训练参数数量的同时,也取得了较高的性能。
-
主要结论:
- PEFT方法(包括LoRA和FacT)在一些视觉任务上,甚至可以超过全参数微调的效果,体现出在Vision Transformer中微调的高效性。
总结
- LoRA与Vision Transformer的结合:LoRA及其变体LNLORA能够高效地应用于Vision Transformer,通过对低秩矩阵进行微调,实现与全参数微调相近甚至更好的性能。
- PEFT在视觉任务中的优势:图中实验结果显示,PEFT方法在大量视觉任务中能够达到与全参数微调相近的效果,但参数量却大大减少,显示了在视觉任务中的巨大潜力。
总体来说,LoRA和其他PEFT方法为Vision Transformer的迁移学习提供了一种高效而有效的解决方案,既能保持模型性能,又能显著降低训练成本。