GSM8K 奖励

专为评估 GSM8K 数学问题求解设计的奖励函数。

GSM8KAccuracyReward

通过提取 boxed 或 hash 格式(####)的答案并进行数值/字符串比较来评估 GSM8K 答案的正确性。

from twinkle.reward import GSM8KAccuracyReward

reward_fn = GSM8KAccuracyReward()
rewards = reward_fn(generated_trajectories, ground_truth_trajectories)
# rewards: List[float], 1.0 表示正确, 0.0 表示错误

奖励函数的工作流程:

  1. 从模型补全中提取 \boxed{...}#### ... 格式的答案

  2. 从参考轨迹中提取真实答案

  3. 执行数值比较(带容差)或精确字符串匹配

GSM8KFormatReward

检查模型输出是否包含正确格式的答案部分。

from twinkle.reward import GSM8KFormatReward

reward_fn = GSM8KFormatReward()
rewards = reward_fn(trajectories, ground_truths)
# rewards: List[float], 1.0 表示格式有效, 0.0 表示无效

在数学问题求解的 GRPO 训练中,将 GSM8KAccuracyReward 和 GSM8KFormatReward 组合使用作为复合奖励。