为什么 LLM 需要”学而不忘”
人类的学习是增量的。我们学会骑自行车之后去学游泳,不会因此忘记怎么骑车。但大语言模型(LLM)做不到这一点——在下游任务上微调之后,模型原本掌握的通用能力往往会显著退化,这就是经典的灾难性遗忘(Catastrophic Forgetting)问题。
这个问题在实际应用中的后果非常严重。想象一个企业部署了一个通用 LLM,先在代码生成任务上做了一轮微调,效果很好;接着又在客服对话上做了一轮微调,结果发现代码生成能力大幅下降。每次适应新任务,都像是在玩”打地鼠”——按下一个,弹起另一个。
当前主流的解决思路——LoRA、正则化、经验回放——虽然各有所长,但都面临一个根本性的矛盾:稳定性(stability)与可塑性(plasticity)的权衡。方法越保守,遗忘越少,但新任务的学习能力也越弱;反之亦然。
UC Berkeley、UT Austin、Mila 等机构的最新论文 “Learning, Fast and Slow: Towards LLMs That Adapt Continually”(arXiv:2605.12484)提出了一个巧妙的解法:Fast-Slow Training(FST),不再试图在单一维度上寻找平衡点,而是将适应过程拆分为两条独立的通道,让各自发挥所长。
灾难性遗忘的根源
要理解 FST 为何有效,先要搞清遗忘是怎么发生的。
参数空间的干扰
LLM 的所有知识都编码在模型参数 theta 中。当我们在任务 A 上微调时,优化器会将 theta 推向适合任务 A 的区域;接着在任务 B 上微调,theta 又被推向另一个区域。问题在于,这两个区域在高维参数空间中往往没有重叠——到达任务 B 的最优点,意味着离开任务 A 的最优点。
论文通过追踪 KL 散度(KL(pi_train || pi_base))量化了这个漂移过程。在标准 RL 训练中,模型参数持续远离基础策略(base policy),KL 散度不断增大。这种偏移不仅导致在旧任务上性能下降,还会降低输出熵(output entropy),使模型变得过于”专注”,丧失学习未来新任务的可塑性。
现有解决方案的局限
当前主流方法各有短板:
| 方法 | 思路 | 局限 |
|---|---|---|
| LoRA | 冻结大部分参数,只更新低秩分解矩阵 | 参数容量受限,新任务学习能力有上限 |
| L2 正则化 | 对参数偏移施加惩罚 | 稳定性与新任务性能难以兼顾 |
| 经验回放 | 训练时混入旧任务数据 | 需要存储旧数据,隐私和存储成本高 |
| EWC | 保护对旧任务重要的参数 | 计算 Fisher 信息矩阵成本高昂 |
所有这些方法都有一个共同假设:适应必须发生在参数更新这一条通道里。FST 挑战了这个假设。
核心方法:Fast-Slow Training
FST 的核心洞察来自认知科学中的”快与慢”双系统理论(Kahneman 的 System 1 与 System 2)。它将 LLM 的适应机制拆分为两条互补的通道:
慢权重(Slow Weights):模型参数 theta
慢权重就是传统意义上的模型参数。它们通过强化学习(RL)更新,编码长期持久的推理行为。慢权重的更新代价高——每次参数调整都会不可逆地改变模型的全局行为——因此需要保守、缓慢地移动。
论文采用 ScaleRL 方案进行慢权重更新,使用 CISPO(截断重要性采样 REINFORCE)目标函数,基于可验证奖励(verifiable rewards)来更新策略。
快权重(Fast Weights):文本上下文池 Phi
这是 FST 最关键的创新。快权重不是模型参数——而是一组可优化的文本提示(textual prompts)。它们通过 GEPA(一种反射式进化提示优化方法)维护,形成一个 Pareto 前沿提示池。
快权重的优势在于:
- 更新成本低:修改文本提示远比更新亿级参数便宜
- 信号获取快:可以直接从 rollout 的文本反馈(思维过程、工具调用、错误信息)中学习,而非仅从标量奖励中学习
- 不修改模型参数:因此不会导致遗忘
双通道交替优化
FST 的训练以周期(cycle)为单位进行。每个周期包含两个阶段:
阶段 1 — 快权重更新:固定当前模型参数 theta_c,运行 GEPA 优化提示池。GEPA 使用当前策略进行 rollout,利用反射 LM 从 rollout 的完整文本(包括思维过程、错误信息)中提取改进信号,生成新的候选提示,并保留表现最优的 top-K 个提示作为新的 Pareto 前沿 Phi_{c+1}。
阶段 2 — 慢权重更新:固定更新后的提示池 Phi_{c+1},在接下来的 T 步中用 RL 更新模型参数。每个训练样本会从提示池中随机采样一个提示作为上下文,这样模型在不同提示条件下都能获得训练信号。完成 T 步后,进入下一个周期。
这个设计的巧妙之处在于:快权重先吸收了任务级别的适应信号——比如”这类问题需要先做分步计算""注意边界条件”——减轻了慢权重的适应压力。慢权重不再需要独自承担所有任务特异性信息的编码,因此可以保持更接近基础模型的位置。
关键实验结果
论文在三个任务族上验证了 FST,使用 Qwen3-8B 作为基础模型:
- CodeIO:代码输入输出预测
- Math (Polaris):数学推理
- HoVer-hard:多跳事实验证
优势 1:数据效率提升高达 3 倍
FST 在显著更少的训练步数内就达到了 RL 基线的峰值性能:
| 任务 | FST 达到 RL 峰值所需步数 | 加速倍数 |
|---|---|---|
| CodeIO | ~500 步 vs RL ~1500 步 | 3.0x |
| Math (Polaris) | ~1050 步 vs RL ~1450 步 | 1.4x |
| HoVer-hard | ~220 步 vs RL ~650 步 | 3.0x |
这意味着在相同的计算预算下,FST 能够更快地获取有用的任务信号。快权重通过文本反馈在训练早期就捕获了任务结构,为慢权重提供了更好的学习条件。
优势 2:更高的性能上限
不仅学得更快,FST 最终达到的性能天花板也更高。论文拟合了性能渐近线(sigmoid curve),发现 FST 在所有三个任务上的渐近值都超过了纯 RL:
- CodeIO:47.4% vs 43.0%(+4.4pp)
- Math:49.2% vs 46.4%(+2.9pp)
- HoVer-hard:25.0% vs 17.3%(+7.7pp)
将部分任务适应分流到文本上下文通道 Phi,使整体系统收敛到了更高的精度上限,这是纯参数更新方法无法触及的。
优势 3:参数漂移减少 70%
在匹配的奖励水平下,FST 训练出的模型参数距离基础模型的 KL 散度远低于纯 RL。具体来说,在所有四个评估任务(CodeIO、HoVer、Physics、Math)上,FST 在达到相同奖励时,KL 散度最多减少 70%。
这个结果的意义在于:更小的参数漂移意味着模型保留了更多的基础能力和输出多样性,为后续的持续学习留下了更大的空间。
优势 4:保持可塑性
论文设计了一个精巧的”可塑性探测”实验:先在任务 X 上训练(用 RL 或 FST),然后从得到的检查点出发,在新任务 Y 上运行标准 RL。
结果非常鲜明:
- Math → HoVer-hard:RL 初始化的模型在新任务上的学习能力几乎完全崩溃,40 步之内准确率降至接近 0%,且不再恢复。而 FST 初始化的模型成功学会了新任务,最终表现接近从头训练的基线。
- Physics → HoVer-hard:FST 初始化在 400 步时达到 24.2%,RL 初始化仅 19.9%。
这表明 FST 不会像标准 RL 那样将慢权重过度特化到当前任务,从而保留了学习未来新任务的能力。
优势 5:真正的持续学习
最关键的实验是连续三任务场景:HoVer → CodeIO → Physics,每个任务训练 200 步,中间不重置,共 600 步。
结果:
- FST 在每个阶段都能迅速达到接近峰值的性能,体现了快权重即时适应的能力
- RL 在第一个任务(HoVer)上表现尚可,但在第二个任务(CodeIO)上几乎完全停滞,仅获得 +2.5pp 的微弱提升;FST 在同一阶段的任务内获取速率是 RL 的 约 8 倍
- 到第二阶段结束时,FST 在 CodeIO 上领先 RL 17.0pp
这个实验直接证明了:在任务不断切换的真实部署场景中,纯参数更新方法会逐渐”僵化”,而 FST 始终保持学习活力。
为什么 FST 有效:两个关键观察
快权重获取信号更快
在一个合成的星图搜索任务上,RL 在前约 300 步内奖励几乎为零——慢权重需要大量梯度更新才能开始产生有意义的行为变化。而 FST 在约第 50 步就逃离了零奖励区间,领先 RL 一个数量级。
原因在于:GEPA 可以从 rollout 的完整文本反馈中学习——包括错误信息(如 “ZeroDivisionError: division by zero”)、工具调用结果、中间思维步骤——而 RL 只能从一个标量奖励信号中学习。丰富的文本反馈让快权重能在几个周期内就提取出任务结构。
快慢协同提升上限
论文对比了三种方法来理解快慢通道各自的贡献:
- GEPA alone(仅快权重):能快速爬升但很快饱和,受限于提示优化的能力上限
- RL alone(仅慢权重):学习缓慢,且最终性能也受限于参数坍缩
- FST(快慢协同):性能天花板高于前两者之和
快权重和慢权重并非简单叠加,而是形成了正向反馈:快权重为慢权重提供了更好的训练条件(更高的初始奖励信号),慢权重的进步又使得 GEPA 能在更强的基础上优化出更好的提示。
工程启示
如何在实践中使用 FST
FST 的实现并不复杂,核心工程步骤如下:
- 选择提示优化器:论文使用 GEPA,但框架对此不做硬性要求。APE、OPRO、DSPy/MIPROv2 等方法都可以作为快权重优化器
- 设定周期长度:论文使用
T=6步 RL 更新作为一个周期,每个周期后运行一次 GEPA 更新 - 维护提示池大小:
K=4或K=8个候选提示,作为 Pareto 前沿 - 交替训练:在每个 RL minibatch 中,从提示池均匀采样一个提示拼接在输入前面
# FST 训练循环伪代码
for cycle in range(num_cycles):
# 快权重更新:GEPA 优化提示池
prompt_pool = gepa_optimize(
model=model,
data_batch=lookahead_batch,
prev_prompts=prompt_pool,
top_k=K
)
# 慢权重更新:RL 训练 T 步
for step in range(T):
prompt = random.choice(prompt_pool)
rollouts = model.generate(data, context=prompt)
rewards = verifier(rollouts)
model.update(cispo_loss(rollouts, rewards))
与现有框架的集成
FST 对现有训练基础设施的改动很小:
- 不需要修改模型架构:使用标准 Transformer,不增加参数
- 兼容主流 RL 框架:论文基于 CISPO/GRPO,但 PPO、DPO 等方法同样适用于慢权重通道
- 提示池可持久化:
Phi是纯文本,可以版本控制、跨训练 session 复用
局限性与未来方向
论文坦诚地讨论了几个值得关注的方向:
具体实例化的选择空间:论文选择了 CISPO 作为慢权重优化器、GEPA 作为快权重优化器,但这只是 FST 框架的一种实例化。不同的优化器组合可能在不同场景下有不同效果,这需要更多探索。
计算效率的优化空间:虽然 FST 的额外开销不大,但 GEPA 的 rollout 和反射过程仍有优化余地。如何在提示优化和权重优化之间更高效地复用计算资源和 rollout 轨迹,是一个值得探索的工程问题。
蒸馏路径:论文初步尝试了将快权重的信息蒸馏(distill)到慢权重中,即用 FST 演化出的提示条件下的模型输出作为 teacher,训练一个不依赖提示的 student。实验表明 FST-distill 优于纯 GEPA 但不及完整 FST,这条路径值得更深入的研究。
更长序列的持续学习:论文验证了 3 个任务的序列学习,但真实世界的部署可能需要在数十甚至数百个任务上持续适应,更长序列上的表现仍需验证。
总结
FST 的贡献在于打破了一个长期隐含的假设:LLM 的适应不必只依赖参数更新这一条路径。通过引入文本上下文作为快权重通道,与传统参数更新(慢权重)形成互补,FST 实现了一系列令人印象深刻的改进:
- 3 倍数据效率:更快达到相同性能
- 更高性能上限:渐近精度一致超过纯 RL
- 70% 参数漂移减少:模型保持接近基础策略
- 可塑性保持:不再因为学了任务 A 就丧失学习任务 B 的能力
- 真正的持续学习:在连续三任务场景中,每个阶段都能快速达到接近峰值
对于正在构建 LLM 持续训练管线的工程团队来说,FST 提供了一个实用且低侵入性的方案。它不需要更换模型架构,不需要存储旧任务数据,只需要在训练流程中加入一个文本上下文优化的环节。这种”让快的更快、让慢的更稳”的设计哲学,与人类认知系统中的快慢双系统思维不谋而合。
当 LLM 从”训练一次、部署永久”的静态工具,走向”持续学习、不断进化”的动态系统,FST 指出了一条可行的道路。
论文信息
- 标题:Learning, Fast and Slow: Towards LLMs That Adapt Continually
- 作者:Rishabh Tiwari, Kusha Sareen, Lakshya A Agrawal, Joseph E. Gonzalez, Matei Zaharia, Kurt Keutzer, Inderjit S Dhillon, Rishabh Agarwal, Devvrit Khatri
- 机构:UC Berkeley, Mila, UT Austin, Eragon, Periodic Labs, Mirendil
- 链接:arXiv:2605.12484