wikiLLM01|前沿 LLM 的训练与推理:总览与阅读路线05|推理强化学习:从奖励信号到 PPO、GRPO 与可验证训练
53 分钟
0 次观看

05|推理强化学习:从奖励信号到 PPO、GRPO 与可验证训练

返回 LLM 专题导读 · 下一篇:对齐与 Agent 训练

同一道 17×2317\times23,模型可以直接猜,也可以分解、检查、再回答。强化学习先采样这些尝试,再用评价调整生成策略;部署时的检查与工具调用,是学到的行为,增加 effort 本身不会更新权重。PPO、GRPO 是公开算法案例,RLVR 是奖励来源;下文为教学简化,没有运行模型训练,也不把它们认定为 GPT-6.1 或当前 Claude 的配方。

同一道乘法题产生四条完整回答,终值验证给出三个0和一个1

四张纸是四条完整候选;这是教学采样,不是真实模型输出。

阅读路线。 按“轨迹概率 → 策略梯度 → PPO 更新 → GRPO 组内信号”读算法,再读奖励、R1 案例、成本与 rollout 工程。重点推导位于第 2—4 章;想读代码先核对 4.1 的 std 与 4.4 的归一化。

章节跳转(展开)

1. 自回归生成如何成为强化学习问题

监督微调给模型一条固定答案,逐 token 提高这条答案的概率。强化学习先让模型自己生成,再评价生成的效果。二者都可能修改同一套 Transformer 参数,区别是训练信号如何得到。

沿开篇图左侧一道题的分叉走到四张纸。每张纸是一条完整尝试,编号 i=1,2,3,4i=1,2,3,4,不是一个 token。右侧验证门只比较每张纸最后的数字是否等于 391,得到奖励 [0,0,0,1][0,0,0,1]。第二张纸的 340+31=371340+31=371 加法本身算对了,却不是 17×2317\times23 的正确解法;红叉表示这条候选没满足原题的最终条件,不是每个中间步骤都有独立奖励。

上方“同一策略快照”表示采这四条时使用同一份生成参数。评分以后,训练器才用记录计算更新。后文 GRPO 会比较整组回答;下一节先放大一条回答内部的 token 轴。

给定问题“计算 17×2317\times23”,一次输出可能先拆成 17×20+17×317\times20+17\times3,也可能直接给答案。最简单的环境只是拼接生成 token;较复杂环境还会执行代码、读取文件或返回搜索结果。

沿图先读“采样输出”,再读“验证器评分”:下一个 token 的分布由当前状态决定,已采 token 拼入后续前缀,直到结束才得到答案奖励。奖励是训练输入的一个数,不要求验证器内部可微。第 2 章再把“已采轨迹的概率如何产生梯度”接回来。

有限时域决策过程可写成 (S,A,P,r,γ)(\mathcal S,\mathcal A,P,r,\gamma)。在纯文本生成里,完整前缀可作为状态,转移通常是确定性拼接。Agent 只能看到环境的一部分,所以更准确地是部分可观测过程,下一篇再展开。

生成轨迹:对象、形状与单位

记号含义、形状与单位
qq一个问题或输入上下文;token ID 序列,长度为整数 LqL_q。
tt生成步索引,取 1,…,T1,\ldots,T;单位是步。
st=(q,a1,…,at−1)s_t=(q,a_1,\ldots,a_{t-1})当前可用前缀;长度为 Lq+t−1L_q+t-1,没有物理单位。
ata_t在第 tt 步选择的一个 token ID;整数标量。
V=∣A∣V=\lvert\mathcal A\rvert词表大小;策略输出形状为 [V][V]。
πθ(at∣st)\pi_\theta(a_t\mid s_t)当前参数 θ\theta 下选择该 token 的概率;无量纲标量。
P(st+1∣st,at)P(s_{t+1}\mid s_t,a_t)环境转移概率;纯文本例中拼接后的状态概率为 11。
τ=(s1,a1,…,sT,aT)\tau=(s_1,a_1,\ldots,s_T,a_T)一次 rollout 的完整轨迹;长度可以不同。
rtr_t每步奖励;任意评分单位,本例中前 T−1T-1 步为 00。
R=rTR=r_T终局奖励;本例正确为 11、错误为 00。
γ\gamma折扣因子,范围 [0,1][0,1];有限文本任务常用 11。

1.1 轨迹概率与终止条件

前图 ii 编号一条完整回答;下面 tt 沿一条回答内部数 token,二者不能互换。本图固定三动作教学轨迹,把第三个动作设为正常采样出的 EOS;各概率均在该步完整前缀条件下取得。

同一回答的三个token位置分别使用增长后的前缀,条件概率连乘

纵行是单条回答的动作位置;条件概率无量纲,log probability 用 nat。

纯文本轨迹的条件概率是各步概率的乘积:

pθ(τ∣q)=∏t=1Tπθ(at∣st),log⁡pθ(τ∣q)=∑t=1Tlog⁡πθ(at∣st).\begin{aligned} p_\theta(\tau\mid q)&=\prod_{t=1}^{T}\pi_\theta(a_t\mid s_t),\\ \log p_\theta(\tau\mid q)&=\sum_{t=1}^{T}\log\pi_\theta(a_t\mid s_t). \end{aligned}

这里 ∏\prod 遍历全部生成动作,log⁡\log 是自然对数,数值单位可称为 nat。若教学轨迹只有三个动作,其概率分别为 0.5,0.2,0.40.5,0.2,0.4,轨迹概率就是 0.040.04,log probability 约为 −3.219-3.219。实际训练用 log probability 避免长序列乘积下溢。

第一行只读题目 qq,第二行的状态已增加 a1a_1,第三行再增加 a2a_2。三项是沿同一路径的条件概率,相乘不要求动作独立。其自然对数分别为 −0.693147,−1.609438,−0.916291-0.693147,-1.609438,-0.916291,相加得 −3.218876-3.218876,等于 ln⁡0.04\ln0.04。每步词表仍有其他候选,公式只取该轨迹已经选中的那一项。

