RoseLoRA: LLM 微调中的手术刀式精准度
大语言模型 (LLM) 时代赋予了我们像 GPT-4 和 LLaMA 这样不可思议的工具。这些模型在海量文本语料库上进行训练,吸收了大量的通用知识。然而,世界在不断变化。总统换届,股价波动,新的科学发现层出不穷。
我们如何更新这些庞大的模型以反映新信息呢?
从头开始重新训练它们的成本极其高昂。这促使了参数高效微调 (PEFT) 的兴起,其中 LoRA (低秩适应) 方法已成为行业标准。LoRA 允许我们通过仅训练极小部分的参数来调整模型。
但 LoRA 在涉及特定知识更新时有一个隐蔽的缺陷: 它就像一个钝器。当你使用 LoRA 教模型一个单一的新事实时,它倾向于将更新涂抹在整个模型上,可能会破坏现有的知识。
在本文中,我们将深入探讨 RoseLoRA , 这是一篇提出“手术式”微调方法的最新研究论文。通过引入行和列方向的稀疏性,RoseLoRA 实现了精准、针对性的更新——就像使用手术刀而不是大锤。
“稠密”带来的问题
要理解为什么需要 RoseLoRA,我们首先需要看看标准 LoRA 是如何工作的。
在传统的预训练模型中,我们有一个巨大的权重矩阵,称之为 \(W^o\)。 当我们想要微调模型时,我们需要找到权重的变化量 \(\Delta W\),使得新权重为 \(W = W^o + \Delta W\)。
在标准微调中,\(\Delta W\) 与原始矩阵大小相同——非常巨大。LoRA 提出这个更新矩阵具有“低秩”特性。LoRA 不直接学习巨大的 \(\Delta W\),而是将其分解为两个小得多的矩阵 \(\boldsymbol{B}\) 和 \(\boldsymbol{A}\)。

在这里,\(\boldsymbol{A}\) 和 \(\boldsymbol{B}\) 是窄矩阵。当它们相乘时 (\(\boldsymbol{B} \times \boldsymbol{A}\)) ,重构出较大的更新矩阵。在训练期间,我们冻结原始模型 \(W^o\),只更新 \(\boldsymbol{A}\) 和 \(\boldsymbol{B}\)。
“知识编辑”困境
这对于像“学会像海盗一样说话”这样的通用任务很有效。但在知识编辑方面却不行。
想象一下,你想用这个事实更新模型: “英国首相不再是鲍里斯·约翰逊了”。你希望更改负责该特定事实的参数,而不触碰那些知道如何做数学或总结文本的参数。
LoRA 的问题在于,乘积 \(\boldsymbol{B}\boldsymbol{A}\) 几乎总是一个稠密矩阵 。 即使 \(\boldsymbol{A}\) 和 \(\boldsymbol{B}\) 很小,它们的乘积结果却是一个几乎每个条目都非零的矩阵。这意味着,为了学习一个微小的事实,LoRA 会向预训练层中的每一个权重都添加一个小数值。
这造成了两个问题:
- 副作用: 你可能会意外降低模型在不相关任务上的性能。
- 缺乏局部性: 你并没有真正“编辑”特定知识;你只是应用了一个全局过滤器来掩盖旧知识。
RoseLoRA 登场: 稀疏解决方案
研究人员提出了 RoseLoRA (行和列方向稀疏的低秩适应) 。核心思想简单而强大: 我们希望最终的更新矩阵 (\(\boldsymbol{B}\boldsymbol{A}\)) 是稀疏的 。 稀疏矩阵是指大部分填充为零的矩阵。
如果更新矩阵是稀疏的,这意味着我们只修改了原始模型中极少数的参数——即那些对我们正在教授的特定任务或事实真正重要的参数。
稀疏性陷阱
你可能会想,“为什么不直接强制矩阵 \(\boldsymbol{A}\) 和 \(\boldsymbol{B}\) 稀疏呢?”
这就是数学变得棘手的地方。事实证明,即使 \(\boldsymbol{A}\) 是稀疏的,\(\boldsymbol{B}\) 也是稀疏的,并不能保证它们的乘积 \(\boldsymbol{B}\boldsymbol{A}\) 是稀疏的。
考虑一个简单的例子。如果 \(\boldsymbol{B}\) 中的某一行有非零值,而 \(\boldsymbol{A}\) 中对应的列也有非零值,它们的点积将是非零的。如果这种情况发生得足够频繁,你可能会将两个 90% 稀疏的矩阵相乘,最终得到一个 100% 稠密的乘积。
研究人员深入分析了这种关系。他们研究了行和列的稀疏性如何影响最终乘积。

