05|推理强化学习:从奖励信号到 PPO、GRPO 与可验证训练
返回 LLM 专题导读 · 下一篇:对齐与 Agent 训练
同一道 ,模型可以直接猜,也可以分解、检查、再回答。强化学习先采样这些尝试,再用评价调整生成策略;部署时的检查与工具调用,是学到的行为,增加 effort 本身不会更新权重。PPO、GRPO 是公开算法案例,RLVR 是奖励来源;下文为教学简化,没有运行模型训练,也不把它们认定为 GPT-6.1 或当前 Claude 的配方。

四张纸是四条完整候选;这是教学采样,不是真实模型输出。
阅读路线。 按“轨迹概率 → 策略梯度 → PPO 更新 → GRPO 组内信号”读算法,再读奖励、R1 案例、成本与 rollout 工程。重点推导位于第 2—4 章;想读代码先核对 4.1 的 std 与 4.4 的归一化。
章节跳转(展开)
1. 自回归生成如何成为强化学习问题
监督微调给模型一条固定答案,逐 token 提高这条答案的概率。强化学习先让模型自己生成,再评价生成的效果。二者都可能修改同一套 Transformer 参数,区别是训练信号如何得到。
沿开篇图左侧一道题的分叉走到四张纸。每张纸是一条完整尝试,编号 ,不是一个 token。右侧验证门只比较每张纸最后的数字是否等于 391,得到奖励 。第二张纸的 加法本身算对了,却不是 的正确解法;红叉表示这条候选没满足原题的最终条件,不是每个中间步骤都有独立奖励。
上方“同一策略快照”表示采这四条时使用同一份生成参数。评分以后,训练器才用记录计算更新。后文 GRPO 会比较整组回答;下一节先放大一条回答内部的 token 轴。
给定问题“计算 ”,一次输出可能先拆成 ,也可能直接给答案。最简单的环境只是拼接生成 token;较复杂环境还会执行代码、读取文件或返回搜索结果。
沿图先读“采样输出”,再读“验证器评分”:下一个 token 的分布由当前状态决定,已采 token 拼入后续前缀,直到结束才得到答案奖励。奖励是训练输入的一个数,不要求验证器内部可微。第 2 章再把“已采轨迹的概率如何产生梯度”接回来。
有限时域决策过程可写成 。在纯文本生成里,完整前缀可作为状态,转移通常是确定性拼接。Agent 只能看到环境的一部分,所以更准确地是部分可观测过程,下一篇再展开。
生成轨迹:对象、形状与单位
| 记号 | 含义、形状与单位 |
|---|---|
| 一个问题或输入上下文;token ID 序列,长度为整数 。 | |
| 生成步索引,取 ;单位是步。 | |
| 当前可用前缀;长度为 ,没有物理单位。 | |
| 在第 步选择的一个 token ID;整数标量。 | |
| 词表大小;策略输出形状为 。 | |
| 当前参数 下选择该 token 的概率;无量纲标量。 | |
| 环境转移概率;纯文本例中拼接后的状态概率为 。 | |
| 一次 rollout 的完整轨迹;长度可以不同。 | |
| 每步奖励;任意评分单位,本例中前 步为 。 | |
| 终局奖励;本例正确为 、错误为 。 | |
| 折扣因子,范围 ;有限文本任务常用 。 |
1.1 轨迹概率与终止条件
前图 编号一条完整回答;下面 沿一条回答内部数 token,二者不能互换。本图固定三动作教学轨迹,把第三个动作设为正常采样出的 EOS;各概率均在该步完整前缀条件下取得。

纵行是单条回答的动作位置;条件概率无量纲,log probability 用 nat。
纯文本轨迹的条件概率是各步概率的乘积:
这里 遍历全部生成动作, 是自然对数,数值单位可称为 nat。若教学轨迹只有三个动作,其概率分别为 ,轨迹概率就是 ,log probability 约为 。实际训练用 log probability 避免长序列乘积下溢。
第一行只读题目 ,第二行的状态已增加 ,第三行再增加 。三项是沿同一路径的条件概率,相乘不要求动作独立。其自然对数分别为 ,相加得 ,等于 。每步词表仍有其他候选,公式只取该轨迹已经选中的那一项。
EOS 也是策略选出的动作。若预算强制截断,结束是环境施加的条件,要记录截断标志;把“模型正常结束”和“被预算切断”混成同一个成功样本,会改变学习方向。
2. REINFORCE:终局奖励怎样影响每个 token
2.1 对轨迹概率求导,不对验证器求导
同一串已采动作在图中分成两条路径:上方交给验证器,取回奖励;下方在策略网络中取各位置的 log probability。奖励作为数值权重进入下方路径,最终对策略参数求导。橙色评分返回不要求加法检查器、编译器或单元测试可微。

