零、前置知识

1.Low-Rank Adaptation (LoRA)

LoRA 是非常常见的参数高效微调方法。

1.1.基本意思

当我们微调一个大模型时,不直接改全部参数,而是只学习一个低秩矩阵分解形式的增量更新
通常写作:

其中 AAA 和 BBB 的秩很低,所以需要训练的参数量比直接训练整个 WWW 小很多。

1.2.中文理解

你可以把 LoRA 理解成:

  •  不给原模型“大动手术”,只外挂一个很小的、低秩的可学习补丁。

1.3.在本文中的作用

这篇论文不是重新发明 LoRA,而是在持续学习场景下,重新设计了 LoRA 如何逐任务累积、如何避免遗忘、如何保持可扩展性

2.Class Incremental Learning(类增量学习)

2.1.含义

模型要按顺序学习新类别。比如:

  • 任务 1 学猫、狗
  • 任务 2 学车、船
  • 任务 3 学鸟、马

学习新任务时,模型通常不能访问旧任务的全部数据
最后测试时,模型需要在所有学过的类别上统一分类,而且通常不知道当前样本属于哪个任务

2.2.为什么难

因为模型很容易在学习新类别时,把旧类别忘掉,这就是:

  • catastrophic forgetting
  • 中文:灾难性遗忘

2.3.这篇论文的重点

这篇论文的研究不是一般 continual learning,而是更难的 class incremental learning,简称 CIL

3.背下单词吧

  • LoRA:低秩适配
  • Decoupled(解耦的):把 LoRA 更新的幅值与方向解耦
  • Scalable(可伸缩/拓展的):随着任务数增加仍保持良好扩展性
  • Class Incremental Learning(类增量学习):顺序学习新类别,测试时在所有已学类别上统一分类

4. Continual Learning (CL_持续学习)

4.1.含义

模型不是一次性在静态数据集上训练完,而是要随着新任务不断到来持续学习。

4.2.在这篇论文里是什么意思

这里特指:模型要一个任务一个任务地学,而且学新任务时不能随意访问旧任务全部数据,因此会面临遗忘问题。

4.3.相关概念

  • catastrophic forgetting:灾难性遗忘
  • class incremental learning:持续学习中的一种更难设定_类增量学习

5. foundation models(基础模型)

5.1.含义

指大规模预训练模型,比如 ViT、LLM 这类已经在大数据上预训练过、具有较强迁移能力的模型。

5.2.在这篇论文里

作者主要讨论的是视觉基础模型,如 ViT-B/16。意思是:先利用预训练模型本身已经学到的大量通用知识,再把它用于持续学习

6. promising paradigm(有前景的范式)

6.1.含义

  • “paradigm” 在学术论文里常指一种研究框架、方法路线或总体思路。
  • 这里不是“某个具体算法”,而是说:

“基础模型 + 持续学习” 是一个值得发展的方向。

7. sequential tasks(顺序/序列任务)

7.1.含义

任务不是同时给出,而是按时间顺序一个接一个出现。

7.2.在本文里的重要性

持续学习最核心的设定就是“任务顺序到来”。
难点在于:新任务训练可能破坏旧任务能力。

8. prompt-based methods(基于提示的方法)

8.1.含义

通过学习 prompt(提示向量、提示 token、提示模块)来适配新任务,而不大幅修改原始模型参数。

8.2.在本文里

作者提到的 L2P、DualPrompt、CODA-Prompt 都属于这条路线。问题是 prompt 池会越来越大,测试时还要选 prompt,推理不够高效

9. Low-Rank Adaptation-based / LoRA-based(基于低秩适配的方法)

9.1.含义

LoRA 通过低秩矩阵分解来表示参数更新,只学习少量附加参数,而不是全量微调。

9.2.在本文里

作者研究的是:在持续学习场景下,怎么让 LoRA 不只是“省参数”,还能够“少遗忘、可扩展”。

10. expanding a prompt/LoRA pool(可拓展的prompt/LoRA池)

10.1.含义

每来一个新任务,就增加一些新的 prompt 或新的 LoRA 模块。

10.2.为什么这是问题

