一个图像模型先学会识别春季植物,再用夏季数据继续训练,结果可能更懂新叶,却忘了旧叶;一个客服分类器适应新产品后,可能把过去稳定的投诉类型分错。这种现象叫“灾难性遗忘”:神经网络为新数据调整参数时,破坏了旧任务所依赖的表示。
最直接的办法是把所有旧数据和新数据一起重训,但存储、计算和数据保留都可能不允许。合成回放提供另一条路线:训练一个生成器记住过去分布,更新任务模型时生成旧样本,与新数据混合训练。
这听起来像给模型安装记忆,却有一个容易忽略的问题:负责“回忆”的生成器也会忘记,也可能记错。增量学习策略的重点不是无限制造旧样本,而是让真实锚点、合成回放、约束训练和时间评测互相校正。
## 先分清三种增量变化
任务增量是系统明确知道当前任务,例如上午识别零件、下午判断表面缺陷,推理时也能选择对应任务头。类别增量是在同一个输出空间逐步增加新类别,推理时不知道样本属于哪一批,难度更高。
领域增量则是标签不变、输入分布改变,例如同一种设备换了相机、同一种语音换了环境噪声。现实系统往往还会混合出现:新类别加入,同时传感器与用户行为变化。
不同变化需要不同回放。任务增量可以保存独立参数或适配器;类别增量必须平衡新旧类别;领域增量更关注风格、设备和时间条件。若不先定义场景,平均准确率会掩盖真正遗忘的位置。
## 为什么只保存生成器仍然不够
2017 年的 Deep Generative Replay 研究提出双模型:生成器重建旧任务数据,求解器在合成旧样本与真实新样本上共同训练。它展示了不保存全部原始数据也能缓解遗忘的思路。
但生成器学习的是近似分布。少见类别、长尾组合和边界案例最容易被压平。若每一代生成器再用上一代合成数据训练,微小偏差会像复印件一样累积。
因此,不应让合成回放成为唯一记忆。保留一小组经过选择的真实锚点,覆盖关键类别、困难样本和历史设备。锚点不一定参与训练,也可以只用于评测和校准生成器。

## 建立两层记忆库
第一层是小而可靠的真实记忆。可以按类别、时间、设备和错误类型分层抽样,不只保存最常见样本。每次更新后重新检查它是否仍代表历史边界。
第二层是可扩展的合成记忆。生成器按条件生成类别、域和时间切片,补足真实记忆覆盖不足的组合。每个样本记录生成器版本、条件、随机种子和父数据窗口。
真实记忆负责告诉团队“过去究竟是什么”,合成记忆负责增加训练覆盖。两者不能在数据管线里失去标签,否则后续无法区分模型是在现实上稳定,还是只适应了自己的回声。
## 回放比例要按遗忘风险调整
常见做法是给新旧数据设固定比例,例如一半新、一半回放。固定比例容易实现,却未必适合所有阶段。新类别很少时,过多回放会阻碍学习;分布突然变化时,过少回放又会迅速遗忘。
可以先在更新前测旧任务,再用小批新数据试训,观察哪些切片下降最多。对遗忘严重的类别提高回放,对稳定类别减少。回放采样还要限制重复,避免生成器反复给出几个典型样本。
训练批次中同时保留真实新样本、真实旧锚点和合成旧样本。若真实锚点受数据限制不能训练,至少在每个候选模型上独立评测。
## 蒸馏保留旧模型的软边界
旧模型不只给出最终类别,还包含类别之间的相对关系。知识蒸馏让新模型在旧样本或合成样本上接近旧模型的输出分布,同时学习新标签。
这种约束能缓解参数突然移动,却也可能保留旧模型的错误。蒸馏权重过高,新模型不愿学习真正变化;权重过低,旧能力保护不足。应在真实历史锚点和新数据上同时调节,不以旧模型一致性作为唯一目标。
另一类方法会限制重要参数变化,或为新任务分配独立参数、适配器。它们可以与回放组合。选择依据是任务边界是否已知、模型容量、存储预算和部署是否允许多个分支。
## 生成器也要持续评测
不要只看合成样本“像不像”。先检查类别与条件是否可控,长尾是否覆盖,时间特征是否合理。再训练一个下游探针,比较真实训练、合成训练和混合训练在真实测试集上的表现。
检查最近邻与重复,防止生成器直接复现训练记录。对图像人工查看异常纹理,对表格检查不可能的字段组合,对时间序列检查跳变与周期。
每次更新生成器都保留上一版。若新生成器改善当前域,却无法重现早期域,可以用多生成器、条件适配器或固定历史快照,而不是强迫一个模型承担无限记忆。
## 用时间轴评测,而不是只看最后一轮
增量学习至少记录四类指标:学习新阶段后的当前任务表现;所有历史阶段的平均表现;每个旧阶段相对其最佳时刻下降多少;新知识是否帮助了旧任务。
评测集必须按时间冻结。第一个版本在第一批测试,第二个版本同时在第一、第二批测试,依此类推。这样能画出每个阶段的遗忘曲线,而不是只报告最后一个混合分数。
还要做更新前测试。新批数据进入训练前先让旧模型预测,记录真实分布变化。否则无法区分“环境已经变了”和“训练把模型训坏了”。

## 一条稳健的更新流水线
第一步冻结新数据窗口,检查标签延迟与重复。第二步运行旧模型,识别漂移和新增错误。第三步更新或选择生成器,生成按类别与时间分层的回放样本。
第四步训练多个候选:只用新数据、真实小缓冲、合成回放、回放加蒸馏。第五步在当前、全部历史、极端场景和真实锚点上比较。第六步影子运行,再小比例发布,并保留旧模型与生成器的回滚能力。
只有当新任务改善达到目标、历史退化低于阈值、生成样本检查通过时才替换。若没有候选同时满足,不更新比带着遗忘上线更好。
## 什么时候不值得使用合成回放
若旧数据规模很小且可以安全保留,直接保存代表性样本通常更简单。若生成器无法重现关键长尾,合成回放会制造虚假信心。若任务标签经常重新定义,应先修复标签映射,而不是让模型记住互相矛盾的过去。
合成数据在增量学习中的价值,是用有限存储重建足够多的历史练习。它不是完美记忆。用真实锚点校准回忆,用时间切片测量遗忘,用版本与回滚控制变化,模型才能学到新的,也不轻易丢掉旧的。
## 参考资料