真实面经题目 · 原创解析
GRPO 的 loss 如何计算,训练数据应如何组织?
这题考 GRPO 的目标函数直觉和训练样本组织方式,重点是同 prompt 多回答、组内相对优势、token logprob 更新和 KL 约束。
真实面经题目 · 原创解析
这题考 GRPO 的目标函数直觉和训练样本组织方式,重点是同 prompt 多回答、组内相对优势、token logprob 更新和 KL 约束。
GRPO 可以理解成一种不依赖单独 Critic 的策略优化方法。训练时不是每个 prompt 只采一个回答,而是对同一个 prompt 采样一组回答,比如多个候选解、多个推理路径或多个 Agent 轨迹,然后用规则、奖励模型或 verifier 给每个回答打 reward。接着在组内做相对比较:A_i = (r_i - mean(r_group)) / (std(r_group) + eps),高于组内基线的回答得到正 advantage,低于组内基线的回答得到负 advantage。对生成 token 计算 rho = exp(log pi_theta - log pi_old),用 PPO 风格的 min(rho*A, clip(rho)*A) 做受限更新,并加 beta * KL(pi_theta || pi_ref) 防止策略漂移。数据组织上,每条训练单元要保留 prompt、同组多个 response、response token mask、reward、group id、old logprob、reference logprob,必要时还有工具轨迹、verifier 结果和长度信息。实现时要保证同一个 prompt 的多个回答在同一组内计算 advantage,只在有效生成 token 上归一化,不能把不同 prompt 的 reward 混在一起归一化。
GRPO 的关键是同一个 prompt 下多个回答之间可以互相比较。因为这些回答面对相同问题,reward 差异更能反映策略选择好坏。组内比较可以提供 baseline,减少对单独 value model 的依赖。
大模型任务里,reward 很多时候来自完整回答、最终答案、代码执行、数学 verifier 或 Agent 终态。它未必能准确分配到每个 token。GRPO 通常先得到回答级 reward,再把组内相对优势作用到该回答的生成 token 上。
紧凑写法是:同组回答先算 A_i = (r_i - mean(r_group)) / (std(r_group) + eps),每个生成 token 再算 rho_{i,t} = exp(log pi_theta - log pi_old)。优化时最小化 -mean(mask * min(rho*A_i, clip(rho, 1-eps, 1+eps)*A_i)),再加 beta * KL(pi_theta || pi_ref)。mask 只覆盖有效生成 token,不覆盖 prompt、padding 或环境 observation。
Advantage 应在同一个 prompt 的候选回答之间计算。不同 prompt 难度不同,reward 尺度也不同,直接跨 prompt 混合归一化会让简单题和难题互相污染。group id、prompt id 和候选数量是数据组织的核心字段。
除了 prompt 与 response,还要保存 response token 的 old logprob 用来计算 rho,reference logprob 用来计算 KL,response mask 用来做 token 平均,reward 或 verifier 结果用来构造 A_i。不同长度回答不能让 padding 参与 loss,工具轨迹类样本还要区分模型生成 token 和环境返回 observation。
如果同组回答高度重复,组内优势就没有分辨率;如果 reward 太粗或容易被刷,GRPO 会放大漏洞。实际要控制温度、组大小、去重、失败样本、reward 标定、KL 系数和 held-out 评测。
同一 prompt 的回答可比性更强,组内 reward 高低更能表示哪条回答相对更好。跨 prompt 比较会受题目难度和 reward 尺度影响。
典型 GRPO 设计是不用单独 Critic,而用 group-relative reward 构造 baseline 和 advantage。但仍然需要 reward/verifier、old policy logprob 和 reference policy 约束。
要用 response mask 排除 prompt 和 padding,只对模型生成的有效 token 计算策略 loss;还要监控长度偏置,避免模型靠变长刷 reward。
优势信号会很弱甚至为零。需要改进采样多样性、提高 verifier 分辨率、增加更难负样本,或设计更细的 reward。