🧠 图解记忆:领域能力提升要和通用能力回归一起看;点击图片可查看原图。
Catastrophic Forgetting = 模型在对新数据进行微调时,大幅遗忘原来已经学到的通用知识。
为什么会发生?
预训练阶段:模型在海量通用语料上学到了广泛的语言能力和常识
↓
微调阶段:只用几千条特定领域数据训练
↓
模型为适应新数据,大幅调整权重 → 通用语言能力退化
↓
表现:微调后的模型回答通用问题时变得笨拙,甚至不如基座模型典型症状
| 维度 | 微调前 | 微调后(灾难性遗忘) |
|---|---|---|
| 通用问答 | 流畅自然 | 回答生硬、语法错误增多 |
| 英语能力 | 优秀 | 退化明显 |
| 逻辑推理 | 稳定 | 大幅下降 |
| 领域能力 | 一般 | 大幅提升 |
缓解方案(从低成本到高成本排序)
方案1:Elastic Weight Consolidation(EWC)⭐
核心思想:标记出预训练时对通用知识重要的参数,微调时限制这些参数的变化幅度
步骤:
1. 用预训练数据(或少量通用数据)跑一轮,记录每个参数的 Fisher Information Matrix
2. Fisher 值大的参数 = 重要参数,微调时用正则项限制其变化
loss_total = task_loss + lambda × Σ F_i × (theta_i - theta_pretrain_i)^2
↑ 重要参数惩罚更大方案2:混合数据训练(最常见⭐⭐⭐)
微调时混入一定比例的预训练通用数据:
- 90% 领域数据 + 10% 通用预训练数据
- 或使用 FLAN/shuf-flan 等高质量指令数据作为通用锚点
- 效果立竿见影,零成本
业界经验:5-20% 的通用数据混入通常就能有效防遗忘方案3:LoRA + 低学习率
LoRA 冻结大部分预训练权重,只训练低秩适配矩阵
→ 参数量不变,但权重整体漂移幅度远小于全量微调
→ 天然缓解灾难性遗忘方案4:Continual Pre-training(持续预训练)
先用更大规模的通用语料对模型做第二轮预训练
→ 恢复通用能力
→ 然后再做领域微调面试加分点
- 如何检测遗忘? 微调后用 MMLU(通用知识)、HumanEval(编程)、GSM8K(数学)等基准测试,对比基座模型分数
- 2026 趋势:很多团队直接用 LoRA + 少量通用数据,已经很少遇到严重遗忘问题了
面试话术:
"灾难性遗忘的本质是模型为了适应新数据而覆盖了旧权重。我的应对三板斧:1)微调时混入 5-10% 的通用预训练数据;2)尽量用 LoRA 而不是全量微调,冻结大部分权重天然防遗忘;3)调完后立刻用 MMLU 或 GSM8K 跑一下,确认通用能力没有崩。一般这样组合用,遗忘程度能控制在可接受范围内。"
