训崩的锅也许不在模型:ERPO 把 KL 正则从"答案"搬到了"题目"上
跑 GRPO 训数学推理的时候,你有没有见过这种怪象:训练集 reward 一路走高,评测集准确率却在某个 step 突然跳水,怎么调 KL 系数都救不回来?
这篇被 EMNLP 2026 录用的论文(arXiv:2608.23311)给出了一个挺反直觉的诊断:问题可能不在模型怎么答,而在模型怎么读题。作者发现,主流做法里那个约束输出分布的 Policy-KL 正则,其实一直漏掉了一个悄悄漂移的变量——训练 query 本身在模型眼里的分布。他们把这个漂移管住之后,AIME、MATH500 这些基准上不但分数涨了,高温采样和长训稳定性也肉眼可见地变好。
说实话,看到"给输入做 KL"这个思路我第一反应是:query 是固定的训练集,有什么好飘的?看完 Figure 1 我才意识到自己想简单了。
核心摘要:RL 训 LLM 一直有个稳定性-探索的两难——Policy-KL 加太强,模型不敢探索;不加,优化没有漂移刹车。ERPO(Environment-Regularized Policy Optimization)的做法是把正则从动作侧搬到输入侧:给"模型给训练题分配的似然分布"加一个 Query-KL,再配上一个由参考模型预先算好的 per-query 权重。六个数学推理基准上,ERPO 替换掉标准 Policy-KL 后 Avg@32 平均比 GRPO 高 6.2 个点(MATH500 单点最高 14.9 个点),train-eval gap 收窄约一半,而且不用任何额外前向传播。这不是又一个堆 trick 的 GRPO 变体,而是对"RL 环境到底是什么"的一次重新定义,值得细读。
论文信息 - 标题:Beyond the Stability-Exploration Dilemma: Environmental Regularization for LLM Policy Optimization - 作者:Xianlei Zhou, Xiangdi Meng, Yu He(通讯), Tianyu Qi, Shuyan Guan, Xianli Zhang, Jian Zhang, Xin Li, Qika Lin, Jun Liu - 机构:AMAP / Alibaba Group、JD.com、西安交通大学、北京师范大学、新加坡国立大学 - 链接:https://arxiv.org/abs/2608.23311 (EMNLP 2026 主会,代码开源在 AlibabaResearch/ERPO)
🎯 问题:Policy-KL 的两难,和一个没人管的漂移量
先把背景摆清楚。GRPO、PPO 这些 RLHF 流水线里,KL 正则是标配——拉住当前策略别偏离参考模型太远,防止训崩。这个 KL 算的是输出侧的:给定 query,模型生成 response 的分布 \(\pi_\theta(o|q)\) 相对参考分布 \(\pi_{\theta_0}(o|q)\) 别跑太远。
这就带来一个经典两难。KL 系数调大,模型的回答被拽向参考分布,探索预算被吃掉,RL 变成温吞的 SFT;调小或者干脆去掉,优化过程就没有了显式的漂移控制,reward hacking 和崩溃随时可能来。过去一年 GRPO 的各种变体——加熵正则的、改 clip 的、调优势估计的——基本都在动作侧打转。
ERPO 的作者换了个角度看问题:即使训练题目一个字没变,模型"看到"的训练环境也一直在变。
为什么?因为模型对每道题的似然 \(P_\theta(q)\) 随参数 \(\theta\) 一起在动。一道题在 pre-RL 模型眼里是"常见题",训了 100 步之后可能变成"罕见题"。作者把模型诱导的 query 分布记作 \(\rho_\theta(q) = P_\theta(q)\),它相对参考分布 \(\rho_{\theta_0}\) 的漂移就定义为:
这个视角其实有经典 RL 的根:初始状态分布或者转移核随时间漂移,就是典型的非平稳环境。模仿学习里的协变量偏移(DAgger 那一路工作治的就是这个病)也是同一个教训。有意思的是,之前也有工作注意到 prompt 分布这件事——比如做 prompt 采样的 EVA、做数据重加权的 Align-Pro——但主流 RLHF 流水线里,没有人直接约束过 query 分布本身。
光说没用,论文 Figure 1 给的证据很直接:

Figure 1:标准 GRPO 训练过程中,深色的 Query-KL 从 0 一路爬到接近 1.0,而浅色的 Policy-KL 全程贴在低位(不到 0.1)。动作侧被正则摁得死死的,输入侧却在裸奔。
这张图我读了两遍。Policy-KL 被控制住的时候,Query-KL 涨了将近一个数量级——说明"约束输出 KL 就能稳定整个训练"这个默认假设,在输入端根本不成立。这就是论文要填的坑。
🏗️ 方法:Query-KL + per-query 权重,两个部件各司其职
ERPO 的核心想法一句话能讲完:正则化模型给题目分配概率的方式,而不是模型生成答案的方式。

Figure 2:上方绿色是 ERPO 的计算流——用 \(D_{KL}(query)\) 度量 query 分布漂移做环境正则,同时用 \(w_B(q) = f(\rho_{\theta_0}(q))\) 在 query 层面给优势加权;下方粉色是 GRPO 的老路——只对输出分布算 \(D_{KL}(policy)\)。注意 ERPO 的输入来自同一组前向传播,没有额外开销。
Query-KL:只管输入,不碰输出
Query-KL 的定义很朴素:
其中 \(\ell_\theta(q) = \log P_\theta(q)\) 是模型对整条 query 的对数似然(把 query 当成一个自终止的 token 序列,自回归地算)。
妙处在梯度上。论文的 Proposition 1 给出了闭式:
证明的关键一步是:展开后第二项求和会因为 \(\rho_{\theta_0}\) 不依赖 \(\theta\)、且 \(\rho_\theta\) 是概率分布而塌缩成 \(\nabla_\theta(1) = 0\),剩下的部分用 log-derivative trick 一整理就是这个形式。
等等,这个式子值钱在哪?注意看:梯度严格经由 \(\nabla_\theta \ell_\theta(q)\) 流动,策略梯度估计器里那个 response score function \(\nabla_\theta \log \pi_\theta(o|q)\) 根本没出现。也就是说,这个正则项对响应分布不施加任何直接梯度压力——它只管"别让你对题目的看法飘太远",不碰"你怎么答题"。开头说的稳定性-探索两难,就是这么被绕开的:稳定和探索分别由输入侧和输出侧各自负责,不再互相抢预算。
这个性质有个挺重要的推论:Policy-KL 那种"正则越强、探索越弱"的耦合,在 QKL 这里不存在。
Per-query 权重:把训练分布往参考分布上拽
光有约束还不够。ERPO 的目标其实是让模型在参考 query 分布 \(\rho_{\theta_0}\) 下最大化期望奖励,而训练数据是均匀采的。中间的差距用重要性权重补:
均匀采样下 \(w^*(q) = N \cdot \rho_{\theta_0}(q)\),所以只需要参考模型对每个 query 的似然排序。实现上作者用了一个简单变换:先算每条 query 的负对数似然 \(s_i = -\log p_{\theta_0}(q_i)\),再取均值的倒数比 \(\tilde{w}(q_i) = \bar{s}/s_i\),最后 clip 到 \([0, 2]\)。
直觉是什么?参考模型觉得"顺手"的题(NLL 低),权重高;觉得"别扭"的题,权重压下去。这类别扭的题往往诱导低概率响应,梯度方差大,是训练不稳定的一个来源。
最终训练损失长这样:
即插即用:三步接入现有流水线
我觉得这篇论文在工程上最讨喜的一点是改造成本几乎为零。它给了一个通用 surrogate,GRPO、PPO、REINFORCE 风格的目标都能套。以 GRPO 为例:
接入只要三步:在整个数据集上用参考模型预计算一遍 \(\ell_{\theta_0}\) 并缓存;把原来的均匀权重 \(1/m\) 换成 \(w_B(q)/m\);损失里加上 \(\alpha \hat{\mathcal{R}}_{query}\)。\(\ell_\theta(q)\) 直接从现有 PG 前向传播里读,不需要额外 forward,不改架构。EasyR1 这类框架里改几十行代码的事。
🧪 实验:分数、稳定性、抗 hacking,三线都有交代
实验配置:Qwen2.5-Math-7B 和 Qwen2.5-32B,MATH 数据集 Level 3-5 约 8.5K 题,EasyR1 框架,每题采 8 条响应、温度 1.0,rollout batch 512、update batch 128,训 240 步。评测覆盖 AIME24/25、AMC、MATH500、Minerva、OlympiadBench 六个基准,温度从 0.1 扫到 1.5 聚合。baseline 是带默认 KL 系数 0.01 的 vanilla GRPO。
主实验:六个基准全面压制

