Browse this library

Chinese source article

1.2 · 遗忘机制与稳定—可塑性

从梯度干扰、表征漂移与输出竞争三条路径理解模型为何在学习新任务时丢失旧能力。

View original Markdown ↗

持续学习里最容易被误解的一句话是「新任务覆盖了旧知识」. 参数确实发生了变化, 但参数变化本身还不等于遗忘: 神经网络存在大量函数近似等价的参数点, 很小的参数位移也可能让决策边界穿过高密度样本区. 真正需要追踪的是三条相互作用的链: 新数据产生什么梯度, 梯度怎样改变共享表征, 改变后的表征又怎样参与所有类别的联合决策. 灾难性遗忘是函数行为在顺序更新后的退化, 不是权重距离过大这一项统计量.

设模型参数为 θ\theta, 旧任务风险为 LA(θ)L_A(\theta), 新任务风险为 LB(θ)L_B(\theta). 从旧任务解 θA\theta_A 做一步新任务更新,

θ′=θA−ηgB,gB=∇θLB(θA).\theta' = \theta_A-\eta g_B,\qquad g_B=\nabla_\theta L_B(\theta_A).

对旧任务做一阶展开,

LA(θ′)−LA(θA)≈−ηgA⊤gB.L_A(\theta')-L_A(\theta_A)\approx -\eta g_A^\top g_B.

若 gA⊤gB<0g_A^\top g_B<0, 新任务的下降方向会抬高旧任务损失;若内积为正, 同一步更新反而带来正迁移. 这个式子给出局部机制, 但不能单独预测长程遗忘. 旧任务接近驻点时 gAg_A 很小, 一阶项几乎消失, 二阶曲率仍会让更新离开旧任务的低损失盆地. 连续多步之后, 梯度方向和 Hessian 也随参数改变. 因此 GEM 一类方法控制当前批次的梯度冲突, EWC 一类方法约束高曲率方向, 回放则不断重新估计旧风险;三条路线处理的是同一条动力学上的不同近似.

1. 梯度、表征与输出竞争

梯度干扰是最直接的一层. 两个任务共享参数越多, 它们越可能在同一方向上提出不同要求. 不过「参数共享」既可能产生干扰, 也可能产生迁移. 如果两个任务都需要边缘检测、句法结构或相似的中间表征, 共享骨干减少了重新学习的成本. 冲突通常集中在任务特有特征、标签语义改变和输出空间扩张的位置. 只报告全模型梯度余弦会把这些局部差异平均掉;更有解释力的做法是按层、模块或参数子空间观察冲突.

第二层是表征漂移. 旧分类头可能没有变化, 但它接收到的隐藏向量已经移动. 设旧样本 xx 在更新前后的表示分别为 hhetaA(x)h_{ heta_A}(x) 与 hθ′(x)h_{\theta'}(x), 漂移量可以用 centered kernel alignment、特征协方差变化或线性探针性能度量. 参数正则化只限制 θ\theta 的位移, 未必能直接限制 h(x)h(x);知识蒸馏则在旧输入上约束 logits 或特征, 更靠近真正需要保持的函数. 代价是它需要能代表旧分布的输入. 没有旧样本时, 在新任务输入上匹配旧输出只保护了两个分布重叠的区域.

第三层是输出竞争. Class-IL 在推理时不给任务标识, 所有已见类别共用一个分类器. 即使旧类内部的表征仍然分得开, 新类 logits 整体偏高也会让旧样本被判成新类. 这解释了为什么某些方法在 Task-IL 下几乎没有遗忘, 换到 Class-IL 后迅速失效: 前者每次只在对应任务的输出头中选择, 后者必须同时解决跨任务校准. 回放、平衡采样和后验校正直接作用于这种竞争, 单纯冻结特征则不一定够.

2. 稳定与可塑性不是一个旋钮

「稳定—可塑性」常被画成一条二选一的轴: 约束越强越稳定, 约束越弱越能学新任务. 这个图只在干预对象固定时成立. 方法可以把冲突移动到不同载体: 冻结骨干并增加 adapter, 让旧参数稳定、新模块保持可塑;回放旧样本, 让同一组参数同时看到新旧梯度;动态架构增加容量, 用存储和路由成本换取较少干扰. 稳定和可塑性应分别在旧能力保持、新能力获得以及资源增长三个坐标上测量.

这一点也决定了基线. 只和顺序微调比较, 很容易把「完全不学习」误当成稳定方法. 一个把所有参数冻结的模型可能保住旧任务, 新任务准确率却没有提升. 联合训练提供可访问全部数据时的参考上界, 独立专家提供容量不受限时的参照, 顺序微调给出无保护更新的下界. 三者一起出现, 才能看出方法究竟改善了哪一端, 又把代价转移到哪里.

稳定性还有时间尺度. 新任务训练刚开始时, 模型可能出现短暂的旧任务性能坍塌, 随后随着更多更新恢复一部分;只在阶段末评测会漏掉这段 stability gap. 反过来, 阶段末表现不错也不意味着长期稳定: 重复几十个任务后, 很小的偏差可以累积成明显退化. 在线曲线、阶段末矩阵和最终平均值分别描述瞬时、阶段与长期行为, 不能互相替代.

3. 任务边界改变了可用信息

经典实验往往明确告诉算法任务何时切换. 这允许方法在边界处固化 Fisher 信息、扩展一个模块、更新记忆配额或重置优化器. 数据流没有边界时, 这些动作需要由变化检测器触发;检测错误又会成为新的遗忘来源. 把有边界方法直接搬到开放流上, 实际上额外假设了一个准确的分段器.

任务标识在推理阶段同样关键. Task-IL 可以选择对应输出头或 adapter, 路由问题已由外部答案解决;Class-IL 必须从输入本身判断类别并在统一标签空间中竞争. Domain-IL 的标签语义不变, 重点转向输入分布变化. 三种设定由算法获得的旁信息区分, 数据集名称无法代替协议. 对比方法前必须固定这些信息, 否则任务 ID 带来的收益会被误记到持续学习机制上.

大模型把边界进一步模糊. 持续预训练的数据通常按领域或时间混合, 并不存在清晰任务头;持续 SFT 又可能同时改变格式遵循、知识和安全行为. 此时「旧任务准确率」不足以描述遗忘, 需要将保持集拆成通用语言能力、领域知识、指令遵循、推理和安全行为. 这些能力共享参数却使用不同评测, 一个总分会掩盖能力之间的交换.

4. 如何把机制变成可检验结论

梯度内积说明一次更新的局部方向, Fisher 或 Hessian 近似说明参数方向的局部敏感性, 表征相似度显示中间函数发生了多少变化. 这些都是机制证据, 还不是「方法能避免遗忘」的充分证明. 完整实验至少要把机制量与行为量对应起来: 梯度冲突减小后, 哪些旧样本不再跨越决策边界;表征漂移降低后, 旧类校准是否改善;记忆扩大后, 收益来自覆盖更多模式还是仅来自更多训练步.

受控消融需要一次只改变一个关键量. 比较回放容量时固定优化步数, 否则更大记忆同时带来更多计算;比较 adapter 与全量更新时固定可训练参数或总算力, 否则容量差异会混入算法差异;比较正则系数时同时报告新任务学习, 防止强约束用拒绝学习换来低遗忘. 多个随机任务顺序则用来判断结论是否依赖某一次幸运排列.

最终应得到条件化判断: 当旧数据完全不可保留、模型容量固定且任务边界已知时, 参数或函数正则化提供低存储的近似;允许少量样本时, 回放通常能更直接地恢复旧风险;任务 ID 可用且容量能够增长时, 参数隔离减少干扰;开放世界、无边界的数据流则还需要变化检测、路由和校准. 这些条件决定下一章各方法的适用位置, 也避免把某个基准上的平均准确率写成普遍优劣.

参考文献