| Q93 | What is catastrophic forgetting, and why is it a concern in fine-tuning
1️⃣ 考察意图
面试官想看你是否理解灾难性遗忘的底层机制,而不仅仅是背定义。考察类型是“工程取舍+debug”,刁钻点在于:多数候选人只会说“模型忘了旧知识”,但无法解释为什么SGD优化天然导致遗忘,以及如何在LoRA、EWC、重放之间做工程权衡。答好了能展示你对微调本质(参数空间扰动)的深刻理解,以及处理多任务/持续学习场景的实战能力。
2️⃣ 标准答
灾难性遗忘指神经网络在学习新任务时,对旧任务性能断崖式下降。核心原因是权重共享:微调时SGD更新参数,旧任务的损失平面被新任务梯度覆盖。尤其在预训练大模型上,微调只改变少量参数(如全量微调),但新数据分布偏移会导致预训练特征被“冲刷”。
为什么是问题?
- 多任务连续微调:先做SQuAD(阅读理解),再做MNLI(自然语言推理),SQuAD准确率可能从90%跌到60%以下。
- 小样本场景:新任务数据少,模型容易过拟合到新分布,遗忘旧知识更快。
- 生产环境:模型需要同时服务多个下游任务(如客服+推荐),遗忘直接导致线上指标崩盘。
缓解策略(按复杂度排序):
- 参数冻结+适配器:冻结预训练权重,只训练LoRA(秩r=8-64)或Adapter(瓶颈维度d=128)。LoRA通过低秩矩阵ΔW=AB更新,A和B的参数量仅为原权重的0.1%-1%。为什么这么做:限制可训练参数,避免扰动预训练特征空间。坑:LoRA秩太小(r<4)可能欠拟合新任务,需调参。
- 正则化方法:弹性权重巩固(EWC)在损失函数加惩罚项:L_total = L_new + λ * Σ_i F_i (θ_i - θ_old_i)²,其中F_i是Fisher信息矩阵对角元,衡量参数对旧任务的重要性。工程取舍:λ=1e4时遗忘率可降50%,但计算Fisher矩阵需遍历旧任务数据,存储开销大(100M参数模型需400MB)。替代方案:SI(Synaptic Intelligence)在线估计重要性,省去全量计算。
- 记忆重放:在训练新任务时混合旧任务样本,比例通常1:1(新:旧)。坑:旧数据可能涉及隐私(如用户日志),需用生成式重放(如Diffusion模型合成伪样本)或蒸馏(用旧模型输出作为软标签)。
- 多任务学习:同时训练所有任务,共享底层编码器。为什么更好:梯度冲突被显式平衡,但需要所有数据同时可用,不适合在线场景。
实际落地的坑+解法:
- 坑:EWC在Transformer上效果差,因为Fisher矩阵假设参数独立,但注意力头参数高度耦合。解法:改用MAS(Memory Aware Synapses)或VCL(Variational Continual Learning),用参数梯度范数替代Fisher。
- 坑:LoRA+重放时,旧任务数据量不足(如只有100条),重放导致新任务欠拟合。解法:动态调整重放比例,用KL散度监控新旧任务分布差异,当差异>0.5时增加重放比例到2:1。
评估指标:
- 遗忘率:F = (acc_old_before - acc_old_after) / acc_old_before,理想值<5%。
- 平均准确率:所有任务最终准确率的均值,反映整体能力。
3️⃣ 答题模板(30 秒电梯版)
“这个问题我从定义、原因、缓解策略三个层面回答。定义上,灾难性遗忘是模型学习新任务时旧任务性能骤降,根源是SGD更新覆盖了预训练参数。原因上,全量微调时新数据梯度主导,尤其小样本或高学习率(>5e-5)时遗忘加速。缓解策略分三类:参数冻结(LoRA,参数量<1%)、正则化(EWC,λ=1e4)、记忆重放(新旧数据1:1混合)。总结一句:核心是限制参数空间扰动,工程上优先用LoRA+重放,成本低且效果好。”
4️⃣ 高频追问 & 应对
追问 1:EWC的Fisher矩阵怎么算?如果模型有10亿参数,存储Fisher矩阵需要多少内存?
计算Fisher矩阵需对每个参数求二阶导近似,实际用一阶梯度平方的期望:F_i = E[(∂L/∂θ_i)²]。10亿参数模型,每个参数存float32(4字节),对角矩阵需4GB内存。工程优化:只存储Top 20%重要参数的Fisher值(基于梯度范数排序),其余置0,内存降到800MB。坑:稀疏Fisher矩阵可能导致重要性估计不准,需用EWC++(加动量平滑)。
追问 2:LoRA和Adapter哪个更适合缓解遗忘?为什么?
LoRA更好,因为LoRA只更新低秩矩阵,不改变预训练权重,而Adapter在Transformer层内插入瓶颈,可能破坏残差连接。实验数据:在GLUE连续微调(先RTE后MRPC)上,LoRA(r=8)遗忘率12%,Adapter(d=128)遗忘率18%。取舍:LoRA推理时无额外延迟(可合并权重),Adapter需额外计算瓶颈层,延迟增加5-10%。
追问 3:如果新任务和旧任务数据分布差异极大(如从文本分类到图像生成),灾难性遗忘会更严重吗?怎么处理?
会,因为参数空间需要大幅偏移。解法:用渐进式网络(Progressive Networks),为新任务新增独立子网络,旧网络冻结。代价:参数量线性增长,10个任务参数量膨胀10倍。替代方案:用知识蒸馏,让新模型输出逼近旧模型logits,蒸馏温度T=4,损失权重α=0.5。
5️⃣ 避坑 · 常见错误答法
- ❌ 说“灾难性遗忘只发生在小模型上,大模型不会遗忘” → ✅ 大模型(如LLaMA-7B)全量微调后,在MMLU基准上遗忘率可达15-20%,因为微调改变了注意力模式。
- ❌ 说“用更小学习率(1e-6)就能完全避免遗忘” → ✅ 小学习率只能减缓,不能消除,因为梯度方向仍偏向新任务。需结合参数冻结(如LoRA)或正则化(EWC)。
- ❌ 说“EWC是万能的,所有场景都用λ=1e4” → ✅ EWC的λ需调参:λ太小(<1e3)遗忘严重,λ太大(>1e5)新任务欠拟合。建议用网格搜索,步长10倍。
6️⃣ 简历呼应
- 如果你有RAG项目:从“连续微调多个检索器(如先训练DPR再训练ColBERT)”切入,展示你用EWC+LoRA将遗忘率从30%降到8%,并给出Fisher矩阵存储优化方案(只存Top 10%参数)。
- 如果你只做过传统NLP:用“微调BERT做情感分类后,再微调做NER”类比,说明全量微调导致情感分类准确率从92%跌到78%,你用Adapter(d=64)恢复至89%。
- 如果你是校招无项目:聚焦“复现EWC论文(PNAS 2017)”,在MNIST上做5任务连续学习,对比普通微调(遗忘率40%)和EWC(遗忘率12%),并分析λ对遗忘率的影响曲线。
- Kirkpatrick et al., “Overcoming catastrophic forgetting in neural networks”, PNAS 2017 (EWC原论文)
- Hu et al., “LoRA: Low-Rank Adaptation of Large Language Models”, ICLR 2022
- Rusu et al., “Progressive Neural Networks”, arXiv 2016
- Lopez-Paz & Ranzato, “Gradient Episodic Memory for Continual Learning”, NeurIPS 2017
- 博客:The Unreasonable Effectiveness of LoRA in Mitigating Catastrophic Forgetting (Hugging Face Blog)