游乐游手机版
首页/AI热点日报/热点详情

对齐全量微调的LoRA改进最佳方案

类型:热点整理2026-06-18
LoRA-GA通过梯度逼近实现与全量微调的对齐,利用SVD分解初始化A、B矩阵,使第一步更新尽量接近全量微调。实验表明,在GLUE和LLAMA2-7b上取得接近全量微调的效果,训练数据越少相对提升越明显。

LoRA 作为参数高效微调的代表方法,大家应该都不陌生了。之前在《梯度视角下的LoRA:简介、分析、猜测及推广》里做过基础介绍——它用低秩分解大幅降低微调参数量,节省显存,训练好的权重还能直接合并回原始权重,推理时完全不用动架构,属于训练和推理都相当友好的方案。后来还在《配置不同的学习率,LoRA还能再涨一点?》里讨论过它的不对称性,发现给 A、B 矩阵设不同的学习率能带来更好效果,这就是所谓的“LoRA+”结论。

对齐全量微调!这是我看过最精彩的LoRA改进

当然,研究者们也没闲着,陆续提出了不少 LoRA 变体,比如 AdaLoRA、rsLoRA、DoRA、PiSSA 等等。这些改动各有各的道理,但说实话,都没有让人眼前一亮的感觉。直到前两天看到一篇新论文《LoRA-GA: Low-Rank Adaptation with Gradient Approximation》,才真正让笔者有了“就是它了”的直觉。只扫了一眼摘要,就觉得这事靠谱,仔细读完更是觉得——这是至今为止最精彩的 LoRA 改进。

它到底精彩在哪?实际含金量如何?一起来拆解看看。

基础回顾

先简单回顾一下 LoRA 的核心机制。假设预训练参数为 W,全量微调时更新量自然也是一个同尺寸矩阵。LoRA 的做法是把更新量约束为低秩矩阵:设 W_new = W_0 + AB,其中 A 和 B 的秩远小于原始维度,固定 W_0 不动,只训练 A、B。这样做既降低了参数量,又能让训练后的权重合并回原始参数,推理时没有任何额外开销。

为了让 LoRA 的初始状态和预训练模型一致,通常的做法是把 A 或 B 其中一个全零初始化,这样初始的 AB = 0W_new = W_0。但这并不是唯一方案——如果 A、B 都非零初始化,只需调整 W_0 的初始值,同样能满足初始状态相等的要求。

需要强调的是,LoRA 很多时候是显存不足下的无奈之选。算力充足时,全量微调的效果通常优于 LoRA,这也是 LoRA-GA 的一个前提假设——它的改进方向就是向全量微调对齐。另一个常见场景是有大量微型定制化需求,需要存很多微调结果,这时 LoRA 的存储优势就体现出来了。

对齐全量

LoRA-GA 提出了一个非常深刻的优化思路:既然通过初始化可以保证 W_new 的初始值等于 W_0,即初始状态与全量微调等价,那能不能进一步调整 A、B,让 LoRA 和全量微调在后续训练中也尽可能接近?比如,让第一步优化后的更新量尽可能相等?

越琢磨越觉得这个切入点直击本质——LoRA 的目标不就是“以小搏大”,去逼近全量微调的效果吗?既然如此,尽可能对齐全量微调的后续更新,不就是最正确的改进方向?从逼近的角度看,“W 的初始值等于 W_0”相当于零阶近似,保持后续更新量接近,就是更高阶的近似,逻辑上完全自洽。所以看完摘要那刻就有种“就是它了”的强烈预感。

具体来说,假设优化器是 SGD。全量微调的参数更新为:

W_{t+1} = W_t - η ∇L(W_t)

而 LoRA 的更新则涉及 A、B 两个矩阵,经过推导可以写成类似形式。为了让两者尽可能接近,可以最小化它们更新量之间的 Frobenius 范数平方差。

求解过程

简单起见,不妨记梯度矩阵为 G,那么优化目标就变成了寻找一个秩不超过 2r 的矩阵,使其尽可能接近 G。这是一个经典的低秩逼近问题——Eckart-Young 定理给出了答案:对 G 做 SVD 分解,保留前 2r 个最大的奇异值,其余置零,就是最优近似。

进一步,这个最优近似可以分解为 A、B 两个矩阵的乘积,具体分配方式不唯一。一种典型的做法是:取 SVD 结果中 U 的前 r 列初始化 A,取 V 的第 r 到 2r 行初始化 B。这样,LoRA+SGD 的第一步更新就能与全量微调尽可能接近。

这里有个细节:梯度最重要的是方向,模长不是决定性的,所以初始化结果还可以乘一个 scale 因子——LoRA 本身也允许这样的缩放,属于常见超参数调整。

顺便提一句,形式上与 LoRA-GA 比较相似的是 PiSSA,但 PiSSA 是对预训练权重 W_0 本身做 SVD 来初始化 A、B,这在理论上缺乏支撑,更多是经验选择。而 LoRA-GA 从梯度逼近的角度出发,理论动机要扎实得多。

一般结果与 Adam 优化器

当然,上面的推导基于 SGD。对于更常用的 Adam 优化器,结论需要重新审视。Adam 的第一步优化结果是符号函数形式,而不是纯粹的梯度,重复前面的推导会遇上符号函数无法解析处理的问题。因此,对于 Adam,论文给出了三种选择:

1. 信仰:直接沿用 SGD 的结果,相信它在 Adam 中也能发挥效果;
2. 硬刚:用优化器直接去最小化目标函数,由于目标比较简单,计算量尚可接受;
3. 投机:直觉上把梯度替换成符号函数,再代入 SGD 的结论,可能更贴合 Adam。

从论文来看,原团队选择了第一种方案,实验结果表明这个选择是可行的。

实验效果

论文的实验结果相当惊艳,尤其在 GLUE 基准上,LoRA-GA 取得了最接近全量微调的效果:


▲ LoRA-GA + T5-Base在GLUE上的表现

值得注意的是,训练数据量越少,相对提升幅度越大。这表明 LoRA-GA 的对齐策略不仅有助于提高最终效果,还能提升训练效率——用更少的步数就能达到更优的性能。

在 LLAMA2-7b 上的表现同样可圈可点:


▲ LoRA-GA + LLAMA2-7b在几个Benchmark的表现

这里有个实际问题:使用 LoRA 的主要场景是显存不足,而 LoRA-GA 的初始化需要计算所有训练参数的完整梯度,这本身可能因为显存不够而无法执行。论文提出的技巧是:可以逐个参数串行求梯度,而不是同时求所有参数,这样单步计算的显存压力就降下来了。串行求梯度虽然效率低,但初始化是一次性工作,慢一点完全可以接受。至于具体实现,不同框架有不同方法,这里不展开细说了。

文章小结

本文介绍了 LoRA 的一个新改进——LoRA-GA。虽然 LoRA 的变体层出不穷,但 LoRA-GA 凭借直观且扎实的理论指导,让人眼前一亮。它的改进思路有种“确认过眼神,它就是对的论文”的感觉,配上可圈可点的实验结果,整个推导和验证过程如行云流水,读下来确实赏心悦目。

来源:https://www.53ai.com/news/finetuning/2024071771042.html

相关热点

继续查看同栏目近期热点。

延伸阅读

补充最近整理过的热点入口。