Figure 3:六个数学推理任务上的 Avg@32(温度聚合)。紫色 ERPO 在全部六项上领先,Math500 上从 GRPO 的 52.8 拉到 67.7。
| 方法 | AIME24 | AIME25 | AMC | MATH500 | Minerva | Olympiad | 平均 |
|---|---|---|---|---|---|---|---|
| Base | 8.7 | 3.0 | 24.6 | 34.0 | 5.8 | 9.9 | 14.3 |
| GRPO | 17.4 | 7.2 | 39.8 | 52.8 | 20.7 | 26.6 | 27.4 |
| ERPO | 21.8 | 11.0 | 47.8 | 67.7 | 21.4 | 31.6 | 33.6 |
(Avg@32,单位 %。Pass@32 和 Pass@1 趋势一致:ERPO 平均 61.1 / 33.2,GRPO 57.5 / 27.5。)
平均涨 6.2 个点,MATH500 单点 14.9 个点——这个幅度在已经卷得很厉害的数学 RL 赛道上是能打的。更难得的是提升不是来自某个单一基准的运气,六项里有五项拉开明显差距。
训练动态:Query-KL 被摁住了

Figure 4:四个指标的训练曲线(深色 ERPO,浅色 GRPO)。左边第一幅最关键:GRPO 的 Query-KL 一路冲到 1.0,ERPO 全程压在 0.2 以下;准确率曲线上两者最终收敛位置接近但 ERPO 更平滑。
两条训练曲线训练集采样准确率其实差不多——说明 ERPO 不是"学得更多",而是"学得更稳"。差别在漂移轨迹上:GRPO 的 query-level KL 比 policy-level 高出一个数量级,ERPO 把两边都摁住了。
长训:崩溃来得更晚、更轻

Figure 5:扩展到约 1000 步的长程 RL。GRPO 在 400 步附近 Entropy Loss 和 Policy-KL 突然飙升、准确率从 0.85 跌到 0.5 附近;ERPO 同期基本平稳,直到 800 步后才开始出现类似症状。
这里要说句公道话:ERPO 不是崩溃免疫。图里看得很清楚,800 步之后它的熵也会突增、采样能力也会受损。论文自己也承认这一点。但崩溃从 400 步推迟到 800 步,对实际训练来说等于把可用训练窗口翻了一倍——这是实打实的工程价值。
消融:两个部件各管什么
Table 2 的消融做得比较干净(MATH500,不同温度下的 Pass@1):
| 配置 | T=0.1 | T=0.6 | T=1.0 | T=1.5 | ≤1.0 均值 | 1.2-1.5 均值 |
|---|---|---|---|---|---|---|
| Baseline | 52.4 | 46.8 | 32.8 | 0.4 | 44.4 | 6.2 |
| GRPO | 66.8 | 68.4 | 73.8 | 0.4 | 68.8 | 12.5 |
| GRPO + w(s) | 78.2 | 76.8 | 71.2 | 7.6 | 76.1 | 23.8 |
| GRPO + Query-KL | 81.6 | 81.6 | 79.0 | 2.6 | 80.9 | 38.0 |
| ERPO(α=1e-2) | 79.4 | 80.6 | 75.2 | 8.6 | 78.7 | 37.9 |
| ERPO(α=5e-2) | 78.8 | 81.0 | 76.0 | 15.0 | 79.0 | 43.4 |
几个值得抠的点:
- Query-KL 是主引擎。只用 QKL 替换 Policy-KL(其他全不动),低温区已经冲到 80.9,论文报告相对 GRPO 平均提升 15.9 个点。反过来,把所有 KL 约束全去掉,训练直接不收敛——所以"正则不需要了"这种解读是错的,是正则要换位置。
- 权重 w(s) 是稳定器。它把高温区的方差压下去(看 1.2-1.5 那列:GRPO 12.5 → 加权后 23.8),跟 QKL 是互补关系。
- α 有调参空间。α=5e-2 时高温区从 37.9 升到 43.4,但低温区略降。作者承认没做系统搜索,默认取 1e-2 是为了公平对比。
Table 3 的机制分析把"为什么互补"讲清楚了:
| 方法 | Query-KL | Policy-KL | Entropy |
|---|---|---|---|
| GRPO | 0.968 | 0.060 | 0.506 |
| GRPO + w(s) | 0.593 | 0.011 | 0.278 |
| GRPO + Query-KL | 0.004 | 0.100 | 0.567 |
| ERPO | 0.083 | 0.073 | 0.424 |
只用 QKL 时策略熵最高(0.567)——探索确实被保留了,QKL 自己不去摁输出;只用 w(s) 时熵最低但 Policy-KL 也最小——权重通过降方差间接稳住了输出端。ERPO 取中间态:Query-KL 从 0.968 压到 0.083,同时熵保持在健康水平。两个部件的分工,数字上对得上论文的说法。

