大模型微调中的灾难性遗忘问题
你花两周微调了一个医疗领域的LLM,效果很好——医疗问答准确率从60%提升到90%。但用户反馈说模型的代码能力下降了,数学推理也退化了。这就是灾难性遗忘——在学习新知识的同时遗忘了旧知识。
灾难性遗忘的成因
神经网络的"跷跷板效应"
灾难性遗忘的根源在于神经网络的参数共享。同一个参数既参与医疗问答,也参与代码生成。当你用医疗数据微调时,参数向医疗任务最优的方向移动,必然偏离代码任务的最优点。
这和人类学习不同——人类学医不会导致忘记编程。因为人脑的功能区域相对独立,学习新知识不会覆盖旧知识的神经回路。而神经网络中,所有知识共享同一组参数。
影响遗忘程度的因素
微调数据量:数据越多,参数移动幅度越大,遗忘越严重。用10万条数据微调比1万条遗忘更严重。
学习率:学习率越大,参数更新越激进,遗忘越快。
数据分布偏移:微调数据和预训练数据分布差异越大,遗忘越严重。从通用文本微调到高度专业的医疗数据,分布偏移大,遗忘严重。
参数规模:小模型更容易遗忘(参数少,冲突大),大模型相对抗遗忘(参数冗余度高,不同知识可以"住"在不同参数子空间中)。
遗忘的度量
通用能力保留率
在微调前后,用一套通用基准测试(MMLU、HumanEval、GSM8K等)评估模型,对比分数变化。通用能力保留率 = 微调后分数 / 微调前分数。
特定能力遗忘率
针对特定能力设计测试集——代码生成、数学推理、创意写作等——分别度量微调前后的表现。通常关注的是退化超过5%的能力维度。
表示漂移度量
更底层的方法是度量模型内部表示的变化。用微调前后的模型对同一组文本生成嵌入向量,计算嵌入分布的偏移。偏移越大,遗忘风险越高。
缓解策略
策略一:低秩适应(LoRA)
LoRA是缓解遗忘最实用的方法。它冻结原始参数,只训练低秩增量矩阵。原始知识完整保留在冻结的参数中,新增知识写入低秩矩阵。
LoRA天然抗遗忘——原始参数没变,通用能力不会退化。但代价是新增能力的深度有限——低秩矩阵的表达能力受限,很难学到需要大幅参数调整的能力。
实践中,LoRA的遗忘率通常<5%,远低于全参数微调的15-30%。对于大多数领域微调场景,这个trade-off是值得的。
策略二:经验回放(Experience Replay)
在微调数据中混入一定比例的通用数据。比如90%医疗数据+10%通用数据。通用数据起到"锚定"作用,防止参数过度偏移。
回放数据的选择很关键:
- 均匀采样:从预训练数据中均匀采样,覆盖面广但效率低
- 困难样本采样:采样最容易被遗忘的任务数据,精准防御
- 梯度匹配采样:选择梯度方向和新数据相反的样本,抵消偏移
回放比例的调优:太高(30%+)会稀释领域微调效果,太低(<5%)防遗忘效果不足。实践中10-15%是常用值。
策略三:弹性权重整合(EWC)
EPC的核心思想是给每个参数一个"重要性权重"——越重要的参数(对已有任务越关键),正则化强度越大,越不应该修改。
具体实现:在微调前计算Fisher信息矩阵(近似参数重要性),在损失函数中加入正则化项:
Loss = L_task + λ Σ F_i (θ_i - θ*_i)²
其中F_i是参数重要性,θ*_i是原始参数值。重要参数(F_i大)的偏移被惩罚,不重要参数可以自由更新。
EWC的效果取决于Fisher信息矩阵的估计质量。在实践中,Fisher估计的计算成本不低,且估计精度有限。这使得EWC在理论上有吸引力,但实践中不如LoRA和回放方法使用广泛。
策略四:参数隔离
最极端的防遗忘策略——给新任务分配专用参数,完全不影响旧任务参数。Adapter和Prefix Tuning属于这个方向。
Adapter在Transformer层之间插入小的适配模块,冻结原始参数。优点是零遗忘,缺点是增加了推理计算量和参数量。
Prefix Tuning在每个注意力层前加入可学习的前缀token,冻结模型参数。比Adapter更轻量,但表达能力也受限。
策略五:渐进式解冻
不冻结所有参数,而是从顶层开始逐步解冻。先只微调最后几层,评估遗忘程度;如果可接受,继续解冻更深层。这种渐进式方法在遗忘和能力提升之间找到更精细的平衡。
多任务持续学习
当你需要让模型同时学习多个领域时——医疗、法律、金融——遗忘问题更复杂。多任务交替训练会导致"跷跷板效应"——医疗能力上升则法律能力下降,反之亦然。
多任务混合训练
将多个领域的数据混合训练,而非交替训练。这能避免"学新忘旧"的问题。但要求各领域数据量均衡,否则大领域会"淹没"小领域。
模块化微调
为每个领域训练独立的LoRA模块,推理时根据任务选择加载。这是2026年的主流方案——一个基座模型+多个LoRA适配器,按需加载。
优势:零跨领域干扰、模块可独立更新、按需加载节省显存。 劣势:推理时需要路由策略判断使用哪个模块、管理多个模块的复杂性增加。
实践建议
基于我们在硅基AGI平台的微调经验,推荐以下流程:
- 首选LoRA:90%的场景下LoRA够用,遗忘率低、效率高
- 混入10%通用数据:作为保险,防止意外遗忘
- 使用小学习率:1e-5到5e-5之间,温和更新
- 分层学习率:底层用更小的学习率(1e-6),高层可以用更大的学习率
- 定期评估通用能力:每500步跑一次通用基准,发现退化立即调整
结语
灾难性遗忘是大模型微调中不可避免的trade-off——没有"免费的午餐",学习新知识和保留旧知识之间总是存在张力。关键不是"消除"遗忘,而是将遗忘控制在可接受范围内。LoRA+回放+定期评估的组合方案,在2026年仍然是性价比最高的实践路径。随着模型规模增大和训练方法改进,遗忘问题会逐步缓解,但永远不会消失——它是深度学习架构的基本特性。
本文同步发布于 硅基AGI论坛
