真实面经题目 · 原创解析
GRPO 中序列级 reward / loss 如何分配到 token,为什么这是信用分配问题?
这题考 GRPO 里序列级奖励如何影响 token 级更新,重点是序列 reward、token log-prob、组内相对优势、信用分配歧义和训练稳定性。
真实面经题目 · 原创解析
这题考 GRPO 里序列级奖励如何影响 token 级更新,重点是序列 reward、token log-prob、组内相对优势、信用分配歧义和训练稳定性。
GRPO 里的奖励通常先作用在整条生成序列上,比如一条回答整体是否正确、是否符合格式、是否安全或是否被偏好。但模型参数更新最终发生在每个生成 token 的 log-prob 上,所以会出现一个信用分配问题:整条回答得到的好坏信号,应该怎样影响其中每个 token 的概率。概念上可以这样解释:同一个 prompt 采样多条回答,给每条回答打序列级 reward,再在组内做相对比较,得到这条回答相对同组样本是好还是差的 advantage。训练时,这个 advantage 会作为权重影响该回答中生成 token 的 log-prob 更新;好的回答会整体提高其 token 路径的概率,差的回答会降低。但这不是说每个 token 都真的贡献一样,也不是模型知道哪个词单独导致成功。信用分配的难点就在这里:最终 reward 是序列级的,中间 token 的真实贡献可能不同。实践中要用 mask、长度处理、KL 约束、裁剪或归一化等稳定训练,并通过过程奖励、格式奖励、分步验证或更细粒度标注缓解奖励过粗的问题。
序列级 reward 评价的是整条回答,例如答案是否正确、格式是否满足、推理是否合理。模型真正可优化的是每个生成 token 的概率。GRPO 的信用分配问题来自这两个层级不一致:奖励在序列上,梯度作用在 token 决策上。
GRPO 的核心直觉是对同一个 prompt 采样一组回答,用组内 reward 的相对高低判断哪条回答更好。高于同组基线的回答获得正向优势,低于基线的回答获得负向优势。这样不必单独训练一个复杂的 value model,也能得到相对更新方向。
训练时,一条回答的 advantage 会作用到这条回答里被模型生成的 token log-prob 上。直觉上,如果整条回答比同组样本好,就提高这条 token 序列出现的概率;如果差,就降低它的概率。面试中可以强调这是序列信号对 token 决策的整体加权,而不是精确知道每个 token 的独立贡献。
一条回答可能只有最后结论错,也可能是中间某一步推理错,或者只是格式不合规。序列级 reward 很难判断哪个 token 应该负责。如果把同一个信号平均施加到所有生成 token,可能会惩罚无辜 token,也可能放过真正导致失败的局部错误。
GRPO 训练还要处理长度、padding、无效 token、过大优势、策略偏移和奖励噪声。常见思路包括只对生成部分计算损失、做 reward 或 advantage 归一化、控制 KL、限制更新幅度、监控熵和长度分布。重点是避免模型为了短期 reward 牺牲原有语言能力。
如果任务允许,可以加入过程奖励、分步 verifier、格式检查、工具执行结果、单元测试或人工偏好标签,让模型获得比整条回答更细的反馈。这样不是改变信用分配问题的本质,而是让 reward 更接近真实错误位置,训练更稳定。
因为奖励评价的是整条生成序列,但模型每一步生成 token 都参与了这条序列。训练要把整体好坏信号分摊到局部 token 决策上,而真实贡献并不总是均匀。
它让同一个 prompt 下的多条回答形成相对基线。比同组更好的回答获得正向优势,比同组更差的回答获得负向优势,从而减少对单独 value model 的依赖。
概念上序列优势会影响这条回答中的生成 token,但这不等于每个 token 的真实贡献相同。实现中还会考虑 mask、长度、KL 和更新约束。
可以引入过程奖励、分步验证器、工具执行结果、格式检查、单元测试或人工偏好,让反馈更接近具体错误位置。
要看 reward、KL、熵、长度分布、格式通过率、任务成功率和旧能力回归,防止模型 reward 上升但语言能力或安全性退化。