赞
踩
LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS
https://arxiv.org/pdf/2106.09685.pdf
https://github.com/microsoft/LoRA
Fine-Tuning (FT) 是一种常用的自适应方法。在微调期间,模型被初始化为预训练的wight和bias,所有模型参数都进行梯度更新,一个简单的变体是只更新一些层而冻结其他层。
问题:现有大规模预训练语言模型应用到下游任务时通常需要微调,会更新预训练模型的所有参数,降低了部署时的运行效率。
方法:冻结了预训练的模型权重,并将可训练的秩分解矩阵加入到 Transformer 架构的每一层中,大大减少了下游任务的训练参数数量。
LoRA关键优势:
• 共享预训练模型,并针对特定任务构建不同小型 LoRA 模块。可以通过替换图 1 中的矩阵 A 和 B 将预训练模型应用到不同任务上,从而大幅降低存储需求和任务切换开销;
• 当使用自适应优化器时,LoRA 使训练更有效,只优化针对于特定任务的低秩矩阵;
• 可将训练矩阵与冻结权重线性合并,与完全微调的模型相比,并不会导致推理延迟。
• LoRA 可以与其中许多方法结合使用,例如前缀调整。
假设得到了一个由
Φ
Φ
Φ参数化的预训练自回归语言模型
P
Φ
(
y
∣
x
)
P_Φ(y|x)
PΦ(y∣x) 。每个下游任务都由
c
o
n
t
e
x
t
−
t
a
r
g
e
t
context-target
context−target对的训练数据集表示:
其中
x
i
,
y
i
x_i,y_i
xi,yi都是标记序列。例如在摘要任务中,
x
i
x_i
xi是文章上下文,
y
i
y_i
yi是摘要。
在full fine-tuning期间,模型被初始化为预训练权重
Φ
0
Φ_0
Φ0,并通过梯度更新为
Φ
0
+
Δ
Φ
Φ_0+ΔΦ
Φ0+ΔΦ以最大化条件语言建模目标:
full fine-tuning的一个主要缺点是,对于每个下游任务学习一组不同的参数
Δ
Φ
ΔΦ
ΔΦ,其维度
∣
Δ
Φ
∣
=
∣
Φ
0
∣
|ΔΦ|=|Φ_0|
∣ΔΦ∣=∣Φ0∣。当预训练模型很大,存储和部署微调模型的效率很低。
LoRA采用了一种更有效的参数方法,其中任务特定的参数增量
Δ
Φ
=
Δ
Φ
(
Θ
)
ΔΦ=ΔΦ(Θ)
ΔΦ=ΔΦ(Θ)由一组更小的参数 Θ 进行编码,参数
∣
Θ
∣
|Θ|
∣Θ∣远小于
∣
Φ
0
∣
|Φ_0|
∣Φ0∣。因此,寻找
Δ
Φ
ΔΦ
ΔΦ的任务变成了对 Θ 进行优化:
在后续部分中使用低秩表示来编码
Δ
Φ
ΔΦ
ΔΦ。
对于预训练的权重矩阵 W 0 ∈ R d × k W_0 ∈ R^{d×k} W0∈Rd×k,通过用低秩分解 $ W_0 + ΔW = W_0 + BA$表示后者来约束其更新,其中 B ∈ R d × r , A ∈ R r × k , r B ∈ R^{d×r},A ∈ R^{r× k},r B∈Rd×r,A∈Rr×k,r远小于 k k k。
在训练过程中,$ W_0$ 被冻结,不接收梯度更新,而 A 和 B 包含可训练参数。
W
0
W_0
W0 和
∆
W
=
B
A
∆W = BA
∆W=BA 都与相同的输入相乘,并且它们各自的输出向量按坐标相加。对于
h
=
W
0
x
h = W_0x
h=W0x ,修改后的前向传播为:
A 使用随机高斯初始化, B 使用零初始化,因此
∆
W
=
B
A
∆W = BA
∆W=BA在训练开始时为零。然后用
α
r
\fracαr
rα缩放
Δ
W
x
ΔWx
ΔWx,其中
α
α
α是
r
r
r中的常数。当使用 Adam 进行优化时,如果适当地缩放初始化,调整
α
α
α与调整学习率大致相同。当改变
r
r
r 时,这种缩放有助于减少重新调整超参数。
(1) LoRA 可以与其他有效的适配方法相结合
(2) 探究更多样化的方法来选择要应用LoRA 的权重矩阵,本文主要依靠启发式方法。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。