Paper

论文精读:Learning, Fast and Slow — 让大模型持续学习而不遗忘

10 min read ·

为什么 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 前沿提示池。

快权重的优势在于:

双通道交替优化

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 作为基础模型:

优势 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:

将部分任务适应分流到文本上下文通道 Phi,使整体系统收敛到了更高的精度上限,这是纯参数更新方法无法触及的。

优势 3:参数漂移减少 70%

在匹配的奖励水平下,FST 训练出的模型参数距离基础模型的 KL 散度远低于纯 RL。具体来说,在所有四个评估任务(CodeIO、HoVer、Physics、Math)上,FST 在达到相同奖励时,KL 散度最多减少 70%

这个结果的意义在于:更小的参数漂移意味着模型保留了更多的基础能力和输出多样性,为后续的持续学习留下了更大的空间。

优势 4:保持可塑性

论文设计了一个精巧的”可塑性探测”实验:先在任务 X 上训练(用 RL 或 FST),然后从得到的检查点出发,在新任务 Y 上运行标准 RL。

结果非常鲜明:

这表明 FST 不会像标准 RL 那样将慢权重过度特化到当前任务,从而保留了学习未来新任务的能力。

优势 5:真正的持续学习

最关键的实验是连续三任务场景:HoVer → CodeIO → Physics,每个任务训练 200 步,中间不重置,共 600 步。

结果:

这个实验直接证明了:在任务不断切换的真实部署场景中,纯参数更新方法会逐渐”僵化”,而 FST 始终保持学习活力。

为什么 FST 有效:两个关键观察

快权重获取信号更快

在一个合成的星图搜索任务上,RL 在前约 300 步内奖励几乎为零——慢权重需要大量梯度更新才能开始产生有意义的行为变化。而 FST 在约第 50 步就逃离了零奖励区间,领先 RL 一个数量级。

原因在于:GEPA 可以从 rollout 的完整文本反馈中学习——包括错误信息(如 “ZeroDivisionError: division by zero”)、工具调用结果、中间思维步骤——而 RL 只能从一个标量奖励信号中学习。丰富的文本反馈让快权重能在几个周期内就提取出任务结构。

快慢协同提升上限

论文对比了三种方法来理解快慢通道各自的贡献:

快权重和慢权重并非简单叠加,而是形成了正向反馈:快权重为慢权重提供了更好的训练条件(更高的初始奖励信号),慢权重的进步又使得 GEPA 能在更强的基础上优化出更好的提示。

工程启示

如何在实践中使用 FST

FST 的实现并不复杂,核心工程步骤如下:

  1. 选择提示优化器:论文使用 GEPA,但框架对此不做硬性要求。APE、OPRO、DSPy/MIPROv2 等方法都可以作为快权重优化器
  2. 设定周期长度:论文使用 T=6 步 RL 更新作为一个周期,每个周期后运行一次 GEPA 更新
  3. 维护提示池大小K=4K=8 个候选提示,作为 Pareto 前沿
  4. 交替训练:在每个 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 对现有训练基础设施的改动很小:

局限性与未来方向

论文坦诚地讨论了几个值得关注的方向:

具体实例化的选择空间:论文选择了 CISPO 作为慢权重优化器、GEPA 作为快权重优化器,但这只是 FST 框架的一种实例化。不同的优化器组合可能在不同场景下有不同效果,这需要更多探索。

计算效率的优化空间:虽然 FST 的额外开销不大,但 GEPA 的 rollout 和反射过程仍有优化余地。如何在提示优化和权重优化之间更高效地复用计算资源和 rollout 轨迹,是一个值得探索的工程问题。

蒸馏路径:论文初步尝试了将快权重的信息蒸馏(distill)到慢权重中,即用 FST 演化出的提示条件下的模型输出作为 teacher,训练一个不依赖提示的 student。实验表明 FST-distill 优于纯 GEPA 但不及完整 FST,这条路径值得更深入的研究。

更长序列的持续学习:论文验证了 3 个任务的序列学习,但真实世界的部署可能需要在数十甚至数百个任务上持续适应,更长序列上的表现仍需验证。

总结

FST 的贡献在于打破了一个长期隐含的假设:LLM 的适应不必只依赖参数更新这一条路径。通过引入文本上下文作为快权重通道,与传统参数更新(慢权重)形成互补,FST 实现了一系列令人印象深刻的改进:

对于正在构建 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

Frequently asked questions

什么是 LLM 微调中的灾难性遗忘问题?
灾难性遗忘是指 LLM 在特定下游任务上微调后,原本掌握的通用知识和能力出现严重退化。例如,一个在代码生成上微调的模型可能在自然语言理解上表现变差,导致模型只擅长新任务而丢失了原有的泛化能力。
FST 的快慢权重分离与 LoRA 有什么区别?
LoRA 通过低秩分解只更新少量参数来减少遗忘风险,但限制了模型学习新任务的能力上限。FST 则对全部参数使用差异化学习率,快权重大胆学习新知识,慢权重稳守基础能力,两者协同实现了更高的性能上限和更好的稳定性。
FST 需要额外的计算资源吗?
FST 的额外开销很小。它不需要增加模型参数量,主要增加了参数分组和差异化学习率调度的逻辑。相比标准微调,训练时间增加不到 5%,但在持续学习场景中效果显著提升。
FST 适用于哪些模型和场景?
FST 是一种通用训练策略,理论上适用于所有基于 Transformer 的 LLM。论文在多个模型规模上验证了效果。特别适合需要频繁更新知识的场景,如企业内部知识库问答、持续进化的代码助手、以及多任务序列学习。
FST 的研究对 AI 行业有什么实际影响?
FST 为 LLM 的持续学习提供了一条务实的路径。当前企业部署 LLM 面临的最大痛点之一就是模型更新困难,每次微调都可能破坏已有能力。FST 让增量更新变得安全,降低了模型维护成本,推动了 LLM 从静态工具向持续进化系统的转变。
// next.txt ›

Some outbound links in this post are affiliate links — see disclosure.