一个模型学完任务 后继续训练任务 , 上的表现下降, 通常被概括成「新知识覆盖旧知识」. 这句话指出了现象, 没有告诉我们覆盖发生在哪里. 参数改变是所有学习都会发生的事;有些改变沿着旧任务的平坦方向移动, 不伤害旧函数, 有些很小的位移却让决策边界穿过样本密集区. 要理解灾难性遗忘, 需要沿着更新的因果链追踪: 新数据产生什么梯度, 梯度经过怎样的曲率, 中间表征如何漂移, 最终输出为何改判.
稳定—可塑性也不只是一个正则系数. 稳定指旧能力在后续更新中的保持, 可塑性指新能力的获得速度和上限. 模型可以通过增加模块同时提高二者, 代价转移到容量与路由;也可以用回放改善新旧梯度的一致性, 代价转移到数据存储. 任何声称缓解遗忘的方法, 都应说明它改变了哪一段机制、保留了什么历史信息、又将成本放到了哪里.
1. 一步梯度怎样伤害旧任务
记旧任务和新任务风险为 与 , 模型位于旧解 . 在新任务上做一步梯度下降,
旧风险的一阶变化为
若两个梯度内积为负, 降低新风险的方向会抬高旧风险;内积为正则可能产生正迁移. GEM 与 A-GEM 直接使用这一局部判断, 将当前梯度投影到不增加记忆损失的半空间. 它们控制的是一步更新的方向, 并未保存完整旧损失面.
旧任务训练到驻点后 , 一阶式看起来不会遗忘, 实际仍可能退化. 加入二阶项,
描述旧风险的局部曲率. 新梯度沿高曲率方向移动一点, 旧风险也会明显上升. EWC 用 Fisher 对角近似这种敏感性, 对重要方向施加更强惩罚. 对角近似忽略参数相关性: 两个参数分别移动看似安全, 联合移动可能正好离开狭窄谷底.
连续更新让局部近似继续失真. 每一步之后参数、梯度与 Hessian 都变了, 当前不冲突不保证十步以后安全. 学习率决定泰勒展开能否可信, 任务距离决定旧锚点还能代表多大范围. 这解释了为什么梯度投影和二次正则常在短任务序列有效, 任务数增长后仍会累计误差.
2. 梯度冲突不是遗忘的全部
全模型梯度内积把数百万个方向压成一个标量. 某些层产生正迁移, 另一些层强烈冲突, 总和可能接近零. 按层、模块或参数子空间计算夹角, 才能定位干扰发生的位置. 早期视觉层可能跨任务共享, 分类头因标签扩张冲突;语言模型中通用表示保持稳定, 回答格式与安全行为却迅速变化.
mini-batch 梯度还有采样噪声. 一次负内积可能来自样本组合, 不代表任务期望梯度长期冲突. 增大 batch、在多个 batch 上统计分布, 可以区分系统性冲突和随机波动. GEM 用小记忆估计旧梯度时, 记忆选择同时决定约束方向;若缓冲区漏掉少数模式, 投影不会保护它们.
优化器状态会改变实际更新. Adam 的动量和二阶矩让参数步长不再简单等于 ;即使当前梯度与旧梯度相容, 历史动量仍可能沿冲突方向推动. 切换任务时重置优化器能减少旧动量, 也丢掉有用的尺度估计. 因而分析梯度后还要观察真正的参数更新向量.
3. 表征漂移怎样传到输出
将模型写成特征提取器 与分类头 . 即使 冻结, 新任务更新也会让旧样本表示从 移到 . 若位移跨过旧决策边界, 预测便改变. 参数欧氏距离与这种函数变化没有一一对应: 网络重参数化可以让权重移动很远而函数接近, 高敏感方向上的微小变化也能显著改输出.
表征漂移可用线性探针、CKA、类中心移动和局部 Jacobian 测量. 只看总体相似度仍可能掩盖关键少数样本. 一个类的大多数表示稳定, 边界附近样本小幅移动就足以降低准确率. 将样本到边界的 margin 与漂移方向结合, 比平均特征距离更接近行为.
特征蒸馏在旧输入上约束 , logits 蒸馏约束最终函数. 前者允许分类头重新校准, 后者直接保持旧概率. 两者都需要查询点: 没有旧输入时, 在新分布上匹配教师只保护分布重叠区域. 生成回放和少量 exemplar 的价值就在于提供这些函数锚点.
4. Class-IL 还存在输出竞争
Task-IL 推理时已知任务, 模型只在对应输出头中选择. Class-IL 将所有已见类别放入同一 softmax, 新类与旧类直接竞争. 即便旧类之间的表示仍然可分, 新类 logits 整体偏高也会把旧样本判为新类. 这种偏置来自新阶段只包含新类: 交叉熵不断提高新类分数, 没有旧样本提供反向校准.
因此某些方法在 Task-IL 上几乎不忘, 到 Class-IL 便接近顺序微调. 参数隔离保存了旧模块, 仍需要知道该调用哪个模块;独立多头若没有任务 ID, 还要比较不同头的分数尺度. 回放旧类、平衡分类器训练、bias correction 和统一原型分别处理这条输出竞争链.
混淆矩阵比平均准确率更能识别偏置. 若旧样本大量流向最新类别, 主要问题是跨阶段校准;若旧类互相混淆, 表征本身可能已漂移. 将旧特征交给旧分类头、旧特征交给新分类头、新特征交给旧分类头做交叉替换, 可以分开表征与头部责任.
5. 稳定—可塑性需要三维坐标
只画旧任务保持与新任务准确率, 会漏掉资源增长. Progressive Networks 为每个任务增加一列, 可以同时保持旧任务并学习新任务;若任务无限增长, 参数、显存和推理成本也无限增长. 这不是错误, 但它解决的是允许扩容条件下的稳定—可塑性, 与固定容量问题不同.
冻结模型是另一个极端. 它有完美参数稳定, 新任务只能依靠原有能力. 若新任务本来就在预训练能力内, 提示或检索已经够用, 不更新反而合理;若需要新表示, 冻结得到的低遗忘只是拒绝学习. 所以基线应同时包含顺序微调、冻结、同容量联合训练或独立专家.
一个有用的比较面包含旧能力保持、新能力获得与累计资源. 正则化沿固定容量调节折中, replay 用存储改善历史梯度, 参数隔离增加结构自由度, 外部记忆避免将事实全部写入参数. 不同路线没有脱离预算的总排名, 只有在给定数据访问、容量和任务信息下的选择.
6. 时间尺度暴露隐藏的退化
阶段末评测假设训练中间的性能不重要. 在线系统却会在每一步提供服务. 新任务刚开始时, 旧性能可能快速下降, 随后 replay 让它恢复;最终矩阵看起来不错, 用户已经经历了 stability gap. 每隔若干更新测旧任务, 记录最大下降和恢复时间, 才能描述这种风险.
更长时间尺度上也会出现延迟遗忘. EWC 在相邻任务间约束有效, 多个阶段后旧锚点的局部近似失真, 性能才突然下降. 反过来, 后续相关任务也可能让旧能力恢复. 任务年龄曲线把每项能力从学会时起对齐, 能比较遗忘速度、拐点和偶发恢复.
快速状态与慢速状态可以分担时间尺度. 会话内变化写入临时 adapter 或 TTT state, 经过验证的长期规律再合并进慢参数. 这能限制坏更新的作用范围, 同时引入状态转移问题: 什么证据足够将快状态升级, 合并后如何检查旧能力, 失败时能否撤回.
6.1. 怎样证明方法修到了正确机制
理论证明通常依赖凸性、局部二次或稳定数据分布, 可以说明投影无一阶损害、某个后验近似或 regret 上界. 深网与长任务流不满足全部假设时, 这些结果提供机制方向, 不能替代行为实验. 机制推导回答「为什么可能有效」, 受控消融回答「变量改变是否造成预期变化」, 多数据与多规模结果才说明规律是否稳健.
若方法声称减少梯度冲突, 应同时测冲突分布和旧风险;若声称保护表征, 应对特征做干预并看行为是否恢复;若声称解决路由遗忘, oracle routing 应显著缩小差距. 机制量改善而性能不变, 说明该故障不是当前瓶颈. 性能改善而机制量不变, 原解释可能有误, 收益也许来自额外计算或更强底座.
预算对齐是因果实验的一部分. 增大 replay 会增加旧样本和训练计算, 扩展模块会增加容量, 多次增强会增加前向. 固定总 FLOPs、状态字节和基础模型后再比较, 才能将提升归到算法变量. 无法完全对齐时, 画性能—资源前沿比单点数字更诚实.
最终应形成条件化选择. 旧数据完全不能保存、任务相近且状态极小, 参数或函数约束提供便宜近似;允许少量历史样本时, replay 更直接地估计旧风险;任务标识可靠且容量可增长时, 模块隔离减少干扰;无标签开放流则还要处理筛选、错误闭环和恢复. 灾难性遗忘没有被一个算法永久解决, 但这条机制链让每项方法的作用位置和失效条件都可以被检验.
6.2. 从小模型机制走到大模型能力
经典分类实验把任务和标签空间切得很清楚, 因而能够精确计算准确率矩阵. 大模型的旧能力散布在语言建模、事实知识、指令遵循、推理和安全行为中, 任意保持集都只能抽样. 这不会让稳定—可塑性失去意义, 但会改变证据口径: 「没有观察到下降」只覆盖被测试的能力, 不能证明全模型没有遗忘.
持续预训练主要改变 token 分布. 新领域语料反复出现某些词法和关系, 梯度会重新分配概率质量;通用语料 loss 上升是最直接的分布遗忘信号. 下游能力未必同步下降, 因为模型容量和冗余表示可以吸收部分变化. 同时测 held-out loss、表征探针与任务行为, 才能知道改变停留在哪一层.
持续 SFT 的梯度集中在少量回答 token, 容易改变格式和策略. 模型可能仍能在合适提示下给出旧答案, 默认行为却不再调用它. 这种「可访问性下降」与知识从参数中消失不同. 改变系统提示、解码和示例后若能力恢复, 主要问题在策略选择;各种提示都无法恢复, 才更像参数层遗忘.
偏好优化又增加 reference 与 reward. 输出变短、拒答增多或推理路径改变, 都可能让旧 benchmark 下降. 固定 TestingTime 预算与解码后, 对比预训练、SFT 和偏好优化 checkpoint, 可以定位能力从哪一阶段开始变化. 训练链的阶段边界因此相当于经典持续学习的任务边界, 只是每阶段修改的行为维度更多.
PEFT 看起来天然稳定, 因为底座被冻结. 独立 adapter 确实不改底座参数, 最终系统仍要选择或合并 adapter. 路由把输入送错模块, 行为上等同于遗忘;多个低秩更新合并发生方向冲突, 也会破坏旧能力. 对大模型而言, 稳定性需要覆盖底座、模块、路由和合并后的完整路径.
模型合并依赖局部线性假设. 两个任务解都在各自低损失区域, 权重平均点未必仍在低损失路径上. 任务向量近似正交时干扰较小, 共享敏感方向时冲突增大. 合并前测更新子空间夹角、合并后做能力矩阵, 能将失败与参数几何联系起来. 只测新任务总分会漏掉被平均掉的旧行为.
6.3. 正向迁移也需要因果解释
后续任务有时改善旧任务, BWT 因而为正. 可能的原因包括共享表征被更多数据完善、分类头重新校准、训练时间增加或正则带来的平滑. 若把所有正 BWT 都称为知识迁移, 会掩盖这些来源. 用冻结特征重训头、固定总训练步数和交换任务顺序, 可以逐项排除.
梯度内积为正提供局部线索. 若两个任务在关键层长期保持正相关, 共享训练应提高样本效率;只有少量 batch 正相关, 平均收益可能来自噪声. 追踪内积随训练阶段变化, 能看到早期共享基础、后期任务特化的转折. 这也提示隔离时机: 太早分模块会丢掉迁移, 太晚又让冲突已经发生.
表征复用可以通过线性探针检验. 在任务 训练前后冻结 backbone, 用同样预算训练任务 的新探针;探针提高说明表示更适合 , 旧头不升则主要是接口或校准问题. 若探针也下降, 表征本身受到伤害. 这类交叉测试把「参数共享有益」从相关观察推进到可定位机制.
6.4. 旧路线为什么会重新变得可用
很多持续学习方法诞生于小模型、封闭任务与有限硬件条件. 预训练大模型改变了起点: 通用表征已经存在, 新任务往往只需较小更新;LoRA、量化与专家路由又让隔离模块的成本下降. 过去因容量线性增长而不现实的模块化路线, 在共享大底座、只增加小 adapter 时重新获得吸引力.
外部存储也改变了回放的边界. 早期方法在固定内存里挑几百张图片, 现在对象可能是海量文本、embedding 与可检索原文. 存储便宜不等于训练便宜, 每步将全部历史混入仍不可行;检索式 replay 可以按当前梯度或语义选择相关旧经验. 新代价是索引漂移、检索偏差和隐私治理.
可靠 verifier 会改变可塑性. 无标签流里, 模型难以知道新更新是否正确;代码测试、数学验证或可执行环境提供外部反馈后, 系统可以更大胆地写入已验证经验. 这并未消除遗忘, 但提高了筛选信号质量. 缺少 verifier 的开放问答不能直接继承同样结论.
硬件也决定算法能否兑现理论优势. 稀疏模块和逐样本路由减少 FLOPs, 不规则访存可能让墙钟更慢;大量小 adapter 节省训练参数, 服务时频繁加载会增加延迟. 一项旧路线复活时, 应指出是底座、数据、验证器还是 kernel 改变了主要缺陷, 而不是把历史写成算法潮流循环.
6.5. 面向新方法的判断顺序
读到一项新算法, 先固定它的协议: 有没有任务 ID、旧数据、边界和容量增长. 再找它修改的量: 梯度、曲率、样本分布、参数子空间、路由或输出校准. 随后检查证据是否正对这个量. 理论证明若只覆盖一步凸优化, 不能支持深网长期无遗忘;一个 benchmark 提升若同时增加模型和训练 token, 不能全部归因于算法.
接着追踪代价. 保存教师、Fisher、buffer、adapter 或检索索引都属于历史状态;额外前向、梯度投影和路由也属于计算. 若方法用更多资源换保持, 问题变成性能—资源前沿是否更好. 如果只在不对齐预算时占优, 它仍可能是有用系统, 算法效率结论却没有成立.
还要检验失效条件是否与机制一致. 参数锚点在任务距离增大后变差, 回放在容量增加后趋近完整历史, 路由在任务相似时混淆, 无标签适应在初始预测错误时自我强化. 这些可预期的失败比单个最好分更有价值. 它们让读者遇到新数据流时, 能判断哪个假设会先坏, 而不是只记住方法缩写.
一组完整诊断还要连接样本与模块. 对每个发生遗忘的样本, 记录它在表示空间中的位移、分类 margin、对应梯度与被激活模块;再与保持样本配对比较. 如果两组差异集中在路由, 继续增加 Fisher 精度作用有限;若路由正确而 margin 被新类 logit 压过, 应优先修正校准与旧类覆盖. 这种从行为反推机制的过程, 能避免所有下降都被笼统归为参数覆盖.
模型规模扩大后, 全参数梯度越来越难直接保存和比较. 可以在随机投影、低秩子空间或关键层上估计冲突, 但近似维度需要做收敛检查. 同一结论在多个投影种子上稳定, 才说明观测到的是结构而非投影噪声. 表征与输出的行为测量仍是必要锚点, 因为任何梯度近似都可能漏掉真正敏感的方向.
持续学习最终面对有限状态与无限经历. 算法无法保存所有历史细节, 只能选择未来可能需要的信息. Fisher、样本、logits、模块和 fast weights 都是不同压缩形式. 评价它们时, 应问保留的信息能否覆盖未来查询、写入规则能否识别冲突、状态耗尽后如何淘汰. 这三个问题把稳定—可塑性从一句口号落到了可计算、可干预的对象上.
实验若能同时回答这三项, 即使平均分没有刷新纪录, 仍能帮助判断新方法适合哪种数据流. 这比脱离协议追逐单一最高分更接近持续学习真正要解决的选择问题.
参考文献
- McCloskey, M., & Cohen, N. J. (1989). Catastrophic Interference in Connectionist Networks.
- French, R. M. (1999). Catastrophic Forgetting in Connectionist Networks.
- Kirkpatrick, J. et al. (2017). Overcoming catastrophic forgetting in neural networks.
- Lopez-Paz, D., & Ranzato, M. (2017). Gradient Episodic Memory.
- De Lange, M. et al. (2022). A Continual Learning Survey.
- De Lange, M. et al. (2023). Identifying the Stability Gap.
- Doan, T. et al. (2021). A Theoretical Analysis of Catastrophic Forgetting through the NTK Overlap Matrix.