让大模型也学会"睡一觉":Google 把 NREM 和 REM 直接搬进了 LLM 训练协议

arXiv: 2606.03979 · 2026-06-02 作者: Ali Behrouz, Farnoosh Hashemi, Vahab Mirrokni(Google Research) 关键词: Sleep Paradigm / Memory Consolidation / Knowledge Seeding / Dreaming / Continuum Memory System


一、开场:你的模型其实从来没"休息"过

你有没有想过一件挺奇怪的事——当下所有大模型,从训练完那一刻起就再也没"睡过觉"。

它们的生命周期只有一个状态:要么在被 SFT/RL 的训练循环里疯狂吃数据,要么在生产环境里 24 小时被 query 怼着推理。中间没有任何停顿用来"消化"。所有"持续学习"的尝试——TTT、SEAL、各种 PEFT 加 retrieval 的组合——本质都是在清醒状态下边干活边学,没有一个真正的 offline 阶段把短期上下文里的零碎经验沉淀到长期参数里。

人脑显然不是这样工作的。神经科学里有一个挺成熟的共识:白天经验进入海马体(高频、易变、容量小),晚上 NREM 阶段大脑把这些痕迹缓慢回放、转写到新皮层(低频、稳定、容量大);REM 阶段则做"梦"——把经验组合、抽象,做无监督的能力打磨。睡眠不是停机,是一种完全不同的处理模式

这篇 Google Research 的新工作 arXiv 2606.03979 干的事情就是:把这套机制几乎一比一复刻到 LLM 的训练—推理协议里。论文标题简单粗暴——Language Models Need Sleep——但读完会发现它真不是个比喻论文,而是给出了一整套可以工程化的两阶段架构。

我读完最直接的反应是:这套东西的几个零件单拎出来都很有意思——多频率参数分层、用小模型当 teacher 反向蒸馏到大模型、把"做梦"实现成 RL 自合成课程。哪怕你不全盘相信"睡眠"这个比喻,里面单点的工程招式也值得细品。


二、核心摘要

LLM 现在的训练范式只有"清醒"一个模式,导致三个一直没被根治的毛病:长程任务无法真正积累知识、新数据进来会冲掉旧能力(灾难性遗忘)、自我改进缺乏稳定的 offline 通道。这篇论文借神经科学里 NREM/REM 的双阶段睡眠机制,把 LLM 的生命周期切成 Wake 和 Sleep 两段:

  • Sleep 内部又分两步:记忆巩固(NREM 类比)用 Knowledge Seeding 把小模型的知识"向上蒸馏"到大模型新增的 MoE 低秩专家上;做梦(REM 类比)用 RL 让模型自己合成课程,从教师采样 + 路由器随机扰动 + 梯度重要性筛选,做无监督的能力打磨。
  • 关键骨架是 Continuum Memory System (CMS):把参数按更新频率切成多层,高频层快但易变,低频层慢但稳,巩固就是把高频的有效痕迹沉到低频去。
  • 实验数据上,在 Qwen3-8B 数学推理(AIME-24/25、HMMT-25)、长上下文(BABILong 撑到 10M token、QASPER、LongHealth)、类增量分类(CLINC/Banking/DBpedia)、知识融合(SEAL 同台 PK)、Few-shot ARC 上都拿到了对当前 SOTA 的稳定优势。其中 ARC 少样本任务上 Sleep 拿到 80% vs SEAL 72.5% vs TTT 10% vs ICL 0%——这个 gap 真的有点夸张。

我的判断:论文的"睡眠—做梦"叙事是壳,真正硬的是里面的 CMS + Knowledge Seeding + Dreaming 这一套配方。如果你在做持续学习、Test-time training、Self-improving Agent,这篇值得当协议级别的工作仔细读一遍;如果只是关心 LLM 应用层,看图和实验表就够了。


三、问题:现有"持续学习"为什么都半吊子

聊新方法前,先把作者认定的痛点说清楚。

