近年来,大型语言模型(LLMs)在诸如
安全对齐、指令微调
等
领域均取得了卓越表现。然而,在对这些模型进行
持续训练
时,人们经常观察到旧任务性能的骤降。传统观点往往将其归结为
灾难性遗忘
。但我们的最新研究发现,这种表观遗忘实际上是一种
虚假遗忘
——在大多数情况下,模型对旧任务的
潜在知识
依然完好,只是
任务对齐
在新任务初期的学习过程中遭到了破坏。
论文标题:
Spurious Forgetting in Continual Learning of Language Models
论文链接:
https://openreview.net/forum?id=ScI7IlKGdI
代码链接:
https://github.com/zzz47zzz/spurious-forgetting
一、引言:为什么说“大模型遗忘”有时是一种假象?
尽管大型语言模型(LLMs)在众多任务上展现出卓越的能力,但近年来的研究表明,它们在
持续学习
场景下往往遭遇严重的“灾难性遗忘”。也就是说,模型在学习新任务时,旧任务的性能会出现急剧下降。然而,我们在研究中观察到了一种出人意料的现象:
即使模型在单一任务上进行了大规模训练,当引入新任务时,旧任务的性能仍然可能骤降。
图1. 部分场景下,新任务训练导致旧任务性能暴跌;但只需极少量(甚至非原数据)的微调就能将其恢复
这一现象在
安全对齐
和
持续指令微调
等场景中尤为明显。例如,在安全对齐中,LLM 在超过 10 万条安全数据上微调后,本应具备稳健的安全能力。然而,仅需 10 条“身份转换”样本(Identity Shift Examples),就能导致其安全性从 100% 下降到 0%!更令人惊讶的是,若随后使用极少量的拒绝示例进行微调,安全能力又能迅速恢复到 99% 以上。
类似地,在 TRACE 持续指令微调基准测试中,模型在新任务上的优化会导致旧任务准确率骤降。然而,随着训练继续,或者仅引入少量旧任务数据,旧任务性能又会回弹至相当高的水平。这使我们深思:
模型是否真的“遗忘”了旧任务知识,还是仅仅在新任务对齐时失去了原有的任务对齐能
力
?
1.1 虚假遗忘假设
我们提出虚假遗忘概念,重新审视“遗忘”现象。我们假设,模型的任务表现由两个关键因素组成:
换句话说,
任务性能的下降可能并非由于旧知识的遗忘,而是模型在新任务初期丧失了对旧任务的任务对齐能力
。
为了验证这一假设,我们设计了一系列严格可控的实验,包括
合成数据实验和理论分析
,以区分“真正遗忘”和“虚假遗忘”的影响因素。
1.2 核心发现
-
前 150 步训练时,旧任务性能的断崖式下滑
:新任务初期,新旧任务的梯度冲突最为强烈,导致旧任务对齐遭到破坏,表现旧任务性能剧烈下跌。
-
两阶段更新的正交性导致对齐冲突
:在顺序微调的情况下,新任务与旧任务的对齐方向直接是正交的,导致学习新任务时,旧任务的对齐无法被恢复,从而导致灾难遗忘。
-
潜在知识依然存在,稍加微调即可恢复
:如果是真正被摧毁,性能很难快速重回高点。但实测发现,少量旧数据或继续训练几步,就可让旧任务性能迅速回升。
-
冻结底层参数(Freeze)可显著缓解“虚假遗忘”
:与现有正则化(EWC)、模型合并(Task Vector)、梯度投影(Gradient Projection)、生成式回放(LAMOL)等方法相比,冻结底层参数是成本极低又行之有效的策略。
二、研究动机:安全对齐 & 持续指令微调中的虚假遗忘现象
2.1 安全对齐实验
我们复现了 AOA(Absolutely Obedient Agent)对齐攻击实验,该实验在 LLaMa-2-7B-Chat 模型上进行了如下操作:
-
第一阶段:在 10 万条安全数据上训练 LLaMa-2-7B-Chat,使其安全性能达到 100%(Jailbreak 率降至 0%)。
-
第二阶段:仅用 10 条身份转换攻击数据进行微调 10 轮,导致安全性能直接降为 0%。
-
第三阶段:使用 10 条拒绝样本进行微调,安全性能迅速恢复至 99%。
这一现象表明,在缺少旧任务对齐数据的情形下,模型的安全能力一度“消失”,但其实只是
短期丧失了对安全指令的对齐
而已。
2.2 持续指令微调实验
在 TRACE 基准测试中,我们使用 LLaMa-3-8B-Instruct 复现了持续指令微调现象,发现:
-
旧任务的准确率在训练新任务时大幅下降,甚至接近 0%。
-
当继续训练一段时间或回放少量旧任务数据时,旧任务准确率又可回升至较高水平。
这些现象强烈暗示:模型的旧任务知识很可能还“留在”参数中,但由于缺少同步训练或底层稳定措施,旧任务的对齐方式被破坏,导致“虚假遗忘”的出现。
三、深入剖析:合成数据实验如何揭示“虚假遗忘”本质?
为排除真实数据中可能存在的知识重叠或噪音因素,我们在论文中
精心构造了名为 Biography 的合成数据集
,并在其中进行了
从零开始
的可控实验,以从
性能、损失地形、模型权重更新与特征表示
四大视角剖析“虚假遗忘”。
3.1 Biography 合成数据集与实验设置
数据构造
:我们构造了名为 Biography 的合成数据集,共包含 20 万个虚拟人物,每个人物有 6 个属性(如生日、大学、公司等)。该数据集分为两部分:
-
预训练数据
:如图 2 所示,格式为“Curtis Chase Emley 出生于 1952 年 5 月 28 日”一类的描述性语句;
-
微调数据
:如图 3 所示,格式为“Curtis Chase Emley 的生日是?答案:1952 年 5 月 28 日”一类的 QA 问答样式,方便我们监控模型在问答场景下的准确率。
图2. Biography中的预训练数据示例
图3. Biography中的QA数据示例
-
Pretraining
:先用 10 万个人物的描述性语句对模型进行预训练,直到预训练损失收敛;
-
Task 0
:随后用与这 10 万人物相关的 QA 数据进行微调,使模型在“已知人物”的问答准确率达到近 100%;
-
Task 1
:再加入 2 万个
新
人物的描述与 QA 数据,持续训练,观察其对旧任务 (Task 0) 的影响。在整个过程中,我们使用较小的学习率(如 )并训练足够长的步数(6 万多步),以确保模型充分学习。
图4. 持续学习流程:先进行预训练,再依次学习Task 0和Task 1
为什么选用合成数据
?对于真实数据(如 TRACE),预训练与微调数据之间可能存在复杂的重叠;不同任务之间也可能共享部分知识,或引入噪音干扰。合成数据能够
严格划分
旧任务与新任务的知识域,并让我们
精准地分离“潜在知识”与“任务对齐”的影响
。此外,通过
从零开始
的训练,我们可以彻底排除模型原生的预训练干扰,令实验更具可控性。
3.2 仅150步,旧任务准确率从100%狂跌到10%?
如下图所示,模型在开始学习新任务 (Task 1) 后,旧任务在前 150 步内的准确率从
100%
急剧下降至仅
10%
左右:
图5. 在前150步训练中,旧任务准确率断崖下跌;但用少量旧数据微调后能回到96%+
但是,当我们尝试使用
少量旧任务数据
对模型再微调 1 个 epoch 后,旧任务的准确率竟能
从 10% 一下恢复到 96% 以上
!为此,我们在实验中专门设计了
恢复实验
(如图 6 所示),即在不同阶段(如训练刚开始、训练若干步后、训练结束时)都尝试用一半的旧数据微调并用另一半旧数据测试。
图6. 恢复实验:用一半旧数据微调,测评另一半旧数据是否被“记得”
实验结果如图 5 所示:即便旧任务表现看似崩溃,只要进行简短的微调就可以让旧任务的表现回到高水准,这正是
虚假遗忘
的核心特征。这强烈表明,模型的旧知识
并未被彻底毁灭
;它只是丢失了旧任务的对齐方式。随着少量旧数据或继续训练几步,就能让旧任务再次与模型建立对齐。
3.3 损失地形视角:为什么是“前150步”最关键?
为了进一步揭示旧任务性能骤降发生在前 150 步的根源,我们对 Task 0 和 Task 1 的损失函数在模型权重更新方向上的变化进行了可视化(如下图所示)。
图7. 顺序微调(SEQ)在 Biography 数据上的损失地形。从图中可见,新任务(下方)损失在前期大幅下降,旧任务(上方)损失却陡升
这里的可视化方法是选取 2 个关键的更新方向:1)
新任务初期 150 步的更新方向
和 2)
150 步之后到训练结束的更新方向
,并在这个二维空间中绘制旧任务和新任务各自在不同权重位置的损失分布。
训练初期(前 150 步)
:为了快速学到新任务(Task 1)的对齐,模型参数会在与 Task 0 的对齐方向“相反”的梯度方向上大幅更新(纵轴方向上向上更新),使新任务损失快速下降。但同时也消解(Undo)了旧任务的对齐,导致旧任务损失大幅上升;
训练后期(150 步后)
:模型逐渐同时学习新任务对齐(未在图中体现)与新任务知识(横轴方向向右更新),旧任务的对齐(纵轴方向上向下更新)在新任务学习过程当中有所恢复,但无法自动回到原先 100% 的性能。
新任务对齐未在图中体现说明新旧任务的对齐方向是正交的,因此学习新任务对齐没有办法同时对齐到旧任务,这也就最终导致了最终旧任务知识存在但是无法被利用的“虚假遗忘”现象。我们提供一个示意图在图 8。
图8. 在顺序微调(SEQ)下,新旧任务对齐方向相互正交;当使用回放或冻结底层参数时,两者更易协同对齐
3.4 权重更新:底层参数在两阶段更新的方向相互正交
进一步地,我们比较了不同训练阶段的权重更新方向夹角,重点关注底层嵌入层(Embedding)、注意力层(Attention)和前馈层(MLP)等关键模块。结果发现:
在新任务的前 150 步(蓝色)
:模型权重更新与旧任务的更新方向非常接近,意味着此时的更新主要是“消解(Undo)”旧任务对齐;
在新任务后续训练阶段(橙色)
:底层的权重更新方向与之前的更新几乎正交。还记得,我们刚刚提到,模型在 Task 1 开始时主要是“消解(Undo)”旧任务对齐,而后续训练,主要是同时学习新任务对齐与新任务知识。因此,两阶段的更新方向相互正交说明,(a) 学习新任务对齐没有办法同时对齐到旧任务,(b) 而且罪非祸首是源自于
底层
参数。
图9. 旧任务 (Task 0) 与新任务 (Task 1) 不同阶段权重更新方向的夹角对比,颜色代表不同类型的模型参数(embedding、attention、MLP等)
3.5 特征视角:自底向上的偏移
从
特征表示
的角度,我们研究了在不同训练阶段,各层 Transformer 的隐藏状态主成分是如何变化的。主要结论如下:
新任务初期 (Step 0 - Step 150)
:主要的特征漂移源自底层参数的漂移,并且向上层逐步传递;
新任务后期 (Step 150 - Step Final)
:
150 步之后的特征漂移会与前 150 步的漂移相抵消,从而使最终的特征在原来主成分方向上几乎保持不变;但这并不意味着
旧任务对齐被重新学习到
,而是说明旧知识的底层表示仍然存在,只是旧任务对齐需要重新构建。
图10. 不同训练阶段,底层与上层特征在原主成分方向上的偏移
这一结果也与“少量微调即可恢复旧任务”的实验现象相吻合:虽然表面上似乎“忘掉”了旧任务,但特征仍潜藏着相关知识,只是旧任务的对齐方式被暂时“忘记”。
四、理论分析:两阶段更新的正交性为何导致虚假遗忘?
在简化的
多层残差网络
框架下,我们从理论上证明了两阶段更新方向正交时:
-
对齐被破坏但知识仍在
:两阶段更新方向正交时,输出特征在
原
来
主成分方向上保持不变
,这意味着旧任务对齐被遗忘但是旧任务知识仍然可能不受影响
-
深层放大效应
:输出特征的偏移量会在多层网络结构中
逐层放大
,最终导致完全丧失旧任务的对齐,从而导致旧任务性能断崖下跌。
-
冻结底层层数的有效性
:如果在新任务训练时将底层参数冻结(Freeze),就可以在很大程度上可以
减少顶层输出特征的漂移
,阻止对旧任务对齐的破坏,从而显著缓解“虚假遗忘”。
这些推导与我们的实验证据相互印证,表明
虚假遗忘的根源在于
:
学习新任务初期
丢失的
旧任务对齐
由于两阶段更新的正交性导致旧任务对齐无法被恢复。
图11. 理论分析1:对齐被破坏但知识仍在,深层放大效应
图12. 理论分析2:冻结底层层数的有效性
五、现有方法局限与“冻结底层参数”策略
为检验已有方法能否有效避免大模型中的虚假遗忘,我们选取了四类主流持续学习方法在 Biography 数据集上进行系统评测:
-
EWC (Elastic Weight Consolidation)
:基于正则化;
-
LAMOL (生成式回放)
:尝试让模型自己“生成”虚拟的旧任务数据;
-
T
ask Vector (模型合并)
:通过向量叠加或抵消来合并新旧任务参数;
-
Gradient Projection (梯度投影)
:将新任务梯度投影到与旧任务冲突最小的方向上。
而,结果发现,它们都
无法显著阻止前 150 步
对旧任务对齐的破坏:
-
EWC:无法精准定位到底层的关键对齐参数,使其在梯度冲突最剧烈的时期效果有限;
-
LAMOL:生成的旧数据质量往往不高,包含幻觉或不正确示例,无法帮助模型准确重建旧任务对齐;
-
Task Vector:难以在最初 150 步剧烈冲突的梯度中找到平衡的合并点;
-
Gradient Projection:初期的消解(Undo)对齐方向过于复杂,固定或单一方向的梯度投影无法对其进行有效避免。
图13. (b)-(e):常见持续学习方法在 Biography 数据集上的局限性
5.2 少量数据回放(Data Replay)
在我们的实验中,若能存储并回放一部分旧任务数据,与新任务一起进行混合训练,则可以一定程度上防止模型在前 150 步内“消解(Undo)”旧任务对齐,从而让旧任务的性能不至于暴跌到个位数。但其局限也很明显:
需要额外的旧数据存储
,对于隐私或规模极大的场景并不适用。
然而,回放数据本质上只是让模型在训练新任务的同时
持续提醒自己:别忘了旧任务对齐
(也如图 8 所示)。这一思路也与我们的理论分析相吻合,说明只要能“保留”或“重新对齐”旧任务,虚假遗忘就能被显著缓解。
图14. 损失地形可视化。混合 20% 旧数据回放时,损失地形更加平滑,而且回放数据能够帮助模型在对齐Task1的时候,重新对齐Task0
5.3 冻结底层参数(Freeze):简单高效
当无法使用旧数据时,“冻结底层参数”无疑是一种
近乎“免费”的策略
。它在 Biography 数据集上的实验结果表明:通过冻结包括嵌入层等若干底层参数,可将“顺序微调 (SEQ)”下旧任务的准确率从 11% 提升至 44%,而新任务的准确率仍可保持在 99% 以上——一举两得。
具体做法
:在新任务训练时,保持底层若干层(如前 6 层或前 8 层,包括输入嵌入层)固定不变,仅更新模型后续的参数。
效果与局限
:
-
-
若冻结层数太多,会牺牲对新任务的适应能力,需要在“稳定”与“灵活”之间平衡。
我们在实验中还发现,若结合
早期停止 (Early Stopping)
等技巧,可以进一步提升旧任务保留能力:在确认新任务精度已经达到理想后,过多训练反而会让对旧任务的对齐被“磨损”,此时可适时停止训练。
图15. Biography 数据集上,冻结不同数量的底层层数时,旧任务 (Task 0) 和新任务 (Task 1) 的准确率对比
与基于数据回放的方法相比,冻结底层不需要额外存储旧数据,操作也十分简单,可谓是缓解大模型“虚假遗忘”的一剂“免费午餐”。
六、真实场景实验:安全对齐、指令微调、知识编辑与增量学习
为了验证我们提出的“冻结底层参数 (Freeze)”策略是否适用于真实应用场景,我们在四种典型的持续学习任务中做了实验:
-
-
持续指令微调(CIT)
:TRACE 基准,涵盖 QA、翻译、代码、数学等多样任务;
-
持续知识编辑(CKE)
:例如在 ZSRE 数据集上,对知识进行增量更新;
-
实例增量学习(IIL)
:在 Concept-1K 数据集上对新概念进行问答增量。
实验结果均显示,冻结底层参数可以在很大程度上保持旧任务性能,同时对新任务的精度也没有太大损失。例如:
-
SA (安全对齐)
:冻结 6 层后,模型在新任务中的“被攻击成功率” (Jailbreak Rate) 可由 99.8% 大幅降至 1.15%,即旧任务(安全性)得到显著保留;
-
CIT (持续指令微调)
:在多个任务的指令场景中,冻结 3 层即能明显减少旧任务崩溃,新任务仍能维持高效对齐;
-
CKE (持续知识编辑)
:当新旧知识格式较为相似时,虚假遗忘更易发生;冻结底层参数同样能够减轻旧知识的“假性遗忘”;
-
IIL (实例增量学习)
:在 Concept-1K QA 场景中,冻结 2 层后,旧概念问答准确率显著提升,兼顾了新概念学习。
图16. 在多项真实场景持续学习基准中,冻结底层参数能显著提升旧任务保持率,新任务准确率仍维持高水准
此外,我们还在
数学推理、代码 SFT
等更多场景中测试了冻结策略,均能有效缓解对旧任务的虚假遗忘,且不需要旧数据储存,展现了其通用性和高效性。
图17.(左):在数学推理场景的连续微调(右):在代码生成场景的连续微调。均可观察到冻结底层参数能大幅缓解旧任务性能下滑
七、与现有研究的呼应:LLM对抗遗忘能力的再审视
值得注意的是,我们的发现与 Zheng et al. (2024) 的研究结论高度一致。他们的研究表明,LLM 具有较强的
对抗遗忘能力
,即在持续学习过程中,模型能够在一定程度上保留旧任务的知识。我们的研究在此基础上进一步拓展,揭示了“虚假遗忘”现象的普遍性,并从多个维度深化了对这一问题的理解:
任务场景的拓展
:我们从 Zheng et al. (2024) 当中狭义的连续学习的分类任务场景(如连续文本分类、连续 NER、连续关系抽取)延伸至
广义的连续学习场景
,包括连续指令微调、对齐任务、代码生成以及数学推理的 SFT(Supervised Fine-Tuning)场景。
这一拓展表明,“虚假遗忘”现象不仅存在于分类任务中,也广泛存在于生成任务中。
生成任务中的虚假遗忘现象尤为显著
,因为生成任务通常需要模型在多个任务之间灵活切换,而任务对齐能力的丧失会直接导致生成质量的下降。
模型架构的探索
:我们从 Zheng et al. (2024) 中
解耦分类器与 LLM Backbone 的角度
出发,延申到了解耦了
任务对齐能力与潜在知识
的关系。研究表明,模型在持续学习过程中,潜在知识并未被完全破坏,而是任务对齐能力受到了干扰。
这一发现表明,LLM 的强对抗遗忘能力不仅局限于分类任务,也不局限于需要额外分类头的模型架构
。即使在没有显式分类头的生成任务中,LLM 依然能够通过调整任务对齐能力来适应新任务,而不会完全丢失旧任务的知识。
模型规模的验证