先这样答
GRPO 的奖励函数采用分层设计。设计方案主要包含结果奖励和过程奖励两部分。结果奖励负责评估最终答案对不对。针对数学计算或代码生成等规则可判的任务,我们直接使用规则进行校验。过程奖励负责评估模型生成内容的中间状态。它主要考察输出格式是否符合预设要求,以及推理步骤是否具备合理性。这两种奖励叠加构成了完整的反馈信号。
设计奖励函数必须遵循两个核心原则。第一是能用规则判别的地方不要让模型去判。模型打分容易出现漏洞。模型会寻找捷径骗取高分。使用硬规则校验能有效减少这种奖励作弊空间。第二是奖励维度必须单一且可归因。每一项奖励只对应一种具体的行为特征。开发者需要明确区分格式奖励、步骤奖励和结果奖励。把不同维度的得分混在一起计算,会导致后续调参时无法定位问题。
这道题是美团北斗一轮面试的原题。面试官通过这道题考察候选人对大模型强化学习的理解。分层设计和单一归因是实际业务中必须遵守的准则。遵循这些原则能保证 GRPO 训练过程稳定。
面试官会怎么追问
-
「你刚才提到减少 reward hacking 空间,具体怎么做?」 把规则校验放在第一优先级。数学题直接匹配最终数字。格式要求直接用正则表达式提取。这能切断模型通过伪造逻辑来骗取分数的路径。
-
「奖励维度单一可归因,在代码里具体怎么实现?」 给每一种奖励定义独立的计算函数。格式正确给一分。结果正确给一分。最后在日志里分别记录这几项的分数,不要在函数里返回加权求和的模糊分数。
-
「过程奖励里的步骤合理性怎么评估?」 优先使用规则进行校验。开发者可以检查输出文本是否包含特定的思考过程标记。我们也可以校验中间计算步骤的格式是否符合规范。能用规则写清楚的逻辑就不要交给模型判断。
回答的坑
- 回答时把所有奖励逻辑揉成一个复杂的公式,违背了单一可归因原则。
- 忽视规则校验的作用,盲目依赖模型打分去评估规则可判的任务。
同系列的题