想象一下,你正在教一个 AI 识别动物。你先训练它识别狗和猫——它表现得非常出色。接着你让它学习识别鸟和鱼。结果,当你再次让它识别猫时,它却犯了难。它似乎忘记了之前学到的内容。

这种令人沮丧的现象被称为灾难性遗忘 (catastrophic forgetting) , 是构建能够像人类一样持续学习的 AI 系统所面临的最大挑战之一。

现代的“基础模型”——例如视觉 Transformer (ViT) 这类大规模预训练神经网络——在跨任务知识迁移方面非常出色。但当它们被要求顺序学习时,比如在持续学习 (Continual Learning, CL) 场景下,往往会出现问题。多数现有方案要么需要存储庞大的“提示池”,要么反复重放旧数据以记住之前的任务——这既低效又难以在真实环境中推广。

如果 AI 能做到在不遗忘旧知识、不存储数据、且不降低推理速度的情况下学习新任务 , 那将是理想的状态。

这正是研究论文 “SD-LORA: Scalable Decoupled Low-Rank Adaptation for Class Incremental Learning” 所要解决的问题。提出的方法——可扩展解耦 LoRA (Scalable Decoupled LoRA, SD-LoRA)——通过将学习内容分解为大小 (magnitude)方向 (direction),使基础模型更擅长持续学习。借助这样的设计,模型实现了无重放、高效推理,并且能够端到端训练以完成持续学习任务。

在这篇解析中,我们将深入了解 SD-LoRA 的工作原理、为何在理论和实证上都高效,以及它如何超越当前最先进的持续学习方法。


持续学习的挑战

传统机器学习假设所有训练数据在训练开始时就已全部可用。与之不同, 持续学习 (CL) 要求模型按顺序学习——即一个接一个地适应新任务。例如,一个机器人可能先学习导航,再学习物体识别,最后学习操作技能。

核心挑战在于平衡可塑性 (学习新事物的能力) 和稳定性 (保留已学知识的能力) 。当新学习内容干扰旧知识时,就会出现灾难性遗忘,破坏稳定性。

类增量学习 (class-incremental learning) 这一要求更高的持续学习形式中,模型会随着时间逐步学习新的类别,并且必须能对来自任何已知类别的样本进行分类,而不依赖于任务标签。这迫使模型在所有已学任务上实现持续泛化。

现有的持续学习方法主要分为两类:

  1. 基于提示的方法 : 通过调整称为提示 (prompts) 的小型输入或中间表征来适应任务。每个输入都必须从不断扩大的提示池中选择正确的提示,这会降低推理速度与系统可扩展性。
  2. 基于重放的方法 : 通过存储旧任务样本,并在新任务训练时重放这些样本以防止遗忘。但这种做法违背了数据隐私原则,且在扩展性上存在限制。

SD-LoRA 的设计目标是同时满足持续学习的三个关键特性:

  • 无重放 (Rehearsal-Free): 不需要存储任何旧任务数据。
  • 推理高效 (Inference-Efficient): 推理阶段无需提示选择或任务专属模块。
  • 端到端优化 (End-to-End Optimized): 所有参数为持续学习目标共同更新。

表 1 展示了 SD-LoRA 与现有方法相比,如何同时满足上述三个条件。

一张表格,通过无重放特性、推理效率和端到端优化对持续学习方法进行比较;SD-LoRA 是唯一满足所有三个条件的方法。

表 1: 基于基础模型的持续学习方法对比。SD-LoRA 是唯一同时实现无重放学习、高效推理和端到端优化的方法。


背景知识: LoRA 如何实现高效微调

在深入了解 SD-LoRA 之前,先回顾一下 低秩自适应 (Low-Rank Adaptation, LoRA) ——一种用于大型模型的轻量级微调技术。

与直接更新模型层的完整权重矩阵 \( W_0 \) (通常包含数百万参数) 不同, LoRA 增加了一个紧凑且可训练的低秩更新 。 原始权重被冻结,仅训练小矩阵 \( A \) 和 \( B \) 来表示更新:

\[ \Delta W = A B, \quad \text{with} \; \text{rank}(r) \ll \min(m, n) \]

