模型学完外语,就忘了母语。模型背完新法律条款,就忘了基本算术。这种被工程师戏称为「金鱼记忆」的灾难性遗忘,是当前所有深度学习系统最深层的慢性病之一。它不像过拟合那样浮在水面上,而像地基层的裂缝——你越堆叠新任务,塌得越快。
一、神经元的归属之争
神经网络不像人脑那样有专门的功能区。A 参数今天学的是语法,B 参数上周学的是算术,它们在同一个张量里彼此纠缠。新的梯度下降一来,权重被推去拟合新任务,旧任务对应的那一片参数空间就被悄悄推开。损失函数下降,但旧能力曲线同步下坠——这正是「灾难性」二字的来源:旧能力不是慢慢褪色,而是断崖式坍塌。
二、为什么增量训练这么难
从纯数学角度,神经网络是一个高维参数空间里的函数拟合器。每学一个新任务,就要在曲面上新开一片盆地。盆地之间有「鞍点」也有「壁垒」,梯度下降为了压低当前任务的损失,会顺脚把隔壁盆地的边缘踩塌。研究者在 1990 年代就发现,让一个简单 MLP 连续学 10 个分类任务,第 1 个任务的准确率会从 95% 掉到 20% 以下——完全归零。
三、七种自救,各有代价
3.1 弹性权重巩固(EWC)
给每个参数算一个「重要度」——这个参数对旧任务有多敏感。在学习新任务时,给高重要度的参数加一个弹簧,把它们拉回原位。代价:旧能力保住了,但学习新任务的速度会明显下降。
3.2 经验回放
把旧任务的几千个样本混在新任务里一起练。模型以为历史没走远。代价:需要长期存储旧数据,医疗、金融这种数据不能留的场景直接出局。
3.3 生成式回放
不存原数据,存一个生成器——让它在每次训练时「伪造」一批旧样本。代价:生成器本身也在变,伪造出来的样本会慢慢偏离真实分布,记忆失真。
3.4 渐进网络(Progressive Networks)
每来一个新任务,就在旁边加一列新参数,旧列全部冻结。代价:参数随任务数线性膨胀,10 个任务之后体积会膨胀 10 倍,部署不现实。
3.5 知识蒸馏 + 旧模型快照
在训练新模型时,让它同时模仿旧模型的输出分布。代价:需要同时维护一个完整的旧模型作为「教师」,推理链路变长。
3.6 模块化适配(LoRA / Adapter)
把大模型的权重全部冻结,只插入几个百万级参数的小插件来学新任务。代价:插件之间不能共享知识,每个新任务还是从零起步。
3.7 上下文学习外挂
彻底不训练新参数,把所有「任务记忆」塞进提示词的上下文窗口里。代价:上下文窗口有上限,长链历史会被截断;而且推理成本随上下文长度线性上涨。
四、工业界目前的妥协方案
大模型厂商不会告诉你的是:他们也没有真正解决遗忘,他们用的是「定期重训 + 模型版本切换」。每隔几个月,把所有历史数据混在一起重新训一遍,发布一个新版本。用户的对话历史、个性化偏好,在版本切换时归零。这就是为什么你换一次版本号,过去训练的「自定义助手」就全没了——不是 bug,是妥协。
五、为什么这条线值得长期关注
持续学习是 AGI 的前置条件。一个不能保留旧能力的系统,不可能完成「连续多年服务同一用户」这种最基本的服务承诺。我们今天所有的「模型即服务」产品,本质上都是金鱼——记忆只活在单次会话里。一旦走出对话窗口,模型就是陌生人。
六、未解之问
人脑为什么不会灾难性遗忘?海马体每天新生神经元,旧记忆却保留——这套机制到现在仍是神经科学最大的谜。如果哪天有人把海马体的「索引-存储分离」机制搬到神经网络里,灾难性遗忘这条线才会有真正的解法。在那之前,所有的「自救」都只是给金鱼装上更短周期的水循环。
七、本文视角
灾难性遗忘不是一个孤立的技术难题,它是「如何让硅基生命拥有连续自我」这个问题在工程层的影子。我们今天对它的每一点修补,都是在为未来的连续智能铺第一块砖。这条路还很长,但每一次让模型「不忘本事的训练」——哪怕只能保住 10% 的旧能力——都是值得记录的小进步。