评分是数值反馈;训练梯度经过策略 log-prob,验证器不是反向传播路径。
先固定问题分布,不考虑参数相关的奖励函数。目标是让模型平均获得更高奖励:
把期望展开成轨迹求和,并用 ,得到策略梯度:
先固定一题,把可能轨迹写成求和;问题分布仍按原目标求平均:
是固定问题的期望奖励, 遍历轨迹;奖励不含待求导参数,第一步才不对 求导。代入 1.1 的 log probability 求和式,就得到下面的 token 级梯度:
策略梯度:符号、假设与张量关系
| 记号 | 含义与计算关系 |
|---|---|
| 奖励的期望;标量,单位与 相同。 | |
| 对训练问题分布求平均;问题分布本身不随 求导。 | |
| 对当前策略生成的轨迹求平均,实践中用样本近似。 | |
| 所有待训练参数;展开后可看成形状 的向量。 | |
| 对参数求梯度;结果形状同参数,展开后为 。 | |
| 轨迹评分,不对验证器或答案匹配规则求导。 | |
| 从 概率中取已采样 token 的 log probability;标量。 | |
| 遍历这次输出的有效动作,padding 不参与。 |
这一步解释了 RL 如何绕过不可微的测试程序:假设一条正确轨迹得到 ,它的各步 log probability 都获得正向信号;错误轨迹得到 时,这个原始估计不给梯度。模型逐渐提高高奖励轨迹的概率,但同一条正确轨迹可能包含冗余、猜测或错误中间步骤。
对图中的三个位置, 时得到三个 score 向量 的和;每个向量形状都与参数相同。训练固定已采 token ID,重新计算这些动作在策略下的 log-prob,而不是对离散 token ID 本身做普通反向传播。获得奖励权重,并不表示验证器证明了每步都是成功原因。
若直接最大化目标,可把梯度估计写进上升更新 ,其中 是学习率;使用默认下降 loss 的优化器,则对相应目标取负号。绿色虚线表示训练器对参数计算的梯度,不是验证器把分数直接写成权重。
2.2 动作无关基线、无偏性与两动作手算
先把一题简化为 A/B 两个离散选择,图中每行对应一种可能采样结果。各列从左到右是采样概率、奖励、减基线后的优势、log-prob 对参数的导数、两者的乘积;最后才按采样概率求平均。优势和梯度不是同一个量。

本图只对控制 A 概率的 logit z 求导;上升 z 会提高 A、降低 B。
先看一个两动作策略的手算。令“选择解法 A”的 logit 为 ,概率为 ,A 的奖励为 、B 的奖励为 。真实期望奖励是 ,故 。取 :采到 A 时梯度估计为 ;采到 B 时为 。按采样概率加权,,正好回到真实梯度。
本例临时把两个解法当作两个离散动作,只检查梯度估计,不把整段自然语言假定为一个真实 token。令 B 的 logit 为 0,A 的 logit 为 ,则 ;这里 是 sigmoid,不是第 4 章的标准差。对控制 A 的 :
失败 B 同时有负优势 与负 score ,相乘得到正的 。score 是 log probability 对 的导数;上升 会提高 A、降低 B,因此没有在奖励失败动作。反例是依动作取 :两个优势都成 0,估计恒为 0,无法回到真实导数 。4.3 会继续检查“组均值含自己”的区别。
为减小方差,通常减掉一个 baseline:
是标量基线,单位与奖励相同; 是优势,表示这次输出相对基线好多少。若使用状态相关基线 ,对应每步的回报 ,优势写成 。要保持通常的无偏性质,baseline 不应依赖当前采样动作;训练时还需停止其在 actor 目标中的梯度。
无偏性的理由可以独立验算:固定状态后,,所以减掉动作无关的基线不改变梯度期望。降低方差并不表示每个有限 batch 的梯度都一样。
所有动作概率之和恒为 1,它的梯度为 0;动作无关的 才能从这项求和外提出。 可以依赖该步已知状态,不能偷看本次动作后任意改值。这里有两个独立算例:简单正确/错误对照表取 ;两动作概率与梯度图另取 。
| 轨迹 | 奖励 | 基线 | 优势 | 对已采样动作的倾向 |
|---|---|---|---|---|
| 正确解法 | 增加概率 | |||
| 错误解法 | 减少概率 |
3. PPO:控制一次更新偏离采样策略的程度
3.1 比率裁剪选择保守一侧
先确定优化方向:训练要最大化 。 是先从两个估计中取较保守的一项,再让选出的目标上升。代码若取 ,下降 loss 与这个方向一致。下图独立给定已估计的优势 或 ,用来观察符号怎样改变分支;它不是继续沿用 2.2 的二值奖励与基线数值。

