本文将介绍如下内容:
- 什么是Lora
- 高效微调的基本原理
- LORA的实现方式
- LORA为何有效?
一、什么是LoRA
LoRA 通常是指低秩分解(Low-Rank Decomposition)算法,是一种低资源微调大模型方法,论文如下: LoRA: Low-Rank Adaptation of Large Language Models。
使用LORA,训练参数仅为整体参数的万分之一、GPU显存使用量减少2/3且不会引入额外的推理耗时。
二、高效微调的基本原理
以语言模型为例,在微调过程中模型加载预训练参数
Φ
0
\Phi_0
Φ0进行初始化,并通过最大化条件语言模型概率进行参数更新
Φ
0
\Phi_0
Φ0+
Δ
Φ
\Delta\Phi
ΔΦ,即:
这种微调方式主要的缺点是我们学习到的参数增量
Δ
Φ
\Delta\Phi
ΔΦ的维度和预训练参数
Φ
0
\Phi_0
Φ0是一致的,这种微调方式所需的资源很多,一般被称为full fine-tuing。
研究者认为能用更少的参数表示上述要学习的参数增量
Δ
Φ
\Delta\Phi
ΔΦ=
Δ
Φ
(
Θ
)
\Delta\Phi(\Theta )
ΔΦ(Θ),其中
∣
Θ
∣
|\Theta|
∣Θ∣<<
∣
Φ
0
∣
|\Phi_0|
∣Φ0∣,原先寻找
Δ
Φ
\Delta\Phi
ΔΦ的优化目标变为寻找
Θ
\Theta
Θ:
这种仅微调一部分参数的方法称为高效微调。针对高效微调,研究者有很多的实现方式(如Adapter、prefixtuing等)。本文作者旨在使用一个低秩矩阵来编码
Δ
Φ
\Delta\Phi
ΔΦ,相比于其他方法,LORA不会增加推理耗时且更便于优化。
三、LORA的实现方式
1、Instrisic Dimension
我们先思考两个问题:为何用数千的样本就能将一个数十亿参数的模型微调得比较好?为何大模型表现出很好的few-shot能力?
Aghajanyan的研究表明:预训练模型拥有极小的内在维度(instrisic dimension),即存在一个极低维度的参数,微调它和在全参数空间中微调能起到相同的效果。
同时Aghajanyan发现在预训练后,越大的模型有越小的内在维度,这也解释了为何大模型都拥有很好的few-shot能力。
2、LORA
受instrisic dimension工作的启发,作者认为参数更新过程中也存在一个‘内在秩’。对于预训练权重矩阵
W
0
W_0
W0
∈
\in
∈
R
d
∗
k
\mathbf{R^{d*k}}
Rd∗k,我们可以用一个低秩分解来表示参数更新
Δ
W
\Delta W
ΔW,即:
训练过程中冻结参数
W
0
W_0
W0,仅训练A和B中的参数。如上图所示,对于
h
=
W
0
x
h=W_0 x
h=W0x,前向传播过程变为:
四、LORA为何有效?
通过大量的对比实验,作者证明了LORA的有效性,但是作者希望进一步解释这种从下游任务中学到的低秩适应(low-rank adaptation)的特性。为此,作者提出了三个问题:
1、LORA应该作用于Transformer的哪个参数矩阵?
从上图我们可以看到:
- 将所有微调参数都放到attention的某一个参数矩阵的效果并不好,将可微调参数平均分配到 W q W_q Wq和 W k W_k Wk的效果最好。
- 即使是秩仅取4也能在 Δ W \Delta W ΔW中获得足够的信息。
因此在实际操作中,应当将可微调参数分配到多种类型权重矩阵中,而不应该用更大的秩单独微调某种类型的权重矩阵。
2、LORA最优的秩r是多少?
从上述实验结论我可以看到,在秩小到1或者2的时候,LORA的仍有不错的效果。因此作者假设:更新参数矩阵
Δ
W
\Delta W
ΔW可能拥有极小的‘内在秩’。为求证此假设,作者需要计算不同秩对应的子空间之间的重叠程度,如下:
对于
r
=
8
r=8
r=8 和
r
=
64
r=64
r=64 两个秩,首先进行奇异值分解得到两个右奇异矩阵
U
A
r
=
8
U_{Ar=8}
UAr=8和
U
A
r
=
64
U_{Ar=64}
UAr=64。作者希望得到:
U
A
r
=
8
U_{Ar=8}
UAr=8 的top-i奇异向量有多少被包含在
U
A
r
=
64
U_{Ar=64}
UAr=64的top-j个向量中。可用格拉斯曼距离来表示这种子空间之间的相似关系:
从上图可以看出
r
=
8
r=8
r=8和
r
=
64
r=64
r=64中的top奇异向量重叠得最多(颜色越小表示相似程度越高),也就是说top奇异向量的作用最大,其他的奇异可能会引入更多的噪声。这证明了更新参数矩阵
Δ
W
\Delta W
ΔW存在极小的‘内在秩’。
3、参数增量 Δ W \Delta W ΔW和 W W W的关系?
为揭示微调过程的内在原理,作者进行了如下实验:
从上图的对比结果,作者发现三个现象:
- 相比于随机矩阵, Δ W \Delta W ΔW和 W W W有强关联。 从表中的 0.32 > > 0.02 0.32>>0.02 0.32>>0.02可以看出。
- Δ W \Delta W ΔW仅放大了 W W W中任务相关的特征, 并未放大头部特征。我们知道F范数的平方等于奇异值和的平方,因此从表中的 0.32 < < 21.67 0.32<<21.67 0.32<<21.67可以看出 Δ W \Delta W ΔW和 W W W的头部奇异向量并无关联。
- r等于4时, Δ W \Delta W ΔW的放大系数已经很大了。 计算 6.91 / 0.32 ≈ 21.5 6.91/0.32 \approx21.5 6.91/0.32≈21.5可知 Δ W \Delta W ΔW能将 W W W 中相关的特征向量放大21.5倍。
因此我们可以得到结论:在训练过程中,低秩的适应矩阵 Δ W \Delta W ΔW仅仅放大了对下游任务有用的特征,而不是预训练模型中的主要特征。
参考:
- LORA微调系列(一):LORA和它的基本原理