Low-Rank Adaptation ( LORA ) 梯度视角推导

author:张一极

date:2025年03月02日16:48:47

1. LoRA表现形式

有两种表现形式:

(1)Y=XW=X(W0+AB)Y=XW0+XAB=XW0+ZB

假设原始权重矩阵为

(2)W∈Rdin×dout

LoRA 通过低秩分解将其变化量表示为:

(3)W′=W0+ΔW

其中 W_0 是原始的预训练权重,ΔW 是 LoRA 引入的增量参数,且 ΔW 被分解为两个低秩矩阵 A∈Rdin×r 和 B∈Rr×dout :

(4)ΔW=AB

 

这样,整个计算公式变为:

(5)Y=XW=X(W0+AB)

 

展开后可得:

(6)Y=XW0+XAB

其中:

• XW0 是基础模型的输出

• XAB 是 LoRA 额外添加的低秩修正项

到这里,公式(1)里面两个式子没什么区别,接着:

引入 Z=XA 进行变形,变为:

(7)Y=XW0+XAB=XW0+ZB

LoRA 主要通过学习 A 和 B 来调整原模型 W0 的输出,而不直接更新 W0 本身。

2. LoRA 的梯度计算


对于给定的损失函数 L ,梯度计算过程如下:

1. 损失函数对输出 Y 求梯度:

(8)∂L∂Y

2. 利用链式法则,对 B 求梯度:

PS:这里的Z=XA,表示 XA 的输出为 Z,而这里的输出并非旁路ABX的输出:

(9)∂L∂B=ZT∂L∂Y=(XA)T∂L∂Y

 

3. 同理对 A 求梯度:

(10)∂L∂A=XT(∂L∂YBT)

3.转置的原因是为了构造最后输出的梯度适应 A或者 B 的大小:

假设

• 输入矩阵 X∈Rm×a

• 原始权重 W0∈Ra×b

分解为 AB:

A∈Ra×r

B∈Rr×b

(11)∂L∂B=(XA)T∂L∂Y的维度为:(m×a×a×r)T×(m×b)=r∗b
(12)∂L∂A=XT(∂L∂YBT)的维度为:(a×m)×(m×b×b×r)=a×r

以上。