灰虚线是原项,彩实线是 min 后的目标;浅蓝带是比率比较区间。
为复用生成成本较高的 rollout,训练器常在同一批数据上进行有限次更新,再刷新采样策略。PPO 用旧策略产生数据,再比较当前策略对同一个已采样动作的概率。PPO 原论文提出的 clipping surrogate 是限制更新的一种方法;下面用单步教学例展开。
PPO:概率比与裁剪目标
| 记号 | 含义、形状与本例取值 |
|---|---|
| 实际生成这批数据的策略快照,更新时固定。 | |
| 正在训练的策略;它对同一状态和动作重新计算概率。 | |
| importance ratio;无量纲标量,旧动作概率必须非零。 | |
| 固定的优势估计;评分单位,actor 更新不经过它反向传播。 | |
| 允许区间的宽度;无量纲,本例为 。 | |
| 将 限制到下界 与上界 之间。 | |
| 取两个标量中较小者;目标使用保守一侧。 | |
| 单个动作的待最大化目标;实际 loss 常取负号。 |
旧概率为 ,新概率为 时,。若 ,未裁剪项为 ,裁剪项为 ,取较小的 :继续提高该动作概率不再得到这部分目标的额外收益。若 ,两项是 与 ,取 ,因为这个坏动作概率增加得太多,应保留惩罚。
两图横轴都是同一已采动作的比率 ,纵轴是待最大化目标;灰虚线画 ,彩实线画取 后的值。正优势在右边变平,表示好动作概率已提高较多时,该项不再额外获益。负优势在左边变平,表示坏动作概率已降低较多时,该项不再额外获益;右侧仍向下,坏动作概率增加依旧受罚。
在 处,好动作 的两项为 与 ,选 ,保留把概率拉回的信号;坏动作 的两项为 与 ,选 ,不因继续压低它的概率而无限增益。平坦只说明本条 surrogate 对其比率的局部导数,不表示其他 token、正则项和共享参数停止更新。
| 原项 | 裁剪项 | |||
|---|---|---|---|---|
PPO 裁剪的是目标中的概率比项,不是把模型概率强行夹进一个固定区间。同一参数影响大量状态和 token,裁剪也不是全局 KL 的硬保证。旧策略、当前策略和参考策略需要分清:old 用于判断相对本批数据的更新;reference 常是更长期固定的 SFT 检查点,用于防止策略持续偏离已有行为。
3.2 old 与 reference 约束不同关系
固定同一状态与两个候选 A/B。本图另取 old 、current 、reference ,同时检查两种关系;它与 3.1 旧概率 的例子不是同一个采样位置。

每行是策略角色,列 A/B 是同一状态的两个候选动作;KL 使用完整分布。
一种简化的正则化目标是:
其中 , 是同一状态下两个策略的词表概率;KL 单位为 nat, 的单位为“奖励单位/nat”,使两项可比较。 是动作样本平均, 是所选状态分布平均。真实实现可能把 KL 放进奖励,也可能放进 loss,不能把两处重复加上而仍声称是同一目标。
KL 正则:输入分布与单位检查
| 符号 | 含义与形状 |
|---|---|
| 当前词表分布,形状 ,和为 ,各项无量纲。 | |
| 参考词表分布,形状 ;这里的 是分布记号,不是前文的问题。 | |
| 词表项索引,范围 ,不同于一个已经采样出的 token 值。 | |
| 从两个分布算出的非负标量;正概率的当前项要求参考项非零。 | |
| 正则权重,负责把 nat 换算成目标的评分尺度。 |
用两个动作检验方向:当前分布 、reference ,KL 为 nat, 时目标扣约 。交换两个分布得到不同数值,因为 KL 不对称。它限制分布偏移,也可能压住有益探索,权重需要结合任务和实际 KL 监控。
若采到 A,比率分母取行为 old,得到 ,不能改除 reference 的 。KL 则把两个候选都算入:A 项 nat,B 项 nat,总和 nat。单候选项可为负,完整 KL 非负;反向则为 nat。
old 与 reference 参数可能恰好相同,职责仍不同:old 是本批样本来源,current 是被优化者,reference 是另一个比较基准。本图把 reference 在若干更新内固定,不承诺所有方法永远不刷新它。DeepSeekMath 的迭代算法在外层设置 reference,内层再更新 old 与采样,见 原报告 §4.1.4 与 Algorithm 1。
4. GRPO:用同题多次尝试构造相对优势
基本单位是“同一题的 条完整回答”。回答 内部还有 token 位置 ; 不代表每条只有四个 token。图中组甲、乙、丙、丁是同题在四种独立采样背景中的组,不是四条回答各自成组,也不是四个训练时间步。
DeepSeekMath公开了 GRPO:同一道题采样一组输出,用组内奖励构造基线,避免单独训练大型 critic。组不是来自不同题目的混合 batch,因为题目难度差异会破坏“相对同题表现”的解释。
4.1 总体标准差与样本标准差

