Skip to content
🔗 分享本题
查看我的学习进度 →

灾难性遗忘动漫知识图:狭窄领域微调可能提升领域能力却损伤通用能力,应以领域集和通用回归集配对评估,并通过数据回放、学习率早停、LoRA、正则和持续学习缓解

🧠 图解记忆:领域能力提升要和通用能力回归一起看;点击图片可查看原图。

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 跑一下,确认通用能力没有崩。一般这样组合用,遗忘程度能控制在可接受范围内。"