因为任务越多,池子越大:

  • 参数越来越多
  • 存储越来越大
  • 测试时选择成本越来越高

这就是作者所说的 scalability challenge

11. retaining samples of previous tasks(保留先前任务的样本)

11.1.含义

把旧任务中的一部分数据存下来,在学新任务时一起训练,帮助模型不要遗忘。

11.2.对应术语

这类做法常叫:

  • rehearsal(排练/复习)
  • replay(重放/回放)
  • sample memory(样本记忆库)

11.3.这篇论文的立场

作者希望不保留旧样本,也就是做 rehearsal-free 的持续学习

12. scalability challenges(可拓展的挑战)

12.1.具体指什么

不是说“模型不能训练”,而是说当任务数增加时,方法会越来越不实用,比如:

  • 组件越来越多
  • 存储越来越大
  • 推理越来越慢
  • 管理越来越复杂

13. magnitude and direction of LoRA components(LoRA组件的幅值与方向)

13.1.幅值(magnitude)

表示一次参数更新“有多大”。

13.2.方向(direction)

表示参数更新“朝哪个方向去”。

13.3.在本文中的创新点

作者不是把 LoRA 更新当成一个整体来学,而是把它拆成:

  • 更新方向
  • 更新强度

并且在持续学习中把这两者分离处理。这就是标题里 Decoupled 的具体含义

14. low-loss trajectory(低损失轨迹)

14.1.含义

训练过程中,模型参数沿着一条损失始终较低的路径移动。

14.2.直观理解

不是“为了学新任务硬跳到另一个点”,而是沿着一条比较平滑、对旧任务也不太伤害的路线前进。

14.3.在本文中的作用

作者认为 SD-LoRA 正是通过这种方式缓解遗忘。

15. overlapping low-loss region(重叠低损失区域)

15.1.含义

对多个任务来说,都能保持较低损失的一块参数空间区域。

15.2.直观理解

可以把它理解为:

  • 不是每个任务都完全需要不同的一套参数
  • 某些参数区域对多个任务都“够好”

15.3.本文主张

SD-LoRA 会逐步走向这样一个共享区域,因此能兼顾新旧任务

16. stability-plasticity trade-off(稳定性-可塑性权衡)

16.1.stability(稳定性)

记住旧知识,不轻易遗忘。

16.2.plasticity(可塑性)

有能力吸收新知识,适应新任务。

16.3.trade-off(权衡)

两者通常是冲突的:

  • 太稳定:学不会新任务
  • 太可塑:旧任务忘得快

17.component selection(组件选择)

17.1.含义

测试时需要判断当前样本该使用哪个 prompt、哪个适配器、哪个 LoRA 模块。

17.2.为什么作者不喜欢它

因为这会:

  • 增加推理复杂度
  • 降低扩展性
  • 随任务增多而变得更麻烦

18. end-to-end optimized(端到端优化)

18.1.含义

模型中所有要学的参数可以一起围绕最终目标直接优化,而不是拆成多个相互独立的阶段分别训练。

18.2.在这篇论文里

作者把“是否端到端优化”视为一个重要优点,因为这意味着方法整体目标更统一。

19.PEET(参数高效微调)

19.1.核心

不对整个大模型做全参数微调,而是只增加或只训练一小部分参数,就让模型适应新任务。

19.2.论文中的理解

论文里明确说,把 PEFT基础模型上的持续学习 结合起来很重要,因为如果每来一个新任务都做一次 full fine-tuning,计算和存储开销都会非常大,几乎不可接受。

所以作者把 PEFT 当成一种更现实的路线:
在保留基础模型主体参数的前提下,只通过少量附加参数去适应每个新任务。

  • PEFT 是总类别
  • Prompt-tuning、Prefix-tuning、Adapter、LoRA 都是 PEFT 的具体实现方式。

20.Prompt-tuning(提示微调)

20.1.含义
通过学习一组可训练的 prompt 表示,引导基础模型适应新任务,而不是大规模改动模型主体参数。

20.2.特点:

  • 改动小
  • 参数少
  • 常用于基础模型适配
  • 在持续学习里容易发展成越来越大的 prompt pool

