EPPO:多任务智能体RL的熵速调度,让clip随任务节奏自动变速
你有没有试过让一个模型同时学五个不同的智能体任务?跑 GRPO 训一晚上,画一下每条任务线的 policy entropy 曲线,第一反应大概率是皱眉——ALFWorld 早早塌成零熵,WebShop 在 0.05 上下打转,知识图谱那一条还在 0.3 晃着找方向;过 200 步再一看,ALFWorld 又被另一条线的梯度踢回 0.15,紧接着又是一个 spike。说实话看到这种 entropy 轨迹的时候,我第一反应是"这玩意儿根本谈不上稳定训练"。
来自浙江大学、Shopee、Liu Lab(阿里达摩院旗下)的合作论文 Entropy Pacing Policy Optimization(EPPO)(arXiv:2607.07178)正是冲着这件事来的。它的核心观察很犀利:在 multi-task agentic GRPO 训练中,任务的探索-利用节奏天然是不同步的,而 GRPO 那个全局共享的 clip range 根本兜不住这个差异——结果是容易的任务被"过度剪裁"卡死探索,难的任务又被"过度宽容"导致震荡。EPPO 把这个现象命名为 pace mismatch,并用一个 task-wise 的动态 clip 机制去对齐各任务的节奏。
五任务多任务训练上,EPPO 把平均成功率从 AgentRL 的 51.6% 拉到 54.3%(提升 2.7 个点),且在所有动态 clip 方案里最稳——DCPO 直接在 ALFWorld 上掉到 0.0 分,BAPO 在 KG 上掉到 4.8。EPPO 的鲁棒性比"刷点"更值得聊聊。
核心摘要
把 AgentBench 里的五个交互任务(ALFWorld、DB、KG、OS、WebShop)丢进同一个 GRPO 训练,论文作者画出了 500 个 step 的 entropy 曲线,发现了三个"反常但稳定"的信号:
- 任务熵的坍缩节奏完全不一致:ALFWorld 100 步就跌到接近 0,WebShop 在 0.1 上下震荡,KG 还有 0.3 的余温。三条线在训练中段频繁互相穿越(crossover),跟你预期的"按难度平滑下降"完全不一样。
- 晚期有反常的 entropy spike:已经稳定的任务,会被别的任务梯度反向踢高一次,呈现"已经收敛但突然又开始乱"的状态。
- GRPO 的全局 clip 是"万能钥匙的陷阱":用一个固定的 \(\epsilon\)(默认 0.2)去约束所有任务的更新幅度——对快坍缩的任务太松,对慢坍缩的任务太紧。
EPPO 的解法分三步:用 EMA 把每条任务的 entropy 拉成稳定信号(\(H_i(t)\))→ 用相对坍缩比 \(R_i(t)\) 和 cohort 归一化 \(z_i(t)\) 衡量它在"群体里的相对位置" → 把全局 clip \(\epsilon\) 换成 \(\epsilon_i(t) = \epsilon_0 \cdot (1 + \alpha \cdot \tanh(z_i(t)))\)——让快任务收紧、慢任务放松,再叠一个趋势约束来抑制晚期的反向 spike。
在 3B Qwen2.5-Instruct 训练 600 步的设置下,EPPO 在 5 任务上平均 54.3%(vs AgentRL 51.6%),3 任务 59.1%(vs AgentRL 56.8%),同时在 AIME 24+25、MATH500、GSM8K、GPQA 上保持或超过 AgentRL 的推理能力。
一句话判断:这是一篇把"multi-task RL 在共享策略下到底在打架什么"这个老问题真正讲清楚的工作。方法不复杂——它其实就是把 PPO 风格的 fixed clip 升级成一个相对熵驱动的"自动变速器"——但 ablation 和诊断图都做得很扎实,RLOO 上的迁移实验也表明这个机制不绑死 GRPO。
论文信息
- 标题:Entropy Pacing Policy Optimization for Multi-Task Agentic Reinforcement Learning
- arXiv:2607.07178(2026-07-08 提交,cs.LG)
- 作者:Zetian Hu(浙大)、Shunyu Liu(Shopee)、Junjie Zhang、Yongcheng Jing、Ting-En Lin、Yongbin Li、Dacheng Tao(Liu Lab)
- 基线:Qwen2.5-3B-Instruct
- 训练硬件:8 × NVIDIA H20
为什么要管"探索节奏"这件事
GRPO 这套范式在单任务 RL 训练(尤其是数学、代码)上已经被反复验证有效。DeepSeek-R1 那一波把 GRPO 推上神坛之后,大模型 RL 后训练几乎都跑不掉它。但你真去翻一翻 GRPO 的目标函数就会发现一件尴尬的事:
这里的 clip range \(\epsilon\) 是一个全局常数。DeepSeek 原始论文里固定 0.2,后续 DAPO 用"clip-higher"调成上界更松但仍是单值;DCPO 让 clip 跟 token 自身先验概率走,是 token-level 自适应但还是单任务视角;BAPO 在 off-policy 设定下做批级动态边界。说到底,这些工作都没有跨任务协调。
在多任务智能体训练里这就有问题了。简单想一下:
- 同一个 prompt 下,OS 命令和 ALFWorld 文本游戏的 entropy 量级本来就不同。WebShop 是商品检索,OS 是 shell 拼装,DB 是 SQL 拼装——它们的"探索空间"和"难度梯度"差异巨大。
- 一旦这些任务共享一个 policy 网络,每次反向传播都在改同一组参数。当 ALFWorld 已经收敛到近乎确定性策略,它的梯度大部分是"零附近"的,但 WebShop 还在学新动作模式,它的梯度要求大更新。
- 共享的 clip 范围没办法同时做两件事:对 ALFWorld 收得太松会过冲,对 WebShop 收得太紧会学不动。
这就是 EPPO 要解决的"pace mismatch"。论文把这种不匹配可视化得非常到位——下面这张图一上来就让问题变得直观:
图 1(a):AgentRL 的 5 任务 policy entropy 曲线。ALFWorld 和 OS 几乎瞬间坍缩到接近 0;WebShop 在 0.05 上下窄幅震荡;KG 始终在 0.3-0.4 高位徘徊;DB 起伏最大。500 步内 5 条线反复穿越,没有任何"齐步走"的迹象。
图 1(b):EPPO 同样 5 任务的 entropy 曲线。对比 (a) 一眼就能看出:KG 那条线整体下移、变窄;ALFWorld / OS / WebShop 三条线在 0.0-0.1 区间形成稳定的"低位带";线之间不再反复穿越。节奏被"压"到了可识别的群组结构里。
图 1(c):三个稳定性指标量化对比——crossover count(任务熵排序反转的次数,越少越好)、trend \(R^2\)(entropy 随 log(t) 的线性拟合优度,越高越好)、late spike amplitude(训练后 30% 阶段最大向上熵跳变,越小越好)。EPPO 三项全胜。
我的判断:这三个诊断指标的设计很值。尤其是 crossover count 这个东西——它把"训练不稳"从主观感受变成了可计算的标量,论文后续的 ablation 都是直接对着这三个标量做对比。这种把"工程经验"升级成"可量化指标"的思路,比方法本身对社区更有价值。
EPPO 是怎么做的
EPPO 的整体结构分三个模块,对应论文 Figure 2 的 pipeline:
图 2:EPPO overview。五个任务(OS、DB、KG、ALFWorld、WebShop)的 policy entropy 序列 → 坍缩比(collapse ratio)→ cohort 归一化(progress pacer)→ task-wise dynamic clip \(\epsilon_i(t)\)。下半部把 task 划分成"over-confident"和"under-explored"两类,对应 clip 的收紧和放松。
模块一:Entropy Tracker
第一步是给每条任务的熵一个稳定的标量信号。原始 policy entropy 噪声大(agentic 设置下 trajectory 是多轮 token 级别的,\(-\sum_a \pi \log \pi\) 的瞬时估计方差很大),直接用会被训练震荡带偏。EPPO 用 EMA 拉一条平滑曲线:
其中 \(H_i(t) = \mathbb{E}_{(s_t, i)}\left[-\sum_a \pi_\theta(a|s_t, i) \log \pi_\theta(a|s_t, i)\right]\) 是即时策略熵,\(\beta = 0.95\) 是 EMA 衰减。
然后存一个初始熵参考 \(H_i(0)\),定义坍缩比(collapse ratio):
这个比值的好处是无量纲——不同任务的熵量级差异被归一化了,OS 命令的 0.5 和 WebShop 的 0.05 可以放在同一个尺度上比较。
模块二:Progress Pacer
\(EPPO\) 的核心创新在这里。它把 \(R_i(t)\) 在整个 cohort 上做 z-score 归一化:
\(\mu_R(t)\)、\(\sigma_R(t)\) 是当前 batch 内所有任务 \(R_j(t)\) 的均值和方差。注意这一步用了"cohort"而不是 global 统计——它关心的不是"这条任务绝对值是多少",而是"这条任务在群体里排第几"。
然后用一个 bounded scaling 把 \(z_i(t)\) 映射到 clip 缩放系数:
其中 \(\epsilon_0 = 0.2\) 是基础 clip 范围,\(\alpha = 0.4\) 控制 pacing 强度。由于 \(\tanh \in [-1, 1]\),所以 \(s_i(t) \in [1-\alpha,\ 1+\alpha] = [0.6,\ 1.4]\),也就是最紧能收到 \(0.2 \times 0.6 = 0.12\),最松能放到 \(0.2 \times 1.4 = 0.28\)。
实际效果: - \(z_i(t) < 0\)(任务比群体平均更"坍缩")→ \(s_i(t) < 1\) → clip 范围收紧 → 不让已经收敛的任务被反复刷 - \(z_i(t) > 0\)(任务还在探索)→ \(s_i(t) > 1\) → clip 范围放松 → 给足更新空间
这步设计是真的漂亮。它没有用任何"全局 entropy 阈值"或者"预设规则",而是让任务彼此的相对位置决定各自 clip 范围。这在多任务场景下天然合理——你不需要知道每个任务"应该"多探索,只需要知道"在当前群体里它算快的还是慢的"。
模块三:Stability Trend Constraint
光有 progress pacer 还不够。论文发现一个微妙问题:cohort 归一化本身会产生反馈循环——某个任务 entropy 短暂上升,会让它在 z-score 上"上跳",clip 放松,更新幅度变大,entropy 进一步上跳,spike 形成。
EPPO 引入一个趋势约束来打断这个循环:
注意 ReLU 把"entropy 上升"这件事变成一个非负信号——只有当 \(\Delta \bar{H}_i > 0\)(entropy 反弹)时才去缩紧 clip,下降时不动作。这个不对称性是关键:让探索被激励(entropy 上升不算问题),但抑制"突发 spike 引发过度更新"。
最终目标函数
把 \(\epsilon\) 替换掉就行:
论文在 Appendix D 给了两个理论保证:
- \(\epsilon_i(t)\) 始终有界:因为 \(s_i(t) \in [1-\alpha, 1+\alpha]\) 且 ReLU 平滑不破坏有界性,所以 \(\epsilon_i(t) \in [\epsilon_0(1-\alpha), \epsilon_0(1+\alpha)]\),跑炸不了。
- 趋势约束是熵上升时的"收缩映射":当 \(\Delta \bar{H}_i > 0\),\(\epsilon_i(t+1) \leq \epsilon_i(t) / (1 + \Delta \bar{H}_i)\),提供了 stabilization 保证。
实验结果
主表:5 任务多任务训练
| 模型 | ALF | DB | KG | OS | WebShop | AVG |
|---|---|---|---|---|---|---|
| Claude-Sonnet-4 | 73.6 | 70.1 | 63.4 | 45.3 | 34.6 | 57.4 |
| GPT-5 | 65.4 | 63.2 | 64.1 | 34.5 | 33.7 | 52.2 |
| DeepSeek-R1 | 51.4 | 60.4 | 50.2 | 53.6 | 31.0 | 49.3 |
| AgentLM-70B | 86.0 | 37.7 | 47.0 | 21.5 | 64.9 | 51.4 |
| AgentRL(3B baseline) | 89.2 | 56.3 | 30.0 | 31.3 | 51.3 | 51.6 |
| DCPO | 0.0 | 61.0 | 10.6 | 27.2 | 50.5 | 29.9 |
| BAPO | 80.9 | 58.3 | 4.8 | 30.0 | 48.2 | 44.4 |
| EPPO | 91.0 ± 1.1 | 60.5 ± 1.1 | 29.6 ± 1.4 | 32.8 ± 0.6 | 57.5 ± 0.5 | 54.3 ± 0.9 |
几个值得反复看的数据点:
- DCPO 在 ALFWorld 上直接 0 分。DCPO 是 token-level 动态 clip(基于 token 先验概率调 clip 范围),在 ALFWorld 这种长 horizon、强多轮的文本游戏上完全崩了——意味着"单任务视角的 clip 自适应"在 agentic 多轮上不仅没用反而有害。
- BAPO 在 KG 上掉到 4.8%,而 AgentRL 还能保持 30%,EPPO 是 29.6%。BAPO 的 off-policy 平衡机制在 KG 这种需要反复回溯的图任务上也没兜住。
- EPPO 在 WebShop 上比 AgentRL 高 6.2 个点(51.3 → 57.5),这是平均分提升的最大贡献者。WebShop 需要大量探索-利用权衡的检索-排序,正好是 EPPO pacing 设计的甜点场景。
- KG 任务 EPPO 略低于 AgentRL(29.6 vs 30.0),论文没有深挖,但可以猜测 KG 是一种"早期高熵但 reward 信号极稀疏"的任务,相对 pacing 可能稍微低估了它的探索需求。
3 任务训练
| 模型(backbone) | ALF | DB | OS | AVG |
|---|---|---|---|---|
| AgentRL(Qwen2.5-3B) | 86.2 | 55.5 | 28.7 | 56.8 |
| EPPO(Qwen2.5-3B) | 88.7 ± 1.1 | 58.4 ± 0.7 | 30.3 ± 1.3 | 59.1 ± 1.0 |
| AgentRL(Qwen2.5-0.5B) | 0.0 | 26.3 | 9.0 | 11.8 |
| EPPO(Qwen2.5-0.5B) | 1.1 ± 0.7 | 30.5 ± 0.7 | 8.0 ± 0.3 | 13.2 ± 0.6 |
| AgentRL(Qwen3-8B) | 84.1 | 55.3 | 45.6 | 61.6 |
| EPPO(Qwen3-8B) | 86.9 ± 1.7 | 59.3 ± 0.6 | 43.2 ± 1.2 | 63.1 ± 1.2 |
3 任务设置的增益比 5 任务还稳(+2.3 / +1.4 / +1.5 个点),三个 backbone 全部正向。论文在 Appendix B 还做了 RLOO 变体:EPPO + RLOO 59.1 → 57.3 反而是降的,但比 vanilla RLOO 55.9 高——说明 EPPO 的机制和具体 RL 算法是正交的,不绑死 GRPO。
通用推理能力
| 模型 | AIME 24+25 | MATH500 | GSM8K | MMLU-Pro | GPQA |
|---|---|---|---|---|---|
| Qwen2.5-3B-Instruct | 3.3 | 50.4 | 60.7 | 44.6 | 25.2 |
| AgentRL | 6.6 | 56.0 | 66.6 | 38.0 | 27.0 |
| EPPO | 5.0 | 59.8 | 71.0 | 39.2 | 27.2 |
agentic 训练没有损伤数学推理能力——EPPO 在 MATH500 上比 AgentRL 高 3.8 个点、GSM8K 高 4.4 个点。AIME 略低于 AgentRL 但绝对值不差。MMLU-Pro 双方都掉了,符合"agentic RL 偏过程性推理而非广博知识"的预期。
训练曲线
图 3(a):5 任务训练下 EPPO vs AgentRL 的 pass rate 曲线。EPPO 在前 100 步就跑到 0.4,AgentRL 要 200 步才到;EPPO 始终领先 5-10 个点的"pass rate floor",500 步后稳定在 0.5 上下。
图 3(b):3 任务下差距更明显,EPPO 在 100 步前就拉开了 0.1+ 的领先。100 步后两者趋于同步,但 EPPO 始终比 AgentRL 高。
学习曲线的形状很说明问题:早期差距比后期大——这跟"多任务训练前段熵的解耦最严重"的直觉完全吻合。EPPO 提前把这个解耦期控住了。
消融实验
| 配置 | 5 任务 AVG | 3 任务 AVG |
|---|---|---|
| EPPO (full) | 54.3 | 59.1 |
| 去掉 task-wise clip | 48.8 | 58.4 |
| 去掉 trend constraint | 47.1 | 57.6 |
5 任务上去掉 task-wise clip 掉 5.5 个点,去掉 trend constraint 掉 7.2 个点——trend constraint 在 5 任务上比 task-wise clip 还关键。这个有点反直觉,论文解释是 5 任务的 cohort 归一化会放大任务间的梯度反向传播,trend constraint 是反向 spike 的"刹车"。
3 任务上差距小很多(差 0.7-1.5 个点),因为任务冲突本来就不严重,pacing 增益自然也小。这个是符合直觉的。
趋势约束的效果
图 4(a):去掉 trend constraint 后的 cohort z-score 轨迹。3 条任务线大幅震荡、频繁穿越,0 线和 -1 线之间反复跳。
图 4(b):完整 EPPO 的 z-score 轨迹。前 50 步一个 transient 之后,3 条线锁在稳定区间(一个在 +1.4,两个在 -0.7),几乎不再穿越。
这个对比特别直观:trend constraint 干的就是"防止 pacing 机制自己变噪声源"这件事。
Pacing 强度 \(\alpha\) 的敏感性
| \(\alpha\) | ALF | DB | OS | AVG |
|---|---|---|---|---|
| 0.2 | 89.9 | 55.5 | 26.4 | 57.3 |
| 0.4 | 88.7 | 58.4 | 30.3 | 59.1 |
| 0.6 | 87.8 | 57.5 | 27.4 | 57.5 |
\(\alpha = 0.4\) 是论文默认值,也是 3 个尝试值里最好的。0.2 偏弱,pacing 力度不够;0.6 偏强,clip 范围抖动太大反而伤训练。这个值的稳定性不错,工程上算是"调一下就差不多"的友好超参。
我对这篇论文的判断
亮点
"把 entropy 当仪表盘"是这两年 RL for LLM 最有用的范式之一。EPPO 不是第一个这么干的(前面 DAPO 已经在用 entropy 涨落做诊断,BAPO 也在用 entropy-clip 规则),但它是第一个把"multi-task 下的 entropy 群体动力学"这个具体子问题系统化的工作。crossover count / trend \(R^2\) / late spike 这三个指标,任何做 multi-task agentic RL 的人都可以直接拿去用——这是一个非常普惠的贡献。
理论分析很克制。Appendix D 给了两个 bound(clip 有界 + trend 收缩),没有强行讲大故事。作者在第 4.2 节明确说"entropy 不等于 learning progress",这种自我设限让方法的可信度更高——它知道自己不是万能钥匙,只是把探索节奏协调好。
RLOO 上的迁移实验。EPPO 在 vanilla GRPO 上涨 2.7 个点,在 RLOO 上也涨 1.4 个点。说明这个机制不绑死 PPO 家族的任何特定变体,是一个相对通用的"外挂模块"。
值得警惕的地方
第一,5 任务上 EPPO 比 AgentRL 平均高 2.7 个点,单任务最大差距在 WebShop 6.2 个点——但标准差 0.9-1.4 个点。这个差距是不是稳定可复现的?论文没有给多 seed 的显著性检验,也没有 bootstrap CI。Table 1 里 AgentRL 的 89.2 vs paper 原版 AgentRL 数字还有差异(论文在 Appendix C 专门花了一节解释)——重现性是个问号。
第二,cohort 归一化依赖 batch composition。如果你某次 update batch 里恰好没有 KG 任务,那 KG 的 z-score 就拿不到。论文没讨论 partial-batch 的 fallback 策略。如果上线到真正异构的 task pool(几十上百个任务),cohort 怎么采样、缺失任务的 \(\epsilon\) 怎么 fallback,会是个工程上的麻烦。
第三,对比基线 DCPO 在 5 任务上几乎崩盘(0% on ALFWorld),这个对比有点"借力"。DCPO 是单任务 RLVR 设定下提出来的,用在 multi-task agentic 上本身就不在它的设计范围。拿一个方法没考虑过的场景把它"比"下去,说明力有限。公平点说,应该把 DCPO 当作"single-task 自适应 clip 的代表"去对比,而不是"最强 multi-task baseline"。
第四,KG 任务 EPPO 反而比 AgentRL 低 0.4 个点。论文说"这是 trade-off",但没解释为什么 KG 这种"长期需要探索"的任务会被 pacing 误伤。可能是 cohort 里 KG 总被判定为"高 z-score"导致 clip 反复放宽,最终反而发散了。这块值得深挖。
跟同期工作放一起看
EPPO 的同期竞品有三类:
- 单任务视角的自适应 clip:DAPO 的 clip-higher、DCPO 的 token-level DAC、BAPO 的批级动态边界——这些都在"clip 范围"上动脑筋,但都假设单任务。
- 梯度协调类:PCGrad、CAGrad 这些经典 multi-task learning 方法,AgentRL 的 task advantage normalization 也是这一脉——它们处理的是"梯度方向/幅度"的冲突,不是"训练节奏"的冲突。
- 专家融合类:MiMo-V2-Flash、DeepSeek-V3.2 的蒸馏融合,是另一个解法。
EPPO 真正占的生态位是"第一个把多任务 RL 的训练节奏当成 first-class 优化对象"。它不是 DAPO 的升级版,也不是 PCGrad 的改进,它是把"entropy pacing"这个视角带进了 multi-task agentic RL。这点上是真正的 first。
怎么用这套思路
如果你也在做多任务 RL 后训练,EPPO 给了一个非常具体的、可落地的"工程模板":
- 监控:画一下你当前训练的 task-wise entropy 曲线,看有没有 crossover 和 late spike。如果有,pace mismatch 已经发生了。
- 快速验证:用 EMA(\(\beta=0.95\))+ cohort z-score + \(\tanh\) scaling 这个最小三件套,clip range 缩放窗口定在 \([1-\alpha, 1+\alpha]\),\(\alpha\) 从 0.4 试起。
- 必加的 trend constraint:不要跳过这一步。论文的消融表明 trend constraint 在 5 任务上比 task-wise clip 还关键。
- 诊断指标:crossover count、trend \(R^2\)、late spike amplitude 这三个直接抄就行。
这套机制的工程侵入度也低——只改 clip range,update engine 不用动,AgentRL 那种异步训练基础设施可以无缝接入。
收尾
EPPO 这篇论文解决的不是"大模型 RL 的根本问题",而是一个非常具体、非常常见的工程痛点——多任务训练里,任务的探索节奏不一致导致训练不稳定。它把这个问题量化成三个可计算的诊断指标(crossover count、trend \(R^2\)、late spike amplitude),然后用一个很轻的 task-wise 动态 clip 机制去对齐各任务的节奏。
比起"再设计一个新 RL 算法",EPPO 给我印象更深的是它对问题本身的诊断精度。那三张 entropy 曲线一摆出来,pace mismatch 这个现象就一目了然——这种东西做多任务 RL 训练的人基本都遇到过,但很少有人把它系统化、量化、然后用"模块化"的方式解决。
如果你正在做 multi-task agentic RL、或者打算把单任务的 RL 后训练扩展到多个任务上,这篇论文至少值得花一小时把 Figure 1 和 Figure 4 仔细看一遍——大概率你训练日志里也藏着同样的 crossover 和 late spike,只是没量出来过。
arXiv:2607.07178
觉得有启发的话,欢迎点赞、在看、转发。跟进最新 AI 前沿,关注我。