第一个裂缝:长程任务无法真正积累知识。当任务需要跨多文档、多时间步整合时,纯 ICL 的 token 开销和退化曲线大家都见过——超长上下文的 needle 找不回来、长度一拉就掉点。检索 + 上下文拼接是工程妥协,知识从来没有真正沉到模型参数里。

第二个裂缝:直接训新数据会灾难性遗忘。对预训完的模型直接做 SFT 或 RL on 新任务,老能力被覆盖几乎是必然的。EWC 之类的方法做了正则项约束,但效果到一定边界就上不去了。

第三个裂缝:自我改进没有稳定通道。SEAL、TTT、OPSD 之类的 self-improving 工作思路是"模型生成自己的训练数据再去 fit",但这些大多是单步即时的,缺一个明确的"我现在不接业务、专门修炼内功"的协议。

作者的归因挺有意思——这三个裂缝其实有一个共同根源:模型只有一个时间尺度。预训练参数和推理时上下文之间没有中间层,没有一个允许"慢慢消化"的离线状态。Wake 时所有东西都在线、抢同一组参数;想加一个慢速、稳定的存储层,就必须造一个明确的 Sleep 阶段把消化过程隔离开。

这个归因如果你接受,后面的设计就顺得多了。


四、Sleep 范式的整体框架

论文里 Figure 1 这张图概括了核心思路——把 LLM 的生命周期切成 Wake/Sleep 两个交替的阶段:

图1:Sleep 范式的两阶段示意 —— Wake 阶段处理外部输入并把痕迹存入快速、易变的高频组件;Sleep 阶段离线把快速记忆巩固到慢速、稳定的低频组件,并通过 Dreaming 自我改进

图 1:模型生命周期的两阶段切分。左侧"Active/Awake"时模型接收新输入、把交互痕迹存到高频参数里;右侧"Sleep"时模型断开外部输入,做两件事——把高频痕迹巩固到低频参数(NREM 类比)、生成合成数据做 RL 自我打磨(REM 类比)。睡眠不是停机,是一种"完全不同的处理模式"。

在这个框架下,参数本身按更新频率分层——这就是 Continuum Memory System (CMS)

  • 高频层(fast):每次 Wake 都被更新,容量小、易变、对最新输入响应快;
  • 中频层:在某些 Sleep 周期才被刷新;
  • 低频层(slow):只在多次 Sleep 巩固后才更新,容量大、稳定、保留长期知识。

CMS 的实现是把每个 MLP 块改成稀疏 MoE,新增的"巩固专家"是低秩的(\(A \in \mathbb{R}^{d \times d_{\text{low}}}, B \in \mathbb{R}^{d_{\text{low}} \times d}\),其中 \(d_{\text{low}} \ll d\)),让总参数量可控。同时通过路由器决定哪些 token 走低频专家、哪些走高频专家——本质上是把 LoRA 风格的"额外参数"和 MoE 风格的"动态路由"做了一个混合。

这一层的设计目标其实就一句话:让模型在不破坏已有能力的前提下,能持续往参数里写东西


五、记忆巩固:用小模型当老师把大模型教会

这是论文里我个人觉得最反直觉、也最值得单独拎出来讲的一招。

图2:记忆巩固总览 —— 模型先扩展自身参数(增加 MoE 低秩专家),然后通过 Knowledge Seeding 把知识从高频记忆向低频记忆"向上蒸馏"

图 2:巩固阶段两步走。上半部分是参数扩展——给现有 MLP 块加新的低秩专家,扩容但不替换原有参数;下半部分是 Knowledge Seeding——用一个较小的"种子模型"作为 teacher,把它在某批数据上的行为蒸馏到刚扩容的大模型上。

Knowledge Seeding:反着来的蒸馏