EOS 也是策略选出的动作。若预算强制截断,结束是环境施加的条件,要记录截断标志;把“模型正常结束”和“被预算切断”混成同一个成功样本,会改变学习方向。

2. REINFORCE:终局奖励怎样影响每个 token

2.1 对轨迹概率求导,不对验证器求导

同一串已采动作在图中分成两条路径:上方交给验证器,取回奖励;下方在策略网络中取各位置的 log probability。奖励作为数值权重进入下方路径,最终对策略参数求导。橙色评分返回不要求加法检查器、编译器或单元测试可微。

同一输出分别进入验证器评分与可求导log-prob路径,梯度回到策略

评分是数值反馈;训练梯度经过策略 log-prob,验证器不是反向传播路径。

先固定问题分布,不考虑参数相关的奖励函数。目标是让模型平均获得更高奖励:

J(θ)=EqEτ∼πθ(⋅∣q)[R(τ)].J(\theta)=\mathbb E_{q}\mathbb E_{\tau\sim\pi_\theta(\cdot\mid q)}[R(\tau)].

把期望展开成轨迹求和,并用 ∇p=p∇log⁡p\nabla p=p\nabla\log p,得到策略梯度:

先固定一题,把可能轨迹写成求和;问题分布仍按原目标求平均:

Jq(θ)=∑τpθ(τ∣q)R(τ),∇θJq=∑τR(τ)∇θpθ(τ∣q),=∑τpθ(τ∣q)R(τ)∇θlog⁡pθ(τ∣q).\begin{aligned} J_q(\theta)&=\sum_\tau p_\theta(\tau\mid q)R(\tau),\\ \nabla_\theta J_q &=\sum_\tau R(\tau)\nabla_\theta p_\theta(\tau\mid q),\\ &=\sum_\tau p_\theta(\tau\mid q)R(\tau) \nabla_\theta\log p_\theta(\tau\mid q). \end{aligned}

JqJ_q 是固定问题的期望奖励,τ\tau 遍历轨迹;奖励不含待求导参数,第一步才不对 RR 求导。代入 1.1 的 log probability 求和式,就得到下面的 token 级梯度:

∇θJ=E[R(τ)∑t=1T∇θlog⁡πθ(at∣st)].\nabla_\theta J =\mathbb E\left[R(\tau)\sum_{t=1}^{T}\nabla_\theta\log\pi_\theta(a_t\mid s_t)\right].

策略梯度:符号、假设与张量关系

记号含义与计算关系
JJ奖励的期望;标量,单位与 RR 相同。
Eq\mathbb E_q对训练问题分布求平均;问题分布本身不随 θ\theta 求导。
Eτ∼πθ\mathbb E_{\tau\sim\pi_\theta}对当前策略生成的轨迹求平均,实践中用样本近似。
θ\theta所有待训练参数;展开后可看成形状 [P][P] 的向量。
∇θ\nabla_\theta对参数求梯度;结果形状同参数,展开后为 [P][P]。
R(τ)R(\tau)轨迹评分,不对验证器或答案匹配规则求导。
log⁡πθ(at∣st)\log\pi_\theta(a_t\mid s_t)从 [V][V] 概率中取已采样 token 的 log probability;标量。
∑t=1T\sum_{t=1}^{T}遍历这次输出的有效动作,padding 不参与。

这一步解释了 RL 如何绕过不可微的测试程序:假设一条正确轨迹得到 R=1R=1,它的各步 log probability 都获得正向信号;错误轨迹得到 00 时,这个原始估计不给梯度。模型逐渐提高高奖励轨迹的概率,但同一条正确轨迹可能包含冗余、猜测或错误中间步骤。

对图中的三个位置,R=1R=1 时得到三个 score 向量 ∇log⁡πθ(at∣st)\nabla\log\pi_\theta(a_t\mid s_t) 的和;每个向量形状都与参数相同。训练固定已采 token ID,重新计算这些动作在策略下的 log-prob,而不是对离散 token ID 本身做普通反向传播。获得奖励权重,并不表示验证器证明了每步都是成功原因。

若直接最大化目标,可把梯度估计写进上升更新 θ←θ+ηg^\theta\leftarrow\theta+\eta\widehat g,其中 η>0\eta>0 是学习率;使用默认下降 loss 的优化器,则对相应目标取负号。绿色虚线表示训练器对参数计算的梯度,不是验证器把分数直接写成权重。

2.2 动作无关基线、无偏性与两动作手算

先把一题简化为 A/B 两个离散选择,图中每行对应一种可能采样结果。各列从左到右是采样概率、奖励、减基线后的优势、log-prob 对参数的导数、两者的乘积;最后才按采样概率求平均。优势和梯度不是同一个量。

采到A或B时优势和score相乘,再按采样概率求平均

本图只对控制 A 概率的 logit z 求导;上升 z 会提高 A、降低 B。

先看一个两动作策略的手算。令“选择解法 A”的 logit 为 zz,概率为 p=σ(z)=0.25p=\sigma(z)=0.25,A 的奖励为 11、B 的奖励为 00。真实期望奖励是 J=pJ=p,故 dJ/dz=p(1−p)=0.1875dJ/dz=p(1-p)=0.1875。取 b=0.25b=0.25:采到 A 时梯度估计为 (1−0.25)(1−0.25)=0.5625(1-0.25)(1-0.25)=0.5625;采到 B 时为 (0−0.25)(−0.25)=0.0625(0-0.25)(-0.25)=0.0625。按采样概率加权,0.25×0.5625+0.75×0.0625=0.18750.25\times0.5625+0.75\times0.0625=0.1875,正好回到真实梯度。