20.3.在本文中的位置

L2P、DualPrompt、CODA-Prompt、HiDe-Prompt 都属于这条路线。

21. Prefix-tuning(前缀微调)

21.1.含义

和 prompt-tuning 类似,也是学习一组额外的可训练表示,只不过它更强调在 Transformer 内部加入“前缀”形式的表示来影响后续计算。

21.2.和 Prompt-tuning 的关系

二者都属于 PEFT,只是插入位置和作用方式略有区别。

22.Adapter(适配器方法)

22.1.含义

在 Transformer 层之间插入一些轻量的小模块,训练这些模块来适应新任务,而原始大部分参数保持冻结。

22.2.特点:

  • 需要显式增加网络模块
  • 比全量微调省参数
  • 属于经典 PEFT 路线之一

一、摘要

1. 研究背景

随着基础模型的发展,基于基础模型的持续学习(CL)成为一个很有前景的研究方向,因为预训练模型已经积累了大量通用知识,可以用来更好地处理顺序到来的任务

2. 问题

现有方法主要有两类不足:

  • 一类是 prompt-based 方法,往往需要不断扩展 prompt 池;
  • 另一类是 LoRA-based 方法,往往需要扩展 LoRA 池,或者保存旧任务样本进行回放。
  • 这样一来,随着任务数量增加,方法会面临明显的可扩展性问题,包括存储开销、参数膨胀和推理复杂度上升。

3. 方法

针对这些问题,论文提出了 SD-LoRA(Scalable Decoupled LoRA),用于类增量学习。它的核心做法是在不使用回放样本的前提下,把 LoRA 组件中的幅值(magnitude)方向(direction)分开持续学习。

4. 机制

论文的经验分析和理论分析表明,SD-LoRA 在训练过程中倾向于沿着一条低损失轨迹(low-loss trajectory)前进,并最终收敛到一个对所有已学任务都有效的重叠低损失区域(overlapping low-loss region)正因为如此,它能够较好地平衡稳定性(记住旧任务)和可塑性(学习新任务)。

5. 贡献

这篇论文的主要贡献可以概括为四点:

  1. 提出了一个无回放、可扩展的解耦式 LoRA 方法 SD-LoRA;
  2. 从经验和理论两方面解释了它为什么有效;
  3. 进一步提出了两个更高参数效率的变体;
  4. 实验表明该方法在多个持续学习基准和多种基础模型上都表现有效,同时支持端到端优化高效推理,因为测试时不需要做额外的组件选择。

6.一句话总结

SD-LoRA 是一种面向类增量学习的、无回放的解耦式 LoRA 方法,它通过分离更新的幅值和方向,在保证推理高效的同时,缓解灾难性遗忘并提升可扩展性。

7.代码仓库

SD-LoRA:一种面向类增量学习的可扩展解耦低秩适配方法。


二、介绍

1. 研究背景

这部分首先从持续学习(CL)的一般定义讲起:持续学习希望构建一种计算学习系统,使它能够在不断变化的环境中持续适应,同时保留已经学到的旧知识。与传统监督学习假设训练数据满足 id(独立同分布) 不同,持续学习面对的是非平稳数据,任务是按顺序逐个到来的。也正因为如此,模型在学习新任务时很容易出现对旧任务性能明显下降的现象,也就是灾难性遗忘

接着作者把背景推进到基础模型上的持续学习。他们指出,近几年基础模型因为具有大规模预训练知识,在知识迁移和抗遗忘方面表现出明显优势,因此“foundation model + continual learning” 成为很有潜力的研究方向。

2. 问题

作者接下来指出,现有方法虽然有效,但都存在明显的可扩展性问题

第一类是 prompt-based 方法。像 L2P、DualPrompt、CODA-Prompt 这类方法,会为新任务逐步学习 prompt pool,并在测试时从中选择与当前样本最匹配的 prompt。问题在于:虽然它们不需要人工提供任务 ID,但随着任务数量增加,prompt 池会越来越大,测试时的 prompt 识别与选择也会越来越复杂,因此会带来推理扩展性不足的问题。