直觉上的蒸馏永远是大模型→小模型。但 Sleep 在 Wake 阶段记录交互痕迹的是高频小容量参数(你可以理解成"种子模型"),到了 Sleep 阶段反而要把这部分知识写到更大的低频参数里。这个方向论文叫做"Self Knowledge Seeding (SKS)"——自己当自己的老师

为什么不直接用大模型在新数据上做 SFT?因为新数据通常很少(几十个样本到几个文档级别),直接 fit 大模型容易过拟合且会冲走旧能力。而高频的小种子模型本身参数容量小,对小批量数据的拟合带宽天生更大、噪声更可控;用它作为 teacher 给大模型当锚点,相当于先让小模型把"这批数据该长什么样"刻画清楚,再让大模型学这个刻画。

技术实现上是 GKD 风格的混合蒸馏:

\[\mathcal{L}(\bm{\theta},\bm{\theta}_{\text{exp}})=(1-\lambda)\,\mathbb{E}_{(x,y)\sim\mathcal{D}}\big[\mathcal{F}(\texttt{LM}_{\bm{\theta}}\|\texttt{LM}_{\bm{\theta}_{\text{exp}}})(y|x)\big]+\lambda\,\mathbb{E}_{x\sim\mathcal{D}}\mathbb{E}_{y\sim\texttt{LM}_{\bm{\theta}_{\text{exp}}}(\cdot|x)}\big[\mathcal{F}(\texttt{LM}_{\bm{\theta}}\|\texttt{LM}_{\bm{\theta}_{\text{exp}}})(y|x)\big]\]

前一项是用真实数据的 off-policy 蒸馏,后一项是从 teacher 采样 on-policy 蒸馏,\(\lambda\) 控制混合比例。\(\mathcal{F}\) 是任意散度(KL、reverse-KL、JS 都可),实验里默认 forward-KL。

Learning to Imitate:再加一层 RL 模仿

光蒸馏 logits 还不够,论文还塞了一个基于 RL 的模仿学习目标。奖励函数是语义和绝对编辑距离的混合:

\[r(\hat{d}^{(i)};d^{(i)};\texttt{LM}_{\bm{\theta}_{\text{exp}}}) = \gamma \cdot r_{\text{sem}}(\hat{d}^{(i)};d^{(i)})+(1-\gamma)\cdot r_{\text{abs}}(\hat{d}^{(i)};d^{(i)})\]

\(r_{\text{sem}}\) 用一个冻结的奖励模型打分,\(r_{\text{abs}}\) 用归一化的编辑距离硬约束(编辑距离超过阈值 \(z_0\) 直接给 0 奖励)。这套配置的工程意义是:纯语义奖励容易被 reward hacking,加一个绝对距离的硬阈值兜底,能保证大模型生成的内容至少在表层结构上跟 teacher 是对得上的。

最终的 Knowledge Seeding 损失把蒸馏散度和模仿奖励混合:

\[\mathcal{L}_{\text{KS}}(\bm{\theta},\bm{\theta}_{\text{exp}})=\mathbb{E}_{x}\big[(1-\alpha)\mathbb{E}_{y\sim\texttt{LM}_{\bm{\theta}_{\text{exp}}}}[r(y)]-\alpha \mathcal{D}(\texttt{LM}_{\bm{\theta}}\|\texttt{LM}_{\bm{\theta}_{\text{exp}}})\big]\]

\(\alpha\) 控制蒸馏 vs 模仿的权重。

我看到这一段的第一反应是:"这玩意儿训练起来稳定吗?"——一个生成式 RL 加一个 KL 正则的混合 loss,超参敏感性听起来就吓人。但作者后面消融数据撑住了——把 RL 的 imitation 项摘掉性能直接掉 2 个点以上,证明这一项不是凑数的。


六、Dreaming:让模型自己出题再做题

REM 阶段的核心问题是:没有新数据怎么继续学?