本例临时把两个解法当作两个离散动作,只检查梯度估计,不把整段自然语言假定为一个真实 token。令 B 的 logit 为 0,A 的 logit 为 zz,则 p=σ(z)=1/(1+e−z)p=\sigma(z)=1/(1+e^{-z});这里 σ(z)\sigma(z) 是 sigmoid,不是第 4 章的标准差。对控制 A 的 zz:

dlog⁡pdz=1−p=0.75,dlog⁡(1−p)dz=−p=−0.25.\begin{aligned} \frac{d\log p}{dz}&=1-p=0.75,\\ \frac{d\log(1-p)}{dz}&=-p=-0.25. \end{aligned}

失败 B 同时有负优势 −0.25-0.25 与负 score −0.25-0.25,相乘得到正的 0.06250.0625。score 是 log probability 对 zz 的导数;上升 zz 会提高 A、降低 B,因此没有在奖励失败动作。反例是依动作取 b(A)=1,b(B)=0b(A)=1,b(B)=0:两个优势都成 0,估计恒为 0,无法回到真实导数 0.18750.1875。4.3 会继续检查“组均值含自己”的区别。

为减小方差,通常减掉一个 baseline:

g^=(R−b)∑t=1T∇θlog⁡πθ(at∣st).\widehat g=(R-b)\sum_{t=1}^{T}\nabla_\theta\log\pi_\theta(a_t\mid s_t).

bb 是标量基线,单位与奖励相同;A=R−bA=R-b 是优势,表示这次输出相对基线好多少。若使用状态相关基线 b(st)b(s_t),对应每步的回报 Gt=∑k=tTγk−trkG_t=\sum_{k=t}^{T}\gamma^{k-t}r_k,优势写成 Gt−b(st)G_t-b(s_t)。要保持通常的无偏性质,baseline 不应依赖当前采样动作;训练时还需停止其在 actor 目标中的梯度。

无偏性的理由可以独立验算:固定状态后,∑aπ(a∣s)∇log⁡π(a∣s)=∇∑aπ(a∣s)=0\sum_a\pi(a\mid s)\nabla\log\pi(a\mid s)=\nabla\sum_a\pi(a\mid s)=0,所以减掉动作无关的基线不改变梯度期望。降低方差并不表示每个有限 batch 的梯度都一样。

所有动作概率之和恒为 1,它的梯度为 0;动作无关的 bb 才能从这项求和外提出。bb 可以依赖该步已知状态,不能偷看本次动作后任意改值。这里有两个独立算例:简单正确/错误对照表取 b=0.6b=0.6;两动作概率与梯度图另取 p=0.25,b=0.25p=0.25,b=0.25。

轨迹奖励 RR基线 bb优势 AA对已采样动作的倾向
正确解法110.60.60.40.4增加概率
错误解法000.60.6−0.6-0.6减少概率

3. PPO:控制一次更新偏离采样策略的程度

3.1 比率裁剪选择保守一侧

先确定优化方向:训练要最大化 LclipL^{\mathrm{clip}}。 min⁡\min 是先从两个估计中取较保守的一项,再让选出的目标上升。代码若取 loss=−mean(Lclip)\mathrm{loss}=-\mathrm{mean}(L^{\mathrm{clip}}),下降 loss 与这个方向一致。下图独立给定已估计的优势 A=+2A=+2 或 −2-2,用来观察符号怎样改变分支;它不是继续沿用 2.2 的二值奖励与基线数值。

正负优势分别选择不同裁剪分支,彩色曲线是待最大化目标

灰虚线是原项,彩实线是 min 后的目标;浅蓝带是比率比较区间。

为复用生成成本较高的 rollout,训练器常在同一批数据上进行有限次更新,再刷新采样策略。PPO 用旧策略产生数据,再比较当前策略对同一个已采样动作的概率。PPO 原论文提出的 clipping surrogate 是限制更新的一种方法;下面用单步教学例展开。

ρt(θ)=πθ(at∣st)πold(at∣st),Ltclip=min⁡(ρtAt,clip⁡(ρt,1−ϵ,1+ϵ)At).\begin{aligned} \rho_t(\theta)&=\frac{\pi_\theta(a_t\mid s_t)}{\pi_{\mathrm{old}}(a_t\mid s_t)},\\ L_t^{\mathrm{clip}}&=\min\Bigl(\rho_t A_t,\\ &\qquad\operatorname{clip}(\rho_t,1-\epsilon,1+\epsilon)A_t\Bigr). \end{aligned}

PPO:概率比与裁剪目标

记号含义、形状与本例取值
πold\pi_{\mathrm{old}}实际生成这批数据的策略快照,更新时固定。
πθ\pi_\theta正在训练的策略;它对同一状态和动作重新计算概率。
ρt\rho_timportance ratio;无量纲标量,旧动作概率必须非零。
AtA_t固定的优势估计;评分单位,actor 更新不经过它反向传播。
ϵ\epsilon允许区间的宽度;无量纲,本例为 0.20.2。
clip⁡(x,l,u)\operatorname{clip}(x,l,u)将 xx 限制到下界 ll 与上界 uu 之间。
min⁡(x,y)\min(x,y)取两个标量中较小者;目标使用保守一侧。
LtclipL_t^{\mathrm{clip}}单个动作的待最大化目标;实际 loss 常取负号。

旧概率为 0.20.2,新概率为 0.30.3 时,ρ=1.5\rho=1.5。若 A=2A=2,未裁剪项为 33,裁剪项为 2.42.4,取较小的 2.42.4:继续提高该动作概率不再得到这部分目标的额外收益。若 A=−2A=-2,两项是 −3-3 与 −2.4-2.4,取 −3-3,因为这个坏动作概率增加得太多,应保留惩罚。

