把试错经验烧进模型权重:体验一次 EPD,告别昂贵的环境交互
你有没有这种感觉:智能体在一个任务上跑了几轮、试了几次错之后,表现肉眼可见地涨了——但把对话历史从 context 里抽掉,模型立刻"翻脸不认人",性能直接打回零样本?
这个现象在 2024 年之后做 agent 的人应该都撞到过。In-context learning(ICL)确实高效,给几段示范、几轮反馈,模型就学会。但 ICL 的代价是:它只在 context 里才有用,context 一旦清空,学的就清零了。
另一边,强化学习倒是能把"经验"烧进权重里——但代价是疯狂地吃环境样本。一个 SWE 任务让 PPO 跑出来,env sample 能烧掉几千个;GRPO 在文本游戏里也好不到哪去。
Monash + ByteDance Seed 的 Chenhui Gou 等人这次干的事,简单说就是:把 ICL 烧进权重里,而且不再消耗任何额外的环境样本。他们管这个叫 Experience Distillation(EPD)。
核心摘要
EPD 的核心思路是:让"看过经验"的教师模型在已经发生过的历史点上重新决策一次,然后把这一次决策蒸馏进学生权重。整个过程不需要世界模型,不需要再跑一遍环境,只采样一次动作(one-step branch rollout)。
效果有多离谱呢?
- 749 个 SWE 任务:zero-shot 5.3% → 直接 SFT 8.0%(几乎没涨)→ EPD 51.4 个百分点,ICL 上限 76.4%。EPD 留住了 ICL 64.8 个百分点的增益,SFT 只留了 3.8%。
- 6 个文本冒险游戏(TaleSuite):zero-shot 18.5 → SFT 17.8(甚至倒退了)→ EPD 43.8,ICL 上限 45.6。EPD 留住了 ICL 93.4 个百分点的增益。
- 样本效率:ICL + EPD 在 SWE 上拿到 51.4% pass@1,PPO 跑完整训练也才 17.7%,EPD 用了 9.6× 更少的环境样本;在 TaleSuite 上 43.8 vs GRPO 29.9,EPD 用了 57.2× 更少的环境样本。
更狠的是,EPD 在分布外任务(494 个没见过的 SWE 任务)上也能涨:pass@1 从 4.62% 涨到 8.84%,pass@5 从 20.39% 涨到 26.13%。反复做 collect-and-distill 循环,6 个 TaleSuite 任务的平均分能从 cycle 0 的 7.1 涨到 cycle 5 的 47.0——而且每一轮都换掉经验 context,从头开始收集。
一句话评价:这是真正把"试错经验"内化为模型能力的方法。它不发明新算法,它重新设计了一个更便宜的监督信号。我觉得这种工作比堆参数更有意思。
论文信息
- 标题:Sample-Efficient Learning from Agent Experience
- 作者:Chenhui Gou, Haoqin Tu, Yunhao Fang, Jianfei Cai, Hamid Rezatofighi
- 机构:Monash University(1, 4, 5 作者)、ByteDance Seed(2, 3 作者)
- 链接:https://arxiv.org/abs/2607.21051
- 代码/数据:未公开
为什么需要 EPD?
智能体学习的现实约束特别硬:环境交互贵。论文开篇就举了两个例子——
- 测一个电池材料要实验室合成 + 测量,一次交互可能耗掉几天;
- 评估一个法律分析要专业律师 review,慢到离谱。
在 LLM agent 流行的今天,任务时长越来越长(看看 swe-bench、tau-bench 这类基准),rollout 的成本也水涨船高。RL 框架虽然标准,但样本效率是出了名的差,需要成千上万次交互才能训出好策略。
ICL 是另一条路——把 task-specific 的 evidence 塞进 context,模型不动权重也能适配。一个 SWE 任务跑 60~600 个交互轮、80k+ token 的 context,ICL 的 pass@1 能从 5.3% 涨到 76.4%,提升幅度大得离谱。
但 ICL 的天花板也很明显:context 抽走,性能归零。
那自然的想法是:用 context distillation 把 ICL 的提升内化进权重。教师模型带着 experience context 决策,学生模型不带着 context 学着做一样的决策。这条路 2024 年开始有人探索(OPC、OPD、SkillsD 等),但有一个绕不过去的坎——
要拿到教师模型的"决策分布",你得在环境里再跑一遍教师模型。这就又吃环境样本了。
如果再跑教师模型本身就要几千次环境交互,那这所谓的"蒸馏"和直接 RL 训练有啥区别?
这就是 EPD 要解决的核心问题:怎么蒸馏 experience,却不消耗额外的环境样本。
EPD 怎么做的?
论文的方法论非常清晰,分三步走。
Step 1:建模成 trajectory-level 上下文蒸馏
设 \(M\) 是一个任务(一个 POMDP),\(\theta_0\) 是基座模型。教师模型带着 experience \(\tau^{\mathrm{exp}}\) 在 context 里的决策分布记为 \(p_M^{\theta_0}(\tau' \mid \tau^{\mathrm{exp}})\),学生模型不带着 experience 的分布是 \(p_M^\theta(\tau')\)。理想的 context distillation 目标就是最小化两者的 KL:
展开后可以证明,只有 policy factor 不同(环境的初始 observation 和 response distribution 是共享的),所以这个 objective 等价于在每个历史点上做 local policy matching。
但问题是——要采样 \(\tau' \sim p_M^{\theta_0}(\cdot \mid \tau^{\mathrm{exp}})\),你得让教师在环境 \(M\) 里再跑一次。
Step 2:one-step branch rollout——砍掉环境交互
经典 model-based RL 的思路是用学到的 world model \(\widehat{M}\) 替代真环境。但 world model 的误差会随 rollout 长度累积,长 trajectory 直接崩掉。
Branched rollout 是个折中:从真实 history 出发只 rollout 几步。EPD 走得更极端——只 rollout 一步:
直觉是这样的:
- \(h_t^{\mathrm{exp}} = (o_0, a_0, \ldots, o_t)\) 是已经发生过的历史点(真实数据,不需要再采样);
- 教师模型在 \(h_t^{\mathrm{exp}}\) 处,带着 experience context,采样一次新的决策 \(a_t'\);
- 学生模型在同样的 \(h_t^{\mathrm{exp}}\) 处,不带着 experience context,去拟合教师的决策 \(a_t'\)。
这一步是纯 teacher-side 的生成——教师只生成一个动作,不生成未来 observation。世界模型被彻底干掉了,未来的 observation 直接从真实 \(\tau^{\mathrm{exp}}\) 里复制。
这就是 EPD 名字里 "Experience" 的来源:监督信号来自真实经验中已经发生过的历史点,而不是采样未来的轨迹。
Step 3:Branch packing——把 4096 个样本压成 128 个序列
如果每个 branch point 单独做一个训练样本,那 749 个任务 × 几百个 step = 几千个样本。每个样本前面都带一段长长的历史 prefix(80k+ token),重复计算直接爆炸。
论文的解法是把同一条 trajectory 上连续的 branch 点打包成一条训练序列:
其中 \(a_t'\) 是教师重新决策的,\(a_t\) 是原 trajectory 里的真实动作(用作 context)。整个 packed sequence 用 NTP loss 训练,只有 \(a_t'\) 参与 loss,\(a_t\) 和 \(o_t\) 当 context。
数学上这是个近似(教师之前的决策会影响之后分支点的 context),但实验证明这个近似几乎不掉点(平均 G_ICL 从 84.2% 涨到 90.1%),同时把训练步数从 768 砍到 64,总时间砍掉超过 10×。
三个让 EPD 真正 work 的工程细节
光有上述三步还不够。论文还做了几个细节优化:
- Experience Preprocessing(\(g(\tau^{\mathrm{exp}})\)):原始经验又长又吵,无关的探索轮次、啰嗦的 environment response 混在中间。直接喂给教师容易撑爆 context window。EPD 用 \(g\) 把原始经验改写、抽象、压缩,让任务相关信息密度更高、长度能塞进 context。
- Enhanced Teacher Reasoning(提示变量记为 \(I\)):用一个固定的 prompt 让教师多思考几步再决策。Detective 任务上,开了 enhanced reasoning 之后 G_ICL 从 34.9% 飙到 72.5%,翻了 2 倍多。
- 学习率 vs 训练 epoch:附录里的 ablation 显示,小学习率 + 多 epoch 比大学习率 + 少 epoch 好。\(10^{-6}\) 跑 16 个 epoch 的 G_ICL 比 \(10^{-5}\) 跑 4 个 epoch 高出一大截。训练 loss 和评估性能不是单调关系。
实验结果:数据说话
主实验:EPD 显著优于 SFT,逼近 ICL
下表是论文最重要的主结果表。在两个截然不同的领域(长程 SWE 任务、长程文本冒险游戏)上对比 ICL / zero-shot / SFT / EPD 四种方法:
| 方法 | SWE 749 任务(pass@1) | SWE G_ICL | TaleSuite 6 任务(平均分) | TaleSuite G_ICL |
|---|---|---|---|---|
| ICL(参考上限) | 76.4% | 100.0% | 45.6 | 100.0% |
| Zero-shot | 5.3% | 0.0% | 18.5 | 0.0% |
| SFT | 8.0% | 3.8% | 17.8 | −2.6% |
| EPD | 51.4 个百分点 | 64.8 个百分点 | 43.8 | 93.4 个百分点 |
SWE 上 16× 的提升(5.3 → 51.4),TaleSuite 上 2.4× 的提升(18.5 → 43.8),而且 SFT 在 TaleSuite 上甚至负增长(−2.6%),这说明直接把 ICL 轨迹当 SFT 数据是有害的——因为教师在 ICL 状态下的决策分布和无 context 时差异巨大,SFT 只能学到表面模式。
样本效率:比 PPO/GRPO 少一个数量级
这是最震撼的对比。论文用 PPO(curated SWE)和 GRPO(TaleSuite)做 RL baseline,把完整训练 budget 算进去对比:

图 1:左图是 749 SWE 任务,ICL + EPD 用 9.6× 更少样本拿到 51.4% vs PPO 的 17.7%;右图是 TaleSuite 6 任务,ICL + EPD 用 57.2× 更少样本拿到 43.8 vs GRPO 的 29.9。x 轴是 \(\log(1+x)\) 变换。
注意几个关键点:
- ICL + EPD 的样本成本 = ICL 收集经验的成本(EPD 本身不消耗环境样本)。
- RL baseline 把"完整训练 run 的最佳表现 vs 完整预算"算成对 RL 最有利的对比方式。
- 即使这样,EPD 还是赢了一个数量级。
这个对比给我最大的冲击不是绝对数值,而是思路上的差异:PPO/GRPO 是在用大量样本慢慢学 policy,EPD 是先快速试错 ICL,然后一次性内化。一个 1 天能搞定的 ICL 收集 + 几小时 EPD 蒸馏,抵得过几天的 PPO 训练。
Model-free > Model-based:越短越好
论文还做了一个消融:既然是 branched rollout,那 \(k\) 步分支和 \(k=1\) 步分支到底哪个好?答案是\(k=1\) 最好。
| 任务 | Zero-shot | ICL | Model-free 1-step | Model-based Branch (2 步) | Model-based Full (100 步) |
|---|---|---|---|---|---|
| Acorncourt | 17.2 | 38.5 | 34.9 / 83.1% | 53.6 / 170.9% | — |
| Balances | 15.9 | 39.6 | 34.9 / 80.2% | 21.6 / 24.1% | — |
| Detective | 31.3 | 90.8 | 82.9 / 86.7% | 71.8 / 68.1% | 42.7 / 19.2% |
| Enter | 40.2 | 68.5 | 59.7 / 68.9% | 38.5 / −6.0% | — |
| Inhumane | 5.9 | 36.5 | 36.5 / 100.0% | 14.9 / 29.4% | — |
| 平均 | 22.1 | 54.8 | 49.8/83.8 个百分点 | 40.1/57.3 个百分点 | — |
平均 G_ICL:1-step 83.8% > branch 57.3% > full 19.2%。这印证了一个朴素但重要的观察:让 LLM 模拟环境,不如直接用真实数据。World model 看着美好,rollout 长度一长就崩。
Branch packing:10× 加速,效果持平
Branch packing 消融表直接给出"工程 ROI"——
| 指标 | 单独 branch 样本 | Branch-packed 序列 |
|---|---|---|
| 生成的训练实例 | 4096 | 128 |
| 训练步数 | 768 | 64 |
| 总时间(归一化) | >10.0 | 1.0 |
| 平均归一化分 | 43.1 | 43.8 |
| 平均 G_ICL | 84.2 个百分点 | 90.1 个百分点 |
从 4096 个样本压成 128 个 packed sequence,总时间砍掉超过 10×,平均分几乎一样。这是我最喜欢的工程优化之一。
OOD 泛化:能迁移到没见过的任务
把 749 个任务上学到的 EPD 模型放到 494 个 OOD 任务上(其中 278 个跨仓库 OOD,216 个仓库内 OOD):
| 任务子集 | 方法 | pass@1 | pass@5 |
|---|---|---|---|
| 全 OOD (494) | Zero-shot | 4.62% | 20.39% |
| EPD | 8.84 | 26.13 | |
| 跨仓库 OOD (278) | Zero-shot | 4.72% | 21.40% |
| EPD | 8.87 | 27.22 | |
| 仓库内 OOD (216) | Zero-shot | 4.49% | 19.08% |
| EPD | 8.80 | 24.73 |
涨幅几乎翻倍,而且对完全没见过的仓库也有效。这说明 EPD 学到的不只是"这 749 个任务怎么解",而是某种通用的 agent 能力——比如怎么用工具、怎么读 issue、怎么从测试反馈修 bug。
持续学习:cycle 之间能累积
最后一组关键实验是持续 EPD——每个 cycle 都重新收集经验(context 清空),然后蒸馏。看看分数能不能跨 cycle 累积:

图 2:左图是按 distillation cycle 看的,右图是按累计环境样本看的。Cycle 0(初始)平均分只有 7.1,cycle 5 已经涨到 47.0。6 个 TaleSuite 任务的均值,每 cycle 收集 4 次 trial,每个 task 累计 20 个环境样本。
这个图特别有说服力。每一轮都换经验——也就是说,没有"作弊"地把上一次的 context 留到下一轮。分数从 7.1 涨到 47.0,说明经验通过权重累积下来了。这是 EPD 区别于单纯 ICL 的关键能力:ICL 学完就忘,EPD 学完能记住。
Forward KL vs Reverse KL:OPD 为什么不行
论文还做了一个特别有启发的对比。EPD 默认用教师采样 + forward KL(在真实历史点采教师决策,学生去拟合)。还有一种更"对称"的做法:学生采样 + reverse KL(学生自己 rollout,教师在学生轨迹上给 per-token supervision),这正是 on-policy distillation(OPD)的思路。
| 任务 | Zero-shot | ICL | Forward KL(EPD 默认) | Reverse KL(OPD) |
|---|---|---|---|---|
| Balances | 0.0% | 100.0% | 96.7 | 9.1% |
| Detective | 0.0% | 100.0% | 98.4 | 0.4% |
差距大到离谱。EPD 几乎追平 ICL,OPD 直接挂掉。论文的解释我觉得特别到位——
学生在没看到 experience context 的情况下,几乎不可能自己 sample 出"教师在 ICL 状态下才会做的高质量决策"。那 reverse KL 监督的轨迹里,根本没有这些高质量决策,自然就 transfer 不过去。
这是一个用实验数据支持的好直觉。它告诉我们:蒸馏上下文知识,让教师在有 context 的状态下先产生高质量样本,比让学生自己去探索、再让教师打分,重要得多。
Scaling:教师生成数据越多越好,但有上限
最后一组实验是教师生成数据的规模化。同一个 experience trial,让教师生成 1 ~ 16 个不同的 packed sequence:

图 3:x 轴上半部分是每个 experience trial 生成的 packed sequence 数(1 ~ 16),下半部分是教师生成 token / 61.7M 经验 token 的比值(0.17× ~ 2.79×)。G_ICL 从 31.8% 单调涨到 64.8%。
这条曲线说明两件事:
- EPD 还有 scaling 空间——多生成一些教师数据,效果就继续涨;
- 目前的瓶颈是教师生成成本——生成 2.79× 的 token 才有 2× 的 G_ICL 增长。论文明确承认 "current teacher-generation cost remains a limitation"。
我的判断
亮点
- 思路上的根本性转换:把 agent 学习的核心约束从"环境样本"换成了"教师生成数据"。前者贵到无法 scale,后者贵但可以并行、可以缓存、可以复用。这条路一旦走通,agent 学习就不再被环境束缚。
- 极简的实现:one-step branch rollout + branch packing,没有世界模型、没有未来采样、没有 reward model。能把 RL 干的事情用监督学习做出来,工程上很优雅。
- 跨领域验证:SWE 和文本游戏两个完全不同的领域都 work,说明这个方法不是某个 benchmark 调参调出来的,而是真的抓住了 agent 学习的一个普遍规律。
- OOD 泛化和持续学习这两个结果特别有价值。它说明 EPD 学到的是"如何从经验中学习"这种元能力,而不只是某个具体任务的解法。
需要谨慎的地方
- 教师生成 token 仍然是成本。当前 EPD 需要生成 2.79× 经验 token 才能达到 64.8% G_ICL。如果想逼近 ICL 上限(100% G_ICL),可能要 5×、10× 的额外 token。这些 token 不会污染训练数据(不来自环境),但仍是推理算力。论文也坦承 "the current teacher-generation cost remains a limitation"。
- ICL 收集经验本身仍然要环境样本。EPD 没有"零样本"做到 SWE 51.4%——它需要先做 60~600 轮的 ICL 试错来产生经验。这个经验是 SWE 任务上的"完整成功轨迹 + 各种失败尝试",成本并不为零。论文把 ICL 的样本成本算进 ICL+EPD 的预算(9.6× 比 PPO 少),但如果你的任务连 ICL 都做不了,EPD 也用不了。
- G_ICL 还有 35% 左右的提升空间没补上。在 SWE 上 EPD 离 ICL 上限还有 11.8 个百分点的差距(51.4 vs 76.4)。这部分差距具体来自哪里——是教师本身就不完美,是分支点采样不够多,还是 NTP loss 损失了信息——论文没完全拆开。
- 教师 = 学生同 checkpoint这个假设值得注意。论文里 EPD 的教师和学生是同一个 base model,教师只是"有 experience context"那个版本。如果教师和学生能力差距大,蒸馏效果可能完全不同。
- 没有和更强的 RL baseline 对比。PPO 和 GRPO 是经典选择,但 2024~2025 年新出的 RL 方法(DPO 系列、Process Reward Model、各种 process supervision)都没有比较。如果这些方法在 SWE 上已经能逼近 ICL 上限,那 EPD 的相对优势会缩小。
一个延伸的思考
EPD 其实揭示了一个比单纯训练方法更深的洞察:在 agent 学习的语境下,知识来源比学习方法更重要。RL 的问题是它的知识来源是 reward——一个非常稀疏、低带宽的信号。EPD 的知识来源是教师模型的决策分布——一个高带宽、密集的信号。
类似的思路其实在 In-Context RL 领域有先例(Algorithm Distillation、Prompt-DT、Decision-Pretrained Transformer 等),但 LLM agent 时代把它重新包装成了"context distillation"的形式。我觉得接下来值得看的方向是:
- 教师本身的提升:让教师在生成决策前多思考几步(Enhanced Teacher Reasoning 已经是个苗头);
- 经验压缩:现在的 \(g(\tau^{\mathrm{exp}})\) 是个黑盒,论文没说怎么实现。可以借鉴 Long-Context LLM 的压缩技术(memsum、LLMLingua 等);
- 多教师蒸馏:让不同教师在不同经验片段上做蒸馏,相当于 ensemble 一下 EPD 模型。
写在最后
读完整篇论文最让我感慨的一点是:它没有发明任何新东西。ICL 是 2020 年的,Context Distillation 也是 2021 年的,Branched Rollout 是 2019 年 model-based RL 的老思路。但作者把这三件事拼在一起,给 agent 学习打开了一个新维度——不再被环境样本数卡死。
有时候好的研究就是这样:不是造新轮子,是把旧轮子装在新的车上。
如果你也在做 LLM agent,手头有一批任务能跑 ICL、但环境样本很贵,那 EPD 几乎是最值得尝试的方案。它的实现门槛不高(核心代码就是 one-step branch sampling + NTP loss),工程 ROI 却高得离谱——9.6× 的样本效率提升不是开玩笑的。
论文:https://arxiv.org/abs/2607.21051 arXiv ID: 2607.21051
觉得有启发的话,欢迎点赞、在看、转发。跟进最新AI前沿,关注我。