趋近智
LoRA假说提出,针对新任务调整预训练权重矩阵 W 所需的改变,可以通过低秩结构有效表示。LoRA不是直接训练可能很大的更新矩阵 ΔW,而是将这个更新分解为两个较小的矩阵 B 和 A。
考虑我们大型语言模型(LLM)中某层的原始权重矩阵 W∈Rd×k(例如,自注意力或前馈网络中的线性层)。全量微调方法会更新 W 中的所有 d×k 个参数。LoRA通过保持 W 不变并引入两个新矩阵来避免这种情况:
这里,r 是分解的秩,它是选择的超参数,使得 r≪min(d,k)。原始权重更新 ΔW 随后通过这两个矩阵的乘积进行近似:
ΔW≈BA
注意尺寸:矩阵 B(d×r)与矩阵 A(r×k)相乘得到一个原始尺寸 d×k 的矩阵,适合作为 W 的更新。
在微调过程中,层的正向传播被修改。对于输入 x∈Rk,原始计算是 h=Wx。使用LoRA后,输出 h∈Rd 变为:
h=Wx+ΔWx=Wx+BAx
值得注意的是,预训练权重 W 在训练期间不会更新。只有尺寸小得多的矩阵 A 和 B 的参数得到优化。这大大减少了可训练参数的数量。
The LoRA技术引入了一个缩放因子 α。包含此缩放的修改后前向传播通常写为:
h=Wx+rαBAx
这里,α 是另一个超参数,它缩放LoRA更新的贡献。除以秩 r 有助于规范更新的量级,使 α 的影响对 r 的选择依赖性降低。本质上,α 控制了调整后的模型与原始模型的偏离程度。
效率提升源于可训练参数的大幅减少。我们不再训练 ΔW 的 d×k 个参数,而只训练 A 和 B 中的参数。
LoRA中的总可训练参数 = 参数(A) + 参数(B) = (r×k)+(d×r)=r(d+k)。
考虑一个典型的,其中 d=k=4096 的大型线性层。
在这个例子中,相较于该单一层的全量微调,LoRA仅需训练约 0.39% 的参数(即 65,536/16,777,216)。这种减少非常显著,尤其当应用于大型模型中的多个层时,带来内存(用于优化器状态、梯度)的大幅节省和潜在更快的训练迭代。
LoRA矩阵的恰当初始化对于训练稳定性很重要。一种常见做法是:
这保证了在训练开始时(t=0),乘积 BA 为零。因此,初始的LoRA适应模型行为与原始预训练模型(ΔW=0)完全相同,为适应过程提供了一个稳定的起点。
我们可以可视化LoRA调整层中的数据流,它如何修改线性层的标准前向传播。
LoRA调整层中的数据流。输入 x 经过原始冻结权重矩阵 W。同时,x 也由低秩矩阵 A 和 B 处理,随后进行缩放。这两条路径的输出随后相加,生成最终输出 h。
这种分解使得LoRA能够高效地调整大型模型,通过将学习过程集中在一组小的、精心构造的参数上,这些参数近似于对原始权重所需的改变。后续部分将介绍实用方面,例如选择秩 r 和缩放因子 α。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造