两图横轴都是同一已采动作的比率 ρ\rho,纵轴是待最大化目标;灰虚线画 ρA\rho A,彩实线画取 min⁡\min 后的值。正优势在右边变平,表示好动作概率已提高较多时,该项不再额外获益。负优势在左边变平,表示坏动作概率已降低较多时,该项不再额外获益;右侧仍向下,坏动作概率增加依旧受罚。

在 ρ=0.5\rho=0.5 处,好动作 A=2A=2 的两项为 11 与 1.61.6,选 11,保留把概率拉回的信号;坏动作 A=−2A=-2 的两项为 −1-1 与 −1.6-1.6,选 −1.6-1.6,不因继续压低它的概率而无限增益。平坦只说明本条 surrogate 对其比率的局部导数,不表示其他 token、正则项和共享参数停止更新。

AAρ\rho原项 ρA\rho A裁剪项LclipL^{\mathrm{clip}}
221.51.5332.42.42.42.4
−2-21.51.5−3-3−2.4-2.4−3-3
220.50.5111.61.611
−2-20.50.5−1-1−1.6-1.6−1.6-1.6

PPO 裁剪的是目标中的概率比项,不是把模型概率强行夹进一个固定区间。同一参数影响大量状态和 token,裁剪也不是全局 KL 的硬保证。旧策略、当前策略和参考策略需要分清:old 用于判断相对本批数据的更新;reference 常是更长期固定的 SFT 检查点,用于防止策略持续偏离已有行为。

3.2 old 与 reference 约束不同关系

固定同一状态与两个候选 A/B。本图另取 old (0.4,0.6)(0.4,0.6)、current (0.6,0.4)(0.6,0.4)、reference (0.5,0.5)(0.5,0.5),同时检查两种关系;它与 3.1 旧概率 0.20.2 的例子不是同一个采样位置。

三种策略在同一状态下的两动作分布,old进入比率分母而ref进入KL

每行是策略角色,列 A/B 是同一状态的两个候选动作;KL 使用完整分布。

一种简化的正则化目标是:

L=Et[Ltclip]−βEs[DKL(πθ(⋅∣s)∥πref(⋅∣s))].\begin{aligned} L&=\mathbb E_t[L_t^{\mathrm{clip}}]\\ &\quad-\beta\mathbb E_s[ D_{\mathrm{KL}}(\pi_\theta(\cdot\mid s)\Vert\pi_{\mathrm{ref}}(\cdot\mid s))]. \end{aligned}

其中 DKL(p∥q)=∑a=1Vpalog⁡(pa/qa)D_{\mathrm{KL}}(p\Vert q)=\sum_{a=1}^{V}p_a\log(p_a/q_a),pa,qap_a,q_a 是同一状态下两个策略的词表概率;KL 单位为 nat,β\beta 的单位为“奖励单位/nat”,使两项可比较。Et\mathbb E_t 是动作样本平均,Es\mathbb E_s 是所选状态分布平均。真实实现可能把 KL 放进奖励,也可能放进 loss,不能把两处重复加上而仍声称是同一目标。

KL 正则:输入分布与单位检查

符号含义与形状
p=(p1,…,pV)p=(p_1,\ldots,p_V)当前词表分布,形状 [V][V],和为 11,各项无量纲。
q=(q1,…,qV)q=(q_1,\ldots,q_V)参考词表分布,形状 [V][V];这里的 qq 是分布记号,不是前文的问题。
aa词表项索引,范围 1,…,V1,\ldots,V,不同于一个已经采样出的 token 值。
DKLD_{\mathrm{KL}}从两个分布算出的非负标量;正概率的当前项要求参考项非零。
β\beta正则权重,负责把 nat 换算成目标的评分尺度。

用两个动作检验方向:当前分布 (0.6,0.4)(0.6,0.4)、reference (0.5,0.5)(0.5,0.5),KL 为 0.6log⁡1.2+0.4log⁡0.8≈0.02010.6\log1.2+0.4\log0.8\approx0.0201 nat,β=0.1\beta=0.1 时目标扣约 0.002010.00201。交换两个分布得到不同数值,因为 KL 不对称。它限制分布偏移,也可能压住有益探索,权重需要结合任务和实际 KL 监控。

若采到 A,比率分母取行为 old,得到 0.6/0.4=1.50.6/0.4=1.5,不能改除 reference 的 0.50.5。KL 则把两个候选都算入:A 项 0.1093930.109393 nat,B 项 −0.089257-0.089257 nat,总和 0.0201360.020136 nat。单候选项可为负,完整 KL 非负;反向则为 0.5ln⁡(0.5/0.6)+0.5ln⁡(0.5/0.4)≈0.0204110.5\ln(0.5/0.6)+0.5\ln(0.5/0.4)\approx0.020411 nat。

old 与 reference 参数可能恰好相同,职责仍不同:old 是本批样本来源,current 是被优化者,reference 是另一个比较基准。本图把 reference 在若干更新内固定,不承诺所有方法永远不刷新它。DeepSeekMath 的迭代算法在外层设置 reference,内层再更新 old 与采样,见 原报告 §4.1.4 与 Algorithm 1。

4. GRPO:用同题多次尝试构造相对优势

基本单位是“同一题的 GG 条完整回答”。回答 ii 内部还有 token 位置 tt;G=4G=4 不代表每条只有四个 token。图中组甲、乙、丙、丁是同题在四种独立采样背景中的组,不是四条回答各自成组,也不是四个训练时间步。

DeepSeekMath公开了 GRPO:同一道题采样一组输出,用组内奖励构造基线,避免单独训练大型 critic。组不是来自不同题目的混合 batch,因为题目难度差异会破坏“相对同题表现”的解释。

4.1 总体标准差与样本标准差

四个独立采样组各有四条完整回答,奖励与优势按同一候选列对齐

四组是四种独立采样背景;组内列 i 才是回答编号,不是 token 位置。

为便于手算,本篇明确采用总体标准差:

先沿组甲横着读奖励 0,0,1,10,0,1,1,其下优势与同列完整回答一一对应。右边的均值和 std 每组各一个,不能跨行混入别组奖励。非零方差时先略去极小 δ\delta;图中小数是显示精度。

μ=1G∑i=1Gri,σ=1G∑i=1G(ri−μ)2,Ai=ri−μσ+δ.\begin{aligned} \mu&=\frac1G\sum_{i=1}^{G}r_i,\\ \sigma&=\sqrt{\frac1G\sum_{i=1}^{G}(r_i-\mu)^2},\\ A_i&=\frac{r_i-\mu}{\sigma+\delta}. \end{aligned}

组内标准化:符号、约定与零方差

记号含义与形状
GG同一题的输出条数;整数,本例为 44。
ii组内输出索引,取 1,…,G1,\ldots,G。
rir_i第 ii 条输出的奖励;标量,整组形状为 [G][G]。
μ\mu组内平均奖励;标量,单位与 rir_i 相同。
σ\sigma总体标准差,分母为 GG;单位与奖励相同。
δ\delta防止除零的小正数;单位与奖励相同,本例非零方差时忽略。
AiA_i标准化优势;无量纲,整组形状为 [G][G]。

令奖励为 [0,0,1,1][0,0,1,1],均值 μ=0.5\mu=0.5,平方差都为 0.250.25,故 σ=0.5\sigma=0.5,优势约为 [−1,−1,1,1][-1,-1,1,1]。若框架采用样本标准差,分母为 G−1G-1,则标准差是 1/3≈0.5774\sqrt{1/3}\approx0.5774,优势变成 [−0.8660,−0.8660,0.8660,0.8660][-0.8660,-0.8660,0.8660,0.8660]。符号看似相同的 std,约定不同就会改变实际更新幅度。

4.2 一次稀有成功,为何得到更大的标准化优势?

比较组甲和组乙的成功位置:奖励同为 1,组甲的成功优势是 1,组乙唯一成功约为 1.732。变的是整组背景中的居中与缩放。下面只放大组乙,四行各对应这一组的一条完整回答。

展开完整算例、公式与实现边界

同一个稀有成功组逐项算居中差、平方差、总体方差和优势

一组四回答:先算均值 1/4,再按四条回答的平方差求总体方差。

继续同一道乘法题。第一条路径的两个部分积都正确,却把 340+51340+51 加成 381;第二条把 17×317\times3 算成 31,得到 371;第三条用了错误部分积 330 与 11,得到 341;第四条正确得到 391。图中红叉只是在标注错误,奖励规则固定为“最终答案等于 391 得 1,否则得 0”,没有给不同错误的严重程度加分。

由此得到 r=(0,0,0,1)r=(0,0,0,1)。这里先忽略极小正数 δ\delta,把总体标准差逐项展开,避免把“稀有成功优势大”只当口号:

μ=14,(ri−μ)2=(1/16,1/16,1/16,9/16),σ2=1+1+1+964=316,σ=34≈0.433013,A=(−13,−13,−13,3).\begin{aligned} \mu&=\frac14,\\ (r_i-\mu)^2&=(1/16,1/16,1/16,9/16),\\ \sigma^2&=\frac{1+1+1+9}{64}=\frac3{16},\\ \sigma&=\frac{\sqrt3}{4}\approx0.433013,\\ A&=\left(-\frac1{\sqrt3},-\frac1{\sqrt3}, -\frac1{\sqrt3},\sqrt3\right). \end{aligned}

三个失败各约 −0.577350-0.577350,一次成功约 1.7320511.732051,总和为 0。对比 4.1 的两次成功组,成功优势为 1:同样奖励 1,在不同组内背景中标准化后并不是同一个权重。 全错组的优势则全零,图中四个零奖励格没有相对高低;全对组也是如此,但它们代表相反的本组任务结果;单个随机组并不能确定题目的真实难度。

四个平方差之和为 12/16=3/412/16=3/4,再除总体分母 G=4G=4 得 3/163/16。改用样本分母 G−1=3G-1=3,方差就是 1/41/4、std 为 0.50.5,优势成为 [−0.5,−0.5,−0.5,1.5][-0.5,-0.5,-0.5,1.5]。因此要记录分母约定,不能只写未定义的 std。

同题奖励均值总体 std优势(忽略 δ\delta)任务结果
[0,0,0,1][0,0,0,1]0.250.433013[−0.57735,−0.57735,−0.57735,1.73205][-0.57735,-0.57735,-0.57735,1.73205]1 次成功
[0,0,1,1][0,0,1,1]0.500.50[−1,−1,1,1][-1,-1,1,1]2 次成功
[0,0,0,0][0,0,0,0]00加 δ\delta 后全零0 次成功
[1,1,1,1][1,1,1,1]10加 δ\delta 后全零4 次成功

这组对照把两件事分开:任务统计看成功率;组内优势看本组有没有可供比较的差异。随机采样会改变均值与 std,标准化随之重新分配权重。因此不能把“1.732>11.732>1”直接说成真实参数更新一定更大:token 梯度、长度、概率比和其他组也都进入训练目标。

本次数值检查使用 δ=10−8\delta=10^{-8},得到失败优势 −0.5773502559-0.5773502559、成功优势 1.73205076761.7320507676;检查了全错、全对和对半成功组。它只验证数组计算与边界,不证明大模型训练效果。原教学代码使用 eps=1e-6,两者末位会略有差别;公式、代码的各自约定都需保留。

4.3 零方差与自含基线的统计边界

全错和全对成功率相反,但各自居中差为零,组内优势都零

每行是一组;分子全零,加 δ 后仍零,无法创造排序信息。

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

自含均值与其他样本均值给出不同的未标准化优势

此处不除 std;先检查 baseline 是否含当前样本,再讨论梯度期望。