人做梦时大脑在重组白天的经验、模拟没遇到过的场景。Sleep 把这个过程实现成一套自合成课程:

  1. 从模型自己采样 m 个"梦境"\(\{\texttt{DREAM}^{(i)}\}_{i=1}^m \sim \texttt{LM}_\theta(\cdot \mid C)\)
  2. 路由器扰动:在采样过程中,MoE 路由器额外随机选一些"无关"专家进来——相当于强行把不相干的知识混进来当干扰,逼模型学会泛化
  3. 梯度重要性筛选:用 \(g_{\text{DR}}^{(i)} = \nabla_\theta \mathcal{L}_{SFT}(\texttt{DREAM}^{(i)}, \theta)\) 给每个梦境打重要性分,挑 top-k 加 b 个随机样本
  4. 奖励:如果某个梦境训完之后下游任务性能上升,奖励 1,否则 0

这个设计让我想起 Self-Reward 和 GRPO,但 Sleep 把它放在了一个明确的"离线阶段"——Wake 时不做 RL、不动这部分参数;只有进入 Sleep 才会跑 Dreaming 循环。这种解耦的好处是 Wake 阶段的推理延迟完全不受影响,所有自我改进的代价都摊到了离线时间。

我比较欣赏的是 step 3 的梯度筛选:直接用对当前模型参数的梯度大小判断"这个梦境对学习有价值",相当于给数据打了一个 active learning 风格的 importance score。比起 self-improving 工作里常见的"全部样本都用"或者"靠 reward 模型筛",这条路在自动化程度和计算开销上都更轻。


七、实验:哪个数字最让人心动

实验铺得相当广——类增量学习、长上下文、持续翻译、数学推理、知识融合、Few-shot 学习全打了一遍。我挑几个 representative 的说。

长上下文:BABILong 撑到 10M token

这个我觉得是最能打动人的一组数据:

图3:BABILong 上的长上下文性能曲线 —— Hope(论文方法)在 10M token 处仍保持稳定,对比之下 Titans / ARMT 在 1M token 之后陡崖式下跌,GPT-4 等大模型在 128K-256K 后失效

图 3:BABILong 长上下文跑分。横轴是上下文长度(log scale,从 4K 一路到 10M token),纵轴是任务准确率。Hope(黄)在 10M 长度仍维持高位,Titans / ARMT(蓝绿)在 1M 后明显衰减,GPT-4o 这一类纯长上下文窗口的模型在 256K 之后基本崩盘。

10M token 的需求场景其实不多见,但能在 10M 长度仍稳定运行说明 CMS 的低频参数确实在做"长期记忆"的工作——不是靠把所有 token 塞进 KV cache 硬扛,而是真的把信息写进了参数。

类增量学习:CLINC / Banking / DBpedia

图4:类增量学习三连图 —— CLINC、Banking、DBpedia 三个文本分类数据集上 Hope 全面优于 ICL / EWC / InCA

图 4-1:CLINC150 类增量分类。每次见到新意图后做评估,Hope(蓝色实线)在所有阶段都比 EWC、InCA 高,且后期不掉点,灾难性遗忘几乎被压住了。

图4-2:Banking77

图4-3:DBpedia

类增量这块 Hope 的优势虽然不夸张但很稳——三个数据集都在 ICL/EWC/InCA 之上,且增加巩固阶段(Hope-1 → Hope-3)单调改进。这种稳定性比单点 SOTA 更有意义。

数学推理:Sleep vs OPSD vs GRPO

模型 方法 AIME-24 AIME-25 HMMT-25
Qwen3-8B OPSD 76.6 67.4 45.1
Qwen3-8B Sleep 79.2 69.0 46.1
Qwen3-1.7B GRPO 51.0 38.6 26.1
Qwen3-1.7B Sleep 53.2 40.2 29.3

8B 上对 OPSD 涨了 2-3 个点,1.7B 上对 GRPO 涨了 2-3 个点。AIME/HMMT 这一档的提升幅度不算炸裂但稳定。我的判断是:Sleep 的 Dreaming 阶段相当于多跑了一轮自合成课程的 RL,相当于免费给模型加了一份训练数据——增益的来源没什么神秘。