第二类是更依赖内存的路线。HiDe-Prompt 在 prompt 学习的同时存储大量旧样本,InfLoRA 虽然采用 LoRA 保持参数高效,但在增量训练中同样需要回放大量旧样本。这类方法的问题在于:它们对样本存储的依赖太强,在真实部署尤其是资源受限大规模持续学习场景中,很难做到真正可扩展。

因此,作者实际上在这里提出了一个核心判断:现有方法要么推理不够高效,要么训练依赖 rehearsal memory,要么无法做到真正端到端优化。

3. 方法

针对上述问题,作者提出了 SD-LoRA(Scalable Decoupled LoRA)。它面向的是类增量学习(class incremental learning),并试图同时满足三项理想性质:

  • Rehearsal-free:不保存旧任务样本;
  • Inference Efficiency:测试时保持高推理效率;
  • End-to-end Optimization:所有参数围绕持续学习目标统一进行端到端优化。

SD-LoRA 的核心做法是:在持续学习过程中,增量地加入 LoRA 组件,但不是把它们作为一个整体处理,而是把 LoRA 更新中的幅值(magnitude)方向(direction)分开学习。这样一来,模型既可以保留已经学到的有效方向,又可以继续适应新任务。更重要的是,作者强调 SD-LoRA 在测试时可以直接使用最终训练好的模型进行评估,而不需要像 prompt-pool 方法那样做任务相关的组件选择,因此推理更高效。

4. 机制

这部分 Introduction 里已经提前给出了作者对方法有效性的解释,也就是后文会详细展开的“工作机制”。

作者认为,SD-LoRA 在训练过程中会沿着一条低损失路径(low-loss path)前进,并最终收敛到一个对所有已学习任务都有效的重叠低损失区域(overlapping low-loss region)。正因为它不是简单地为每个任务单独开一套互不相干的适配器,而是在已有方向上持续调整和扩展,所以它能够在稳定性可塑性之间取得较好的平衡:既尽量不忘旧任务,又能继续学习新任务。

作者还进一步观察到:随着持续学习推进,后续新学到的 LoRA 方向的重要性会逐渐减弱。换句话说,早期学到的一些方向更像是“主干”,后期更多是在其基础上做修正。正是基于这个观察,作者后面又提出了两个更省参数的版本,一个通过降秩(rank reduction),一个通过知识蒸馏(knowledge distillation),来进一步提升参数效率。


5. 贡献

这部分 Introduction 最后把论文贡献概括成三点。

  1. 作者提出了一个基础模型上的持续学习方法 SD-LoRA,它同时具备无回放、推理高效、端到端优化这三个优点;同时还给出了两个更高参数效率的变体。
  2. 作者不仅给出了方法,还从经验分析理论分析两方面解释了 SD-LoRA 为什么有效,并说明了它为何可以不依赖任务特定的组件选择。
  3. 作者在多个持续学习 benchmark 和多种 foundation model 上做了系统实验,验证了 SD-LoRA 的有效性。

三、相关工作

1. 研究背景

持续学习(CL)的目标,是让模型能够按顺序学习新任务,同时尽量保留已经学到的旧知识,核心就是缓解灾难性遗忘。现有 CL 方法大体可以分成三类:基于回放的方法基于正则化的方法、以及基于结构的方法其中,回放法通过保留旧样本来减轻遗忘;正则化法通过在损失函数中加入约束项,限制重要参数被破坏;结构法则通过扩展或调整模型结构,为新任务分配额外模块,从而避免覆盖旧知识。作者特别说明,本文关注的是更难也更实用的 类增量学习(class-incremental learning):测试时模型无法获得任务身份信息,却必须在所有已学任务上统一工作。

2. 问题

作者认为,传统类增量学习方法往往要么需要从头训练,要么依赖高参数开销的调优,容易带来过拟合和任务间干扰。进一步到基础模型上的持续学习时,已有方法虽然已经利用了预训练模型更强的知识迁移能力,但仍然存在关键缺陷:像 L2P、DualPrompt、CODA-Prompt 这类方法主要依赖 prompt-tuning,而 HiDe-Prompt 和 InfLoRA 则进一步依赖大量旧样本存储。结果就是,现有方法虽然各有优点,但没有一种能同时满足“无回放、推理高效、端到端优化”这三项理想性质

