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)WRdin×dout

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

(3)W=W0+ΔW

其中 W_0 是原始的预训练权重,ΔW 是 LoRA 引入的增量参数,且 ΔW 被分解为两个低秩矩阵 ARdin×rBRr×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)LY

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

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

(9)LB=ZTLY=(XA)TLY

 

3. 同理 A 求梯度

(10)LA=XT(LYBT)

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

假设

输入矩阵 XRm×a

原始权重 W0Ra×b

分解为 AB:

ARa×r

BRr×b

(11)LB=(XA)TLY(m×a×a×r)T×(m×b)=rb
(12)LA=XT(LYBT)(a×m)×(m×b×b×r)=a×r

以上。