Execution-Grounded Credit Assignment for GRPO in Code Generation¶
会议: ICLR 2026 Workshop (SPOT) arXiv: 2603.16158 代码: 未公开 领域: llm_reasoning 关键词: GRPO, 代码生成, 信用分配, 强化学习, 执行追踪, RLVR
一句话总结¶
提出 EGCA(Execution-Grounded Credit Assignment),通过执行追踪定位程序中最早的语义偏差位置,将 GRPO 的梯度集中到因果 token span 上,解决代码生成中粗粒度信用分配问题,在 HumanEval 上达到 82.1% pass@1。
研究背景与动机¶
随着代码生成模型能力的提升,现代模型越来越多地产生语法正确、结构合理、可完整执行但因细微语义错误而未通过单元测试的代码。传统的基于可验证奖励的强化学习(RLVR)方法如 GRPO 使用单元测试作为奖励信号,但这一信号是时间粗粒度的——它作用于整个程序而非导致失败的特定决策。
GRPO 的 group-based 策略梯度将奖励信号均匀分布到所有 token 上,导致"近似正确"的解决方案收到的梯度过于分散,无法纠正局部推理错误。本文的核心论点是:一旦模型已能可靠产生可执行的结构合理程序,信用分配(而非奖励稀疏性)才是无 critic RL 在代码生成中的主要瓶颈。
现有工作的局限: - RLTF:丰富了执行反馈但无法定位失败发生的位置 - StepCoder:掩蔽未执行 token,但程序完整执行时所有 token 都被执行无法区分 - TEMPO/P2T:基于文本分支点的 token 级更新,但文本分歧不一定对应语义失败的因果位置 - CodeRL+:加入执行语义对齐辅助目标,但离开了无 critic 范式
方法详解¶
整体框架¶
EGCA 是 GRPO 的即插即用修改,不引入 critic、辅助损失或学习型验证器。流程:
- 从规范参考解提取算法约束
- 采样并执行一组程序
- 通过确定性门将每个样本路由到四种失败模式
- 对 logic 模式候选定位最早执行偏差
- 将 GRPO 优势集中到因果 token span,掩蔽下游 token
关键设计¶
规范参考解:每个问题有一个离线策划的参考解 \(y^{\text{ref}}\),不作为模仿目标,仅用于提取约束、定义参考执行行为和锚定语义比较。
约束引导采样:debugger LLM 从 \((x, y^{\text{ref}})\) 提取算法约束 \(\mathcal{C} = \{c_1, \ldots, c_M\}\)(允许的数据结构、控制流形式、复杂度目标等),注入采样提示偏置模型产生结构上可比较的程序:
结构验证门(Comparability Gate):解析候选和参考解为 AST,构建归一化 CFG,计算结构相似性,判断候选是否与参考解"可比较",输出 \(\mathbb{I}_{\text{cmp}}(y) \in \{0, 1\}\)。
四种失败模式确定性分类:
Token 级优势算子:
关键归一化保证:\(\sum_{t=1}^{T_i} a_{i,t} = A_i\),总优势不变,仅重分布到因果 span。
执行偏差定位¶
对 logic 模式候选,在第一个失败的单元测试输入 \(d\) 上同时执行候选和参考解,获得状态追踪:
最早语义偏差边界:\(k^* = \min\{k : S_k \neq S_k^{\text{ref}}\}\)
由 debugger LLM 在对齐结构和配对追踪上定位 \(k^*\) 并映射到 token span \(\mathcal{T}_{k^*}\)。debugger 不作为正确性判定器,仅定位偏差。
损失函数 / 训练策略¶
最终目标函数:
不引入教师梯度、辅助损失或模仿项。基于 DeepSeek-Coder-Instruct-6.7B 训练,\(G=16\),AdamW lr \(= 5 \times 10^{-7}\),\(\beta=0.05\),\(\varepsilon=0.2\),8×A100 80GB,3 epochs。
实验关键数据¶
主实验¶
| 方法 | HumanEval (pass@1) | MBPP (pass@1) |
|---|---|---|
| DeepSeek-Coder 6.7B base | 78.6 | 65.4 |
| SFT | 71.9 | 60.3 |
| Vanilla PPO | 78.0 | 65.6 |
| GRPO | 79.0 | 67.4 |
| RLTF | 77.9 | 64.5 |
| StepCoder-mask | 78.7 | 67.0 |
| CodeRL+ | 81.6 | 67.4 |
| EGCA (Ours) | 82.1 | 68.9 |
EGCA 相比 GRPO 提升 +3.1 / +1.5,相比 StepCoder +3.4 / +1.9,相比 CodeRL+ +0.5 / +1.5,仅增加 18% 墙钟开销。
消融实验¶
排除教师泄漏——Debugger 规模消融:
| Debugger 模型 | 自身 pass@1 | 学生 HumanEval | 学生 MBPP |
|---|---|---|---|
| Qwen2.5-Coder-1.5B | 70.7 | 78.9 | 66.1 |
| Qwen2.5-Coder-7B | 84.8 | 82.1 | 68.9 |
| Claude 4.5 Sonnet | 83.7 | — | 67.8 |
1.5B debugger 训练出的学生超过 debugger 自身 +8.2 点,排除知识蒸馏。从 7B 到 Sonnet 4.5 仅额外提升 +1.6,debugger 能力增益饱和。
蒸馏对照:
| 方法 | HumanEval | MBPP |
|---|---|---|
| Teacher SFT | 60.9 | 58.1 |
| Teacher-critique RL | 76.3 | 66.1 |
| EGCA | 82.1 | 68.9 |
关键发现¶
- 信用分配是瓶颈而非奖励稀疏性:随机或晚偏差定位退化到均匀基线
- 软化掩码单调恶化性能:证实二值掩码优于渐变
- 训练中约 35% 样本进入 LOGIC 模式由 EGCA 处理,其余 65% 使用标准更新
- Stage-dependent:方法面向"近似正确"场景,弱初始化时 localization 触发少
亮点与洞察¶
- 核心洞察精辟:"对近似正确代码,知道哪里出错比知道出错了更有价值"
- 零额外学习组件:不引入 critic/辅助损失/学习型验证器,仅改变梯度质量分布
- 执行语义与 RL 优雅结合:通过确定性门和执行追踪注入运行时语义信息
- 实验设计严谨:三重教师泄漏控制实验令人信服地排除了蒸馏假说
- 即插即用:仅 18% 开销,可作为任何 GRPO 训练的后期精炼技术
局限性 / 可改进方向¶
- 依赖参考解:限于竞赛编程和有测试的函数合成,开放式生成无法使用
- 结构比较局限:多种结构不同的正确方案可能被 comparability gate 排除
- 规模验证不足:仅 6.7B 策略,扩展到更大模型和多文件生成待探索
- Workshop 论文:实验规模和 benchmark 覆盖相对有限
- 可尝试将执行偏差定位推广到数学推理等其他可验证任务
相关工作与启发¶
- StepCoder (Dou et al., 2024):掩蔽未执行 token,最接近工作但无法处理完整执行的程序
- TEMPO/P2T (Tran et al., 2025):文本前缀树推导 token 级更新,但文本分歧 ≠ 语义分歧
- CodeRL+ (Jiang et al., 2025):执行语义对齐辅助目标,离开无 critic 范式
- 启发:执行追踪作为信用分配信号可推广到其他领域(数学步骤验证、逻辑推理链)
评分¶
- 新颖性: ⭐⭐⭐⭐ — 执行追踪 + 信用分配结合新颖,四种失败模式分类设计精巧
- 技术深度: ⭐⭐⭐⭐ — 归一化信用分配算子有理论美感
- 实验充分性: ⭐⭐⭐ — 仅 6.7B 模型和两个 benchmark
- 写作质量: ⭐⭐⭐⭐ — 动机清晰,方法描述精确
- 实用价值: ⭐⭐⭐⭐ — 即插即用,开销合理
- 综合推荐: ⭐⭐⭐⭐ (4/5)