一切的开始:O-LoRA
论文:Orthogonal Subspace Learning for Language Model Continual Learning,2023.10
官方代码仓库:https://github.com/cmnfriend/O-LoRA
【符号说明:本文沿用代码中常见的 , 是降维/输入侧因子, 是升维/输出侧因子。O-LoRA 论文 §3.2 的 中, 却是 的列空间基;其公开代码实际对输入侧的 lora_A 与 loranew_A 加正则。因此这里不只是交换字母,还存在论文表述与实现约束侧的差别。下文的“输入过滤器”按代码及本文记法解释;原论文的论据是用 LoRA 子空间代理历史梯度子空间。】
大家都知道,LoRA 的先作用矩阵,也就是本文中的 矩阵,是决定 LoRA 分支会对哪些输入特征方向产生响应的关键。
先来说为什么:
因为 矩阵是先和 相乘的矩阵。
把 拆成一行一行看:
那么:
等价于:
也就是说, 的每一行都在问:
当前 hidden state 里,有没有我关心的这个方向?
然后 再把这些低维响应写回输出空间:
所以:
- :决定“看哪些方向 / 由哪些输入特征触发”;
- :决定“触发后往输出空间怎么写”。
因此如果连续学习里想保护旧任务,一个很自然的想法是:让新任务的 不要看旧任务依赖的特征方向。
所以就有了 O-LoRA 的设计。
【先整体说下 O-LoRA,他们的设计总览就是每来一个新任务,就冻结上一个任务训练的 LoRA 矩阵,并增添一个新的 LoRA 矩阵,通过正则方法确保新 LoRA 矩阵训练过程中尽可能和旧 LoRA 矩阵保持正交。】
按本文的 记法,一个自然写法是让新旧任务的输入侧矩阵满足:
对应的正交正则可以写成:
换句话说就是,新的 LoRA 矩阵的 矩阵会和每一个旧任务 LoRA 的 矩阵做内积。
上式是平方 Frobenius 形式的几何说明。
最理想的情景当然是:
这样新任务和旧任务在输入侧响应方向上尽可能分开。这里我会稍微加一句谨慎的话:这保证的是 子空间正交,不严格等价于完整参数更新 一定完全不干扰。后面的 BOD 分析正是沿着这个问题继续追问。
CV 领域类似的探索:Orthogonal Adaptation
论文:Orthogonal Adaptation,2023.12
背景就是图片生成领域目前存在一个问题:如果我训练了几个单概念的 LoRA,比如猫 LoRA,狗 LoRA,我现在想生成一张同时有猫和狗的图片,就会出现猫和狗概念混杂的问题。
这个问题被称为串扰,crosstalk。
现有几种方法各有缺陷:
- 联合训练:如果每一种概念组合都单独训练,只有两两组合就有 种;覆盖任意非空子集则有 种,组合数量会迅速增长。
- 直接相加 LoRA,会出现 crosstalk 问题。
- Mix-of-Show 的 Gradient Fusion,但是合并三个概念就需要 15 分钟,消耗太大且没有泛化性,和联合训练一个问题。
那就尝试解决 crosstalk,因为这样的话只需要训练各自的 LoRA,然后可以在 1s 内相加 LoRA 并生成联合概念图片。
作者的答案是:冻结 中的 ,只训练 ,而每个任务,或者说概念,分配到的 矩阵都是事先分配的。
先说为什么。
crosstalk 被认为是两个 LoRA 矩阵在相同参数上的互相干扰。
对于概念 ,单独训练后的某层输出是:
其中 是概念 在该层的输入特征。把概念 合并进来后:
最后一项:
就是概念 对概念 造成的串扰。理想情况是它等于零,但 通常覆盖很大的输入空间,强行要求它处处为零,会把 限制得几乎不能学习。
因此作者把要求放松为:只在输入的主要投影子空间中消除串扰。
其实是和 O-LoRA 相近的思路,因为 矩阵是决定 LoRA 分支会对哪些输入特征方向产生响应的关键,所以作者通过新旧任务在 矩阵上的正交来降低串扰。这里仍要区分:因子正交本身并不保证任意真实输入 都满足上面的零串扰条件。
本论文用的方法和 O-LoRA 还是有区别的,他们没有使用正则方法,而是先搞了一个正交基矩阵 ,满足:
然后从这个共享正交基 里给不同概念抽取不重合的 个方向作为 。只要新旧任务抽到的方向不重合,就可以保证:
这就比 O-LoRA 的软正则更硬:O-LoRA 是训练时“尽量正交”,Orthogonal Adaptation 是初始化时就把 分配到互相正交的方向上。
InfLoRA 和 KeepLoRA:从 O-LoRA 上改进
论文:
先说 InfLoRA。他们是冻结 矩阵,训练 矩阵, 矩阵是通过算法算出来的。说到这是不是和 Orthogonal Adaptation 这篇论文有点像?只不过 矩阵找法不一样。
设计依据是当前任务在该层的输入特征矩阵:
因为线性层:
其梯度满足:
所以梯度方向和输入 的 span 有关。
核心就是一个思想: 近似当前任务梯度空间。
然后 InfLoRA 会把当前任务输入特征里落在旧任务空间 里的部分减掉:
这里 就是 投影到旧任务空间里的部分。减掉它之后, 就更像“当前任务还可以安全使用的方向”。之后再对 做 SVD,拿主方向来构造固定的 。
补充一下这一步究竟怎么落实到本文的 记法。设残差特征的 SVD 为:
这里 的列位于输入特征空间,把它们转置成 的行,才和 的维度一致。固定 ,只训练 ,每次权重位移都形如 。如果历史特征基为 ,并且 ,那么:
这说明固定基不是单纯少训练一半参数,而是把允许的更新方向直接写进参数化。保护范围仍是保存下来的特征基:没有被基覆盖的旧特征、深层网络中变化的输入,都不在这个局部恒等式的保证里。InfLoRA 原论文主要面向视觉 class-incremental learning,借用其几何思想时也要区分它和文本指令持续学习的实验协议。
再说 KeepLoRA。KeepLoRA 认为 InfLoRA 只考虑了“不要忘记旧任务”,却没有显式保护预训练模型原本的通用知识。
它先构造两个需要保护的空间。
第一,对预训练权重做 SVD,取大奇异值对应的主空间 。作者认为这里主要保存预训练通用知识。
第二,用 保存旧任务输入特征的主要方向。
然后计算当前任务第一步梯度 ,删除落在这两个受保护空间中的部分。这里补充一个符号细节:KeepLoRA 原文使用行向量输入和 ,而本文使用列向量输入和 。统一到本文记法,输入侧投影应放在梯度右边:
$ \hat G_t
G_t -G_tW_pW_p^\top -G_tM_{t-1}M_{t-1}^\top. $
此时 是本文权重矩阵的输入侧主奇异方向。这种直接相减要求 与 彼此正交;论文通过在残差空间中积累历史方向来维持这一结构。对任意两组有重叠的基,不能直接相减后就认为得到了正交投影。
对残差梯度做 SVD:
这样 是残差梯度的 rank- 近似。与 InfLoRA 从激活中选方向相比,KeepLoRA 还利用了当前损失的梯度信息:哪些输入方向确实有助于当前任务,要结合监督信号来决定。
由于两个初始化因子的乘积不是零,作者还会补偿冻结权重。把 LoRA 缩放记为 ,则:
初始化时总权重仍是 ,不会在开始训练前凭空改变模型输出。随后固定 、只训练 ,任务结束后合并 LoRA,并从当前任务特征中补充历史基。这三个环节是连在一起的:保护基决定不能走哪里,残差梯度决定优先走哪里,初始化补偿保证起点不变。
KeepLoRA 原论文评估的是 CLIP、LLaVA 等视觉语言模型,包含预训练迁移能力的保持;不能直接把它的原始实验结论当作纯文本 LLM benchmark 的结论。
笔者认为这篇文章只不过是在 InfLoRA 的基础上多保护了预训练的语义空间,谈不上什么特别颠覆的创新【唯一创新的一点是参数 的大奇异值近似预训练主子空间?】。他们能中 ICLR 2026 我还是有点惊讶的,感觉有工作量的功劳。
Sculpting Subspaces:从 LoRA 到全参微调
论文:Sculpting Subspaces,2025.4
它的核心假设是:
大奇异值方向保存重要的已有知识;小奇异值方向冗余度较高,可以用来学习新任务。
对每层权重做:
然后保留大奇异值对应的 ,并从新任务梯度中删除对应部分:
它还通过层输入与输出的余弦相似度估计层重要性,为重要层保留更多大奇异方向。
同样是做 SVD 找大奇异值,InfLoRA 做法和本文还是有区别的。前者面向数据,是对从数据来的激活值近似主子空间;后者面向参数,是直接对模型权重的奇异方向做保护。
OA-Adapter:方向要隔离,预算也应该跟着任务变
论文:Budget-Adaptive Adapter Tuning in Orthogonal Subspaces for Continual Learning in LLMs,2025.5。以下对应原文第 2 节。
Motivation:为什么每一层、每个任务都用同一个 rank?
前面几种方法主要在问“新任务往哪个方向更新”。但还有一个问题:新任务究竟需要多少个方向?
如果一个简单任务只需要少数几个维度,仍然给它固定的大 rank,就会浪费参数,也会占用后续任务可用的空间。反过来,复杂任务可能需要更多容量,固定的小 rank 又会限制可塑性。
一种办法是先训练,再判断哪些维度重要,再裁剪或重新分配。但是预算选择与任务优化分成两个阶段,前一阶段认为重要的维度,未必适合最后的预算。OA-Adapter 因此想把“学任务”和“选容量”放到同一次训练里。
Methodology:给每对低秩方向装一个可训练开关
先看普通 adapter:把输入降维,过非线性,再升维,最后加回残差。OA-Adapter 去掉偏置,并把中间的非线性替换成对角门控:
其中 ,。这时整个适配分支可以拆成:
每一项都是一个 rank-1 更新。于是 就意味着第 对降维、升维方向不参与输出。这不是给整个 adapter 一个统一缩放,而是在逐个选择瓶颈维度。
作者使用软阈值:
和阈值 都可训练。如果 ,该维度被关闭。这里关键是 也会更新:即使关闭后的维度没有来自该路径的梯度,只要其他活跃维度推动阈值降低,它也可能重新打开。因此这不是一次裁剪后就永远不能恢复的选择。
正交具体加在哪里?
这篇和前面的输入侧 约束有区别。它保护的是升维矩阵的输出侧列空间。
对历史任务 ,把门控吸收到升维矩阵里:
已经关闭的列变成零列,历史任务只保留实际使用的方向。对当前任务 ,原文的正则项可写为:
为什么当前侧用未门控的 ,历史侧却用门控后的 ?因为当前任务的维度还会打开或关闭,需要让所有候选列避开历史方向;历史任务已经训练完了,只需要保护最终启用的列。
完整流程因此是:为新任务增加候选瓶颈维度;联合训练投影矩阵、门控和阈值;加上对历史已用列空间的正交正则;任务结束后冻结,并把启用维度作为后续任务的保护对象。
我觉得这篇最值得借鉴的是预算和正交约束的耦合。 但它并不提供无限容量:候选上限仍要设定,历史任务仍会累积,而且论文通过损失项推动正交,不能把它当作每一步都严格成立的硬投影。
OLieRA:不只换方向,还换更新的方式
论文:Orthogonal Low-rank Adaptation in Lie Groups for Continual Learning of Large Language Models,2025.9。以下对应原文第 3 节。
Motivation:加一个低秩矩阵,是唯一的适配方式吗?
普通 LoRA 是:
即使约束了 或 ,最后依然是在原权重上做加法。OLieRA 的动机是:任务更新除了避开历史任务,还能否利用原权重自身的结构,让更新变成相对原权重的调整?
作者引入 Lie group 的表述。理解实现时,先不必把它想成复杂的空间旋转:这篇实际使用的是逐元素乘法和逐元素指数,不是矩阵乘法意义上的旋转,也不是矩阵指数。
Methodology:从绝对增量变成逐元素缩放
为避免和加性权重增量混淆,下面把低秩扰动写成 。作者从这样的更新出发:
表示 Hadamard 逐元素乘法, 也是逐元素操作。对单个坐标:
例如原权重为 2,扰动为 0.1,精确更新就是 ;普通加法则是 。前者学习的是相对比例,后者学习的是绝对偏移。
精确指数在非零权重上保持符号,是作者构造乘法群时用到的性质。但实际方法还使用 Taylor 近似:
这里 是全一矩阵,不是单位矩阵 。二阶近似则再加上 。低秩的是 ,而 不一定仍然是 rank- 矩阵。因此“训练参数少”与“最终有效增量低秩”是两件不同的事。
如何放回持续学习?
每个任务仍然学习新的低秩块,历史块冻结。不同于只对一个因子施加约束,原文式 (12) 对任务变换之间的乘积构造惩罚。用本文符号,把当前任务相关部分写成:
训练目标是任务损失加上这个正则项。阅读时应区分:被惩罚的是变换 ,实际权重增量却是 。 两者也不能直接等同。
这一点也给我留下两个需要谨慎解释的地方。第一,精确逐元素指数的元素都为正,因此两个这样的矩阵相乘,其行内积不可能严格为零;这里的“正交”应理解成降低相关性的惩罚目标。第二,一阶近似 在扰动较大时可以出现非正元素,精确指数的符号保持性质不能无条件套到近似实现上。
所以这篇带来的新思路是:任务隔离之外,可以改变增量的参数化,让原权重参与调制更新。 但“引入 Lie group”本身还不能推出旧任务输出不变,要继续看实际变换、近似误差和旧任务性能。
ELLA:不再一律正交,而是按历史使用强度付出代价
论文:ELLA: Efficient Lifelong Learning for Adapters in Large Language Models,2026.1。以下对应原文第 3 节及附录 A。
Motivation:完全隔离会不会把迁移也隔掉?
前面的正交思路容易给人一种印象:新任务越远离旧任务越好。但是语言任务可能共享语义、推理或表达能力。如果历史任务使用过的方向全部禁止,新任务就不能充分复用已有能力。
ELLA 想区分两类位置:历史更新很大的位置,继续改动可能容易造成干扰;历史更新较小的位置,仍然允许新任务使用。于是保护不再是“可以走/不可以走”的二元选择,而是程度不同的惩罚。
Methodology:惩罚完整更新与历史累计更新的逐元素重叠
按本文 记法,第 个任务的 LoRA 更新为:
ELLA 的核心项是:
原文公式里的星号要结合附录理解为逐元素乘积;这里统一写成 。它不是矩阵乘法,也不是把 做 SVD 后得到的正交投影。
这条式子把方法讲得很清楚:如果某个位置历史累计更新的绝对值大,那么当前任务在这个位置产生同样大小的增量,要付出更高的正则代价;历史更新接近零的位置受到的限制则很弱。
若把任务损失定义为最小化的负对数似然,训练目标写成:
两个 LoRA 因子通过乘积接收这个正则的梯度。任务完成后,将本任务增量纳入历史累计量,供下一任务使用。它不需要为推理选择某个任务 adapter,但维护历史累计量仍有存储成本,不能把“不保存逐任务列表”写成“不保存任何历史状态”。
为什么说它允许部分复用?
可以用一个局部二次问题理解这种惩罚。把 记作希望实现的无约束更新, 记作历史坐标权重,考虑:
逐坐标求导可得:
如果 很大,更新被明显缩小;如果它很小,更新接近原来的 。因此这是按坐标强度进行的软收缩。这个闭式解解释的是局部、无低秩因子约束的代理问题,不能说实际非凸 LoRA 训练每一步都精确等于这个解。
它解决了什么,又留下了什么?
和 O-LoRA 相比,ELLA 把关注点从“单个因子之间是否正交”移到了“完整乘积在哪些历史坐标上发生重叠”,并给复用保留了空间。
但历史幅值只是重要性的代理。例如两个旧任务在某坐标分别更新 和 ,累计和为零,不代表这个坐标从未被使用。这也是为什么 不能被直接解释成 Fisher 信息或旧任务真实敏感度。
此外,较小的重叠损失不自动保证较小的遗忘; 太大同样会压制新任务学习。看这篇的实验时,除了最终准确率,我更关注它是否同时改善前向迁移,以及稳定性收益是否来自降低即时学习能力。
把这些改进放回同一条主线
到这里,各篇论文不再只是用了不同名字,它们在解决不同的问题:
| 方法 | 想解决的具体问题 | 核心操作 |
|---|---|---|
| O-LoRA | 新任务不要覆盖历史任务的适配方向 | 新建任务 LoRA,冻结旧块,对输入侧因子加正交正则 |
| Orthogonal Adaptation | 多概念 LoRA 合并产生串扰 | 预分配正交输入基,固定输入因子,只训练输出因子 |
| InfLoRA | 正交补中哪些方向有利于当前任务? | 从当前特征残差选固定输入基 |
| KeepLoRA | 除旧任务,还要保持预训练迁移能力 | 联合保护基、残差梯度初始化、冻结输入因子并合并 |
| Sculpting Subspaces | 全参微调怎样避开重要权重方向? | 权重 SVD、按层选择保护空间、约束全参更新 |
| OA-Adapter | 不同任务和层到底需要多少适配维度? | 可训练阈值控制瓶颈,约束输出侧历史已用列空间 |
| OLieRA | 适配必须是加性增量吗? | 低秩扰动的逐元素乘性变换及变换级正则 |
| ELLA | 严格隔离是否损失了正迁移? | 对完整更新施加历史幅值加权的逐元素重叠惩罚 |
这里故意不列一张统一的准确率排行榜:扩散模型多概念组合、视觉类增量、视觉语言迁移和文本任务流,不是在做同一个实验。
Bilinear Optimization Divergence:从“过滤器”假设到有效更新
前面这些工作并不是彼此孤立的技巧。O-LoRA、InfLoRA 共同提出了一条很具体的研究路线:如果低秩适配器的输入侧因子决定了分支会响应哪些特征方向,能不能把它当成一个过滤器,进而保护整个 LoRA 分支?
我们的论文 Bilinear Optimization Divergence: Diagnosing Factor-Constrained LoRA Continual Learning 研究的正是这条推理链中容易被省略的一步:因子上的约束,经过有限次优化和双线性组合之后,是否真的变成了有效权重更新上的约束?
这里的出发点不是声称“正交 LoRA 都会失效”。更准确的问题是:给定一种参数化、一个任务开始状态和一个实现中的优化器,因子约束究竟保证了什么,尚未保证什么? 这个问题需要把三个层次分开:
- 因子梯度约束:例如把 的梯度投影到历史特征的正交补;
- 因子位移约束:优化器更新后,实际的 是否仍在这个正交补中;
- 有效更新约束:组合更新 在历史特征上是否真的没有响应。
前两层属于参数优化过程,第三层才直接对应 LoRA 分支对选定历史特征的响应。BOD(Bilinear Optimization Divergence)就是用来描述这三者之间的错位,而不是给所有正交方法贴上同一个“失败”标签。
1. O-LoRA 给出的起点:用 LoRA 子空间代替历史梯度空间
O-LoRA 在 §3.2 明确写道:
“we leverage the low-rank subspace of LoRA … as a proxy for the gradient subspace of past tasks.”
这个问题是从 OGD 接过来的。OGD 要记住历史输出敏感方向,大模型里存储和处理这些方向可能很贵。O-LoRA 的判断是:既然下游微调主要发生在低秩空间,过去训练出的 LoRA 参数应当包含重要更新方向,因此可以用它们代理历史梯度空间。
按照本文及公开实现的 记法,输入侧 先作用于 hidden state:
“过滤器”是我对这一步的解释,不是原论文的逐字术语。 决定哪些输入方向能进入 LoRA 分支, 决定这些响应如何写到输出。如果新的 和历史 尽量分开,就希望新分支少响应历史任务依赖的方向。
于是形成了一条推理链:
- 旧 LoRA 因子承载旧任务的重要更新方向。
- 新因子与旧因子正交,意味着新任务主要在不同方向适配。
- 不同方向的适配应当减少对旧任务功能的干扰。
前两步给出可操作的代理与约束,第三步才是最终希望实现的功能保护。我的问题就落在代理约束到功能保护之间,哪些条件还没有被保证。
2. InfLoRA 把这个想法推进到了固定输入基
InfLoRA §3.1 的 Proposition 1 说明,固定降维矩阵、只训练升维矩阵,可以将有效权重变化限制在该降维矩阵对应的子空间。§3.2 再选择与历史特征空间分离、又适合当前任务的方向。
它原文把降维矩阵叫 、升维矩阵叫 ;换成本文的 ,就是固定输入侧 ,只训练输出侧 。
这个方案比“训练中尽量让两个因子正交”更强:只要固定的输入基满足 ,任意升维矩阵的变化都满足:
所以我不是在否认这条代数性质。InfLoRA 的具体贡献是让“过滤器控制允许的更新空间”在明确条件下成立,而我的工作进一步追问:不同正交 LoRA 的真实实现是否都满足这些条件,所选空间又是否足以保护旧任务?
这也是为什么不能把 InfLoRA、软约束 O-LoRA 和共享分支投影方法统一称作“同一种失效”。它们提供了研究动机,但不是同一个实验宿主。
3. 第一个缺口:避开旧因子,不等于避开旧任务输入
对旧任务 的某层输入 ,增加当前任务块带来的局部输出变化是:
而 O-LoRA 式因子约束控制的是:
这两个式子的右边对象不同:前者是真实旧输入,后者是旧任务低秩因子的方向。只有旧输入被旧因子方向充分覆盖等条件成立,因子隔离才可能转化成相应的输入响应保护。
举一个最小例子,设输入空间是二维、rank 为 1:
它们严格正交。但旧任务的一个输入可以是:
于是 ,新分支输出 可以非零。过滤器之间不重叠,不等于旧输入完全不会通过新过滤器。
这个例子证明的是局部响应可能改变,不是旧任务必然预测错误。它也不否认严格输入侧正交能使对应权重更新在 Frobenius 内积意义下正交:参数几何上的正交,与对旧输入的零响应,是不同的命题。
此外,如果实际得到的是很小但非零的 ,则只能得到:
没有控制 的尺度,仅凭过滤器残差小,就不能得到统一的小输出扰动界。反过来,若 精确为零,再大的 也不会让这个乘积变成非零。这是“软约束可能不足”与“硬可行状态有代数保证”的区别。
4. 第二个缺口:投影了 的变化,整个共享 LoRA 仍可能改变旧响应
修改稿从 Sculpting Subspaces 的投影思想构造了 Projected-LoRA:在一个共享 LoRA 分支里,估计历史输入基 ,投影 的梯度,但仍训练两个因子。
注意,它是本文构造的分析基线,不是原版 InfLoRA。它没有为每个新任务直接固定一个完整可行的输入基。
设新任务起点为 ,后续变化为 。相对任务起点的真实权重位移为:
即使我们已经把“投影梯度”加强为真正的位移约束 ,仍然有:
这可以直接回到过滤器直觉:过滤器 在旧方向上的响应没有变化,但负责解释这些响应的 变了,旧输入最终得到的输出仍然可能改变。
例如 、,令 而 。 的位移已经完全满足约束,但取 时 。这里并不是 让信号穿过了一个本来严格关闭的过滤器,而是它修改了一个原本就有旧响应的共享分支。
这就是论文中区分“位移约束”和“状态约束”的关键:
- 位移约束 :不允许过滤器新增旧方向响应,但起点 可能非零。
- 状态约束 :整个过滤器在旧方向上始终关闭,此时任意 都满足 。
这个区别也解释了为什么同一个“只约束 ”的说法,在不同方法中含义不同。共享 Projected-LoRA 从一个已经学习过的 出发, 通常不为零;因此,即使新的 位移严格满足 ,变化中的 仍然可以沿着已有响应路径产生 。相反,累计 O-LoRA 的新 block 从 开始,当前 block 的有效变化可以写成
如果先把 投影到历史特征正交补,再保持后续 状态在这个可行空间内,那么 可以继续训练,而该 block 在已保存的历史特征基上保持零响应。这是两条不同的残差路径:共享适配器需要处理一个已经存在的 learned-anchor response,累计新 block 则可以利用zero-output initialization 建立可行状态。
5. 第三个缺口:梯度方向不一定等于优化器实际位移
再退一步,很多实现连 都没有直接约束,而只投影原始梯度。优化器会加入动量、逐坐标缩放或其他变换;对于一般的非坐标轴子空间,这些操作未必保持原投影空间。
因此 WRP(Weight Residual Projection)在 optimizer step 后约束真实残差:
它修复的是“梯度方向看起来可行,但优化器实际位移已经离开可行空间”的偏差。这里的 是由历史特征基 定义的正交补投影;投影发生在一次 optimizer step 之后,所以控制的是实际写回参数的 residual,而不是理想化的原始梯度。
6. 两种参数化对应两种保护策略
把上面的推导落实到方法上,可以得到一个很清楚的分工。
共享适配器:SFOR。 Projected-LoRA 让共享的 、 都继续变化;SFOR 在 Task 1 之后冻结共享 ,对 使用历史特征梯度投影,并在 optimizer step 后应用 WRP。冻结 消除了 这条 learned-anchor 路径,WRP 则保证 的真实位移仍满足约束。两者解决的是不同问题,组合后才把共享分支的历史响应压到接近零。
累计适配器:O-LoRA hard protection。 O-LoRA 每个任务增加一个新 block,并冻结历史 blocks。我们保留 O-LoRA 原生的软正交惩罚,保证比较仍然是在 O-LoRA 的真实方法基础上进行;在此之上,对当前 block 做三步 hard protection:任务开始时把 回缩到历史特征的正交补,对当前 的梯度做投影,并在 optimizer step 后用 WRP 修正实际位移。由于新 block 的 ,这种状态约束允许当前 保持可训练,同时让该 block 在已选历史特征基上保持零响应。
BSR(Bilinear State/Response regularization)在论文中作为诊断性控制,而不是主要方法:它直接惩罚更宽历史基上的有效更新响应,用来检查“把残差写进目标函数”是否带来独立收益。实验中,hard protection 已经提供了核心可行性约束,BSR 没有显示出稳定的额外性能收益,因此主方法叙事聚焦于 O-LoRA hard protection。
7. BOD 的形式化:测量的是选定历史基上的有效响应
设任务开始时的 LoRA 因子为 ,经过有限个 optimizer steps 后变为 。有效权重变化不是简单的 ,而是
这三个项分别对应:原有输出因子作用于新的 位移、输出因子自身沿着旧 anchor 响应变化、以及两个因子同时变化产生的二阶交互。后两项正是只看 梯度时容易漏掉的路径。
令 表示从历史任务特征中保留的正交方向。论文定义
并用 汇总各层的历史响应,再除以有效更新大小得到尺度归一化的 。因此,BOD 的含义是:在明确选定的历史特征基上,实际有效更新还剩多少响应。 它不是遗忘指标,也不是对所有输入的全局函数等价性证明;它是一个把“约束是否兑现”从因子空间带回有效更新空间的诊断量。
这个定义带来一个重要的解释边界: 说明选定基上的局部响应被压低,但不单独保证旧任务准确率一定更高;旧任务还可能依赖未被保留的特征、其他网络层和表示变化。反过来,BOD 较高也不自动等价于遗忘。论文把 BOD、学习稳定性指标和最终任务性能分开报告,正是为了区分“约束执行情况”和“任务结果”。
8. 我的工作与前面论文是什么关系?
| 工作 | 作为保护依据的对象 | 与本文动机的关系 |
|---|---|---|
| O-LoRA | 历史 LoRA 子空间代理;公开实现约束输入因子交叉内积 | 直接提出因子代理的研究起点,累计块也是本文验证 BSR 的宿主 |
| InfLoRA | 从历史/当前特征构造并固定输入基 | 提供受约束子空间更新的明确条件,帮助区分何时代理确实有效 |
| Sculpting Subspaces → Projected-LoRA | 从全参投影思想转到共享 LoRA 的单因子梯度投影 | 构造可控制的实验场景,分析 companion factor 与 optimizer 的影响 |
| 本文 BOD 分析 | 相对任务起点的完整有效更新,以及它在历史基上的残差 | 检查因子保护是否兑现为更新保护,再与任务级稳定性和最终性能分开比较 |
因此,本文的 motivation 可以压缩成一句话:
O-LoRA 用低秩适配子空间代理历史更新方向,InfLoRA 进一步通过固定降维基控制可学习空间。这些工作说明,输入侧因子可以作为控制 LoRA 的入口。但在软正则、共享分支和实际优化器更新中,入口上的约束不一定自动转化为完整有效更新上的约束。我们研究这种因子保护与有效更新之间的错位,并通过历史特征响应、BOD 轨迹和任务级 acquisition—retention 指标检验它的实际后果。
这比“ 可训练,所以正交 LoRA 都会失效”准确,也更明确地说明了我们为什么接着这些具体论文继续研究。我们把这个错位称为 Bilinear Optimization Divergence(BOD):它首先是一个有效更新诊断,再通过任务级实验检验其与稳定性、可塑性之间的关系。论文不把 BOD 残差直接当作遗忘,也不把因子范数当作函数变化的替代量。
完整的 SFOR、WRP、O-LoRA hard protection、BSR 控制和当前实验放在第三篇论文解读。本文这一节对应的主要依据是 O-LoRA §3.2 与公开实现、InfLoRA §3.1–3.2,以及论文方法部分和附录中的有限步推导。
需要回看持续学习整体脉络及这几篇论文使用的实验协议,可以读第一篇综述。
交流讨论