四组是四种独立采样背景;组内列 i 才是回答编号,不是 token 位置。
为便于手算,本篇明确采用总体标准差:
先沿组甲横着读奖励 ,其下优势与同列完整回答一一对应。右边的均值和 std 每组各一个,不能跨行混入别组奖励。非零方差时先略去极小 ;图中小数是显示精度。
组内标准化:符号、约定与零方差
| 记号 | 含义与形状 |
|---|---|
| 同一题的输出条数;整数,本例为 。 | |
| 组内输出索引,取 。 | |
| 第 条输出的奖励;标量,整组形状为 。 | |
| 组内平均奖励;标量,单位与 相同。 | |
| 总体标准差,分母为 ;单位与奖励相同。 | |
| 防止除零的小正数;单位与奖励相同,本例非零方差时忽略。 | |
| 标准化优势;无量纲,整组形状为 。 |
令奖励为 ,均值 ,平方差都为 ,故 ,优势约为 。若框架采用样本标准差,分母为 ,则标准差是 ,优势变成 。符号看似相同的 std,约定不同就会改变实际更新幅度。
4.2 一次稀有成功,为何得到更大的标准化优势?
比较组甲和组乙的成功位置:奖励同为 1,组甲的成功优势是 1,组乙唯一成功约为 1.732。变的是整组背景中的居中与缩放。下面只放大组乙,四行各对应这一组的一条完整回答。
展开完整算例、公式与实现边界

一组四回答:先算均值 1/4,再按四条回答的平方差求总体方差。
继续同一道乘法题。第一条路径的两个部分积都正确,却把 加成 381;第二条把 算成 31,得到 371;第三条用了错误部分积 330 与 11,得到 341;第四条正确得到 391。图中红叉只是在标注错误,奖励规则固定为“最终答案等于 391 得 1,否则得 0”,没有给不同错误的严重程度加分。
由此得到 。这里先忽略极小正数 ,把总体标准差逐项展开,避免把“稀有成功优势大”只当口号:
三个失败各约 ,一次成功约 ,总和为 0。对比 4.1 的两次成功组,成功优势为 1:同样奖励 1,在不同组内背景中标准化后并不是同一个权重。 全错组的优势则全零,图中四个零奖励格没有相对高低;全对组也是如此,但它们代表相反的本组任务结果;单个随机组并不能确定题目的真实难度。
四个平方差之和为 ,再除总体分母 得 。改用样本分母 ,方差就是 、std 为 ,优势成为 。因此要记录分母约定,不能只写未定义的 std。
| 同题奖励 | 均值 | 总体 std | 优势(忽略 ) | 任务结果 |
|---|---|---|---|---|
| 0.25 | 0.433013 | 1 次成功 | ||
| 0.50 | 0.50 | 2 次成功 | ||
| 0 | 0 | 加 后全零 | 0 次成功 | |
| 1 | 0 | 加 后全零 | 4 次成功 |
这组对照把两件事分开:任务统计看成功率;组内优势看本组有没有可供比较的差异。随机采样会改变均值与 std,标准化随之重新分配权重。因此不能把“”直接说成真实参数更新一定更大:token 梯度、长度、概率比和其他组也都进入训练目标。
本次数值检查使用 ,得到失败优势 、成功优势 ;检查了全错、全对和对半成功组。它只验证数组计算与边界,不证明大模型训练效果。原教学代码使用 eps=1e-6,两者末位会略有差别;公式、代码的各自约定都需保留。
4.3 零方差与自含基线的统计边界

