title: "Overcoming Catastrophic Forgetting in Neural Networks" source: "https://doi.org/10.1073/pnas.1611835114" paper: "07-ewc.pdf" status: deep-read-v1 tags: - continual-learning - large-language-models - 01-surveys-foundations - 07-ewc
Overcoming Catastrophic Forgetting in Neural Networks
[!abstract] 一句话结论 EWC 用 Fisher 信息估计旧任务参数的重要性,并以加权二次惩罚限制后续更新,是参数正则化路线的经典起点。
TL;DR
| 维度 | 精读结论 |
|---|---|
| 研究问题 | 同一组网络权重顺序学习多个任务时,新任务梯度会覆盖旧任务所需参数。 |
| 核心方法 | 训练完旧任务后估计对角 Fisher;新任务目标加入 λ/2·ΣF_i(θ_i−θ_i*)²,使重要权重更“僵硬”、不重要权重保持可塑。 |
| 主要证据 | 论文在排列 MNIST 和 Atari 任务序列上展示了比朴素顺序训练更好的旧任务保持,说明参数重要性加权优于统一 L2 约束。 |
| 路线定位 | 正则化 / 基础方法 |
- 原始页面:https://doi.org/10.1073/pnas.1611835114
- 本地原文:[[07-ewc.pdf]]
- 相关主题:[[大模型持续学习]] · [[灾难性遗忘]] · [[稳定性-可塑性权衡]]
1. 研究问题与论文定位
同一组网络权重顺序学习多个任务时,新任务梯度会覆盖旧任务所需参数。
阅读这篇论文时,先确认它假设的是离线任务序列、在线数据流、知识编辑流还是跨会话智能体经验流;不同数据访问权限下,方法的可比性完全不同。
[!PDF|] 问题定义 / 摘要锚点 · 07-ewc.pdf, p.1
2. 方法拆解
训练完旧任务后估计对角 Fisher;新任务目标加入 λ/2·ΣF_i(θ_i−θ_i*)²,使重要权重更“僵硬”、不重要权重保持可塑。
可用四个问题检查方法本质:旧信息保存在哪里?新信息写到哪里?何时选择/路由?冲突时由哪个目标函数或验证器裁决?
[!PDF|] 方法陈述锚点 · 07-ewc.pdf, p.1
关键图示
图示用于快速恢复论文结构;若 PDF++ 显示裁剪偏移,请按该页版式微调 rect。
3. 实验与关键证据
论文在排列 MNIST 和 Atari 任务序列上展示了比朴素顺序训练更好的旧任务保持,说明参数重要性加权优于统一 L2 约束。
读实验表时应同时核对:最终平均性能(ACC)、后向迁移/遗忘(BWT/F)、新任务可塑性、通用能力、数据/参数/算力预算,以及推理时是否已知任务 ID。
[!PDF|] 实验或结论锚点 · 07-ewc.pdf, p.1
4. 与相邻路线的关系
- Replay 直接近似旧分布,通常强但涉及存储、隐私和采样偏差。
- 正则化/梯度约束 限制重要参数或有害方向,额外参数少但依赖重要性近似。
- PEFT/子空间/模块化 隔离更新,训练经济,但会引入容量增长、路由与任务边界问题。
- 外部记忆/智能体技能 更新快且可解释,却可能只是在上下文里“查到”,未必形成稳健能力。
5. 局限与反例
对角 Fisher 是粗近似;每个任务要保存参数锚点/重要性,任务数增加后成本累积,且相互冲突的知识仍难兼容。
建议专门寻找反例:任务顺序反转是否仍成立?新旧任务高度相似或直接冲突时怎样?不允许旧数据、不给任务 ID、固定总参数和总 token 后,优势是否保留?
[!PDF|] 局限 / 讨论锚点 · 07-ewc.pdf, p.6
6. 复现与延伸研究
在 LLM 上可把 EWC 作为低成本基线,但需和 LoRA/子空间约束比较,并测试 Fisher 估计对层、数据量和任务顺序的敏感性。
最小复现实验
- 先复现 naive sequential FT、等预算 replay 和一个 PEFT 基线。
- 固定任务顺序、总训练 token、可训练参数与推理上下文预算。
- 每个阶段都保存 checkpoint,画完整的适应—遗忘轨迹,而非只报最终点。
- 额外测通用能力、安全/对齐、延迟、显存与数据保留量。
7. 我的判断
这篇工作的主要价值位于 正则化 / 基础方法。它是否值得直接用于真实系统,不只取决于论文内分数,还取决于旧数据访问、任务边界、容量增长和错误回滚是否符合你的部署约束。
[!question] 带着问题继续读 - 它实现的是知识保持、能力保持,还是仅仅保持了 benchmark 输出格式? - 方法优势来自机制本身,还是更多计算、更多参数、更多历史数据? - 如果学习流持续一年而非十个任务,哪一项资源最先耗尽?