8B 上的消融数据更有意思:

组件 AIME-24 AIME-25 HMMT-25
Sleep(完整) 79.2 69.0 46.1
− 模仿学习(imitation RL) 76.8 67.9 45.0
− 语义奖励(保留绝对奖励) 78.9 69.2 44.5
− 参数扩展 78.2 67.9 44.9

每一项都在贡献。模仿学习这一块的贡献最大(去掉掉 2.4 分),证明前面那个混合奖励 RL 不是噱头。

知识融合:SEAL 是个挺硬的对手

SEAL 是去年自适应 LLM 那条线最强的工作之一,作者给单独安排了一组 PK:

设置 方法 准确率(%)
单段落 微调(无 Dreaming) 33.4
单段落 SEAL 46.7
单段落 Sleep(Transformer + 4 层) 48.9
持续预训练 n=200 SEAL 43.2
持续预训练 n=200 Sleep(Transformer + 4 层) 46.2

知识融合这块的消融最戏剧——把 Dreaming 整个拿掉,性能从 48.9 → 35.7,掉 13 个点。也就是说在这个任务上,Dreaming 几乎贡献了全部增量。这一点完全符合直觉:知识融合本来就是一个需要"内化"的任务,单纯的蒸馏只能把 teacher 的浅层映射学进来,要真正把新事实编织进既有知识网,就得做合成课程让模型反复触碰。

Few-shot ARC:80% vs 0%

这个差距是论文里最炸的一组:

方法 ARC 准确率
ICL 0%
TTT 10%
SEAL 72.5%
Sleep 80%

ARC 是 François Chollet 那套抽象推理评测,对纯 ICL 极度不友好。Sleep 拿到 80% 跟 SEAL 比起来 gap 不算夸张,但跟 ICL/TTT 比是降维打击。我看到这个表的第一反应是:这个 baseline 列表是不是有点'巧'?——ICL 0% 当然合理(ARC 本来就不能靠 ICL),但 TTT 10% 跟一般人对 TTT 的认知差别挺大。理论上 TTT 应该至少有 30-40%。这个我没去深查代码,标个疑点。

长上下文 ICL 的频率消融:图很说话

图5:MK-NIAH / LongHealth / QASPER 三个长上下文任务上的频率消融 —— 增加巩固阶段数量、降低最低频率,性能持续改善

图 5:CMS 的频率层数消融。横轴是参数频率层数,纵轴是任务性能。三个长上下文任务都呈现出"层数越多 / 最低频率越低,性能越好"的趋势。这其实是在说:长程任务真的需要慢速、稳定的低频参数来托底,单一时间尺度的模型注定吃亏。

Continual translation:旧语言学没忘

图6:持续翻译新语言(CTNL)—— Hope-3 在持续学习两种语言后几乎恢复到单语言训练的水平,ICL 在持续设定下崩得很惨

图 6:CTNL 任务。红点是单语言训练的性能(上限参考),蓝点是持续学习两种语言后的性能。ICL 在持续学习设定下急剧下降(说明上下文方法根本撑不住跨语言切换),Hope-3 几乎完全恢复到单语言水平——这就是"睡完一觉,旧能力还在"的字面意思。


八、有意思的细节:CMS 的频率到底学到了什么

论文还做了一个我个人很喜欢的可视化——画出不同任务在 CMS 不同频率层的"用量":

图7:CMS 各频率层在不同任务上的参数选择 —— 不同任务确实激活了不同的频率层,且语义上有规律(短期/记忆/泛化任务激活高频,知识沉积任务激活低频)

图 7:路由器在不同任务上选中的参数频率分布。不同任务确实激活了不同频率的参数——这间接证明 CMS 的"分层"不是摆设,而是真的学到了"什么放在快速记忆、什么放在长期记忆"的归类。

图8:频率分布的另一个视角