每行是一组;分子全零,加 δ 后仍零,无法创造排序信息。
全部正确 或全部错误 都有 。采用上式加 时,分子也为零,优势全零;任务奖励部分没有区分信号,其他正则项仍可能更新参数。这不表示模型“已经学会”,全错组也会如此。可以通过增加尝试、调节题目难度、重采样或引入其他信号改善,但这些是不同训练设计,不能只加一个小数就期待出现信息。

此处不除 std;先检查 baseline 是否含当前样本,再讨论梯度期望。
还有一个容易忽略的统计边界:组内均值包含当前样本自身,不是上一节严格动作无关的 baseline。以未标准化优势为例,同题独立采样且每条轨迹梯度期望为零时, 等于原梯度的 倍;进一步除以随机标准差又会改变权重。GRPO 的实践效果不能直接用“REINFORCE 无偏 baseline”一句话证明。使用 leave-one-out 均值会改变这个性质,也改变算法约定。
唯一成功的奖励是 1,自含均值 使其居中为 ;另外三条的均值是 0,leave-one-out 居中为 1。一条失败则从 变成 。leave-one-out 表示排除当前样本后再求均值,至少需要 ;本页没有把它替换进原 GRPO 约定。
固定一题、独立同分布采样,令 为第 条完整输出的 score 向量。先只分析未标准化、没有行为分布滞后的情形:
跨样本项能拆开来自独立采样,最后一步用 , 即 倍。再除以依赖整组奖励的随机 std,分母也与样本相连,不能当常数提出期望。这个统计边界与算法是否在实验中有效,是两类判断。
4.4 回答长度改变归一化权重

纵行是回答,横列是 token 位置;格内是 surrogate 值,灰格不参与平均。
一种 token 级教学目标可写成:
为第 条输出的有效 token 数, 是对应 token 的 current/old 概率比, 为裁剪宽度, 在本例中分配给整条输出的所有 token。 让各回答平均, 让每条回答内部平均。是否按回答平均、按全 batch token 平均、对固定最大长度归一化,会改变长短输出的相对贡献;它们属于值得检查的实现变体,不能只看“用了 GRPO”就认为损失完全相同。正则项在此省略以突出长度归一化。
图中另取两回答组:奖励 ,略去极小 后优势 。短回答有效长度 2、长回答 4,所有有效 token 的 ,故格内 surrogate 分别是 与 。灰格是 padding,不是奖励为零的有效动作。
按回答平均:短的每个 token 权重 ,长的为 ,每条总权重 ,目标 。按六个有效 token 平均:每项 ,短/长总权重 与 ,目标 。权重规则不同,目标随之不同;目标值为 0 也不表示参数梯度必为 0。
token 级目标:序列长度与归一化
| 符号 | 含义与形状 |
|---|---|
| 第 条输出实际有效动作数;单位为 token,不计 padding。 | |
| 第 条输出第 个动作的概率比;有效数组形状为 ,配 mask。 | |
| 一个回答的优势,广播到其有效 token;原始形状 。 | |
| 先按回答内部平均,再按回答平均的标量目标;本例无量纲。 | |
| 当前组最长序列长度,用于补齐数组;不是所有序列的有效长度。 |
5. RLVR、过程奖励与结果奖励
5.1 奖励来源与优化器是两个轴
先区分“输出如何得到奖励数值”与“拿到奖励后怎样构造更新”。终值验证产生 是前者,PPO 的比率与优势、GRPO 的组内统计属于后者。同一验证器可以配不同优化方法,优化器名字也不规定奖励必须来自数学标准答案。
RLVR,即基于可验证奖励的强化学习,说明奖励从哪里来;PPO、GRPO 说明怎样利用奖励更新策略。可以用 PPO 优化程序测试奖励,也可以用 GRPO 优化偏好评分。把 RLVR 当作与 PPO 互斥的算法分类,会混淆两个轴。
| 奖励来源 | 一个教学例 | 可验证性与局限 |
|---|---|---|
| 最终答案匹配 | 标准化后检查答案是否为 | 确定性强,但正确答案不证明推导正确。 |
| 程序执行 | 隐藏测试通过比例 | 可以扩展;测试覆盖与隔离环境决定质量。 |
| 形式证明 | 检查证明能否被验证器接受 | 强约束来自形式规则;命题和依赖仍须正确。 |
| 人工偏好 | 标注者比较两份解释 | 适合开放任务,受偏好、成本与一致性影响。 |
| AI 评判 | 模型按 rubric 评分 | 易扩展,但 judge 可能偏爱风格或被操纵。 |
5.2 终值相同,中间计算可能不同

