1. 什么是LoRA?
LoRA(低秩适配)是一种用于高效微调大型预训练模型(如大型语言模型LLM或视觉模型)的技术。其核心思想是通过在模型的权重矩阵中引入低秩分解,仅更新一小部分参数(低秩矩阵),而非对整个模型进行全参数微调,从而显著降低计算成本、存储需求和训练时间,同时保持与全模型微调相当的性能。
LoRA最初由微软研究团队于2021年提出,论文标题为《LoRA: Low-Rank Adaptation of Large Language Models》(Hu et al., 2021)。它广泛应用于自然语言处理(NLP)、计算机视觉(CV)等领域,尤其适用于资源受限的场景(如个人开发者或中小型企业)。
为什么需要LoRA?
- 大型模型的挑战:现代预训练模型(如BERT、GPT、LLaMA、Stable Diffusion等)参数量动辄数十亿甚至上千亿。全参数微调这些模型需要:
- 高计算资源:需要大量GPU/TPU,训练成本高。
- 高存储需求:微调后的模型需保存完整权重,占用大量存储空间。
- 时间成本:全参数微调耗时长,迭代速度慢。
- LoRA的解决方案:
- 仅更新权重矩阵的低秩增量(ΔW\Delta WΔW),而非整个权重矩阵(WWW)。
- 参数量减少到原来的千分之一甚至更低。
- 微调后的模型只需保存低秩矩阵,存储需求小。
- 推理时可动态加载低秩矩阵,灵活性高。
2. LoRA的原理
LoRA(低秩适配)的核心思想是通过矩阵低秩分解来高效微调大型预训练模型。它假设模型权重矩阵的更新量(增量)可用低维结构表示,从而大幅减少需要训练的参数量。以下将分步骤详细讲解数学原理(包括矩阵低秩分解的定义、原理及在LoRA中的应用)和工作机制(LoRA如何在模型中实现微调)。
2.1 数学原理
LoRA的数学基础围绕矩阵低秩分解,这是一个线性代数概念,广泛应用于数据压缩、降维和机器学习优化。以下从基础开始,逐步深入。
2.1.1 什么是矩阵低秩分解?
矩阵低秩分解是指将一个大矩阵分解为两个或多个较小矩阵的乘积,这些较小矩阵的维度远低于原始矩阵,从而用更少的参数近似表示原始矩阵。
-
矩阵的秩(Rank):
- 矩阵的秩是矩阵中线性无关的行或列的最大数量,反映了矩阵的信息含量。
- 例如,一个 Rd×k\mathbb{R}^{d \times k}Rd×k 的矩阵 WWW,其秩 rank(W)≤min(d,k)\text{rank}(W) \leq \min(d, k)rank(W)≤min(d,k)。
- 如果 rank(W)≪min(d,k)\text{rank}(W) \ll \min(d, k)rank(W)≪min(d,k),我们称 WWW 为低秩矩阵,意味着它可用更少的参数表示。
-
低秩分解的基本形式:
- 假设有一个矩阵 W∈Rd×kW \in \mathbb{R}^{d \times k}W∈Rd×k,我们希望将其近似分解为:
W≈A⋅BW \approx A \cdot BW≈A⋅B
其中:- A∈Rd×rA \in \mathbb{R}^{d \times r}A∈Rd×r:一个高而窄的矩阵。
- B∈Rr×kB \in \mathbb{R}^{r \times k}B∈Rr×k:一个矮而宽的矩阵。
- rrr 是秩(rank),满足 r≪min(d,k)r \ll \min(d, k)r≪min(d,k)。
- 结果矩阵 A⋅B∈Rd×kA \cdot B \in \mathbb{R}^{d \times k}A⋅B∈Rd×k,与 WWW 形状相同,但用更少的参数表示。
- 假设有一个矩阵 W∈Rd×kW \in \mathbb{R}^{d \times k}W∈Rd×k,我们希望将其近似分解为:
-
为什么低秩分解有效?
- 信息冗余:许多大型矩阵(尤其是神经网络的权重矩阵)包含大量冗余信息,实际只需要低维子空间来表示其主要特征。
- 奇异值分解(SVD):SVD是低秩分解的理论基础。任何一个矩阵 WWW 可分解为:
W=UΣVTW = U \Sigma V^TW=UΣVT
其中 UUU 和 VVV 是正交矩阵,Σ\SigmaΣ 是对角矩阵,包含奇异值。如果只保留最大的 rrr 个奇异值,可得到一个低秩近似:
W≈UrΣrVrTW \approx U_r \Sigma_r V_r^TW≈UrΣrVrT
这与LoRA的 W≈A⋅BW \approx A \cdot BW≈A⋅B 形式类似。
-
参数量对比:
- 原始矩阵 WWW:d×kd \times kd×k 个参数。
- 低秩分解 A⋅BA \cdot BA⋅B:
- AAA:d×rd \times rd×r 个参数。
- BBB:r×kr \times kr×k 个参数。
- 总参数量:r×(d+k)r \times (d + k)r×(d+k)。
- 当 r≪d,kr \ll d, kr≪d,k 时,参数量大幅减少。例如:
- 假设 d=4096,k=4096,r=8d = 4096, k = 4096, r = 8d=4096,k=4096,r=8:
- WWW: 4096×4096≈16.84096 \times 4096 \approx 16.84096×4096≈16.8 百万参数。
- A⋅BA \cdot BA⋅B: 8×(4096+4096)≈0.06558 \times (4096 + 4096) \approx 0.06558×(4096+4096)≈0.0655 百万参数。
- 减少约 256倍!
- 假设 d=4096,k=4096,r=8d = 4096, k = 4096, r = 8d=4096,k=4096,r=8:
2.1.2 LoRA中的低秩分解
在LoRA中,低秩分解不是直接用于分解整个权重矩阵 WWW,而是用于表示权重矩阵的更新量 ΔW\Delta WΔW。具体来说:
-
权重更新公式:
- 假设预训练模型的某一层权重矩阵为 W∈Rd×kW \in \mathbb{R}^{d \times k}W∈Rd×k。
- 微调的目标是更新 WWW 以适应新任务,更新后的权重为:
W′=W+ΔWW' = W + \Delta WW′=W+ΔW - LoRA假设 ΔW\Delta WΔW 是低秩的,可表示为:
ΔW=A⋅B\Delta W = A \cdot B

最低0.47元/天 解锁文章
2014

被折叠的 条评论
为什么被折叠?



