大模型微调方法总结
随着预训练语言模型(PLM)规模的不断扩大,全参数微调(Full Fine-Tuning)的成本变得极高。为了在特定任务上适配大模型同时降低计算资源消耗,参数高效微调(Parameter-Efficient Fine-Tuning, PEFT)技术应运而生。本文总结了五种主流的 PEFT 方法:LoRA、Adapter、Prefix-tuning、P-tuning 和 Prompt-tuning。
1. LoRA (Low-Rank Adaptation)
论文: LoRA: Low-Rank Adaptation of Large Language Models (arXiv:2106.09685)
简介
自然语言处理的主流范式通常包括大规模预训练和针对特定任务的微调。然而,随着模型参数量达到百亿甚至千亿级别,重新训练所有参数在计算资源和存储上变得不可行。LoRA 基于一个关键发现:模型在任务适配过程中权重的改变量具有低秩特性(low intrinsic dimension)。
原理与方法
LoRA 的核心思想是冻结预训练模型的权重矩阵 $W_0$,并引入旁路分支来学习权重的更新量 $ riangle W$。假设更新量可以分解为两个低秩矩阵的乘积 $BA$,其中 $B \in \mathbb{R}^{d \times r}$,$A \in \mathbb{R}^{r \times k}$,且秩 $r \ll d$。
在训练过程中,只更新 $A$ 和 $B$ 的参数,而 $W_0$ 保持不变。前向传播时,输出为 $h = W_0x + BAx$。由于 $BA$ 初始化为零矩阵,训练初期对原始模型无影响。推理阶段,可以将 $BA$ 合并回 $W_0$,因此不会增加额外的推理延迟。
实现细节
- 初始化: $A$ 使用随机高斯分布初始化,$B$ 使用零矩阵初始化。
- 应用位置: 通常应用于 Transformer 中的 Query 和 Value 投影层。
- 优势: 显存占用大幅降低,训练速度快,且能与其他 PEFT 方法结合。
2. Adapter
论文: Parameter-Efficient Transfer Learning for NLP (arXiv:1902.00751)
简介
Adapter 是一种较早提出的 PEFT 方法,通过在预训练模型的每一层或特定层之间插入小型网络模块来实现任务适配。这种方法避免了灾难性遗忘,允许在不修改主模型参数的情况下适应新任务。
架构设计
每个 Adapter 模块包含两个前馈子层:
- 降维层: 将输入维度 $d$ 投影到较小的中间维度 $m$(通常 $m \ll d$),通过非线性激活函数。
- 升维层: 将维度从 $m$ 还原回 $d$。
Adapter 的输出通过残差连接加到原始 Transformer 块的输出上。这种结构使得模型能够灵活地切换不同任务对应的 Adapter 模块。
改进方案:AdapterFusion
为了进一步提升多任务迁移能力,提出了 AdapterFusion。它将学习过程分为两个阶段:
- 知识提取: 训练独立的 Adapter 模块学习各下游任务的特定知识。
- 知识组合: 固定预训练参数和各 Adapter 参数,引入新的融合参数来学习如何组合多个 Adapter 的知识,从而解决任务间干扰问题。
尽管 Adapter 效果显著,但其在每一层都增加了额外参数,可能会略微增加推理时的内存访问开销。
3. Prefix-tuning
论文: Prefix-Tuning: Optimizing Continuous Prompts for Generation (arXiv:2101.00190)
简介
Prefix-tuning 主要用于生成任务。它借鉴了人类提示(Prompt)的概念,但在输入序列前添加了一组连续的、可学习的向量(称为前缀),而不是离散的文本 Token。
核心机制
- : 前缀由自由参数组成的向量序列构成,不对应任何真实词汇,这使得优化更加平滑。


