ESC
输入关键词搜索文章
目录

LoRA 原理深度调研

从低秩适应到 QLoRA 的全面解析
深入理解 LoRA 的数学原理、梯度特性和主流变体
6核心主题
3关键变体
0.01%典型可训练参数占比
系列一
LoRA 的核心问题是什么

LoRA(Low-Rank Adaptation)试图回答一个非常具体的问题:当大模型已经预训练完成之后,我们是否真的还需要为每个下游任务更新整套权重?Hu 等人在原始论文中给出的答案是否定的:在很多任务上,权重更新本身具有很低的有效秩,因此可以把完整更新矩阵写成一个低秩乘积,只训练很少一部分参数 #Hu et al., 2021

这篇文章聚焦原理层:为什么低秩近似成立,缩放因子和初始化为什么这样设计,梯度如何流动,以及 QLoRA、AdaLoRA、LoRA+ 这些后续变体分别解决了什么问题。

核心公式速查

$$h = W_0 x + \frac{\alpha}{r}BAx$$

其中 $W_0$ 是冻结的预训练权重,$A \in \mathbb{R}^{r \times k}$$B \in \mathbb{R}^{d \times r}$ 是可训练的低秩矩阵,$r \ll \min(d,k)$$\alpha$ 是缩放因子 #Hu et al., 2021

一、LoRA 为什么可能有效
1.1 全量微调的代价

大型语言模型在下游任务上做全量微调时,最大的代价不只是训练算力,还包括每个任务都要保存一份完整权重副本。Hu 等人在论文中以 GPT-3 175B 为例指出,LoRA 可把可训练参数减少约 10000 倍,并把适配器相关的 GPU 显存需求降低约 3 倍 #Hu et al., 2021

直觉类比:全量微调像是为每个任务重新浇筑一整栋楼;LoRA 则是假设真正需要改动的只是少数承重结构,于是只更换关键梁柱。
1.2 内在维度理论

LoRA 的理论直觉并不是凭空出现的,它与 Aghajanyan 等人的内在维度(intrinsic dimensionality)研究直接同源。该工作表明,预训练语言模型在下游任务微调时,真正决定性能的可优化子空间维度远小于完整参数维度;在 RoBERTa-base 这类模型上,只用一个极低维的重参数化子空间就能逼近全量微调性能 #Aghajanyan et al., 2021

内在维度假设

设预训练权重为 $W_0$,任务适配后的权重为 $W_0 + \Delta W$。若存在一个低维子空间足以承载主要任务相关更新,那么就没有必要显式学习完整的 $\Delta W$;只学习这个低维子空间中的参数即可 #Aghajanyan et al., 2021

1.3 低秩分解的数学形式

LoRA 把更新矩阵参数化为:

$$\Delta W = \frac{\alpha}{r}BA$$

其中 $A \in \mathbb{R}^{r \times k}$$B \in \mathbb{R}^{d \times r}$。这样一来,原本需要训练 $dk$ 个参数,现在只需训练 $r(d+k)$ 个参数;当 $r$ 很小时,这个差距非常大 #Hu et al., 2021

一个数量级例子

若某线性层权重为 $768 \times 768$,原始参数量是 589,824;当 $r=8$ 时,LoRA 只需要训练 $8\times768 + 768\times8 = 12,288$ 个参数,压缩约 48 倍。

二、缩放因子与初始化为什么这样设计
2.1 缩放因子 $\alpha/r$ 的作用

如果直接使用 $BA$ 而不缩放,那么随着秩 $r$ 提高,更新矩阵的量级也会随之变化,导致不同秩之间的超参数不可迁移。LoRA 引入 $\alpha/r$ 的目的,就是把不同秩下的更新幅度归一化,从而让同一组学习率和训练策略在不同 $r$ 上更稳定 #Hu et al., 2021

$$\|\Delta W\|_F = \left\|\frac{\alpha}{r}BA\right\|_F$$

在实践里,常见经验是设 $\alpha = 2r$$\alpha = r$,这相当于把“表达能力的扩大”和“训练稳定性”绑定在一个更易控制的尺度上。

2.2 非对称初始化

LoRA 的一个关键工程细节是:$A$ 随机初始化,而 $B$ 零初始化。这样训练开始时就有 $BA = 0$,模型前向输出与原始预训练模型完全一致,不会因为适配器随机噪声而破坏基座模型行为 #Hu et al., 2021

为什么不是两边都随机初始化

$A$$B$ 都随机初始化,则第一步前向就已经在原模型输出上叠加随机扰动;这会让训练一开始就偏离预训练分布,尤其在小数据集上更容易不稳定。

2.3 梯度如何流动

对于

$$h = W_0x + \frac{\alpha}{r}BAx$$

损失函数 $\mathcal{L}$$B$$A$ 的梯度分别是:

$$\frac{\partial \mathcal{L}}{\partial B} = \frac{\alpha}{r}\frac{\partial \mathcal{L}}{\partial h}(Ax)^\top$$
$$\frac{\partial \mathcal{L}}{\partial A} = \frac{\alpha}{r}B^\top\frac{\partial \mathcal{L}}{\partial h}x^\top$$