这种方法大幅减少了需要训练的参数。

LoRA 架构图,展示被冻结的预训练权重及其上添加的低秩更新 ∆W = AB。

图 1(a): LoRA 微调在冻结的预训练权重 \( W_0 \) 上增加低秩更新 \( \Delta W = A B \)。

更新后的层输出为:

\[ \boldsymbol{h}' = (\mathbf{W}_0 + \mathbf{A}\mathbf{B}) \boldsymbol{x} \]

LoRA 在适应单一任务时效果良好,但针对多个任务反复微调往往会导致干扰与遗忘。SD-LoRA 正是为了解决这个问题而提出的。


解耦大小与方向: SD-LoRA 的核心思想

任何 LoRA 更新 \( \Delta W = A B \) 都隐含两个要素:

\[ \Delta \mathbf{W} = \|\mathbf{A}\mathbf{B}\|_F \cdot \frac{\mathbf{A}\mathbf{B}}{\|\mathbf{A}\mathbf{B}\|_F} \]
  • 大小 (弗罗贝尼乌斯范数) : \( \|\mathbf{A}\mathbf{B}\|_F \)
  • 方向 (归一化矩阵) : \( \frac{\mathbf{A}\mathbf{B}}{\|\mathbf{A}\mathbf{B}\|_F} \)

已有研究指出,在迁移学习中,方向 比大小更关键。基于此启发,SD-LoRA 将大小和方向分开并以增量方式学习

对于第一个任务 \( \mathcal{T}_1 \):

  • 学习 LoRA 组件 \( A_1 B_1 \) (包含大小与方向) 。

对于后续任务 (\( \mathcal{T}_2, \mathcal{T}_3, ... \)):

  1. 冻结旧方向: 保留先前学到的 \( \overline{A_k B_k} \)。
  2. 添加新的方向: 训练当前任务的 \( \overline{A_t B_t} \)。
  3. 学习大小: 优化标量 \( \{\alpha_k\} \) 来加权各方向。

因此,在任务 \( \mathcal{T}_t \) 后,层的输出更新为:

\[ h' = (W_0 + \alpha_1 A_1 B_1 + \alpha_2 A_2 B_2 + \cdots + \alpha_t A_t B_t) x \]

SD-LoRA 架构图,结合多个低秩组件,每个组件由可学习的大小 α 加权,同时保留之前学到的方向。

图 1(b): 在 SD-LoRA 中,早期任务的方向被冻结,新任务则新增可训练的大小及方向。

这种设计允许模型在保留旧方向 (稳定性) 的同时学习新方向 (可塑性) 。学得的大小 \( \alpha_k \) 能动态调整旧任务的贡献,从而防止灾难性遗忘。


SD-LoRA 成功的机制

实证分析揭示了三个关键发现,解释了 SD-LoRA 能在其他方法失灵时取得成功的原因。

发现 1: 微调后的模型聚集在共享区域

研究人员在五个 ImageNet-R 任务上分别微调 ViT,并测量最优权重间的距离。结果显示,这些权重在空间中聚集,意味着存在一个跨任务共享的低损失区域

一张热力图,显示五个任务最优权重解的相对距离,表明它们相比基础模型更加聚集。

图 2(a): 不同任务的最优权重彼此接近,表明存在共享的低损失区域。

当固定第一个任务的方向,只调整后续任务的大小时,性能优于普通 LoRA (其方向会被覆盖) 。

性能曲线比较图,显示固定方向的 LoRA 随任务数量增加仍优于普通 LoRA。

图 2(b)-(c): 固定初始方向比持续改变方向获得更高的准确率。

这说明精心挑选的早期方向能引导模型进入对全部任务都更优的区域。

发现 2: 早期方向最具影响力

随着训练进行,SD-LoRA 会为每个任务学习新方向,但分析表明早期方向占据主要贡献。初期的新方向与旧方向高度重合,后期才逐渐分化。

残差与大小演化图,早期 α 值增加而后期 α 值下降,表明新方向的重要性递减。

图 3(a)-(c): 早期 LoRA 方向重用最频繁;对应的大小上升,而后期的下降。

初始任务的大小 (\( \alpha_1, \alpha_2 \)) 通常较高,说明这些方向奠定了模型的核心能力。

发现 3: SD-LoRA 沿着跨任务的低损失路径前进

通过在连续任务间插值权重,研究者发现 SD-LoRA 能在保持早期任务高性能的同时提升新任务表现——而普通 LoRA 会在旧任务上准确率下降。

轨迹图,显示 SD-LoRA 通过多个任务的重叠低损失区域,而普通 LoRA 在早期任务上表现下降。

图 4(a)-(c): SD-LoRA 沿着跨任务的低损失轨迹前进,从而保持旧任务的准确率。

这表明 SD-LoRA 的优化过程自然收敛于同时最小化所有任务损失的区域,实现了无需重放的持续学习。


精简模型: SD-LoRA 的变体

由于后期方向贡献较小,作者提出了两种高效变体:

  1. SD-LoRA-RR (秩缩减): 为后续任务逐步降低 LoRA 矩阵秩:

    \[ r_{1} = \dots > r_{\mu} > \dots > r_{\nu} = \dots = r_{N} \]

    在几乎不损失性能的前提下降低内存与计算成本。

  2. SD-LoRA-KD (知识蒸馏): 在引入新方向前,检查其是否可由已有方向线性组合表达:

    \[ \{\Delta \alpha_k\}_{k=1}^{t-1} = \arg\min_{\{\alpha'_k\}} \left\| \overline{A_t B_t} - \sum_{k=1}^{t-1}\alpha'_k \overline{A_k B_k} \right\|_F^2 \]

    若残差小于阈值,则将新知识合并到现有大小中: \( \alpha_k \leftarrow \alpha_k + \Delta \alpha_k \),避免参数膨胀。


对 SD-LoRA 的评估

研究团队在多个持续学习基准 (ImageNet-R、ImageNet-A 和 DomainNet) 上使用 ViT-B/16 进行评测,验证了 SD-LoRA 及其变体的性能。

性能表,显示 SD-LoRA 在 ImageNet-R 多任务设置下优于所有竞争方法。

表 2: SD-LoRA 在所有任务中均取得最高准确率,并随任务数量增长展现更好扩展性。

性能表,展示 SD-LoRA 在 ImageNet-A 和 DomainNet 基准中的领先表现。

表 3: SD-LoRA 在各项高难度基准测试中表现稳健。

在所有数据集上,SD-LoRA 均超越现有方法,在总体准确率 (Acc) 与平均随时准确率 (AAA) 上取得最高分。随着任务数量增加,其优势进一步扩大,体现出优秀的可扩展性。

多任务准确率曲线比较图,SD-LoRA 曲线始终最高且随时间性能下降最小。

图 5: 随着任务数量增加,SD-LoRA 依然保持高准确率,优于竞争方法。

消融实验表明,去除大小重缩放或方向解耦都会显著降低准确率,验证两者对保持稳定性与可塑性平衡至关重要。 效率比较结果也展示了 SD-LoRA 的优势——其计算成本与最高效方法 (InfLoRA) 相当,同时实现零数据存储 。 其中秩缩减变体 (SD-LoRA-RR) 尤为节省资源。

效率表格比较计算成本、参数量与存储;SD-LoRA 以零重放存储和最小参数量达成竞争性 FLOPs。

表 5: SD-LoRA 在计算效率上与最优方案相当,无需存储样本且参数量极低。


结论: 迈向 AI 终身学习的一步

SD-LoRA 为基础模型实现真正的持续学习提供了强有力的方案:

  • 无重放: 按序学习,无需数据存储。
  • 推理高效: 最终模型可直接处理所有任务,无需额外选择逻辑。
  • 端到端优化: 所有参数为持续学习目标共同适配。

其关键机制——“解耦大小与方向”——揭示了基础模型如何沿着跨任务共享的低损失轨迹演化。早期方向奠定了长期稳定性,而后期大小则微调了适应能力。

这种方法为持续学习提供了新思路,使模型能够不断进化、变得更智能,而不丢失已有能力。随着研究深入,SD-LoRA 的原理或将拓展至更多架构与微调策略,为可扩展的终身学习系统铺平道路。