Shared LoRA Subspaces for almost Strict Continual Learning¶
会议: ECCV2026
论文: ECCV 原文
项目: https://toshi2k2.github.io/share/
领域: 模型压缩
关键词: 持续学习、低秩适配、共享子空间、解析重投影、无回放学习
一句话总结¶
Share 将不断到来的数据或 LoRA 适配器整合进一组持续更新的共享基,以少量任务系数替代独立适配器,在无回放 CIFAR-100 类增量实验中达到 94.20% 最终准确率,但一般设置仍保留任务系数,且 Share-full 允许访问旧数据,不能把所有结果都称为严格持续学习。
研究背景与动机¶
LoRA 把大模型的权重更新拆成两个低秩矩阵,降低了单次微调成本,却没有自动解决持续学习的问题。直接在同一适配器上顺序学习,旧任务能力可能被覆盖;为每个任务保留独立 LoRA,则把遗忘问题换成了随任务数增加的存储与切换开销。O-LoRA 等方法利用任务间正交性减少干扰,但隔离知识也不等于把不同任务学到的共同结构积累起来。
本文从共享权重子空间假说切入:针对同一个预训练骨干,不同任务的 LoRA 因子可能存在可复用的主方向。EigenLoRAx 已经展示了从现成适配器抽取子空间的价值,但实际部署常常只有一个初始适配器,之后新数据或新适配器才陆续到达。问题因而不是一次性压缩一个完整适配器库,而是在不能回看历史数据时,既允许共享表示变化,又避免新坐标系破坏旧任务表示。
核心 idea:把长期记忆表示为共享主方向与轻量任务系数,新任务只短暂训练少量方向,随后用 SVD 更新共享基,并把旧任务系数解析地变换到新坐标系。
方法详解¶
整体框架¶
Share 面向参数高效持续微调:预训练权重始终冻结,输入流既可以是带标签的新任务数据,也可以是已经训练好的 LoRA 适配器。 它在每个被适配层分别维护两套共享基,对应 LoRA 的两个因子;一般任务设置还保存各任务在这两套基上的系数。 因此,“一个共享模型”指共享主要因子,并不意味着一般设置下完全没有任务专属参数。
整个过程包含共享基初始化、临时方向适应、SVD 合并与重投影三个步骤。 有数据时先学习新方向再合并,只有适配器时直接合并;合并后的旧任务不需要旧样本参与梯度更新。 这也是它能接收异步适配器流的原因:外部学习成果以权重形式进入同一个表示空间。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
Initial["初始 LoRA 或数据"] --> Init["共享基初始化"]
Init --> Adapt["临时方向适应"]
Data["新任务数据"] --> Adapt
Adapt --> Merge["SVD 合并与重投影"]
Adapter["新 LoRA 适配器"] --> Merge
Merge --> Output["更新共享基与系数"]
Output -->|下一个数据任务| Adapt
关键设计¶
1. 共享基初始化:把完整因子换成共享方向上的坐标
对一个冻结权重层,普通 LoRA 使用 \(B\in\mathbb{R}^{n\times r}\) 与 \(A\in\mathbb{R}^{r\times d}\) 表示增量。 Share 将已有任务的 \(B\) 因子沿列堆叠,对 \(A\) 做相应整理;正文描述先中心化,再分别做 SVD,保留最大的 \(k\) 个主方向。 这个操作逐层进行,而不是让整张网络共用同一个全局矩阵。 已有适配器足够时,这一步只读权重,不需要数据或梯度;若没有初始适配器,则先在首个任务上训练一个 LoRA。
为避开缓存中的希腊字母乱码,下式用 \(U_B,U_A\) 表示两侧共享基,用 \(C_{B,t},C_{A,t}\) 表示任务系数,等价说明原文式 (1) 的乘积结构:
这里 \(k\) 是可复用方向的数量,\(p\) 是伪秩,决定重构因子的列数,二者不是同一个超参数。 固定共享基后,单层两侧系数共有 \(2kp\) 个参数,而普通 LoRA 两侧因子共有 \(r(n+d)\) 个参数;这是按上述维度计数,不是把骨干参数也压缩掉。 由于共享方向已编码历史任务结构,新任务可以优先在这些方向上组合知识,而不必从任意权重更新空间重新寻找解。 不过,只允许系数变化仍会受限于现有子空间,因此还需要下一步主动学习新方向。
2. 临时方向适应:允许子空间改变,但不直接改写长期共享基
新数据到来时,Share 从现有共享基中复制最主要的少量方向,作为临时因子的初始化,并为它们随机初始化系数。 下文用 \(q\) 表示这组临时方向的数量,对应原文临时扩展超参数;其值小于 \(k\)。 训练时更新的是临时方向及其系数,已有长期共享基保留在旁,等待合并。 临时路径自身构成新任务的低秩增量,不应误解为把完整旧适配器与新适配器永久相加。
这一步单层需要 \(q(n+d+2p)\) 个可训练参数,包含两侧临时方向和两侧系数。 它比单纯训练系数更灵活,因为复制出来的主方向可以离开旧子空间,捕捉新任务此前没有的变化。 它又比完整 LoRA 更节省,因为只开放少量临时方向,并且训练结束后不会永久保存一套完整的新适配器。 如果收到的是外部 LoRA 而非数据,外部训练已完成了知识获取,便跳过这个梯度训练步骤。
3. SVD 合并与重投影:换基时同步更新旧知识的坐标
合并前,先用旧共享基和旧系数重构每个已见任务的两侧因子,再把新任务因子追加到相应堆叠矩阵。 接着分别对两个堆叠矩阵做截断 SVD,以新的前 \(k\) 个方向替换长期共享基。 这一步压缩的是“旧任务重构因子加新任务因子”的集合,而不是仅对新任务做 PCA,也不是按任务简单平均权重。 由于旧数据不在场,旧知识的保留依据是参数空间中的重构,而非在历史样本上重新校准预测。
共享基变化后,不能原封不动沿用旧系数,否则同一坐标会对应新的方向。 Share 用最小二乘投影更新每个任务的系数;对 \(B\) 一侧,原文式 (6) 可写为:
\(A\) 一侧使用同样的操作,第二个等号依赖 SVD 基列正交这一条件。 这样既允许所有任务共享的方向继续演化,也尽量保持旧任务因子的重构;后续任务贡献的新方向还可能帮助旧任务。 但截断会丢弃信息,重投影只能最小化给定子空间内的因子重构误差,不能保证任务预测完全不变。 论文定理也依赖任务主要落在共享子空间、损失满足 Lipschitz 与强凸等假设,不能直接当作深层网络零遗忘保证。
一个完整示例¶
以论文 GLUE 配置为例,LoRA 原始秩为 \(r=32\),共享方向数为 \(k=32\),伪秩为 \(p=8\),每次只开放 \(q=4\) 个临时方向。 第一份数据先训练出 LoRA,随后提取共享基;第二个数据任务到来时,复制两侧各 4 个主方向,并训练这些临时方向与各自的系数。 训练结束后,用旧系数恢复旧任务因子,把新任务因子加入堆叠矩阵,重新选出 32 个共享方向,再解析更新任务坐标。 后续任务重复同一流程,永久保留的是共享方向与轻量系数,而不是每次训练时的临时分支。 这些数字是原文实验配置,不是声称每种骨干都应使用相同秩。
损失函数 / 训练策略¶
Share 主要改变可训练参数的表示和任务之间的更新流程,正文没有提出一项通用于所有模态的新复合损失。 新数据阶段使用对应任务的微调目标,合并与系数重投影阶段不需要反向传播。 正文还提出可在合并后继续微调系数,但明确将访问旧任务数据的放宽版本称为 Share-full,不能与无回放 Share 混为一谈。
类增量分类另有重要实现约束:正文说明初始系数保持固定,通过临时因子学习和合并来更新主因子,最终使用一个覆盖所有已见类别的分类头。 因此不能把一般任务设置中的“按任务选择系数”直接当作类增量实验的测试协议。 正文也提到保留独立系数时可选用任务分类器,但这不是上述单头类增量结果所依赖的默认说明。
超参数分析的正文摘要称,保留解释方差约 60% 的方向也可能有效,临时方向数在 \([1,k/4]\) 内有效,\(p=1\) 已可工作,并建议从 \(p=r/3\) 起试。 这些是作者的经验建议,不是完整定量消融结论;当前缓存未包含其引用的附录第 8.6 节,不能补写不存在于缓存中的曲线或最优值。
实验关键数据¶
主实验¶
表 1 的 Continual GLUE 使用 RoBERTa-base、六个任务的数据流,不预先提供现成 LoRA;首任务数据用于初始化。 CoLA 使用 Matthews 相关系数,STS-B 使用 Pearson 相关系数,其余任务使用准确率;Avg. 是这些不同任务指标的平均,不能统一称为分类准确率。 训练配置为 \(r=32,k=32,p=8,q=4\);临时适应阶段可训练参数增至 450K,因此最终系数规模不是全过程峰值。
| 方法(原文表 1) | 参数栏(原文口径) | Size / MB | Avg. | 比较条件 |
|---|---|---|---|---|
| Upper Bound | 125M | 500 | 83.90 | 非持续上界 |
| LoRA (non-CL) | 1.2M × 6 | 81.6 | 83.43 | 六个独立适配器 |
| O-LoRA (CL) | 1.2M × 6 | 81.6 | 57.50 | 持续学习基线 |
| Share (CL) | 0.012M | 0.29 | 78.69 | 无旧数据回放 |
| Share-full | 0.012M | 0.29 | 83.44 | 放宽旧数据访问限制后微调 |
作者的 100 倍参数节省对应单个 LoRA 的 1.2M 与 0.012M 系数参数比较;约 281 倍存储节省对应表中的 81.6 MB 与 0.29 MB。 这两项使用不同分母口径,既不是整模型压缩率,也不是实测 GPU 峰值显存降低倍数。
消融实验¶
下表是原文表 1 的版本对照分析,不是附录模块消融;Share-full 相对 Share 同时放宽了训练数据条件,因此提升不能全部归因于解析合并。
| 指标(原文表 1) | Share (CL) | Share-full | 差值(指标点) |
|---|---|---|---|
| CoLA Matthews | 55.99 | 59.81 | +3.82 |
| MRPC 准确率 | 68.38 | 86.99 | +18.61 |
| STS-B Pearson | 88.91 | 90.80 | +1.89 |
| 六任务 Avg. | 78.69 | 83.44 | +4.75 |
视觉结果提供另一种分析视角:表 2 使用 ImageNet-21K 预训练的 ViT-B/16,将各数据集限制为 100 类并分为 10 个任务,每任务 10 类,采用无回放单头类增量协议。 Share 使用 \(k=10,p=1,q=2\),每任务训练 10–30 个 epoch,参数栏为 0.10M;DAP 为 0.19M。 下表保留原文报告的不确定性,Acc. 是学完全部任务后的最终准确率,Forg. 越低越好。
| 数据集(原文表 2) | DAP Acc. | Share Acc. | DAP Forg. | Share Forg. |
|---|---|---|---|---|
| CIFAR-100 | 94.05 ± 1.2 | 94.20 ± 0.9 | 0.41 ± 0.1 | 0.40 ± 0.4 |
| Food-100 | 88.37 ± 0.6 | 90.10 ± 1.2 | 0.92 ± 0.1 | 0.7 ± 0.9 |
| Caltech-100 | 97.23 ± 0.3 | 97.70 ± 1.1 | 2.52 ± 0.8 | 2.18 ± 2.4 |
| Flowers-100 | 96.49 ± 0.1 | 97.90 ± 0.7 | 2.28 ± 1.0 | 2.33 ± 1.2 |
关键发现¶
- CIFAR-100 的 Share 点估计与表 2 上界的 94.20 相同,但不表示逐次实验相同;Flowers-100 上 Share 遗忘率高于 DAP,不能沿用正文“所有数据集遗忘最低”的概括。
- 表 3 的 OOD 类增量实验中,Share 在 ImageNet-R 与 DomainNet 上最终平均准确率为 81.51 和 78.76;对应 SD-LoRA 为 75.26 和 72.82,保留适配参数分别为 0.10M 与 0.37M。
- 表 5 的 Flux 四任务混合数据/适配器流使用 \(r=32,k=32,p=8\),结果为 3 个随机种子均值;最终 T3 CLIP 分数为 24.436,独立 LoRA 为 24.079,但 T2 为 22.400,低于独立 LoRA 的 22.985,迁移不是一致为正。
亮点与洞察¶
- 换基时一起变换旧任务坐标,是比“保持参数不动”更灵活的记忆方式。共享表示可以更新,而旧任务不会仅因坐标系改变就被任意改写。
- 数据流与适配器流复用同一个合并入口。对分布式团队已训练好的 LoRA,只需处理权重即可积累知识,不要求重新获得其训练集。
- 论文把临时训练成本和长期存储成本分开处理。真正可迁移的设计是短暂开放足够的学习自由度,再压回共享表示,而不是只追求最小的永久参数数目。
局限与展望¶
- “almost strict” 有实际含义:一般设置保存随任务数增长的轻量系数,训练阶段还有临时扩展;Share-full 更明确放宽了旧数据访问限制。
- 共享子空间假设有适用边界。新任务主要位于已有方向之外时,截断会损失重要成分;正文理论讨论也承认子空间外的奇异值尾项会增大误差。
- 无回放 GLUE 的 78.69 与 Share-full 的 83.44 相差 4.75 个平均指标点,MRPC 差距尤大;接近独立训练结果的说法必须附带版本条件。
- 因子重构不等于函数保真,顺序压缩还可能积累误差。需要更长、任务差异更大的流,以及任务顺序敏感性和完整峰值内存/耗时评测,才能判断长期部署收益。
- 缓存只有正文和参考文献,未包含正文引用的附录。定量超参数消融、完整时间步结果与部分实现细节无法据此复核;作者提出的从头学习也仍属于未来工作。
相关工作与启发¶
- vs LoRA / O-LoRA:独立 LoRA 保存完整任务因子,O-LoRA 强调正交子空间降低干扰;Share 显式寻找并持续更新共同主方向,以任务系数表达差异。
- vs EigenLoRAx:二者都利用已有适配器的主子空间,但 Share 重点解决适配器尚未到齐时如何增量更新,以及换基后如何重建旧任务。
- vs EASE / 提示学习方法:这些方法是视觉持续学习的重要参照;Share 的贡献在跨任务的因子共享与合并,不是为图像生成单独设计的新扩散骨干。
- 启发:部署时应分别预算共享基、每任务系数、临时训练因子和冻结骨干,避免用某一项的压缩率替代整个服务的资源收益。
评分¶
- 新颖性: 4/5。共享子空间并非全新概念,但持续换基与解析旧任务重投影形成了清楚的增量学习方案。
- 实验充分度: 4/5。覆盖多种模态和持续学习协议,但部分关键证据在未包含的附录中,严格与放宽版本需分别理解。
- 写作质量: 3/5。主流程可复述,但参数口径与若干“全面领先”的文字概括需要读表校正。
- 价值: 4/5。适合关注多适配器维护和无回放持续微调的研究者,部署价值仍取决于任务相关性与端到端资源测量。