还有一个容易忽略的统计边界:组内均值包含当前样本自身,不是上一节严格动作无关的 baseline。以未标准化优势为例,同题独立采样且每条轨迹梯度期望为零时,E[(ri−rˉ)∇log⁡pi]\mathbb E[(r_i-\bar r)\nabla\log p_i] 等于原梯度的 (1−1/G)(1-1/G) 倍;进一步除以随机标准差又会改变权重。GRPO 的实践效果不能直接用“REINFORCE 无偏 baseline”一句话证明。使用 leave-one-out 均值会改变这个性质,也改变算法约定。

唯一成功的奖励是 1,自含均值 1/41/4 使其居中为 3/43/4;另外三条的均值是 0,leave-one-out 居中为 1。一条失败则从 −1/4-1/4 变成 −1/3-1/3。leave-one-out 表示排除当前样本后再求均值,至少需要 G≥2G\ge2;本页没有把它替换进原 GRPO 约定。

固定一题、独立同分布采样,令 zi=∇θlog⁡pθ(oi∣q)z_i=\nabla_\theta\log p_\theta(o_i\mid q) 为第 ii 条完整输出的 score 向量。先只分析未标准化、没有行为分布滞后的情形:

ri−rˉ=(1−1G)ri−1G∑j≠irj,E[(ri−rˉ)zi]=(1−1G)E[rizi]−1G∑j≠iE[rj]E[zi],=(1−1G)E[rizi].\begin{aligned} r_i-\bar r &=\left(1-\frac1G\right)r_i-\frac1G\sum_{j\ne i}r_j,\\ \mathbb E[(r_i-\bar r)z_i] &=\left(1-\frac1G\right)\mathbb E[r_i z_i]\\ &\quad-\frac1G\sum_{j\ne i}\mathbb E[r_j]\mathbb E[z_i],\\ &=\left(1-\frac1G\right)\mathbb E[r_i z_i]. \end{aligned}

跨样本项能拆开来自独立采样,最后一步用 E[zi]=0\mathbb E[z_i]=0,G=4G=4 即 3/43/4 倍。再除以依赖整组奖励的随机 std,分母也与样本相连,不能当常数提出期望。这个统计边界与算法是否在实验中有效,是两类判断。

4.4 回答长度改变归一化权重

不同长度回答在相同token轴标出有效mask与两种归一化

纵行是回答,横列是 token 位置;格内是 surrogate 值,灰格不参与平均。

一种 token 级教学目标可写成:

Lgroup=1G∑i=1G1Ti∑t=1Timin⁡(ρi,tAi,clip⁡(ρi,t,1−ϵ,1+ϵ)Ai).\begin{aligned} L_{\mathrm{group}}&=\frac1G\sum_{i=1}^{G}\frac1{T_i}\sum_{t=1}^{T_i}\\ &\quad\min\Bigl(\rho_{i,t}A_i,\\ &\qquad\operatorname{clip}(\rho_{i,t},1-\epsilon,1+\epsilon)A_i\Bigr). \end{aligned}

TiT_i 为第 ii 条输出的有效 token 数,ρi,t\rho_{i,t} 是对应 token 的 current/old 概率比,ϵ\epsilon 为裁剪宽度,AiA_i 在本例中分配给整条输出的所有 token。1/G1/G 让各回答平均,1/Ti1/T_i 让每条回答内部平均。是否按回答平均、按全 batch token 平均、对固定最大长度归一化,会改变长短输出的相对贡献;它们属于值得检查的实现变体,不能只看“用了 GRPO”就认为损失完全相同。正则项在此省略以突出长度归一化。

图中另取两回答组:奖励 [1,0][1,0],略去极小 δ\delta 后优势 [+1,−1][+1,-1]。短回答有效长度 2、长回答 4,所有有效 token 的 ρ=1\rho=1,故格内 surrogate 分别是 +1+1 与 −1-1。灰格是 padding,不是奖励为零的有效动作。

按回答平均:短的每个 token 权重 1/(2×2)=1/41/(2\times2)=1/4,长的为 1/(2×4)=1/81/(2\times4)=1/8,每条总权重 1/21/2,目标 [1+(−1)]/2=0[1+(-1)]/2=0。按六个有效 token 平均:每项 1/61/6,短/长总权重 1/31/3 与 2/32/3,目标 (2−4)/6=−1/3(2-4)/6=-1/3。权重规则不同,目标随之不同;目标值为 0 也不表示参数梯度必为 0。

token 级目标:序列长度与归一化

符号含义与形状
TiT_i第 ii 条输出实际有效动作数;单位为 token,不计 padding。
ρi,t\rho_{i,t}第 ii 条输出第 tt 个动作的概率比;有效数组形状为 [G,Tmax⁡][G,T_{\max}],配 mask。
AiA_i一个回答的优势,广播到其有效 token;原始形状 [G][G]。
LgroupL_{\mathrm{group}}先按回答内部平均,再按回答平均的标量目标;本例无量纲。
Tmax⁡T_{\max}当前组最长序列长度,用于补齐数组;不是所有序列的有效长度。

5. RLVR、过程奖励与结果奖励

5.1 奖励来源与优化器是两个轴

先区分“输出如何得到奖励数值”与“拿到奖励后怎样构造更新”。终值验证产生 0/10/1 是前者,PPO 的比率与优势、GRPO 的组内统计属于后者。同一验证器可以配不同优化方法,优化器名字也不规定奖励必须来自数学标准答案。

RLVR,即基于可验证奖励的强化学习,说明奖励从哪里来;PPO、GRPO 说明怎样利用奖励更新策略。可以用 PPO 优化程序测试奖励,也可以用 GRPO 优化偏好评分。把 RLVR 当作与 PPO 互斥的算法分类,会混淆两个轴。