两行是替代解法;红叉检查中间步骤,右门只核对最后的答案(ImageGen 教学)。
图上方保留两个正确部分积;下方的 与加法都标红,右侧只核对最终答案的检查门仍会接受 。
上下两行是替代解法,横向才是每条内部的计算顺序。每张算式卡片是一个算术步骤,不是一个 token 或参数;绿勾与红叉是这张教学图标出的过程判断。上行 同时满足过程和终值;下行 含错误部分积和错误加法,右侧却仍报 391。最终检查只证明“报告的终值通过规则”,不能倒推左侧每条边都对。
结果奖励在结束时评分,过程奖励在中间步骤评分。Let's Verify Step by Step研究了数学推理中的过程监督。其意义是增加错误定位信号,不能推出所有现代模型都训练了逐步 PRM。
该论文重点训练并比较 reward model,用固定生成器的候选做 best-of-N 选择;其 §2.1 明确没有对生成器执行 RL。因此它在本篇支撑的是“过程评分如何提供更细的信息”,不是本文 PPO/GRPO 训练器已运行的实验结果。来源:论文 Scope。
对同一道乘法题,轨迹甲写“,,相加 ”,轨迹乙写“”。最终答案检查会给两条都判对,中间步骤验证能指出乙的乘法或加法错误。另一方面,一个真实有效的新证明方法可能不符合 judge 熟悉的模板,过程评分也可能误罚探索。
终局奖励能训练策略,但信用分配粗糙;过程奖励提供密集信息,却增加标注和评判器的复杂度。对推理文本打分还涉及推理忠实性:生成的解释可能是事后合理化,奖励“文字看起来认真”不等于奖励真正解决问题的计算。不同实验可以在这两个方向上采用不同取舍。
6. DeepSeek-R1:一条公开的多阶段路线
DeepSeek-R1 技术报告提供了具体案例。R1-Zero 从 DeepSeek-V3-Base 预训练模型开始做 RL,省略的是前置 SFT,而不是预训练。其奖励主要检查正确性与格式。R1 再把冷启动、推理 RL、筛选生成数据后的 SFT、全场景 RL 组合成四阶段。下图用短标签表示报告中的路线,具体解释用教学角度展开。

按 R1 报告 §2.2–2.3 绘制的教学路线图;蓝线传权重,橙虚线传数据。
四个阶段分别解决不同问题:先让模型具备容易阅读的生成格式与初始解题行为;再通过尝试和评价探索更有效的解法;把探索得到的优质轨迹变成更稳定的监督信号;最后协调推理、一般问答和助手行为。第三阶段回到 Base 进行新的 SFT值得留意,否则会把数据构建与模型权重继承画错。
按箭头分两次读:蓝色从预训练 Base 进入冷启动 SFT,再继续推理 RL;橙虚线从该 RL 检查点采样、筛选,传出的是训练数据。报告 §2.3.3 汇集约 600k 推理和 200k 非推理样本,再用约 800k 样本对 DeepSeek-V3-Base 做两轮 SFT。右侧蓝线直接由 Base 接第 3 阶段,表示初始化权重,不能把橙色数据线当作直接继承第 2 阶段权重。最后从新 SFT 检查点进入全场景 RL。图下单列 R1-Zero:省略前置 SFT,仍保留预训练 Base。来源:R1 报告 §2.3.3。
这条路线揭示一个一般关系:SFT 可以压缩已经发现的行为,RL 可以继续探索 SFT 数据没有覆盖的输出。它不证明任何一种固定阶段顺序最优,也不证明能力增长来自单一算法。把数据、奖励、采样、基础模型和计算预算同时改变后,必须用消融才能判断每一项贡献。
7. 长度、奖励漏洞与推理计算预算
若奖励只看最终答案,更长的输出有时容纳更多检查,也可能出现重复、无效自我反思或碰运气。若给每个 token 显式奖励,模型可能为了得分延长回答;若强惩罚长度,模型又可能过早结束。长度变化需要与任务难度、正确率和成本一起看。
7.1 按期望收益权衡生成成本