3. 方法

在这样的相关工作背景下,作者提出 SD-LoRA,把它定位为一种面向基础模型持续学习的、rehearsal-free 的 LoRA-based PEFT 方法。这一段没有展开公式细节,但已经明确说明:SD-LoRA 想填补现有方法的空白,即同时兼顾不存旧样本、推理高效、端到端优化。作者还提到,SD-LoRA 也可以从另一个角度被理解为某种 model-merging 思想的延伸,只不过它是与持续学习研究并行发展、并且相互补充的。

4. 机制

这一段在机制层面主要强调两点。第一,为什么要把 PEFT 和基础模型持续学习结合起来:因为如果每来一个任务都做 full fine-tuning,无论计算还是存储代价都太高。第二,作者回顾了 PEFT 的三种代表路线:adapters 是在 Transformer 层里插入轻量模块,prompt-tuning / prefix-tuning 是学习输入或前缀表示,LoRA 则是向预训练权重上叠加低秩更新分支。作者的判断是:这些 PEFT 技术在单任务或离线多任务中很有效,但在基础模型上的持续学习场景里,其能力边界还没有被充分研究,因此 SD-LoRA 选择走一条无回放、LoRA-based 的 PEFT 路线

5. 贡献

如果把这段 Related Work 的作用压缩成一句话,那就是:作者先系统梳理了 CL、基础模型 CL、PEFT 三条研究线,然后指出现有工作仍缺少一个能同时满足三项关键性质的方案,最后把 SD-LoRA 放在这个缺口上,说明它的研究意义和定位。换句话说,这一段的贡献不是提出新实验结果,而是为后文的方法设计建立一个清晰的问题坐标系:为什么现有方法不够,为什么 LoRA 值得继续做,为什么 SD-LoRA 是必要的。


四、提出方法:SD-LoRA

  • 3.1 Preliminaries:定义持续学习任务和标准 LoRA
  • 3.2 SD-LoRA:提出核心方法
  • 3.3 Empirical Analysis:用实验现象解释方法机制
  • 3.4 Theoretical Analysis:用理论解释为什么早期方向重要
  • 3.5 Two Variants:提出两个更省参数的版本

4.1 预备知识:先把问题和 LoRA 讲清楚

(1)问题设定

作者把类增量学习写成一个标准的顺序分类问题:有 N 个顺序到来的任务 T1,…,TN。训练第 t 个任务时,只能看到当前任务的数据 Dt,看不到之前任务的数据。训练目标是让分类器 fθ 在当前任务上优化损失;而总体目标则是:学完当前任务后,模型不仅要在当前任务上表现好,也要在之前所有任务上都尽量保持性能。

(2)标准 LoRA

接着作者回顾 LoRA。LoRA 的核心思想是:不直接改原始权重 W0,而是只学习一个低秩更新 ΔW=AB,其中 A 和 B 都是小矩阵,因此参数量很少。这样某一层的输出就从 W0X 变成 (W0+AB)x,而原始权重 W0在微调过程中保持冻结。

这一小节的核心意思

4.1 的目的就是把后面的方法建立在两个基础上:

  • 任务是顺序学习、不能访问旧数据
  • 参数更新采用的是LoRA 这种低秩适配形式

4.2 SD-LoRA:第三节最核心的方法部分

(1)关键出发点

作者先把普通 LoRA 的更新 ΔW=AB进一步分解成两部分:

  • magnitude:更新的大小,也就是 
  • direction:更新的方向,也就是归一化后的 

作者认为,普通 LoRA 把这两者绑在一起学,不够灵活;而已有研究也提示,在微调里 direction 往往比 magnitude 更关键

(2)SD-LoRA 的核心做法

于是,SD-LoRA 的设计就是:在持续学习过程中,把 LoRA 的幅值和方向解耦学习。更具体地说:

  • 以前任务学到的方向 AkBk​ 被保留下来并固定;
  • 当前任务学习时,旧方向对应的系数 αk 仍然可以继续更新;
  • 同时为当前任务再学习一个新的方向 AtBt和它对应的系数。

