什么是 灾难性遗忘(Catastrophic Forgetting)?

更新于

灾难性遗忘(Catastrophic Forgetting)是模型按顺序学习新数据、任务、领域或目标后,在先前学会的任务或能力上出现显著性能下降的现象。

工作原理

沿任务序列度量遗忘

在适配前和每个训练阶段后,用不可变的 Model、Tokenizer、Prompt 与 Metric 契约评测所有需保留任务。常见做法是对每个旧任务,用此前达到的最佳分数减去最后阶段分数,并分别报告各任务与平均遗忘;同时必须报告新任务增益,因为完全不学习带来的零遗忘没有实际价值。

参数干扰不是唯一原因

当旧样本或旧约束缺席时,新任务 Gradient 可能把共享参数推离旧任务的有效解。Representation Drift、Optimizer State、Learning Rate、训练时长、数据顺序、Label Conflict,以及 Chat Template 或 Tokenizer 变化都会影响测量结果。Overfitting 是单个任务内的泛化失败,Forgetting 则是顺序学习后相对旧能力的变化。

缓解方案权衡稳定性与可塑性

Replay 把保存或生成的旧样本与新数据混合;EWC 等 Regularization 限制被估计为重要的参数变化;Distillation 可约束旧输出;Parameter Isolation、Adapter、Routing 或新增容量则减少直接干扰。每种方法都要权衡存储、隐私、算力、任务身份、容量增长与新任务学习能力,没有方案能普遍消除遗忘。

生产验证覆盖完整系统行为

保留冻结的基础 Checkpoint,以及覆盖旧任务、安全、多语言、格式、Calibration 和 Tool Policy 的回归套件。候选模型应在相同数据与解码参数下比较,训练存在随机性时使用多个 Seed。还要区分模型退化与 Prompt、Retrieval 或 Runtime 漂移;超过保留能力预算时拒绝发布或回滚。

主要特点

  • 表现为顺序参数更新后旧任务性能退化
  • 受任务顺序、数据重叠、优化、容量和评测设计影响
  • 可能影响质量、校准、安全、多语言覆盖或输出契约
  • 只评测最新任务时通常无法发现
  • 体现保留旧能力与学习新能力之间的稳定性-可塑性权衡
  • 需要阶段-任务矩阵与冻结的更新前基线

常见用途

  1. 审计领域 SFT 是否保留通用指令遵循能力
  2. 发现顺序适配后的安全或多语言回归
  3. 比较 Replay、EWC、Distillation、Adapter 与全量微调
  4. 为模型发布设置旧能力退化预算
  5. 评测按任务、领域、类别或时间增量执行的持续学习

示例

loading...
Loading code...

常见问题

如何发现灾难性遗忘?

在适配前和每个训练阶段后评测一组固定旧任务,记录每个任务此前最佳分数与最终分数,同时报告新任务增益。Model、Tokenizer、Prompt、Decoding、数据版本和 Metric 必须保持一致,避免把流水线变化误判为参数遗忘。

PEFT 能防止灾难性遗忘吗?

不能保证。冻结基础权重会限制直接参数漂移,但 Adapter 启用后仍可改变 Activation 与系统行为。Rank、目标模块、数据、Objective 和多 Adapter 组合都会影响结果,因此要在相同旧任务套件上比较 Base Model、启用 Adapter 的模型与 Merge 后制品。

灾难性遗忘与过拟合、模型坍塌有什么区别?

Overfitting 是一个任务内训练数据与未见数据之间的泛化差距;Catastrophic Forgetting 是顺序学习后旧任务相对先前能力的退化;Model Collapse 通常指多代模型递归使用生成数据后分布逐渐退化。症状可能重叠,需要结合任务历史和数据血缘诊断。

如何缓解灾难性遗忘?

候选方法包括 Replay 旧样本、Distillation 旧输出、约束重要参数、隔离任务参数、增加容量、降低更新幅度和混入更广数据。每种方法的隐私、存储、算力与新任务适应成本不同,不存在适用于所有任务序列的固定配方。

如何计算有意义的遗忘指标?

对每个旧任务,用最后阶段分数与此前达到的最佳分数之差衡量遗忘,再分别报告每个任务和平均值。还应展示完整 Stage-by-Task Matrix、不确定性与新任务表现,因为单一平均分可能掩盖某个关键能力的大幅退化。

相关术语

相关文章