如上图 2 所示,如果你只是应用随机稀疏性 (处于低位的曲线) ,你未必能得到稀疏的输出,除非输入矩阵极度空旷。然而,研究人员发现了一个理论下界 (那些理论线) 。
他们发现,要保证稀疏更新,你需要结构化稀疏性 。 具体来说:
- 矩阵 \(\boldsymbol{A}\) 的行方向稀疏性 。
- 矩阵 \(\boldsymbol{B}\) 的列方向稀疏性 。
通过强制 \(\boldsymbol{A}\) 的整行或 \(\boldsymbol{B}\) 的整列为零,他们在数学上界定了结果乘积的稀疏性。
RoseLoRA 框架
RoseLoRA 是一个迭代过程。它不仅仅是一开始就稀疏;它会在训练过程中学习什么应该变稀疏。

如上图所示,该过程如下运作:
- 从稠密开始: 正常初始化矩阵 \(\boldsymbol{A}\) 和 \(\boldsymbol{B}\)。
- 计算敏感度: 确定哪些参数对当前任务最重要。
- 剪枝: 将 \(\boldsymbol{A}\) 中最不重要的行和 \(\boldsymbol{B}\) 中最不重要的列设为零。
- 训练: 使用标准反向传播更新剩余的非零参数。
- 重复: 随着时间的推移,矩阵变得越来越稀疏,直到达到目标密度。
数学基础
让我们看看如何在数学上表述这一点。目标是最小化损失函数,同时保持非零元素的数量 (\(L_0\) 范数) 低于特定阈值 \(\tau\)。

然而,直接求解乘积 \(\boldsymbol{B}\boldsymbol{A}\) 的稀疏性是一个 NP 难问题 (计算上无法完美求解) 。基于他们关于行/列结构的发现,研究人员重新表述了这个问题。他们不再约束乘积,而是约束组件:

这里,\(\boldsymbol{A}_{i*}\) 指的是 \(\boldsymbol{A}\) 的第 \(i\) 行,而 \(\boldsymbol{B}_{*i}\) 指的是 \(\boldsymbol{B}\) 的第 \(i\) 列。该约束确保一定比例的行和列被归零。
保证
这真的有效吗?作者提供了一个理论证明 (命题 1) ,表明乘积 \(\boldsymbol{B}\boldsymbol{A}\) 的稀疏性具有基于组件稀疏性的保证下界。

通俗地说: 如果你充分地剪除 \(\boldsymbol{A}\) 的行和 \(\boldsymbol{B}\) 的列,你就可以保证应用到模型的最终更新是稀疏的。
如何剪枝: 敏感度分析
模型如何决定删除哪些行和列?随机猜测将是灾难性的。我们需要保留那些对我们添加的新知识至关重要的“神经元”。
RoseLoRA 使用基于敏感度的重要性评分 。 权重的敏感度定义为权重大小与其梯度的乘积。

高敏感度得分意味着稍微改变这个权重会导致损失发生巨大变化——也就是说,这个权重很重要。
为了使训练保持稳定,他们不仅仅使用单个批次的敏感度。他们使用指数移动平均值来平滑随时间变化的敏感度分数:

剪枝时间表
剪枝是迭代进行的。在每一步 \(t\),算法计算更新后的梯度:

然后,它应用一个阈值函数 \(\mathcal{T}\)。如果一个参数的重要性得分在前 \(k\) 百分位,它就保留。如果不是,它就被归零。