因此,第 t 个任务时某层的更新不再是单个 AB,而是:

其中旧方向固定,新方向和所有系数可学习。

(3)这一设计想解决什么

这个设计的目的,是让模型不要每学一个新任务就“推翻”以前的 LoRA 更新方向,而是保留早期方向,把新任务更多地写成“在旧方向上重新加权,再加少量新方向修正”。这也是标题里 Decoupled 的真正含义。


4.3 经验分析:作者用三个发现解释 SD-LoRA 为什么有效

Finding 1:不同任务的好解其实彼此靠得更近

  • 实验结果_Figure2

作者先观察到:如果把基础模型分别对不同任务单独 fine-tune,得到的那些任务最优权重,彼此之间往往比它们和原始预训练权重 W0​ 更接近。也就是说,不同任务的“好参数”并不是完全分散的,而可能在参数空间里彼此接近。进一步实验表明,即便后续任务只持续调 LoRA 的 magnitude,而固定第一个任务学到的 direction,效果都能超过 vanilla LoRA。作者据此得出:只要方向学得好,单靠调整大小就已经能兼容多个任务

Finding 2:早期学到的方向特别重要

  • 支持实验Figure3

作者继续分析发现:以前任务保留下来的方向,尤其是最早几项任务学到的方向,在整个持续学习过程中非常重要。具体表现是:新学到的方向一开始和旧方向很相似,说明存在方向复用;随着任务推进,新方向才逐渐偏离旧方向,加入一些细微修正。与此同时,早期任务对应的 magnitude 会快速上升,而后期任务对应的 magnitude 整体呈下降趋势。作者把这解释成:模型越来越依赖早期方向作为主干,而后期方向更多是局部修正项

Finding 3:SD-LoRA 在走一条 low-loss path

第三个发现是最关键的。作者做了权重插值实验,比较 vanilla LoRA 和 SD-LoRA 在两个连续任务之间的参数路径。结果显示:SD-LoRA 从旧任务权重走向新任务权重时,新任务性能上升,但旧任务准确率几乎不掉;而 vanilla LoRA 则会出现“新任务好了,旧任务掉了”的典型遗忘现象。于是作者认为,SD-LoRA 不是简单跳到一个新解,而是在沿着低损失路径(low-loss path)前进,最终落到对多个任务都友好的重叠低损失区域(overlapping low-loss region)

4.3 的一句话总结

这一小节实际上想说明:SD-LoRA 之所以能减少遗忘,是因为它会保留早期关键方向,并通过调整这些方向的权重,把模型引导到一个对新旧任务都兼容的共享低损失区域。


4.4 理论分析:为什么早期方向会这么重要

这一定理背后的直观意思是:早期学到的方向更接近共享更新里的“主成分”,因此更基础、更稳定,也更值得被后续任务反复复用;而后面学到的方向更多是在这些主方向基础上的细修正。这就从理论上呼应了前面经验分析里 magnitude 递减、早期方向更重要的现象。


4.5 两个变体:在核心机制不变的前提下进一步省参数

(1)SD-LoRA-RR

第一个变体叫 SD-LoRA-RR,其中 RR 是 Rank Reduction。作者的观察是:后期任务新引入的方向贡献越来越小,那么就没必要一直给后期任务分配和早期任务一样高的 rank。于是他们对后期任务的 LoRA 矩阵逐步降秩:早期任务 rank 高,后期任务 rank 低。这样可以减少参数量,同时保留主要性能。

(2)SD-LoRA-KD

第二个变体叫 SD-LoRA-KD,其中 KD 是 Knowledge Distillation。它更进一步:每学完一个新方向后,不是立刻保留它,而是先看这个新方向能否被之前学到的方向线性表示。如果能用旧方向的线性组合近似表示,那么作者就不保留这个新方向,而是把拟合系数吸收到已有的 magnitude 里。这样就能在不继续扩张方向集合的情况下,把新知识“蒸馏”到旧方向里。

4.5 的核心意义

