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 曲线,发现了三个"反常但稳定"的信号:

  1. 任务熵的坍缩节奏完全不一致:ALFWorld 100 步就跌到接近 0,WebShop 在 0.1 上下震荡,KG 还有 0.3 的余温。三条线在训练中段频繁互相穿越(crossover),跟你预期的"按难度平滑下降"完全不一样。
  2. 晚期有反常的 entropy spike:已经稳定的任务,会被别的任务梯度反向踢高一次,呈现"已经收敛但突然又开始乱"的状态。
  3. 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 的目标函数就会发现一件尴尬的事:

\[ \mathcal{J}_{\text{GRPO}}(\theta) = \mathbb{E}\left[\frac{1}{G}\sum_{i=1}^{G}\min\left(\rho_{g,t}(\theta)A_t,\ \text{clip}(\rho_{g,t}(\theta),\ 1-\epsilon,\ 1+\epsilon)\,A_t\right)\right] \]

这里的 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:多任务训练的熵速动态对比 图 1(a):AgentRL 的 5 任务 policy entropy 曲线。ALFWorld 和 OS 几乎瞬间坍缩到接近 0;WebShop 在 0.05 上下窄幅震荡;KG 始终在 0.3-0.4 高位徘徊;DB 起伏最大。500 步内 5 条线反复穿越,没有任何"齐步走"的迹象。

图1:EPPO的熵速分布 图 1(b):EPPO 同样 5 任务的 entropy 曲线。对比 (a) 一眼就能看出:KG 那条线整体下移、变窄;ALFWorld / OS / WebShop 三条线在 0.0-0.1 区间形成稳定的"低位带";线之间不再反复穿越。节奏被"压"到了可识别的群组结构里。

图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三模块流水线 图 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 拉一条平滑曲线:

\[ \bar{H}_i(t) = \beta \cdot \bar{H}_i(t-1) + (1-\beta) \cdot H_i(t) \]

其中 \(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)

\[ R_i(t) = \frac{\bar{H}_i(t)}{H_i(0)} \]

这个比值的好处是无量纲——不同任务的熵量级差异被归一化了,OS 命令的 0.5 和 WebShop 的 0.05 可以放在同一个尺度上比较。

模块二:Progress Pacer

\(EPPO\) 的核心创新在这里。它把 \(R_i(t)\)整个 cohort 上做 z-score 归一化

\[ z_i(t) = \frac{R_i(t) - \mu_R(t)}{\sigma_R(t) + \epsilon} \]

\(\mu_R(t)\)\(\sigma_R(t)\) 是当前 batch 内所有任务 \(R_j(t)\) 的均值和方差。注意这一步用了"cohort"而不是 global 统计——它关心的不是"这条任务绝对值是多少",而是"这条任务在群体里排第几"。

然后用一个 bounded scaling 把 \(z_i(t)\) 映射到 clip 缩放系数:

\[ s_i(t) = 1 + \alpha \cdot \tanh(z_i(t)), \quad \epsilon_i(t) = \epsilon_0 \cdot s_i(t) \]

其中 \(\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 引入一个趋势约束来打断这个循环:

\[ \Delta \bar{H}_i(t) = \bar{H}_i(t) - \bar{H}_i(t-1) \]
\[ \epsilon_i(t) \leftarrow \frac{\epsilon_i(t)}{1 + \text{ReLU}(\Delta \bar{H}_i(t))} \]

注意 ReLU 把"entropy 上升"这件事变成一个非负信号——只有当 \(\Delta \bar{H}_i > 0\)(entropy 反弹)时才去缩紧 clip,下降时不动作。这个不对称性是关键:让探索被激励(entropy 上升不算问题),但抑制"突发 spike 引发过度更新"

最终目标函数

\(\epsilon\) 替换掉就行:

\[ \mathcal{L}^{\text{EPPO}}_i(\theta) = \mathbb{E}\left[\min\big(\rho_{g,t}(\theta) A_t^i,\ \text{clip}(\rho_{g,t}(\theta),\ 1-\epsilon_i(t),\ 1+\epsilon_i(t))\,A_t^i\big)\right] \]

论文在 Appendix D 给了两个理论保证

  1. \(\epsilon_i(t)\) 始终有界:因为 \(s_i(t) \in [1-\alpha, 1+\alpha]\) 且 ReLU 平滑不破坏有界性,所以 \(\epsilon_i(t) \in [\epsilon_0(1-\alpha), \epsilon_0(1+\alpha)]\),跑炸不了。
  2. 趋势约束是熵上升时的"收缩映射":当 \(\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:验证集学习曲线 图 3(a):5 任务训练下 EPPO vs AgentRL 的 pass rate 曲线。EPPO 在前 100 步就跑到 0.4,AgentRL 要 200 步才到;EPPO 始终领先 5-10 个点的"pass rate floor",500 步后稳定在 0.5 上下。

图3:3任务学习曲线 图 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:z-score trajectory对比 图 4(a):去掉 trend constraint 后的 cohort z-score 轨迹。3 条任务线大幅震荡、频繁穿越,0 线和 -1 线之间反复跳。

图4:完整EPPO的z-score 图 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 的同期竞品有三类:

  1. 单任务视角的自适应 clip:DAPO 的 clip-higher、DCPO 的 token-level DAC、BAPO 的批级动态边界——这些都在"clip 范围"上动脑筋,但都假设单任务。
  2. 梯度协调类:PCGrad、CAGrad 这些经典 multi-task learning 方法,AgentRL 的 task advantage normalization 也是这一脉——它们处理的是"梯度方向/幅度"的冲突,不是"训练节奏"的冲突。
  3. 专家融合类: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 前沿,关注我。