横轴是预算方案;纵轴是期望评分,既非 token 长度也非实测速率。
一个教学目标把有效性与代价并列:
这里 为任务评分, 为生成 token 数, 为每千 token 的奖励扣分, 只是单位换算。正确输出 1000 token 得任务分 ,若 ,总分为 ;另一正确输出 3000 token 得 。但若短答案成功概率 、长答案成功概率 ,两者期望总分分别为 与 ,这个设计仍偏好长答案。合理目标奖励的是收益相对于成本,而不是长度本身。
两根柱是固定使用 1000/3000 token 的预算方案,纵轴是期望净评分。本例错误奖为 0,成本按固定长度收取,所以期望任务分等于成功概率。短方案成本 ,净得 ;长方案成本 ,净得 。前文 则条件是两条已经知道都正确,不能混作同一性能比较。实际长度若随机,成本也要按实际长度分布求期望。
reward hacking 指模型提高评分,却没有完成评分所代表的真实目标。例如代码只识别公开测试输入,或修改评分文件。Anthropic 的官方研究表明有漏洞的训练环境可能强化作弊行为;这是特定研究中的证据,不能把其故意构造的实验模型等同于正常发布模型。
训练长度与推理 effort 也要分开。训练可以让模型学会检查、重试与分配思考 token;部署设置控制本次允许或偏好的计算量。提高 effort 不会在用户会话中自动做一次梯度更新,也不保证每道简单问题都变准。公平比较模型时,要同时报告实际 token、工具费用、超时规则、并行样本数和选择规则;多次采样选最好与单次回答不是同一预算。
8. Rollout 工程:策略版本决定数据能否正确使用
8.1 轨迹必须绑定真实 behavior 版本

旧记录保留 v0 来源;绿色刷新只影响后续生成(ImageGen 教学)。
先沿橙色路径:v0 生成记录,把 token、当时 log-prob 和采样设置装进信封;延迟后训练器已到 v2,旧记录仍属于 v0。橙信封在几处位置表示同批记录沿流程推进,不是不同采样组。再沿绿色箭头:v2 刷新到生成服务,才让之后的新信封带 v2。图底横向表示事件先后,不按真实耗时比例。数值比率将在本节后面的“同一个 token”中单独放大。
训练器和生成服务经常分离。生成服务处理大量问题,训练器批量更新权重,两者可能异步运行。此时“old”必须对应真正产生该轨迹的行为策略,而不是训练器随手取的上一个检查点。
| 数据记录 | 为什么必须保存 |
|---|---|
| prompt、生成 token、有效 mask | 重建采样时的状态和动作,屏蔽 padding。 |
| 实际 behavior log probability | 计算 current/behavior 比率。 |
| 策略版本、时间和采样设置 | 判断数据陈旧程度及生成分布。 |
| 奖励、验证器版本与原始结果 | 区分模型退化和评分规则改变。 |
| EOS、截断、工具失败标志 | 避免把预算或环境错误当作模型行为。 |
教学近同步流程是:冻结一份采样策略,产生一批轨迹,进行有限次更新,丢弃或停止复用旧数据,再刷新采样策略。大型异步系统可以提高吞吐,但需要策略滞后限制、样本过滤和相应算法设计。“能放进 loss”与“对当前目标仍是可靠估计”是两件需要分别核对的事。
同一个 token,分母用错版本会怎样?

生成行为版本、当时log-prob与当前learner分子分别保存。(教学算例)
蓝色v0行对应本批轨迹的真实来源,token与当时log-prob一并保存。训练器到v1、v2后,迟到的本批轨迹仍属于v0;将v2权重刷新给生成服务只影响之后生成的轨迹,不能改写旧轨迹来源。
这张表固定同一历史与同一已采 token,纵行只替换对它评分的策略版本;不是从三个不同样本各取一个概率相除。
设某轨迹在其真实 behavior v0 下采到一个 token,当时概率为 0.20;训练时 current v2 对同一历史、同一 token 的概率为 0.30。夹在中间的 v1 曾给出 0.25。这里只比较三个假设概率,没有温度或 top-p 变换:
把“上一个检查点”v1 当作 old,看起来得到更温和的比率,实际已经改了样本权重。取 、裁剪宽度 ,3.1 的保守一侧为:
选择负优势是为了把分母错误显出来:若只检查本例的正优势,两种比率都可能被同一上界裁剪,反而掩盖错误。保存 behavior log-prob 不只是为了画出训练时间轴,它直接决定每个动作进入目标的数值。上述比率与裁剪值已独立验算。
8.2 采样变换改变 likelihood 与支持集
本节温度 是无量纲设置,不是前文回答长度 。三图使用相同 token ID 1、2、3 和统一概率纵轴,每一步都要重新读分母。

