LoRA 的完整数学结构(Guest Lecture)

分类: 预训练与微调 · 难度: 进阶 · 关联讲座: L18

LoRA(Low-Rank Adaptation, Hu et al. 2022)是参数高效微调(PEFT)的代表方法,通过在预训练权重上注入低秩分解矩阵 ΔW=BA\Delta W = BA 实现任务适配,训练参数量可减少数万倍,且推理时零额外开销。本文展开 LoRA 的完整数学结构,包括参数化、初始化、缩放因子和梯度分析。


📐 LoRA 的完整数学结构

LoRA 参数化:对预训练权重矩阵 W0Rd×kW_0 \in \mathbb{R}^{d \times k},注入低秩扰动:

W=W0+ΔW=W0+BAW = W_0 + \Delta W = W_0 + BA

其中 BRd×rB \in \mathbb{R}^{d \times r}ARr×kA \in \mathbb{R}^{r \times k},秩 rmin(d,k)r \ll \min(d, k)

初始化AN(0,σ2)A \sim \mathcal{N}(0, \sigma^2)B=0B = 0(确保训练开始时 ΔW=0\Delta W = 0,不破坏预训练权重)。

前向传播(带缩放 α\alpha):

h=W0x+αrBAxh = W_0 x + \frac{\alpha}{r} BA x

  • α\alpha 是固定超参(通常等于 rr),控制学习率与秩无关
  • 推理时合并:Wmerged=W0+αrBAW_{\text{merged}} = W_0 + \frac{\alpha}{r} BA零推理开销

参数量对比(GPT-3 175B,d=12288d=12288r=4r=4):

组件原始参数量LoRA 参数量节省比例
Wq,WvW_q, W_v(每层)2×122882302M2 \times 12288^2 \approx 302M2×2×12288×4196K2 \times 2 \times 12288 \times 4 \approx 196K1500x
全模型175B~4.7M(r=4r=4,仅 Wq,WvW_q, W_v37000x

梯度分析:反向传播只流经 A,BA, BW0W_0 梯度不积累也不存储 → Adam 状态减少同样比例。

🔢 低秩近似的数值直觉

假设 W0R4×4W_0 \in \mathbb{R}^{4 \times 4},秩为 r=2r=2

W0=[0.50.30.10.20.40.60.20.30.10.20.50.10.30.10.20.4]W_0 = \begin{bmatrix} 0.5 & 0.3 & 0.1 & 0.2 \\ 0.4 & 0.6 & 0.2 & 0.3 \\ 0.1 & 0.2 & 0.5 & 0.1 \\ 0.3 & 0.1 & 0.2 & 0.4 \end{bmatrix}

SVD 分解得奇异值:σ=[1.2,0.8,0.3,0.1]\sigma = [1.2, 0.8, 0.3, 0.1]

保留前 2 个奇异值的低秩近似误差(Frobenius 范数):

ΔWF2=σ32+σ42=0.09+0.01=0.10\|\Delta W\|_F^2 = \sigma_3^2 + \sigma_4^2 = 0.09 + 0.01 = 0.10

而总能量 σi2=1.44+0.64+0.09+0.01=2.18\sum \sigma_i^2 = 1.44 + 0.64 + 0.09 + 0.01 = 2.18,低秩近似保留了 95.4%95.4\% 的信息。

关键洞察:预训练权重的更新矩阵 ΔW\Delta W 内在维度(intrinsic dimensionality)非常低——这解释了为什么 LoRA 有效:任务适应所需的”新信息”体积很小。

💡 为什么低秩有效?

预训练大模型捕获了通用知识,微调只是”调整方向”。类比:一位钢琴家学习弹奏一首新曲,不需要重学手指运动的所有肌肉协调(预训练知识),只需微调特定曲目的节奏和力度(低秩 ΔW\Delta W)。

Aghajanyan et al. 2021 的实验:在预训练模型上做任意下游任务,其实只需要 r100r \le 100 的低维子空间就能近似最优性能——这是 LoRA 的理论依据。

“Without Regret” 的语境(John Schulman 的视角):LoRA 的局限在于秩固定,而任务复杂度未知。自适应 rank(AdaLoRA)和 rank 增长策略(类似 AdaGrow 的思路)可能弥合与全参数微调的差距而不增加推理代价。

⚠️ 常见误区

  1. 误区:rank 越大越好 → 正确:rank 增大到某点后性能不再提升但内存/时间增加,通常 r{4,8,16}r \in \{4, 8, 16\} 已足够,r=64r = 64 基本等同全参微调。

  2. 误区:LoRA 只能用于注意力层 → 正确:可应用于任意线性层(FFN、embedding),但实验表明 Wq,WvW_q, W_v 通常比 Wk,WoW_k, W_o 更重要。

  3. 误区:LoRA 合并后等同于全参微调 → 正确:合并后的 WmergedW_{\text{merged}} 秩受限于 rank(W0)+r\text{rank}(W_0) + r,而全参微调的更新矩阵可以是满秩的,在复杂任务上仍有差距。