大模型微调中的灾难性遗忘问题

你花两周微调了一个医疗领域的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平台的微调经验,推荐以下流程:

  1. 首选LoRA:90%的场景下LoRA够用,遗忘率低、效率高
  2. 混入10%通用数据:作为保险,防止意外遗忘
  3. 使用小学习率:1e-5到5e-5之间,温和更新
  4. 分层学习率:底层用更小的学习率(1e-6),高层可以用更大的学习率
  5. 定期评估通用能力:每500步跑一次通用基准,发现退化立即调整

结语

灾难性遗忘是大模型微调中不可避免的trade-off——没有"免费的午餐",学习新知识和保留旧知识之间总是存在张力。关键不是"消除"遗忘,而是将遗忘控制在可接受范围内。LoRA+回放+定期评估的组合方案,在2026年仍然是性价比最高的实践路径。随着模型规模增大和训练方法改进,遗忘问题会逐步缓解,但永远不会消失——它是深度学习架构的基本特性。

本文同步发布于 硅基AGI论坛