结合“ 7 + 3*7 = ?”例子,给大家展示一下R1-Zero 的 RL完整训练流程
训练的第一步是让模型按照旧策略(即 RL 更新前的 DeepSeek-V3-Base)生成多个可能的输出。在一次训练迭代中,假设 采样了 4 组不同的输出(G=4)。
例如,针对 " What is 7 + 3*7 = ? " 这个问题,模型可能生成以下4种答案:
- o1:<think> 7 + 3 = 10, 10 * 7 = 70 </think> <answer> 70 </answer>
运算顺序错误 - o2:<think> 3 * 7 = 21, 21 + 7 = 28 </think> <answer> 28 </answer>
答案正确 - o3:<answer> 28 </answer>
答案正确,但缺少<think>标签 - o4:<think> ...一些混乱的推理... </think> <answer> 7 </answer>
答案错误,且推理过程混乱
然后使用基于规则的两个奖励:准确性奖励、格式奖励,对上面的4个输出分别进行奖励评分。结合准确性奖励(答案正确性)和格式奖励(输出规范性)。
例如:
- 正确答案得 1 分,错误得 0 分;
- 符合<think>格式要求额外加0.1分,反之无/扣分。
基于规则的奖励验证
任务特定规则引擎:针对数学、编程等任务,设计自动化验证脚本。例如:
数学问题通过符号匹配或数值计算验证答案正确性。
编程问题通过预设测试用例运行结果给予奖励。
语言一致性奖励:通过统计目标语言词汇比例(如中文 / 英文),抑制多语言混杂,确保输出可读性。
输出 | 准确性奖励 | 格式奖励 | 总奖励 |
---|---|---|---|
o1 (答案错误) | 0 | 0.1 | 0.1 |
o2 (答案正确) | 1 | 0.1 | 1.1 |
o3 (答案正确,但缺少格式标签) | 1 | 0 | 1.0 |
o4 (推理混乱且答案错误) | 0 | 0.1 | 0.1 |
接下来,有了每个输出所对应的奖励,便可以计算奖励值的均值、优势值。
- 可知标准差(近似计算) = 0.5
有了奖励值的均值、标准差,便可以根据GRPO中优势函数的计算公式
计算每个输出的优势值了
从上,可以看出来,输出 o2 和 o3 具有正优势,说明它们应该被鼓励;而 o1 和 o4 具有负优势,意味着它们应该被抑制。
换言之,GRPO 使用这些计算得到的优势值来更新策略模型DeepSeek-V3-Base,提高 高优势输出(如 o2 和 o3)的生成概率,同时降低 负优势输出(如 o1 和 o4 )的生成概率。