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 表示错误
奖励函数的工作流程:
从模型补全中提取
\boxed{...}或#### ...格式的答案从参考轨迹中提取真实答案
执行数值比较(带容差)或精确字符串匹配
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 组合使用作为复合奖励。