三图纵轴统一为概率;最后一次过滤把 token 3 的行为概率变成零。
图左的教学分布为 。温度 将其变为 ,约为 ;再按 top-p 保留达到阈值的最小降序集合,前两项累计约 ,重归一化得到 。因此 token 2 的实际采样 log-prob 约为 ,与原始 softmax 的 不同;token 3 则已不在行为支持集中。这里演示按实际采样分布记录 likelihood 的约定;如果实现记录原策略概率,还需明确相应目标与修正,不能混用。
温度先取平方根 ,和为 ,再分别除以该和得到中图。top-p 保留前两项后,新分母为 ,第二项成为 ,第三项严格变 0。排序取最小累计集合、在保留集上归一化是两个操作;阈值 不是把最高 token 的概率改成 。
如果生成用了温度、top-p 或其他过滤,behavior 分布可能与未经处理的模型 softmax 不同。工程实现必须明确 likelihood 的约定与修正方式。某个动作在行为分布中的概率为零时,importance sampling 无法从这批数据恢复它的贡献;支持集不重叠、概率比巨大、陈旧数据很多时,仅有 PPO clipping 不能自动解决问题。
9. 关键代码的阅读地图与验证边界
9.1 代码接口与冻结的优势

本例 B=2、G=4;mean/var 保留单列,再向各自组内广播。
这里只演示 GRPO 组内优势,不实现生成器或 PPO 训练。数据从同题奖励进入,输出冻结的标准化优势;采样、评分和 actor 更新分别由外部模块负责。
输入故意取非方阵 :两行是两个同题采样组,每行内部四列才是回答。行间可以不同题,也可同题另一次重采样;本图两行分别取 与 ,不能把八项混求一个基线。 都不是 token 轴;每条回答的 token、mask、logprob 另需有效长度与 轴。
| 接口 | 输入 | 输出与约定 |
|---|---|---|
group_advantage | 浮点 rewards[B,G],每行同一道题 | adv[B,G],总体 std,停止梯度。 |
| rollout 层 | 问题与策略版本 | token、mask、behavior logprob。 |
| actor 层 | token、old logprob、adv、mask | 标量 loss;只对 current logprob 求导。 |
复算代码:6 行,可复制运行
def group_advantage(rewards, eps=1e-6):
# 教学片段:每行对应同一道题,未运行模型训练。
mean = rewards.mean(dim=-1, keepdim=True)
var = ((rewards - mean) ** 2).mean(dim=-1, keepdim=True)
adv = (rewards - mean) / (var.sqrt() + eps)
return adv.detach()
平方差取 mean 明确选择分母 ,避免依赖库的默认 std convention。detach 防止奖励或优势进入 actor 的反向传播图。本篇不提供可运行训练脚本,读者可独立实现并核对以下数值:输入 输出约 ;输入 输出全零;打乱组内次序只打乱对应优势;把不同题目混进一行则破坏设计含义。
逐行对照代码:dim=-1 沿四个候选列求统计;keepdim=True 保留 ,使均值和方差只向本行四列广播。第一行均值 、方差 ,第二行均值 、方差 。标准化恢复 ,图中优势只显示两位小数。detach 冻结最终优势;actor 在外侧用优势和有效 mask 构造目标,只对 current log-prob 所依赖的策略参数求导。
片段前提是有限浮点奖励且 ;要比较差异通常至少两条。 同样零居中差。代码没写生成器、评分器、输入校验或完整 actor 训练,也没处理空组和非有限奖励等错误输入;数组与 mask 检查不等于模型训练实测。
训练排错应追踪奖励、正确率、组内方差、有效长度、KL、概率比和截断率。只有 reward 上升而独立正确率下降,应优先检查评分漏洞;平均长度上涨而成功率不变,需检查归一化与长度信号;大量零方差组,需检查任务难度与探索;概率比经常极端,需检查策略版本和采样分布。小模型或单题拟合只能证明训练链路的一部分成立,不能证明获得通用推理。
参考资料与证据范围
本篇公式推导、手算表与代码为原创教学示例,算法名和模型训练阶段按下列原始资料核实。闭源前沿模型的具体配方仍须逐型号查看披露。
- Schulman 等:Proximal Policy Optimization Algorithms,PPO 原始算法。
- DeepSeekMath,GRPO 的公开来源。
- DeepSeek-R1,R1-Zero、R1 的公开训练阶段。
- Let's Verify Step by Step,过程监督的公开研究。
- Training a Misaligned Reward Seeker,奖励漏洞与训练行为的研究证据。
正在连接 GitHub 评论…