这说明虽然 $W_0$ 被冻结,但梯度仍然可以通过 $A$$B$ 的乘积路径间接塑造输出空间;低秩约束既减少参数,又起到了隐式正则化作用。

三、秩 $r$ 应该怎么选
3.1 理论和经验是怎样衔接的

从理论上讲,内在维度越低,所需的有效秩就越小;但在真实任务里,秩并不直接等于某个“理论最优值”,而更像一个表达能力预算。原始 LoRA 论文和后续经验通常支持这样一个结论:当 $r$ 从很小的值增加到 8 或 16 时,性能常有明显提升;继续增大到更高值,收益会逐步递减 #Hu et al., 2021

3.2 一个可用的经验区间
任务复杂度常见秩范围说明
分类 / 情感分析$r \in \{2,4,8\}$低维更新通常已足够
问答 / 摘要$r \in \{8,16\}$兼顾表达能力和显存
代码 / 数学推理$r \in \{16,32,64\}$更复杂任务往往需要更高秩
3.3 实践建议
从低秩开始更稳妥
  • 先试 $r=4$$r=8$,把它当作基线。
  • 若验证集仍显著欠拟合,再提高到 $r=16$ 或更高。
  • 如果你已经对多个模块同时注入 LoRA,那么增加模块数有时比单纯增大秩更划算。
四、三个最重要的后续变体
4.1 QLoRA:让超大模型在单卡上可微调

QLoRA 的核心贡献不是改变 LoRA 公式本身,而是把基座模型用 4-bit NormalFloat(NF4)量化存储,同时保留 LoRA 适配器在较高精度下训练,从而把超大模型微调的显存门槛大幅压低 #Dettmers et al., 2023

机制作用
NF4 量化为近似正态分布权重提供更合适的 4-bit 表示
双重量化进一步压缩量化常数
Paged Optimizer缓解优化器状态带来的内存峰值

该论文最著名的结果之一是:65B 量级模型可以在单张 48GB GPU 上做高质量微调 #Dettmers et al., 2023

4.2 AdaLoRA:不同层不该分到一样的秩

AdaLoRA 的出发点是:并不是所有层都同样重要,因此没必要把相同 rank 平均分配给每一层。它用 SVD 风格的参数化和重要性估计,在训练过程中动态调整预算,把更多秩分给重要层,把更少秩分给不重要层 #Zhang et al., 2023

$$\Delta W = P\Lambda Q^\top$$

这类方法本质上是在回答另一个问题:不是“LoRA 能不能低秩”,而是“有限低秩预算应该怎样花”。

4.3 LoRA+:A 和 B 不应该用同一学习率

LoRA+ 指出,在宽网络近似下,$A$$B$ 的梯度统计量级并不一致,因此让两者共享同一个学习率并不理想。论文提出对 $B$ 使用更高学习率:

$$lr_B = lr_A \cdot \frac{d}{r}$$

这样可以改善收敛速度,并带来小幅性能提升 #Hayou et al., 2024

五、LoRA 相比全量微调到底牺牲了什么

LoRA 的优势

  • 训练参数极少,存储多个任务适配器成本低。
  • 推理时可合并权重,几乎没有额外延迟。
  • 在中等规模数据集上常能接近全量微调。

LoRA 的边界

  • 表达空间被低秩约束,理论上不如全量微调自由。
  • 模块选择和秩选择会显著影响结果。
  • 在高复杂度任务或跨模态任务上,可能需要更高秩或更多目标层。
总结

核心要点回顾

  • LoRA 的本质:把完整权重更新限制在低维子空间中学习 #Hu et al., 2021
  • 理论基础:预训练模型在下游任务上的有效更新维度远小于完整参数维度 #Aghajanyan et al., 2021
  • 工程关键$\alpha/r$ 控制更新尺度,$A$ 随机初始化、$B$ 零初始化保证安全起点 #Hu et al., 2021
  • 变体演化:QLoRA 解决显存,AdaLoRA 解决预算分配,LoRA+ 解决学习率失衡 #Dettmers et al., 2023 #Zhang et al., 2023 #Hayou et al., 2024

下一篇 LoRA 适用结构与代码实现 会把这个原理层结论落到实际模块和代码写法上。

参考来源

  • Hu, E. J. et al. (2021). LoRA: Low-Rank Adaptation of Large Language Models. arXiv:2106.09685
  • Aghajanyan, A. et al. (2021). Intrinsic Dimensionality Explains the Effectiveness of Language Model Fine-Tuning. ACL 2021. arXiv:2012.13255
  • Dettmers, T. et al. (2023). QLoRA: Efficient Finetuning of Quantized LLMs. arXiv:2305.14314
  • Zhang, Q. et al. (2023). AdaLoRA: Adaptive Budget Allocation for Parameter-Efficient Fine-Tuning. ICLR 2023. arXiv:2303.10512
  • Hayou, S. et al. (2024). LoRA+: Efficient Low Rank Adaptation of Large Models. ICML 2024. PMLR 235