所以,4.5 的重点不是重新发明新方法,而是在 4.3 的经验发现之上进一步得出:既然后期方向边际贡献变小,就可以:

  • 要么让后期方向更低秩;
  • 要么干脆把新方向吸收到旧方向里。

4.6.相关图解

Figure 1

  • 对比a和b
  • (a) Vanilla LoRA
  • (b) 论文提出的 SD-LoRA

普通 LoRA 直接学习一个低秩更新 AB,而 SD-LoRA 把更新拆成“方向 + 幅值”,并且把旧任务学到的方向保留下来。

左图

右图

这张图的意义

对持续学习的帮助

一句话总结

左图是普通 LoRA:直接学一个低秩更新 AB;右图是 SD-LoRA:把更新拆成多个“方向”与对应“幅值”之和,在持续学习中保留旧方向、学习新方向并调整各方向权重。

Figure2

  • 支持上述Find1
  • 不同任务各自微调得到的最优权重,其实彼此很接近
  • 即使固定早期学到的一个方向,只调幅值,效果也能比普通 LoRA 更好

一句话总结

不同任务单独微调得到的最优权重彼此接近,因此一个早期学到的 LoRA direction 可能已经包含了多个任务共享的主要更新方向;实验上,固定第一个方向、后续只调整 magnitude,效果甚至优于 vanilla LoRA,这为 SD-LoRA 保留旧方向的设计提供了依据。

Figure3

一句话总结

Figure 3 表明,SD-LoRA 在训练初期会让新方向与旧方向保持较强对齐,说明存在方向复用;随着训练推进,新方向逐渐分化,但从 learned magnitudes 来看,模型始终更依赖早期任务学到的 directions,而后期 directions 更多只是细微修正。这一发现直接支持了 SD-LoRA 固定旧方向以及后续参数压缩变体的设计。


五、实验设置

1. 实验设置

作者先说明了实验所用的数据集、任务划分、评价指标、对比方法和训练细节。

在数据集上,他们主要使用了三个标准持续学习基准:

  • ImageNet-R
  • ImageNet-A
  • DomainNet

其中,ImageNet-R 被划分为 5/10/20 个任务,ImageNet-A 被划分为 10 个任务,DomainNet 被划分为 5 个任务。此外,附录里还补充了 CIFAR100 和 CUB200 的结果。

在评价指标上,作者用了两个经典指标:

  • Acc(Average Accuracy):持续学习全部完成后,在所有任务上的平均准确率
  • AAA(Average Anytime Accuracy):每学完一个新任务后,都统计当前已经见过任务的平均准确率,再把整个过程累计起来

也就是说,Acc 更看最终结果,AAA 更看整个学习过程中的持续表现

在对比方法上,作者选了当前较强的 ViT-based 持续学习方法,包括:

  • L2P
  • DualPrompt
  • CODA-Prompt
  • HiDe-Prompt
  • InfLoRA

同时还加入了 full fine-tuning 作为一个较低基线。

在模型和实现上,主干网络使用的是 ViT-B/16,主版本来自 ImageNet-21K 预训练后再在 ImageNet-1K 上微调的模型;此外还测试了 DINO 的自监督 ViT-B/16。SD-LoRA 被插入到所有 Transformer block 的 attention 层中,具体修改的是 query 和 value projection。基础 rank 设为 r1=10。SD-LoRA-RR 进一步设置了 来控制降秩,SD-LoRA-KD 则设定了拟合残差阈值。训练统一使用 Adam 优化器。

2. 实验结果

这一节的实验结果主要证明了四件事。

(1)在不同 benchmark 和不同 backbone 上,SD-LoRA 都更强

作者在表 2 和表 3 中显示,SD-LoRA 在多个持续学习 benchmark 上都优于现有方法。比如:

  • ImageNet-R (N=20) 上,SD-LoRA 比 InfLoRA 高 7.68% Acc4.62% AAA
  • ImageNet-A 上,SD-LoRA 比 HiDe-Prompt 高 31.05% Acc15.32% AAA
  • 在更复杂的 DomainNet 上,SD-LoRA 也取得了最优性能

此外,把 backbone 换成 DINO 的自监督 ViT-B/16 后,SD-LoRA 仍然保持优势,说明它不是只对某一个 backbone 有效,而是具有一定泛化性。

