一句话定义
灾难性遗忘是模型在学新任务时,旧任务的能力明显下降:新数据更新了共享权重,把原来的表示覆盖掉了。
为什么需要它
实际系统经常要持续更新:今天学客服话术,明天学新领域,后天修一个 bug。如果每次都在新数据上直接微调,旧能力可能快速退化;上线后表现为“新任务会了,老任务不会了”。
怎么工作
- 顺序微调:在新任务上继续训练,共享权重被新梯度覆盖。
- 数据分布偏移:新任务的数据和旧任务差异越大,遗忘越明显。
- 缓解手段:混入旧数据 replay、加正则化(如 EWC)、用 PEFT/LoRA 限制更新范围、数据配比和早停。
- 评估:同时跑新任务和旧任务,不能只看新任务指标。
遗忘程度和任务差异、学习率、训练步数有关;学习率越大、步数越多越容易覆盖。监控旧任务集是最直接的手段,上线前做回归测试。旧任务基线要保留。
关键取舍
- 可塑性 vs 稳定性:学新任务越快,越容易覆盖旧能力。
- replay 有效,但要保存旧数据,成本和隐私要评估。
- 正则化能约束重要权重,但可能限制新任务学习。
- PEFT 缩小更新范围,能缓解但不能完全消除遗忘。
常见误区
- 只有全参数微调会遗忘:PEFT 也会,只是范围更小。
- LoRA 完全免疫:共享层和适配器仍可能偏移。
- RAG 能解决遗忘:RAG 补知识,不修复模型能力退化。
- 多训旧数据就没事:数据配比和训练顺序同样重要。
用在哪里
- 持续学习、领域适配、多任务微调。
- 模型频繁更新、需要保留旧能力的生产系统。
- 上线前做旧任务回归测试,监控能力回退。