Figure 7:(a) 各方法随温度变化的 Pass@1。Base 和 GRPO 在温度过 1.0 后断崖式下跌,ERPO(橙色)和 GRPO+Query-KL(粉色)的曲线一直撑到 1.2 才缓慢下滑;(b) 不同 α 的对比,α=5e-2 在高温区最抗跌。
这张图是"高温稳定性"最直观的证据。实际部署里采样温度调到 1.0 以上是常事(比如要多样性做 best-of-n),GRPO 训出来的模型在这个区间基本是废的,ERPO 还能维持六七成的通过率。
Reward hacking:train-eval gap 收窄一半
Appendix C 的量化我挺喜欢。GRPO 在 Step 240 出现了典型的 reward hacking:评测准确率从约 75% 骤降到 58.4%,训练集指标却一切正常。ERPO 全程没出这种事,train-eval 平均差距从 GRPO 的 6.47% 收窄到 3.14%,降了约 51%。
这个结果是"环境漂移"理论最有力的旁证:如果 train-eval gap 真的来自模型对训练题分布的过度拟合(漂移的 query 分布让模型在训练题上过拟合),那把 query 分布钉住,gap 自然收窄。数字确实对上了。
另外作者还在 DAPO、RLOO 上做了迁移验证:DAPO+ERPO 到 78.4(涨 10.24),RLOO+ERPO 到 79.56(涨 2.28),32B 模型上 ERPO 到 84.6(涨 2.98)。不是 GRPO 专属补丁,这点对"环境正则化是个通用概念"的立论很重要。
🤔 我的判断:视角的价值大于数字本身
这篇论文我觉得最值钱的不是那 6.2 个点,而是它把一个被默认忽略的量——query 分布漂移——摆上了台面,并且给了干净的度量(EnvShift)和可行的控制手段。Proposition 1 的梯度解耦性质是真正的理论亮点:输入侧正则不消耗输出侧探索预算,这个 argument 一旦成立,"稳定性-探索 trade-off"这个叙事本身就要改写。
但也有几个地方要泼点冷水。
实验面偏窄。 只有数学推理、只有 Qwen 系。数学任务有精确的 verifiable reward,是最不容易 hacking 的场景之一;换到 reward model 打分的通用对齐场景,query 漂移和 reward hacking 的耦合关系还成不成立,得打问号。
A1 假设是个前提不是定理。 "保持 query 分布对齐参考分布能保留泛化能力"——实验支持,但如果某次 RL 的目的就是要让模型适应新的输入分布呢?QKL 会不会反而成了阻力?论文没讨论这种场景。
query 似然的成本会随数据规模变。 预计算 \(\ell_{\theta_0}\) 是线性的,8.5K 题无所谓,但 RLHF 数据上百万条时这一步和 K3 风格 surrogate 的估计偏差都得重新评估。说实话这块我自己也没完全想清楚,mini-batch 估计的 QKL 在大数据集上方差表现如何,论文给的证据有限。
跟同期工作比,EVA 做 prompt 采样优化、Align-Pro 做数据重加权,都算"意识到 prompt 分布很重要"的一派,但 ERPO 是第一个把 query 漂移形式化成 KL 正则、并且证明梯度性质干净到可以无损替换 Policy-KL 的。从"启发式调数据"到"显式环境正则化",这个 step 是实质性的。
📝 收尾
如果你在跑 GRPO 类的数学 RL,我的建议很直接:把 ERPO 那两个改动(缓存 query 似然 + QKL 项 + per-query 权重)抄过去试试,改造成本低,消融里"只加 QKL"那一行就已经值回票价。如果你在训长程 RL 或者部署时要开高采样温度,这篇几乎必读——Figure 5 和 Figure 7 那两条曲线就是你未来会踩的坑。
更值得记住的是那个视角:RL 的环境从来不只是 reward function,模型眼里的输入分布也是环境的一部分,而且它一直在动。下一次再看到"训练崩了"的时候,除了查 reward 和 KL,也许该先画一条 Query-KL 曲线看看。
参考资料 - 论文:https://arxiv.org/abs/2608.23311 - 代码:https://github.com/AlibabaResearch/ERPO
觉得有启发的话,欢迎点赞、在看、转发。跟进最新AI前沿,关注我