奖励来源一个教学例可验证性与局限
最终答案匹配标准化后检查答案是否为 391391确定性强,但正确答案不证明推导正确。
程序执行隐藏测试通过比例可以扩展;测试覆盖与隔离环境决定质量。
形式证明检查证明能否被验证器接受强约束来自形式规则;命题和依赖仍须正确。
人工偏好标注者比较两份解释适合开放任务,受偏好、成本与一致性影响。
AI 评判模型按 rubric 评分易扩展,但 judge 可能偏爱风格或被操纵。

5.2 终值相同,中间计算可能不同

正确和错误的两条教学过程都报告391,仅检查终值会接受两条

两行是替代解法;红叉检查中间步骤,右门只核对最后的答案(ImageGen 教学)。

图上方保留两个正确部分积;下方的 4141 与加法都标红,右侧只核对最终答案的检查门仍会接受 391391。

上下两行是替代解法,横向才是每条内部的计算顺序。每张算式卡片是一个算术步骤,不是一个 token 或参数;绿勾与红叉是这张教学图标出的过程判断。上行 340+51=391340+51=391 同时满足过程和终值;下行 340+41=391340+41=391 含错误部分积和错误加法,右侧却仍报 391。最终检查只证明“报告的终值通过规则”,不能倒推左侧每条边都对。

结果奖励在结束时评分,过程奖励在中间步骤评分。Let's Verify Step by Step研究了数学推理中的过程监督。其意义是增加错误定位信号,不能推出所有现代模型都训练了逐步 PRM。

该论文重点训练并比较 reward model,用固定生成器的候选做 best-of-N 选择;其 §2.1 明确没有对生成器执行 RL。因此它在本篇支撑的是“过程评分如何提供更细的信息”,不是本文 PPO/GRPO 训练器已运行的实验结果。来源:论文 Scope。

对同一道乘法题,轨迹甲写“17×20=34017\times20=340,17×3=5117\times3=51,相加 391391”,轨迹乙写“340+41=391340+41=391”。最终答案检查会给两条都判对,中间步骤验证能指出乙的乘法或加法错误。另一方面,一个真实有效的新证明方法可能不符合 judge 熟悉的模板,过程评分也可能误罚探索。

终局奖励能训练策略,但信用分配粗糙;过程奖励提供密集信息,却增加标注和评判器的复杂度。对推理文本打分还涉及推理忠实性:生成的解释可能是事后合理化,奖励“文字看起来认真”不等于奖励真正解决问题的计算。不同实验可以在这两个方向上采用不同取舍。

6. DeepSeek-R1:一条公开的多阶段路线

DeepSeek-R1 技术报告提供了具体案例。R1-Zero 从 DeepSeek-V3-Base 预训练模型开始做 RL,省略的是前置 SFT,而不是预训练。其奖励主要检查正确性与格式。R1 再把冷启动、推理 RL、筛选生成数据后的 SFT、全场景 RL 组合成四阶段。下图用短标签表示报告中的路线,具体解释用教学角度展开。

R1的继续训练权重与筛选数据流分开,第三阶段由Base重新初始化

按 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 长度也非实测速率。

一个教学目标把有效性与代价并列:

Rtotal=Rtask−λT1000.R_{\mathrm{total}}=R_{\mathrm{task}}-\lambda\frac{T}{1000}.

这里 RtaskR_{\mathrm{task}} 为任务评分,TT 为生成 token 数,λ\lambda 为每千 token 的奖励扣分,10001000 只是单位换算。正确输出 1000 token 得任务分 11,若 λ=0.1\lambda=0.1,总分为 0.90.9;另一正确输出 3000 token 得 0.70.7。但若短答案成功概率 0.60.6、长答案成功概率 0.950.95,两者期望总分分别为 0.50.5 与 0.650.65,这个设计仍偏好长答案。合理目标奖励的是收益相对于成本,而不是长度本身。

两根柱是固定使用 1000/3000 token 的预算方案,纵轴是期望净评分。本例错误奖为 0,成本按固定长度收取,所以期望任务分等于成功概率。短方案成本 0.1×1000/1000=0.10.1\times1000/1000=0.1,净得 0.6−0.1=0.50.6-0.1=0.5;长方案成本 0.1×3000/1000=0.30.1\times3000/1000=0.3,净得 0.95−0.3=0.650.95-0.3=0.65。前文 0.9/0.70.9/0.7 则条件是两条已经知道都正确,不能混作同一性能比较。实际长度若随机,成本也要按实际长度分布求期望。

reward hacking 指模型提高评分,却没有完成评分所代表的真实目标。例如代码只识别公开测试输入,或修改评分文件。Anthropic 的官方研究表明有漏洞的训练环境可能强化作弊行为;这是特定研究中的证据,不能把其故意构造的实验模型等同于正常发布模型。

训练长度与推理 effort 也要分开。训练可以让模型学会检查、重试与分配思考 token;部署设置控制本次允许或偏好的计算量。提高 effort 不会在用户会话中自动做一次梯度更新,也不保证每道简单问题都变准。公平比较模型时,要同时报告实际 token、工具费用、超时规则、并行样本数和选择规则;多次采样选最好与单次回答不是同一预算。

8. Rollout 工程:策略版本决定数据能否正确使用

8.1 轨迹必须绑定真实 behavior 版本

v0轨迹迟到时训练器已到v2,刷新只改变未来新轨迹

旧记录保留 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分子分别保存。

生成行为版本、当时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 变换:

ℓv0=log⁡0.20=−1.609438,ℓv2=log⁡0.30=−1.203973,ρtrue=eℓv2−ℓv0=1.5,ρwrong=0.300.25=1.2.\begin{aligned} \ell_{v0}&=\log0.20=-1.609438,\\ \ell_{v2}&=\log0.30=-1.203973,\\ \rho_{\rm true}&=e^{\ell_{v2}-\ell_{v0}}=1.5,\\ \rho_{\rm wrong}&=\frac{0.30}{0.25}=1.2. \end{aligned}

