当 AI 学会"分抽屉":用稀疏子空间拆解灾难性遗忘
一个古老的困境
你教一个 LLM 学会了翻译,再教它写代码,再教它做数学题。等你回来考它翻译,发现它已经把翻译能力忘得七七八八——这就是灾难性遗忘,持续学习领域的头号难题。
传统解法是"均匀保护":对所有参数施加正则化(EWC、I-LoRA 等),让模型在学习新任务时尽量不偏离旧任务的参数分布。但问题在于,不是所有参数都同等重要。翻译任务可能只用到模型 20% 的参数,写代码用到另外 30%,数学题又用到另外 25%。均匀保护等于在保护大量无关参数,既限制了新任务的学习效率,又没真正保护好旧任务的核心知识。
SETA(Sparse Subspace-to-Expert Sharing)的核心洞察是:LLM 的参数空间里天然存在"块稀疏"结构,不同任务激活的是不同的参数子矩阵。如果能自动识别这些子矩阵,把任务知识分离到不同的"专家"里,就能在不互相干扰的前提下实现持续学习。
第一步:发现"块稀疏"——梯度告诉你该动哪些参数
SETA 的第一个关键操作是在新任务训练初期(warm-up 阶段)观察梯度。
具体来说,对一个 transformer 层的权重矩阵 $W \in \mathbb{R}^{d_{out} \times d_{in}}$,计算每个 $d_{out} \times d_{in}$ 大小的块的梯度范数。作者发现,不同任务在 warm-up 阶段产生的梯度块激活模式高度稀疏且互不相同——翻译任务可能强烈更新前 30 行,写代码强烈更新中间 50 行,两者几乎不重叠。
这不是巧合。Transformer 的注意力头和 FFN 神经元本来就功能分化,不同任务调用不同的功能回路,梯度自然落在不同的参数块上。
SETA 利用这一点,提出了动态 warm-up 停止机制:在训练初期持续监控梯度块贡献比例,当贡献比例稳定(不再大幅变化)时停止 warm-up,此时记录的块激活模式就定义了"这个任务需要哪些参数"。
第二步:子空间分解——独占专家 + 共享专家
有了块激活模式,SETA 把模型的每一层权重拆成三部分:
1. 独占专家(Unique Expert):只被当前任务强烈激活的参数块。这些块承载任务特定知识,后续训练其他任务时不更新它们。 2. 共享专家(Shared Expert):被多个任务共同激活的参数块。这些块承载通用能力,需要联合保护。 3. 自由参数(Free Parameters):未被任何任务强烈激活的块。这些参数留给未来任务使用。
这就像给模型装了一组"抽屉":翻译知识放第一个抽屉,代码知识放第二个抽屉,通用语言能力放在公共抽屉,还有空抽屉等着装新东西。
关键在于跨任务散度评分(Cross-task Divergence Score):当新任务的梯度块激活模式与已有任务的模式差异大时,归入独占专家;差异小时,归入共享专家。这个评分自动判断"这是新知识还是旧知识的变体"。
第三步:弹性锚定 + 路由正则化
拆完抽屉,还要保证它们不被后续训练搅乱。SETA 用两层保护:
权重层面——弹性锚定(Elastic Anchoring):对共享专家参数,施加 $L_2$ 正则化,锚定到"所有已学任务的参数均值"上。独占专家参数直接冻结。自由参数不受约束。
$$L_{anchor} = \lambda \sum_{i \in \text{shared}} \| W_i - \bar{W}_i \|_2^2$$
路由层面——路由感知正则化(Routing-Aware Regularization):SETA 用一个统一门控网络(gating network)在推理时自动选择专家组合。为了防止门控网络在训练新任务时"忘记"如何路由旧任务,对门控权重也施加正则化,锚定到旧任务的路由分布上。
这两层保护合在一起,既保护了权重内容,又保护了路由逻辑,形成了"双重锁定"。
数据说话:早期任务保持率大幅提升
在 LLaMA-2 7B 和 Qwen3-4B 上的实验,SETA 与 I-LoRA、EWC、Vanilla FT 对比:
| 方法 | 早期任务平均保持率 | 最终任务性能 | 遗忘率 |
|---|---|---|---|
| Vanilla FT | 12.3% | 100% (基准) | 87.7% |
| EWC | 28.5% | 98.2% | 71.5% |
| I-LoRA | 45.1% | 99.1% | 54.9% |
| SETA | 73.8% | 99.4% | 26.2% |
更值得注意的是,SETA 在新任务上的学习效率也没有牺牲(99.4% vs 99.1%),说明"分抽屉"策略没有引入额外的学习阻力。
一个更深的洞察:MoE 不只是"扩容",还是"隔离"
MoE(Mixture of Experts)在当前 LLM 架构里通常被视为"扩大参数量而不增加计算量"的手段——你加更多专家,每个 token 只激活少数几个,总参数多了但 FLOPs 没涨。
SETA 揭示了 MoE 的另一个价值:参数隔离。当不同任务的知识天然落在不同的参数子空间里时,MoE 的稀疏激活机制提供了一种天然的"防火墙"——学新任务时只动新专家,旧专家不受影响。
这个视角对持续学习领域有启发意义。传统的持续学习试图在密集模型里做"软隔离"(正则化、回放、梯度投影),而 SETA 走的是"硬隔离"路线——先把模型变成稀疏 MoE 结构,再利用稀疏性实现物理隔离。
这和人类大脑的学习机制有几分相似。大脑不是把所有技能存在同一组神经元里,而是有功能分区——语言区、运动区、视觉区。学习新技能不会覆盖旧技能,因为它们物理上就在不同地方。SETA 的"抽屉"策略,某种意义上是在 LLM 里重建了这种功能分区。
局限与展望
论文也坦诚了几个局限:
1. 块大小选择:梯度块的粒度($d_{out} \times d_{in}$ 的具体大小)需要手动调,太小则稀疏模式不稳定,太大则隔离不精确。 2. 门控网络容量:随着任务数量增加,统一门控网络需要记住越来越多的路由模式,可能成为瓶颈。 3. 任务边界假设:SETA 假设任务之间有明确边界(知道何时切换任务),这在真实场景(如在线学习)中不一定成立。
但核心思路——用梯度稀疏性发现知识结构,用 MoE 实现物理隔离——为持续学习提供了一个新范式。未来如果结合自动任务识别和动态专家增长,可能真的能让 LLM 像人一样"终身学习"。
---
论文: Sparse Subspace-to-Expert Sharing for Task-Agnostic Continual Learning 作者: Fatema Siddika, Md Anwar Hossen, Tanwi Mallick 代码: 未开源