图 8:频率层的另一个统计视角。短期任务(高频)和长期任务(低频)的参数激活分布有明显的区分,证明 CMS 不是把所有信号都摊到同一组参数上。

这种"参数自动按频率分工"的现象,是这篇文章里我觉得最值得单独研究的子问题。换句话说,即使你不接受"睡眠"这个比喻,CMS 这一层也可以独立拿出来用——它给所有想做"长期记忆 + 短期适配"的工作提供了一个很干净的参数组织模板。


九、和已有工作的关系

方向 代表工作 与 Sleep 的差异
Test-Time Training TTT、SEAL、OPSD Sleep 把"测试时学习"扩展为离线阶段,并引入"小→大"播种
长上下文记忆 Titans、ARMT、Mamba 类 Sleep 把记忆从 forward path 的 KV / hidden state 转到 可写参数 的 CMS
知识蒸馏 GKD、on-policy distillation Sleep 反向用:用小学生当老师,给大模型补课
自我改进 RL GRPO、Self-Reward、SPIN Sleep 把自合成课程明确放在"睡眠"阶段,与 Wake/Consolidate 解耦
持续学习 EWC、InCA、ER Sleep 不做正则约束,靠"分层参数 + 离线巩固"绕开遗忘

放在更大的 picture 里看,Sleep 其实是把过去几条独立线索(参数分层 / on-policy 蒸馏 / 自合成 RL / 离线巩固)做了一个集成。集成本身不算革命,但把"睡眠"作为一个明确的训练阶段抽象出来,在工程语言上是有创新的——它给了一个清晰的接口让所有这些技巧可以堆在一起。


十、我的判断

亮点: - 把"睡眠—做梦"做成可工程化的两阶段训练协议,比纯比喻更落地。 - "用小模型当 teacher"是反直觉但切中要害的一招。Wake 阶段的高频参数自然就是"小模型",把它当 teacher 蒸馏到大的低频参数上,避免了直接 SFT 大模型的过拟合和遗忘问题。 - CMS 的多频率分层是一个值得拿出来单独研究的子问题,对持续学习社区有外溢价值。 - 实验广度撑得起方法的 claim,BABILong 10M、ARC 80%、知识融合上把 SEAL 摁住,这几个数都挺硬。

疑问: - 真实部署中 Wake/Sleep 调度策略怎么定?论文给的是离线模拟,没谈线上系统如何感知"该睡了"——是按时间触发、按累计交互次数触发,还是按某种"上下文压力"信号触发?这块在工程落地里其实是个非平凡问题。 - Dreaming 的奖励函数仍依赖一个验证器,验证器本身的偏差会被强化。论文跑了几轮 Dreaming 没看到崩溃,但更长 horizon 的自我中毒风险是值得关心的。 - CMS 的稀疏 MoE 在推理时会不会显著拖慢首 token 延迟?论文没有完整 latency 报告。MoE 路由本身对推理工程不友好,加上多层频率参数,部署成本可能比方法本身更让人头疼。 - TTT baseline 在 ARC 上只有 10% 我觉得偏低,但因为没去查作者的 TTT 实现细节,这只是个疑点不是断言。

适合谁读: - 关心持续学习 / 测试时学习 / Self-improving Agent 的研究者,强烈推荐细读; - 想给私有模型做"日级别"知识更新的工程团队,CMS 这一层可以独立借鉴; - 对 LLM 与神经科学类比感兴趣的从业者,可以把这篇当一个"比喻被认真工程化"的案例读。

如果你最近在做长程任务、Agent 持续学习、知识融合相关的事,这篇值得花一晚上细读。它的一些零件——尤其 Knowledge Seeding 的反向蒸馏、Dreaming 的梯度筛选——单独拿出来都可能在你的项目里有用。


论文链接:arXiv 2606.03979

觉得有启发的话,欢迎点赞、在看、转发。跟进最新 AI 前沿,关注我