把“上一个检查点”v1 当作 old,看起来得到更温和的比率,实际已经改了样本权重。取 A=−2A=-2、裁剪宽度 ϵ=0.2\epsilon=0.2,3.1 的保守一侧为:

Ltrueclip=min⁡(−3.0,−2.4)=−3.0,Lwrongclip=min⁡(−2.4,−2.4)=−2.4.\begin{aligned} L_{\rm true}^{\rm clip} &=\min(-3.0,-2.4)=-3.0,\\ L_{\rm wrong}^{\rm clip} &=\min(-2.4,-2.4)=-2.4. \end{aligned}

选择负优势是为了把分母错误显出来:若只检查本例的正优势,两种比率都可能被同一上界裁剪,反而掩盖错误。保存 behavior log-prob 不只是为了画出训练时间轴,它直接决定每个动作进入目标的数值。上述比率与裁剪值已独立验算。

8.2 采样变换改变 likelihood 与支持集

本节温度 T=2T=2 是无量纲设置,不是前文回答长度 TT。三图使用相同 token ID 1、2、3 和统一概率纵轴,每一步都要重新读分母。

同一token坐标比较原分布、温度变换与top-p后的真实采样分布

三图纵轴统一为概率;最后一次过滤把 token 3 的行为概率变成零。

图左的教学分布为 p=[0.6,0.3,0.1]p=[0.6,0.3,0.1]。温度 T=2T=2 将其变为 p~i=pi/∑jpj\tilde p_i=\sqrt{p_i}/\sum_j\sqrt{p_j},约为 [0.4727,0.3343,0.1930][0.4727,0.3343,0.1930];再按 top-p 0.80.8 保留达到阈值的最小降序集合,前两项累计约 0.80700.8070,重归一化得到 [0.5858,0.4142,0][0.5858,0.4142,0]。因此 token 2 的实际采样 log-prob 约为 −0.8814-0.8814,与原始 softmax 的 log⁡0.3≈−1.2040\log0.3\approx-1.2040 不同;token 3 则已不在行为支持集中。这里演示按实际采样分布记录 likelihood 的约定;如果实现记录原策略概率,还需明确相应目标与修正,不能混用。

温度先取平方根 [0.774597,0.547723,0.316228][0.774597,0.547723,0.316228],和为 1.6385481.638548,再分别除以该和得到中图。top-p 保留前两项后,新分母为 0.472734+0.334273=0.8070070.472734+0.334273=0.807007,第二项成为 0.334273/0.807007≈0.4142140.334273/0.807007\approx0.414214,第三项严格变 0。排序取最小累计集合、在保留集上归一化是两个操作;阈值 0.80.8 不是把最高 token 的概率改成 0.80.8。

如果生成用了温度、top-p 或其他过滤,behavior 分布可能与未经处理的模型 softmax 不同。工程实现必须明确 likelihood 的约定与修正方式。某个动作在行为分布中的概率为零时,importance sampling 无法从这批数据恢复它的贡献;支持集不重叠、概率比巨大、陈旧数据很多时,仅有 PPO clipping 不能自动解决问题。

9. 关键代码的阅读地图与验证边界

9.1 代码接口与冻结的优势

B行同题采样组和G列候选按行统计后得到冻结优势

本例 B=2、G=4;mean/var 保留单列,再向各自组内广播。

这里只演示 GRPO 组内优势,不实现生成器或 PPO 训练。数据从同题奖励进入,输出冻结的标准化优势;采样、评分和 actor 更新分别由外部模块负责。

输入故意取非方阵 B=2,G=4B=2,G=4:两行是两个同题采样组,每行内部四列才是回答。行间可以不同题,也可同题另一次重采样;本图两行分别取 [0,0,0,1][0,0,0,1] 与 [0,0,1,1][0,0,1,1],不能把八项混求一个基线。B/GB/G 都不是 token 轴;每条回答的 token、mask、logprob 另需有效长度与 Tmax⁡T_{\max} 轴。

接口输入输出与约定
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 明确选择分母 GG,避免依赖库的默认 std convention。detach 防止奖励或优势进入 actor 的反向传播图。本篇不提供可运行训练脚本,读者可独立实现并核对以下数值:输入 [0,0,1,1][0,0,1,1] 输出约 [−1,−1,1,1][-1,-1,1,1];输入 [1,1,1,1][1,1,1,1] 输出全零;打乱组内次序只打乱对应优势;把不同题目混进一行则破坏设计含义。

逐行对照代码:dim=-1 沿四个候选列求统计;keepdim=True 保留 [2,1][2,1],使均值和方差只向本行四列广播。第一行均值 0.250.25、方差 0.18750.1875,第二行均值 0.50.5、方差 0.250.25。标准化恢复 [2,4][2,4],图中优势只显示两位小数。detach 冻结最终优势;actor 在外侧用优势和有效 mask 构造目标,只对 current log-prob 所依赖的策略参数求导。

片段前提是有限浮点奖励且 G≥1G\ge1;要比较差异通常至少两条。G=1G=1 同样零居中差。代码没写生成器、评分器、输入校验或完整 actor 训练,也没处理空组和非有限奖励等错误输入;数组与 mask 检查不等于模型训练实测。

训练排错应追踪奖励、正确率、组内方差、有效长度、KL、概率比和截断率。只有 reward 上升而独立正确率下降,应优先检查评分漏洞;平均长度上涨而成功率不变,需检查归一化与长度信号;大量零方差组,需检查任务难度与探索;概率比经常极端,需检查策略版本和采样分布。小模型或单题拟合只能证明训练链路的一部分成立,不能证明获得通用推理。

参考资料与证据范围

本篇公式推导、手算表与代码为原创教学示例,算法名和模型训练阶段按下列原始资料核实。闭源前沿模型的具体配方仍须逐型号查看披露。

返回 LLM 专题导读 · 继续:对齐与 Agent 训练

正在连接 GitHub 评论…