(2)任务数越多,SD-LoRA 的优势越明显

作者专门比较了 ImageNet-R 在 5、10、20 个任务 三种划分下的表现。结果表明,随着任务数增加,SD-LoRA 相对其他方法的优势还在扩大。这个结果很重要,因为它直接支撑了题目中的 Scalable
任务越长、持续学习过程越复杂,SD-LoRA 越能体现优势。

(3)消融实验说明 SD-LoRA 的提升不是单一因素带来的

作者做了三类消融实验:

第一,只固定一个学到的 LoRA direction,但允许 magnitude 继续适应。即便这样,性能也不差,说明初始方向本身就很关键

第二,只做 magnitude 和 direction 的解耦,但限制模型只有一个 LoRA component。这样效果明显不如完整 SD-LoRA,说明单纯解耦还不够,多个解耦组件协同学习才是关键

第三,固定学到的 LoRA components,但不做 magnitude rescaling,性能也会下降。这说明 SD-LoRA 的优势不仅来自“保留旧方向”,还来自于通过重新加权旧方向来沿 low-loss path 前进

(4)效率分析说明它不仅准,而且省

作者最后从 GFLOPs、可训练参数量、特征存储需求 三个角度比较不同方法。结果显示,InfLoRA 和 SD-LoRA 都因为不需要在推理阶段做任务特定 prompt 选择,所以推理效率很高;而 SD-LoRA-RR 还能在不依赖 rehearsal 的前提下进一步减少参数量,因此特别适合资源受限场景。

3.总结

实验设置

论文在 ImageNet-R、ImageNet-A 和 DomainNet 上评测 SD-LoRA,使用 Acc 和 AAA 两个指标,对比 L2P、DualPrompt、CODA-Prompt、HiDe-Prompt、InfLoRA 等方法,并采用 ViT-B/16 与 DINO-ViT 作为 backbone。

实验结果

SD-LoRA 在多个 benchmark、不同任务长度和不同 backbone 下都优于现有方法;任务数越多,优势越明显;两个参数高效变体 RR 和 KD 仅带来很小的性能下降。

实验结论

第四节证明了 SD-LoRA 不仅性能更强,而且更适合长期、资源受限的持续学习场景。

六、结论

1. 研究结论

这篇论文提出了 SD-LoRA,它是一个面向基础模型上的类增量学习的计算方法,目标是解决随着任务数增加而出现的可扩展性问题。它的核心做法是把 LoRA 组件中的 magnitude(幅值)direction(方向) 解耦学习,从而同时实现三点:

  • rehearsal-free:不需要保存旧样本
  • inference-efficient:推理高效
  • end-to-end optimized:端到端优化

作者认为,经验分析和理论分析都表明,SD-LoRA 会沿着一条 low-loss trajectory(低损失轨迹) 前进,并最终收敛到一个对所有已学任务都有效的 overlapping low-loss region(重叠低损失区域),因此能够较好地平衡 stability(稳定性)plasticity(可塑性)。此外,大量实验说明它确实能减轻 catastrophic forgetting(灾难性遗忘),同时保持对新任务的适应能力。两个变体 SD-LoRA-RRSD-LoRA-KD 也进一步提升了它在资源受限场景下的实用性。

2. 未来研究方向

作者在 Discussion 部分提出了三条未来工作方向。

第一,当前实验主要基于 ViT,所以未来可以把 SD-LoRA 扩展到更多类型的 foundation models 上,看看它在不同 backbone 架构中是否同样有效。

第二,未来可以把 SD-LoRA 和其他 PEFT 技术结合起来,比如 adaptersprefix-tuning。作者的意思是:SD-LoRA 现在是基于 LoRA 的,但它的“解耦思想”未必只能用在 LoRA 上,也许和其他参数高效微调方法结合后,性能和扩展性还能进一步提升。

第三,作者认为目前的 rank reductionknowledge distillation 设计虽然有效,但还偏经验化。未来如果能为这两部分建立更扎实的理论依据,就有可能进一步提升参数效率和整体性能。

3.致谢

略 

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