ERPO:面向代码生成测试时强化学习的熵正则化排名掩码策略优化
Entropy-Regularized Rank-Masked Policy Optimization for Test-Time Reinforcement Learning in Code Generation
作者提出 ERPO,用探针共识奖励在无标签代码题上做测试时强化学习,Qwen3-4B 域内 LCB 的 pass@1/pass@16 从 26.0%/34.4% 升至 36.7%/46.3%。
- 测试时强化学习常用答案级自投票构造奖励,代码是开放词表程序,表面形式无法直接比较,因而缺少可用训练信号。
- 从题面生成无输出探针,按候选程序在探针上的行为一致率定义 PCR。ERPO 只对组内低 PCR 的一半做负向更新,并用固定熵上限抑制熵漂移。
- Table 1 中,Qwen3-4B 经 ERPO 后 LCB 的 pass@1/pass@16 从 26.0%/34.4% 到 36.7%/46.3%,三基准迁移均值从 13.8%/25.7% 到 25.4%/39.3%。直接优化 PCR 的 GRPO 会压低 pass@16。
- 作者称评测限于竞赛式编程基准,未评测项目级代码生成,并将其列为后续方向。实验覆盖 Qwen3-4B/8B,以及 LCB 适应和向 CC、CF、TACO 的零样本迁移。
- Evaluated models
- Qwen3-4BQwen3-8B
- Benchmarks
- LiveCodeBench (LCB)CodeContests (CC)CodeForces (CF)TACO
- Metrics
- pass@1 (P@1)pass@16 (P@16)pass@kAUC(sPCR, yhid)Best-of-n accuracy
针对代码生成中程序无法按表面形式比较、答案级自投票无法提供训练信号的问题,研究者提出探针驱动的 TTRL,用问题陈述构造无输出探针输入,执行候选程序并依据行为一致性定义 Probe Consensus Reward(PCR)。由于 PCR 并非可靠验证器、易受虚假共识导致的奖励作弊影响,进一步提出 Entropy-Regularized Rank-Masked Policy Optimization(ERPO),通过排名掩码将低 PCR 转为保守负更新,并用熵上限控制策略漂移。在代码基准上,ERPO 在域内适配与零样本迁移中均显著提升 pass@1 与 pass@k,论文已被 EMNLP 2026 主会接收。
Paper analysis
What problem does this paper attempt to solve?
代码生成缺少可比较答案,标准测试时强化学习的自投票奖励无法直接使用。
代码生成在测试时没有标准答案可投票,现有 TTRL 无法直接给出可用奖励;作者希望在无标签题上同时提高 pass@1 和 pass@k。
- 场景:作者认为部署时回答质量是核心问题。推理时扩展通过多次采样再投票、验证或搜索来选答案,但不改参数;样本多时延迟高。测试时强化学习(TTRL)把测试时信号变成奖励,在无标签任务上更新模型,以提高单次生成质量(Zuo et al., 2025 等)。
- 现有不足:数学题可以把答案归约为可比较的规范形式,用多数答案作伪标签。代码是开放词表程序,表面形式不能直接精确匹配投票(Li et al., 2022; Shi et al., 2022)。无训练的推理时搜索用执行轨迹或功能共识比较程序,但测试时适应缺少评测程序所需的输入。只强调 pass@1 的目标还可能降低解的多样性,从而削弱 pass@k(Zhou et al., 2025)。
- 核心观察:探针共识奖励(Probe Consensus Reward, PCR)可提供行为训练信号,但不是可靠验证器,高共识可能来自共同错误或探针漏掉关键边界。作者认为低共识比高共识更适合当作负信号。
- 本文做法:提出探针驱动的 TTRL:由题面生成无预言输出的探针输入,在探针上执行候选程序并计算 PCR;再提出熵正则化的秩掩码策略优化(Entropy-Regularized Rank-Masked Policy Optimization, ERPO),用秩掩码把低 PCR 变成保守负更新,并用熵上限控制策略漂移。
What related research exists?
作者把本文放在无监督 RLVR/TTRL 与代码推理时扩展两条线上,用执行共识做奖励而非选择。
相关工作按论文第 5 节分成两组,引言还对照了答案级投票与无训练代码搜索。
无监督 RLVR 与测试时强化学习
- 可验证奖励的强化学习(RLVR)(Yu et al., 2025):用外部验证器的标量奖励优化策略;作者称验证器可信时最可靠。
- 无监督 RLVR / TTRL(Zuo et al., 2025; Wang et al., 2023; Liao et al., 2026; He et al., 2026):用适应时可得的信号构造奖励,常见做法是答案级一致或自一致性。作者称这类奖励适合有规范最终答案的任务,代码缺少这一结构。
- 基于执行的无标签代码训练(Launer et al., 2026; Fan et al., 2026; Wang et al., 2025):在共享输入上用候选输出做共识训练、从采样程序和测试得到监督,或让编码器与测试器通过执行反馈协同进化。作者称本文沿执行比较这条线,但用于探针驱动 TTRL,并用 ERPO 避免直接强化未被证明正确的高共识样本。
代码生成的推理时扩展
- 行为选择与生成测试:MBR-Exec(Shi et al., 2022)按测试输入上的行为一致选择程序;CodeT 与 TCS(Chen et al., 2023; Xu et al., 2026)额外生成测试并用执行结果做选择。
- 大规模采样系统:AlphaCode 及后续工作(Li et al., 2022; Chen et al., 2024; Li et al., 2025; Samadi et al., 2026)用大规模采样、生成测试、功能分解、成对执行比较或基于簇的选择扩展代码生成。
- 作者的区分:作者称这些方法用执行引导推理时的生成和选择;只做选择不改变生成分布,并受 pass@k 覆盖范围限制。测试时策略优化可以改变生成分布,但也可能跨更新强化错误共识。
基线与基准
- 基线方法:Base;GRPOPub(用公开测试的输入输出算奖励);GRPOPCR(用 PCR 做 GRPO);NSRPCR(把 PCR 当作只惩罚低分样本的负信号,Zhu et al., 2025)。
- 基准/数据集:域内适应用 LiveCodeBench(LCB);零样本迁移到 CodeContests(CC)、CodeForces(CF)、TACO。
作者将本文定位为:用无输出探针把执行共识做成 TTRL 的行为奖励接口,再用秩掩码和固定熵上限优化,目标是提高 pass@1 并保留 pass@k 前沿。
How does the paper address this problem?
用无输出探针的行为共识作 PCR,ERPO 只惩罚低共识一半并加上熵上限。
整体是三阶段的探针驱动 TTRL:ERPO 不把高 PCR 当成正确标签,只抑制低共识候选,并用熵上限约束策略熵。
问题设定
- TTRL:在推理阶段对无标签测试任务适应,没有可信验证器,需要代理奖励。数学等规范答案任务用多数答案 a* 做 0/1 投票奖励;代码的语义等价程序表面形式可以无关,必须比较行为。
- 代码 RLVR:标准奖励在理想测试集 T* 上,当且仅当所有测试执行输出等于预言输出时为 1。作者称 TTRL 下目标题没有这类可信测试,标准代码奖励无法使用。
- 符号:对同一题的 G 个候选,PCR 分数 si 经组内归一化得到优势 Ai;ERPO 最小化 L_ERPO = L_PCR + L_H。
探针输入与 PCR
- 探针生成:对每个题 x,模型只看自然语言题面。优化前一次性生成 Kx 个原始输入,组成探针集 Tx,之后各训练步复用。第 j 轮提示包含题面和已生成输入,要求新输入格式正确、满足约束且结构不同。附录 B 给出提示模板。探针只引出行为,不带可信输出。
- PCR:从当前策略采样 G 个候选,在每个探针 tj 上执行。执行失败则该探针不计分,也不进入该探针的多数统计。多数集 Mj 取出现次数最多的输出,并列都算多数。si 是输出落入 Mj 的探针比例,si 属于 [0,1]。Figure 2 的例子在 Kx=3 时给出 s=1.00、0.67、0.33。
- 不对称性:作者认为高分仍可能是共享 bug 或探针漏掉角落情形;正确程序若行为少见也会低分。因此优化里保守使用 PCR。
ERPO 更新
- 组内优势 Ai = (si − μx) / σx,μx、σx 为该题 PCR 的均值和标准差,更新看相对行为支持而不是绝对分值。
- 按 Ai 从高到低排序,掩掉前 ⌈G/2⌉ 名,只保留后一半的带符号优势。作者称保留样本通常 Ai<0,从而降低低共识程序的似然,高 PCR 的策略梯度权重为 0。
- 熵项 L_H = λH max(0, Hθ − Hceil)^2。Hθ 是当前 actor 更新上的 token 级策略熵平均,Hceil 在适应前固定。低于上限不惩罚,高于上限二次惩罚。
Algorithm 1:每步抽一题、取出预计算探针、用旧策略采样 G 个程序、执行并算 PCR 与优势、加秩掩码、对 L_ERPO 做一步梯度更新。论文在梯度方向的写法里忽略了裁剪。
训练配置与对照损失
- 共用设置(附录 A):verl、vLLM rollout、FSDP actor;Qwen3-4B 与 Qwen3-8B 为非思考模式。AdamW,常数学习率 5×10^−7,20 步线性 warmup。每步 16 个提示、每提示 G=16 条 on-policy rollout。PPO mini-batch 为 4 个提示,每个全局步 1 个内层 epoch,最多 150 个全局步。除另有说明外,取预定日程的最终检查点,训练时不看隐藏测试的 pass@k。
- NSRPCR:逐点 PCR,KL 系数 10^−3;ri = 2(si − 0.5),只保留 ri<0(即 si<0.5)做 actor 更新。
- ERPO:同样逐点 PCR 与 KL 系数 10^−3;掩掉每组 PCR 最高的 ⌈G/2⌉;λH=0.5,Hceil=0.5,并计算 actor 熵。GRPOPCR 直接用 PCR 做 GRPO;GRPOPub 在测试时能看到公开测试的完整输入输出,作者称该验证器可靠但不完整。
成功判定
- 域内:只在目标基准的无标签题面上更新,训练时看不到任何评测输入及其预言输出;完整评测集仅事后计算 pass@k(Chen et al., 2021)。
- 迁移:只在无标签 LCB 上适应一次,再在 CC、CF、TACO 上测试且不再更新。pass@k 在推理时扩展实验中被作者称为完美选择器下的上界;部署时必须只交一个解。
What experiments did the paper conduct?
Qwen3-4B/8B 上 ERPO 同时提高 LCB 的 pass@1 与 pass@16,并迁移到 CC、CF、TACO。
实验设置
- 模型:Qwen3-4B、Qwen3-8B(非思考模式)。
- 数据与协议:主实验在 LCB 上做无标签域内适应;零样本迁移到 CC、CF、TACO,适应只用 LCB 题面。论文未在正文给出各基准题数。训练最多 150 个全局步,G=16。除非另有说明,报告预定日程的最终检查点。
- 基线:Base、GRPOPub、GRPOPCR、NSRPCR。无标签基线只看题面;GRPOPub 使用公开测试的输入输出。
- 指标:pass@1、pass@16,以及 pass@k;迁移 Mean 为 CC、CF、TACO 三者平均。PCR 分析用 AUC(sPCR, yhid) 和隐藏测试失败率,yhid 为隐藏测试正确性,分析时才使用隐藏测试。
- 推理时扩展:Table 3 对 Qwen3-4B 在 LCB 与 CC 上每题采样 256 个解。Table 4 的训练无关搜索用 CodeT-BoN(每题 M=32 个由基座生成的测试,按通过模式簇大小排序)和 RM-BoN(Skywork-Reward-Llama-3.1-8B-v0.2)。
- 熵消融:Hceil ∈ {0.2, 0.5, 1.0},模型为 Qwen3-8B,基准 LCB,其余超参与附录 A 相同。探针数默认取 Ngen=10(附录 I)。
主结果
Table 1 为百分比。Mean 只平均三个迁移目标,不含 LCB。
Swipe horizontally to read the table
模型 方法 LCB P@1 LCB P@16 Mean P@1 Mean P@16 Qwen3-4B Base 26.0 34.4 13.8 25.7 Qwen3-4B GRPOPub 33.8 35.4 14.3 26.3 Qwen3-4B GRPOPCR 27.8 30.9 13.3 22.1 Qwen3-4B NSRPCR 25.7 39.4 14.9 33.2 Qwen3-4B ERPO 36.7 46.3 25.4 39.3 Qwen3-8B Base 25.6 34.6 14.6 27.6 Qwen3-8B GRPOPub 32.1 37.1 15.8 27.4 Qwen3-8B GRPOPCR 26.3 29.1 14.8 25.4 Qwen3-8B NSRPCR 25.9 39.4 15.4 33.2 Qwen3-8B ERPO 35.1 50.9 22.9 38.8 - 作者解读:ERPO 同时提高单次准确率和 pass@k 覆盖,并迁移到 CC、CF、TACO。Qwen3-4B 上 ERPO 的分项为 CC 42.1/58.2、CF 20.7/38.5、TACO 13.3/21.3(P@1/P@16);Qwen3-8B 为 39.4/57.7、17.5/37.3、11.8/21.3。
- 对照:作者称 GRPOPCR 最差:4B 的 LCB pass@1 仅从 26.0 到 27.8,pass@16 从 34.4 降到 30.9,迁移上 pass@1 增益消失。GRPOPub 的 pass@1 次高,但 pass@16 增益有限,8B 迁移增益几乎不保持。NSRPCR 提高 pass@16,pass@1 增益很小;作者称反复惩罚负样本使熵升高,pass@16 主要来自多样性,并称附录中 NSRPCR 随后出现熵爆炸和策略崩溃。
- 作者结论:ERPO 是唯一同时明显提高 pass@1 和 pass@16 的适应方法。Figure 1 左为 Qwen3-8B 逐步 LCB,中为 Qwen3-4B 三目标平均迁移,右为 Qwen3-4B 的 LCB 推理时扩展;正文未逐点列出曲线数值。
PCR 与隐藏测试的关系
- 测了什么:Table 2 在 LCB 上把 PCR 与隐藏测试正确性比较,隐藏测试不参与适应。
- 结果:AUC 为 Qwen3-4B 0.790、Qwen3-8B 0.750。s≤0.5 的失败率 92.0% / 91.3%;s≤0.25 为 91.1% / 91.0%;s≥0.9 为 50.7% / 54.6%;s=1.0 为 44.2% / 51.9%(4B / 8B)。作者称低 PCR 时两个模型失败超过 91%。
- 作者解读:低 PCR 是强负信号,高 PCR 不是正确性证书。GRPO 可能把相对高 PCR 的候选变成正目标,在组内没有隐藏测试正确解时强化共识性错误程序。
推理时扩展与 Best-of-n
- pass@k:Table 3,Qwen3-4B,每题 256 个样本。LCB 上 ERPO 从 P@1 36.2 到 P@256 51.9;Base 为 26.0 到 40.1;GRPOPub 为 32.4 到 36.6;GRPOPCR 为 27.3 到 31.9;NSRPCR 为 25.0 到 47.9。CC 上 ERPO 为 41.5 到 65.9;Base 25.0 到 50.3;NSRPCR 27.3 到 64.1;GRPOPub 42.2 到 47.7;GRPOPCR 27.1 到 40.7。Table 3 的 P@1/P@16 与 Table 1 不完全相同,论文未解释差异。
- 作者解读:ERPO 在两个数据集的每个 k 上都更高。GRPOPub 与 GRPOPCR 牺牲 pass@k 余量。NSRPCR 的增益随 k 变大,pass@1 仍然有限。作者称 LCB 上 ERPO 的 pass@1 超过 Base 的 pass@32(35.9),CC 上超过 Base 的 pass@16(41.2)。这些 pass@k 是完美选择器下的上界。
- Best-of-n:Table 4 只报告 Qwen3-4B 基座在 LCB 上的搜索,以及 ERPO 的单样本。CodeT-BoN:n=1 为 26.0,n=4 为 28.6,n=8 与 n=16 为 28.0,n=32 为 29.1。RM-BoN:26.0、29.7、28.0、28.0、27.4。ERPO 单样本 36.2%,无搜索。作者称两种选择器在 n=32 时仍低于 30%,ERPO 单样本超过表中全部 Best-of-n。
熵上限
- 设置与结果:Figure 3 在 Qwen3-8B / LCB 上比较 Hceil=0.2、0.5、1.0 与 GRPOPub,纵轴为 pass@k(%),横轴为 training step,约到 150。图中同时有 pass@1(虚线)和 pass@16(实线)。正文未给出各步精确读数。
- 作者解读:三个上限都提高 pass@1 和 pass@16,作者认为增益主要来自 ERPO 目标。较低上限使训练变慢;过高则早期 pass@k 上升更快,但过峰后很快变差。更高熵不一定对应更强的 pass@k 前沿。作者固定 Hceil=0.5,并称其在效率与稳定性之间最好,且之后所有训练不再按模型或数据集调这个值。
其他消融与分析
- 探针数与 AUC(Qwen3-4B,LCB):Ngen=1/3/5/10/20 时 PCR AUC 为 0.706/0.754/0.774/0.790/0.799;从 10 增到 20 只增加 0.009。
- Ngen 与下游(Table 11,百分比):Qwen3-4B 的 P@1 在 Base/5/10/20 为 26.0/35.8/36.7/36.5,P@16 为 34.4/45.7/46.3/46.9;Qwen3-8B 的 P@1 为 25.6/34.5/35.1/35.5,P@16 为 34.6/48.0/50.9/50.3。作者称 5 到 20 之间稳定,10 增到 20 没有一致提升,因而取 Ngen=10。
- 秩掩码分位数:论文称附录 H 有消融,正文未给出数字。
- 案例(附录 J):案例 A 中,16 个候选在一个探针上分成输出 2(7 个,均通过隐藏测试)、3(4 个,均失败)、0(3 个,均失败)、1(2 个,均失败);十个探针上 7 个通过者 PCR=1.0,9 个失败者更低。案例 B 中 16 个候选在十个探针上一致,PCR 均为 1.0,但有两个在隐藏边界输入上失败。作者用此说明高共识不作正监督。
- 负面结果:GRPOPCR 降低 pass@16;NSRPCR 的 pass@1 接近或低于 Base(4B:25.7 对 26.0;8B:25.9 对 25.6),作者称随后熵爆炸、策略崩溃;GRPOPub 在 CC 上 pass@16 低于 Base(4B:41.0 对 42.3;8B:41.8 对 45.6)。
What are some points that can be further explored?
作者称评测限于竞赛式编程,项目级与工业规模代码生成留作后续。
作者指出的局限与后续方向
- 评测范围:Limitations 写明经验评测限于竞赛式编程风格的代码基准。
- 框架本身:作者称框架原则上不限于该设定,可应用到能执行并用单元测试或其他可执行检查评估候选代码的更广代码生成任务,但本文没有做这些实验。
- 项目级代码:作者称未评测项目级代码生成,因为可靠执行、训练和评测需要更多工程设施和计算资源。
- 后续方向:作者把项目级和工业规模代码生成场景留作未来工作。Conclusion 称这些性质使探针驱动 TTRL 与部署相关,并值得更广泛研究;这是展望,不是单独列出的实验缺口。
实验覆盖范围
- 模型与模式:附录 A 的实验骨干为 Qwen3-4B 与 Qwen3-8B,非思考模式。
- 适应与迁移:第 4.1 节域内只在 LCB 无标签题面上更新;迁移是在 LCB 上适应一次后,于 CC、CF、TACO 上测试且不再按目标基准更新。
- 奖励与选择器:无标签方法使用 PCR;GRPOPub 使用公开测试输入输出。Table 4 的选择器为 CodeT-BoN 与 RM-BoN,奖励模型写明为 Skywork-Reward-Llama-3.1-8B-v0.2,且 Best-of-n 数字来自 Qwen3-4B 基座。
- 预算与探针:全局步上限 150,每提示 G=16;熵上限比较了 0.2、0.5、1.0 后固定 0.5;探针数比较了 1、3、5、10、20 后默认 10。训练时不使用隐藏测试,隐藏测试只用于事后 pass@k 和 Table 2 的分析。
- 论文未报告的内容:正文未报告各基准题数、pass@k 的重复次数,以及评审与人工一致性;pass@k 由执行隐藏测试判定,不是 LLM 评审。秩掩码分位数的具体数字在附录 H,正文未列出。
Summarize the main content of the paper
ERPO 把探针共识只当作负信号并限制熵,在代码 TTRL 中同时抬高 pass@1 和 pass@k。
ERPO 是面向代码生成的测试时强化学习算法:用无输出探针上的行为共识做奖励,但只把它当作负信号。
- 问题:答案级自投票依赖可比较的规范答案。程序是开放词表输出,测试时又没有预言测试,表面投票给不出训练信号。直接把共识当正确标签还可能奖励共同错误,并在提高 pass@1 时压低 pass@k。
- 方法:每题一次生成并复用无输出探针;候选程序按落入多数输出的探针比例得到 PCR。ERPO 在组内掩掉高分的一半,只对低共识一半做通常为负的策略梯度,并用固定熵上限惩罚超过 Hceil 的熵。默认 G=16、Hceil=0.5、Ngen=10、最多 150 步。
- 主结果:Table 1 中 Qwen3-4B 的 LCB pass@1/pass@16 从 Base 的 26.0/34.4 到 ERPO 的 36.7/46.3,三基准迁移 Mean 从 13.8/25.7 到 25.4/39.3;Qwen3-8B 的 LCB 从 25.6/34.6 到 35.1/50.9,Mean 从 14.6/27.6 到 22.9/38.8。GRPOPCR 的 4B LCB pass@16 降到 30.9。
- 信号与扩展:Table 2 中 s≤0.5 的隐藏测试失败率超过 91%,而 s=1.0 仍有 44.2%(4B)和 51.9%(8B)失败。Table 3 中 4B 的 ERPO 在 LCB 上 pass@256 为 51.9,在 CC 上为 65.9。Table 4 中基座 Best-of-n 最高 29.7,ERPO 单样本为 36.2。
- 作者结论:适应后的模型可作为更强的测试时基座策略,在延迟敏感场景减少对搜索的依赖,并在质量敏感场景提供更高的 pass@k 前沿。作者同时指出当前证据来自竞赛式编程基准,项目级场景留待以后。