什么是 灾难性遗忘(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 漂移;超过保留能力预算时拒绝发布或回滚。
主要特点
- 表现为顺序参数更新后旧任务性能退化
- 受任务顺序、数据重叠、优化、容量和评测设计影响
- 可能影响质量、校准、安全、多语言覆盖或输出契约
- 只评测最新任务时通常无法发现
- 体现保留旧能力与学习新能力之间的稳定性-可塑性权衡
- 需要阶段-任务矩阵与冻结的更新前基线
常见用途
- 审计领域 SFT 是否保留通用指令遵循能力
- 发现顺序适配后的安全或多语言回归
- 比较 Replay、EWC、Distillation、Adapter 与全量微调
- 为模型发布设置旧能力退化预算
- 评测按任务、领域、类别或时间增量执行的持续学习
示例
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、不确定性与新任务表现,因为单一平均分可能掩盖某个关键能力的大幅退化。