文章目录
- LoRA
- DoRA
- MoRA
以下部分参考自: https://mp.weixin.qq.com/s/OxYNpXcyHF57OShQC26n4g
LoRA
LoRA是微软于2021年推出的一种经济型微调模型参数的方法。
它在冻结大部分的模型参数的情况下,仅仅更新额外的部分参数。其性能与全参数微调相似。
LoRA假设微调期间的权重更新可以很好地近似于低秩矩阵。LoRA不会更新全权重矩阵
W
\mathbf{W}
W, 而是将更新分解为两个较小的矩阵
A
\mathbf{A}
A和
B
\mathbf{B}
B
具体的训练过程是: 将原来的矩阵参数固定,然后利用新的数据继续训练大模型,训练过程只更新
A
\mathbf{A}
A和
B
\mathbf{B}
B矩阵。在推理时,将原来的矩阵
W
\mathbf{W}
W和
(
A
×
B
)
(\mathbf{A}\times\mathbf{B})
(A×B)相加。
DoRA
权重分解低秩适用(DORA)将预训练的权重分解为两个向量: 幅度和方向。原来的参数矩阵
W
\mathbf{W}
W的维度依旧是
d
×
k
d\times k
d×k, 新增了一个幅度向量
m
∈
R
1
×
K
m\in\mathbb{R}^{1\times K}
m∈R1×K
DORA在训练 A \mathbf{A} A和 B \mathbf{B} B矩阵的时候,依旧利用了LoRA的方法,然后新增了幅度 M M M向量。
DoRA将列向量分解为两个分量,可以更灵活地更新方向分量,这更接近于完全微调。
MoRA
MoRA的概念类似于LoRA, 但不是将权重矩阵分解为更小的维度,而是将其分解为小的方形矩阵。
例如,如果原始权重层具有4096×4096~= 16M参数,则r=8的LoRA具有4096×8 + 8×4096=65,536参数。使用MoRA可以将维度减小到r=256,即256×256=65,536。在这两种情况下,需要训练和更新的参数是相同的,然而研究人员声称与LoRA相比具有更高的学习代表性。
根据这篇论文,LoRA的局限性之一是无法记住大量数据。对于该限制,一个合理的解释可能是它对低秩更新的依赖。低秩更新矩阵 Δ W \Delta W ΔW, 很难估计FFT中的全秩更新, 尤其是在需要记忆特定领域知识的持续预训练等内存密集型任务中。
为了论证这个观点,研究人员研究了LoRA和FFT在通过微调记忆知识方面的差异。为了避免利用LLM的原始知识,研究人员随机生成 10 k 10k 10k对通用唯一标识符(UUID), 每对包含两个具有32个十六进制值的UUID。该任务要求LLM根据输入的UUID生成相应的UUID。