为了防止模型受到“冲击”,稀疏性并不是一次性强制执行的。该系统使用三次函数时间表,在训练过程中逐渐增加稀疏度 (减少活跃参数的数量) ,从 100% 降至目标水平。

实验结果
理论听起来不错,但在实践中表现如何?研究人员在广泛的基准测试中对比了 RoseLoRA 与标准 LoRA 及其他 PEFT 方法。
1. 知识编辑
这是 RoseLoRA 的试金石。任务是编辑 LLaMA-7b 模型中的特定事实 (例如,使用 ZsRE 数据集) 。
指标:
- 编辑成功率 (Edit Success) : 模型是否学会了新事实?
- 局部性 (Locality) : 模型是否没有破坏不相关的知识? (越高越好) 。
- 可移植性 (Portability) : 模型能否在推理中使用这个新事实?

结论: 查看表 1 中的“Locality”和“AVG” (平均) 列。RoseLoRA 占据主导地位。
- 在 WikiData_recent 上,RoseLoRA 实现了 98.4% 的编辑成功率,而 LoRA (AdaLoRA) 仅为 65.6%。
- 关键是, 局部性分数的提升是巨大的 (83.4 对比 55.8) 。
这证实了假设: 稀疏更新允许精确编辑,而不会破坏周围的“神经回路”。
2. 通用推理任务
人们可能会担心让模型变得稀疏会损害其学习通用任务的能力。研究人员在常识推理数据集 (如 BoolQ、PIQA、HellaSwag) 上对此进行了测试。

结论: RoseLoRA (最底行) 获得了最高的平均准确率( 80.7% ),高于标准 LoRA( 74.7% ),甚至高于更新的 DoRA。值得注意的是,它是以更少的活跃参数实现这一点的 (见 Params % 列) 。
3. 算术推理
数学任务需要严密的逻辑。稀疏模型能处理吗?

结论: 在 GSM8K 数据集 (小学数学) 上,RoseLoRA 达到了 33.0% 的准确率,显著高于 LoReFT (26.0%) ,并且接近标准 LoRA,尽管有稀疏性约束。这表明模型正在有效地识别特定的“数学神经元”并对其进行重度微调,而不是对整个大脑进行轻微微调。
4. 数据效率
当训练数据稀缺时,出现了一个最有趣的发现。研究人员将训练数据限制在一小部分 (10% 到 100%) ,并比较了 LoRA 和 RoseLoRA。

在图 3 中,橙色方块 (GSM8K 上的 RoseLoRA) 和紫色圆圈 (SVAMP 上的 RoseLoRA) 显示了稳健的性能。具体来说,请注意,即使在数据有限的情况下,RoseLoRA 也经常优于或匹配 LoRA。这表明,由于 RoseLoRA 需要优化的参数更少 (归因于稀疏性) ,它不太容易过拟合,并且能更有效地从小数据集中学习。
结论
RoseLoRA 代表了我们在维护和更新大语言模型方面迈出的重要一步。通过摆脱“参数越多 = 越好”的假设,研究人员表明,更新哪里比更新多少更重要。
主要结论如下:
- 精度至关重要: 标准低秩适应 (LoRA) 会产生稠密更新,可能会渗透到不相关的知识中。
- 结构化稀疏性: 为了确保精确更新,我们需要对适配器矩阵进行行和列方向的约束。
- 敏感度剪枝: 让模型通过梯度敏感度决定哪些参数是重要的,可以产生高效、“手术式”的微调。
对于学生和从业者来说,RoseLoRA 为构建可以不断用新事实更新的 LLM 系统提供了一条充满希望的道路——将静态模型转变为动态的、不断学习的系统,且无需巨大的计算成本或面临灾难性遗忘的风险。
如果你正在从事知识编辑工作,或者试图在小型专业数据集上微调模型,RoseLoRA 是一项非常值得探索的技术。
](https://deep-paper.org/en/paper/2406.10777/images/cover.png)