冻结 99% 权重子空间,Berkeley 微调法把灾难性遗忘压到约 1 个点

Towards Continual Learning: Mitigating Forgetting With Subspace Tuning

Arnav Chavan, Kusha Sareen, Rishabh Tiwari, Abhranil Chandra, Johan Obando-Ceron, Kurt Keutzer, Scott Niekum, Inderjit S Dhillon, Devvrit Khatri

cs.LG, cs.AI

2026-10-16

把每步权重更新投影到权重谱底部 1% 的自由子空间,SFT 最多掉 57 个点的旧能力被压到约 1 个点,新任务精度还更高。

这篇在解决什么

微调是 LLM 落地的标准路径,代价是灾难性遗忘(catastrophic forgetting):模型学新领域时,预训练攒下的通用能力跟着掉。Qwen3-8B 在金融数据上做一轮普通 SFT,五个通用基准的平均分掉 57 个点,GSM8K 从 94.8 掉到 43.9,HumanEval 从 91.5 掉到 15.9。原始预训练数据拿不到,事后修复(如 ReInvoke)只能追回一部分,还挤占新任务的收益。

近两年的研究把遗忘和「权重往哪动」连了起来:RL、on-policy 蒸馏这类方法的更新避开权重矩阵的主奇异方向,所以遗忘少;SFT 的更新恰恰集中在这些方向上。这给出一个直接假设:把主奇异方向冻住,旧能力就保住了,高度过参数化的模型在剩余空间里照样学得动新任务。

方法

Subspace Tuning(SST)一句话讲完:对每个线性层做 SVD(奇异值分解,把权重矩阵拆成一组正交的输入输出方向),冻结前 99% 的奇异方向,把每一步真正落到权重上的更新投影进剩下 1% 的自由子空间。公式是 Π(ΔW) = (I − UkUk⊤)ΔW(I − VkVk⊤),两侧投影分别去掉更新里读自保护方向、写向保护方向的成分。

三个设计选择让它和前作拉开距离:

覆盖范围是 attention 和 MLP 的 252 个线性矩阵,embedding 和 layer norm 不动。optimizer 完全不改,Adam 和 Muon 都能直接套。不加参数、不加推理成本;Qwen3-8B 上投影开销每步 1.5%,R10 刷新摊销 37.6%,SVD 切到 8 卡后降到 4.7%。

结果

主实验在 Qwen3-8B(thinking 模式,数据带显式思维链)上做四个领域,旧能力取 GPQA-Diamond、MMLU-Pro、GSM8K、HumanEval、IFEval 五项平均:

方法(Science 域)新任务精度旧能力变化
SFT77.6−25.5
SFT+SST80.1−1.0
SFT+SST+R1084.0−0.8
SDFT88.1−24.0
SDFT+SST82.9−1.5

四个领域里最狠的 FinQA:SFT 旧能力掉 57.3 点,SFT+SST 反而升 1.3 点,新任务精度从 72.3 到 73.0。Pathology、Medicine 同样是 SFT 掉 45 点上下、SST 只掉 1-4 点。

规模行为是这篇最亮的部分:1.7B 到 14B,SFT 一律掉 30-40 点,SST 的遗忘从 −8.0 一路缩到 −0.9,32B(两轮训练)是 −1.0,并且 SST 的新任务精度在每个规模都比 SFT 高(14B 上 88.1 对 78.0)。数据侧同样:45k 预算下,不管新数据流还是 9k 样本重复五轮,SFT 越训漂得越远,SST 保持平坦。

分布层面,SST 离基座的 KL 散度少 2-4 倍,这带来精度测不出的东西:Olmo-3-7B-Think 用 answer-only 医学数据微调,SFT 把推理长度砍到远短于基座,SDFT 保持长度但开始虚构「参考答案」,SST 把两个都拉回来。三阶段连续微调(FinQA→Pathology→Science)下 SST 每学一个域都保住前面的,SFT 的未训练域掉 18-28 点。横向比同类子空间方法:官方设置下 Sculpting、OPLoRA 平均旧能力分别掉 26 和 18 点,SST no-refresh 掉 1.4 点,域内精度相当。加反向 KL 正则直接约束分布,弱了不管用,强了把新任务学废也换不回旧能力。

为什么重要

这是朝着「微调默认选项」走的方法:不改 optimizer、不加参数、个位数百分比开销,SFT/SDFT/Muon 都能叠。更关键的是规模趋势与业界路径同向,模型越大遗忘越少,8B 起基本贴着基座。顺序微调可累积、独立训出的专家合并干扰小(SFT 三专家合并掉 23.2 点,SST 掉 11.0 点),对多领域定制和模型拼装都是直接可用的性质。遗忘从几十个点压到一两个点,已经不是渐进改进的量级。

局限与存疑

作者自己列的:最优学习率可能与无约束 SFT 不同,完整的 learning-retention frontier 还没调出来;百 B 参数规模和更长任务序列未测,目前最大 32B;固定间隔的 refresh 可以换成按更新信息动态调整。

读下来的疑问:Qwen2.5-7B-Instruct 的 Science 域是全文唯一被迫把 r 从 0.99 放宽到 0.90 的设置,说明 1% 自由尾不是处处够用,小模型或紧任务上这个默认值会破。R10 不切分 SVD 时每步开销 37.6%,并不便宜。刷新机制保护的是一串更新后的子空间,长链条上相对原始基座的保护会累积变弱,论文只验到三阶段。主实验集中在 Qwen3 家族加一个 Olmo,领域偏医疗金融 QA;学习率扫描里最低 LR 下 SFT 的单点域内精度最高,SST 的优势是稳定与保持,不是全面碾压。另外 RL 遗忘少是引别人的结论,本文没有直接跑 RL 对照。

术语

原文与代码

社区讨论

相关论文

全部论文解读