一句话定义:持续学习(Continual Learning)是指模型按顺序学习一系列任务时,既能学会新任务,又尽量不忘记旧任务的能力。
为什么会“学一个丢一个”
先打个比方。一个人先学会骑自行车,后来学开车,正常情况下两样都会——大脑不会因为学了开车就把骑车的手感格式化。但如果每学一样新技能,旧技能的神经回路就被强行覆盖,那就是另一回事了。
深度学习模型恰好有这种毛病。训练时,知识是分散地存在成千上万个权重里的,不同任务共用同一批参数。当我们只用新数据继续训练时,梯度下降只关心“当前这批数据损失降没降”,它没有任何动力去保护旧任务的表现。结果就是:新任务表现上去了,旧任务的准确率断崖式下跌。这个现象叫AI 词典:灾难性遗忘">灾难性遗忘(Catastrophic Forgetting),是持续学习要解决的核心问题。
现实中这个问题很普遍:数据是一批批来的,不可能每次更新都把历史数据全量重训一遍——成本高,而且旧数据可能因为隐私合规或存储限制已经拿不到了。
主流的三类解法
- 正则化约束类:给对旧任务重要的参数加个“锚”,学新任务时不许它们乱动。好比搬家时把承重墙钉住,家具随便摆。
- 回放类(Replay):留一小撮旧样本,或者在需要时让模型自己生成旧样本,学新东西时掺着复习。就像背单词必须滚动复习,只背今天的新词,上周的就忘了。
- 参数隔离与扩展类:给新任务单独分配子网络或额外模块,各干各的,互不干扰。相当于公司给新项目单开一个小组,不去改老团队的代码。
和几个邻近概念的区别
| 概念 | 数据怎么来 | 要不要保住旧任务 |
|---|---|---|
| 持续学习 | 任务一个个来,历史数据常拿不到 | 要,这是核心目标 |
| 多任务学习(Multi-Task Learning) | 所有任务数据同时可见 | 天然一起优化,不涉及顺序问题 |
| 迁移学习 / 微调(Fine-tuning) | 从旧任务借力到新任务 | 不要求,微调本身常是遗忘的来源 |
| 在线学习(Online Learning) | 数据流式到达 | 侧重快速适应,通常不专门评估旧任务保持 |
对实际工作意味着什么
对做模型的人:评估口径得改。不能只看新任务的准确率,还要看旧任务掉了多少,通常会用“学完所有任务后的平均表现”和“遗忘率”两个角度一起衡量。工程上的常见难点是:回放缓冲区多大、放哪些样本、怎么估计参数重要度。模型迭代频繁的推荐、风控、智能客服等场景,最容易撞上这个问题。
对普通使用者:如果你感觉某个产品更新后“变聪明了一点,但把原来会的事忘了”,那很可能就是更新时发生了遗忘。持续学习的目标,是让系统越用越懂你,而不是学一样丢一样。
具体方案与评测口径各家不同,以官方文档为准。
