先教一个神经网络区分苹果和梨,再让同一个网络学习区分猫和狗。回头再问它苹果的问题,它就答不上来了。它忘掉了学过的东西——不是一点一点地忘,而是几乎忘得一干二净。
这种现象叫作灾难性遗忘。人们发现它已有三十多年,至今仍是机器学习中最顽固的难题之一。人身上不会发生这样的事:学会开车并不会让人忘记怎么骑自行车。网络之所以会这样,是因为它“知道”的一切都存放在同一组权重里。当新任务把这些权重往自己需要的方向拉扯时,旧任务留下的痕迹就被覆盖了。
同样的数字,旋转的世界
要测量这种遗忘,需要一个干净的实验设置:任务之间要足够相似,比较才有意义;又要足够不同,才能给网络施加压力。常用的办法很巧妙:取经典的手写数字数据集 MNIST,每个任务把图像旋转一个固定的角度。
数字相同,类别相同,难度也相同,唯一变化的是世界的倾斜角度。已经学会零度任务的网络转到四十五度时,面对的是一个真正陌生的分布——于是它开始丢掉第一个任务。
对抗遗忘的四种策略
学术界用四种不同的思路来应对这个问题。它们处理的是同一种张力:网络既要足够灵活,才能学会新东西;又要足够稳固,才能守住旧知识。
方法 一个问题的四种答案
- EWC——先测出哪些权重对旧任务至关重要,再让改动这些权重的代价变得很高。可以说是一种有选择的僵化。
- SI——把同样的思路变成连续的过程:在整个学习过程中逐步更新每个权重的重要性。不再重要的权重会被放开。
- A-GEM——保留一小部分早期任务的样本。每走一步之前,先检查这一步会不会损害在这些样本上的表现;如果会,就调整方向。
- LwF——完全不存储数据。它记录的是网络过去的自己给出的答案,并要求新网络忠于这些答案。网络成了自己过去的老师。
真正的变量不是算法
到目前为止,大家问的都是:哪种方法最好?这项研究提出了一个更有意思的问题:任务的顺序到底有多重要?
要回答它,就得能够说清一个任务有多难、两个任务之间差别有多大。一种叫 Task2Vec 的方法恰好能做到:它让数据集通过一个预训练网络,生成一个代表该任务的向量。任务一旦变成向量,它们之间的距离就可以测量了。
由此得出两个指标。总复杂度是各个任务难度之和——整个序列有多重?序列异质性是相邻任务之间差距之和——一路上的弯转得有多急?
这两个指标都随最终错误率明显上升。一个序列会让模型遗忘多少,可以从序列本身的结构估计出来,与选用哪种算法无关。
谁擅长什么?
这些算法也显露出各自的脾性。A-GEM 在任务数量少、过渡平缓时表现很好,但当任务之间跳跃剧烈时就吃力了——它保留的那点小小的记忆不足以代表一个截然不同的任务。
EWC 和 SI 对序列结构出奇地不敏感:八个任务还是十八个,有序还是杂乱,结果都差不多。LwF 在长序列上才真正显出本事;多样性对它不是问题,甚至可以说是优势。
这意味着什么?
实际的结论是:如果你要搭建一个持续学习的系统,一半的工作是选对算法,另一半是决定以什么顺序给它看任务。课程安排和教学方法同样重要。
局限也同样清楚。这项工作只用了一个数据集和一类任务。旋转的数字是一个干净的实验室,而不是现实世界的纷乱。Task2Vec 生成的向量还取决于用来生成它们的网络——测量工具本身也带着一个假设。这些都不会推翻结论,只是标出了它能推广到多远。
本文依据什么?
本文基于在埃夫里–巴黎萨克雷大学(Université d'Évry Paris-Saclay)完成的研究 Apprentissage Continu de Tâches Structurellement Reliées(Nadjib Atamnia、Selim Kusursuz、Omar Gharib;指导教师:Massinissa Hamidi 教授,2024–2025)。
- Kirkpatrick et al., Overcoming catastrophic forgetting in neural networks, PNAS, 2017.
- Zenke, Poole, Ganguli, Continual learning through synaptic intelligence, 2017.
- Chaudhry et al., Efficient lifelong learning with A-GEM, 2019.
- Li, Hoiem, Learning without forgetting, 2017.
- Achille et al., Task2Vec: Task embedding for meta-learning, ICCV, 2019.
- Nguyen et al., Toward understanding catastrophic forgetting in continual learning, 2019.