本节摘要:业务是持续变化的,模型却是一次训练的——每次微调都可能"忘掉"上一次的成果。持续学习(Continual Learning)解决"模型持续学新东西、不忘旧能力"的问题。本节讲清灾难性遗忘的根源、持续学习的主流方法(回放、正则、架构)与工程落地形态。
阅读完本节,你应当能够:
客服模型上个月学会了"新品退换",这个月学"新品 2 代退换"——结果可能把上个月的学忘了(灾难性遗忘)。业务是流水的,模型是点状的:每次微调都覆盖上次,这不叫学习,叫替换。持续学习要做的,是让模型像人一样"学新不忘旧"。
神经网络训练新任务时,更新参数会覆盖"承载旧任务知识"的部分——新知识"挤掉"旧知识。数据越少越容易遗忘(新数据只有少量样本时,更新幅度集中)。
| 方法 | 思路 | 类比 |
|---|---|---|
| 经验回放 | 重放旧数据一起训练 | 温习旧题 |
| 正则化 | 保护重要参数少改动 | 记重点不涂改 |
| 架构扩展 | 每任务新分支 | 每门课新笔记本 |
| 做法 | 说明 |
|---|---|
| 混合训练 | 新数据混入旧数据 |
| 定期全量重训 | 积累到一定程度整体重训 |
| 适配器隔离 | 每任务独立 LoRA 适配器 |
| 检查点回退 | 效果下降回退到旧版 |
💡 关键直觉:工程上最实用的持续学习是"混合训练 + 定期重训"——把新旧数据一起训练,或定期用全量数据重训。学术上的复杂方法多数场景用不上,先做对这两条。
| 场景 | 判断 |
|---|---|
| 业务数据持续更新 | 需要 |
| 一次训练长期不变 | 不需要 |
| 频繁微调且效果回退 | 需要 |
新数据到 → 与旧数据混合 → 微调训练 → 对比新旧任务效果 → 达标则上线
上线前必须同时测新旧任务——只测新任务效果好、旧任务回退,等于没做持续学习。
⚠️ 常见坑:只看新任务指标,忽略旧任务。持续学习失败的典型现场就是"新任务满分、旧任务暴跌"——评估必须新旧任务双测。
持续学习 + PEFT 是天然组合:每个新任务用一个独立 LoRA 适配器,需要时叠加或切换——"每门课新笔记本"的架构扩展思路,在 PEFT 里落地成本极低。
持续学习的核心矛盾是"学新不忘旧",工程上有三招:重放(把旧数据采样混入新训练)、正则(在损失里加项约束旧任务参数变化)、架构隔离(不同任务用不同的参数子空间,如 LoRA 每任务一份)。三招各有代价:重放最有效但要存旧数据,且旧数据可能涉及隐私或版权;正则省存储但约束太强会限制新任务上限;架构隔离效果最好但参数与存储成本随任务数线性增长。
重放:存旧样本混合训练 → 效果最好,成本是存储与合规 正则:损失加约束项 → 省存储,效果中等 架构隔离:参数分任务 → 效果最好,成本随任务数增长
现实项目里的常见组合是"重放 + 小学习率":保留少量代表性旧样本(几百条即可,不需要全量),与新数据混合训练,配合比正常微调更小的学习率,通常能在遗忘与学新之间找到不错的平衡。这也是把 2.4 节的"混学"思路升级为持续运行的机制。
持续学习让模型"更稳",下一节让数据"更安全"——联邦学习与模型微调。