前言

监督微调(Supervised Fine-Tuning, SFT)要求训练数据中明确给出“输入应该对应什么输出”。但在数学推理、代码生成和复杂指令遵循任务中,很多问题很难为每个输入准备唯一而完整的标准答案。此时可以让语言模型生成多个候选答案,再根据答案是否正确、是否满足约束或是否具有某种质量来给出奖励(reward),并用强化学习(Reinforcement Learning, RL)调整模型的生成策略。

PPO(Proximal Policy Optimization)是语言模型强化学习中最经典的策略优化方法之一。GRPO(Group Relative Policy Optimization)则是在 PPO 的策略裁剪思想上,进一步利用同一个问题生成的一组答案进行相对比较,从而不再显式训练一个独立的价值模型(critic)。

本文先建立 PPO 的必要数学背景,再重点解释 GRPO 的训练目标、数据流和局限。文章默认读者已经理解概率分布、梯度下降以及 Transformer 的自回归生成过程。神经网络反向传播的基础可以参考本站的正向传播与反向传播,Transformer 的自回归结构可以参考Transformer 详解。

语言模型为什么可以看成策略

强化学习中的策略(policy)是根据当前状态选择动作的概率分布。对于自回归语言模型,可以作如下对应:

强化学习概念语言模型中的对应物
状态 $s_t$输入提示词与已经生成的前缀
动作 $a_t$当前时刻生成的 token
策略 $\pi_\theta(a_t \mid s_t)$模型对下一个 token 的概率分布
一条轨迹从提示词开始直到结束 token 的完整回答
回报或奖励 $R$对整段回答进行评价得到的分数

给定提示词 $q$,语言模型生成回答 $o=(o_1,\ldots,o_T)$ 的概率可以按照自回归分解:

$$\pi_\theta(o\mid q) = \prod_{t=1}^{T} \pi_\theta(o_t\mid q,o_{< t})$$

其中 $o_{< t}$ 表示第 $t$ 个 token 之前的生成前缀。取对数后,完整回答的对数概率变成各个 token 对数概率之和:

$$\log \pi_\theta(o\mid q) = \sum_{t=1}^{T} \log \pi_\theta(o_t\mid q,o_{< t})$$

这两个式子非常重要。奖励通常是对完整回答给出的,但模型参数的更新必须落实到生成回答时经过的每一个 token。因此,PPO 和 GRPO 都需要把序列级奖励转化为 token 级的策略梯度信号。

在最简单的形式下,策略优化的目标是让高奖励回答的概率增加,让低奖励回答的概率降低:

$$\max_\theta \mathbb{E}_{q\sim\mathcal{D},\,o\sim\pi_\theta(\cdot\mid q)} \left[R(q,o)\right]$$

直接优化这个目标会遇到两个问题。第一,生成分布依赖当前参数,训练数据会不断变化。第二,如果一次更新把策略改得过远,模型可能迅速偏离原本已经具备的语言能力,训练过程变得不稳定。PPO 的核心就是限制每次策略更新的幅度。

PPO:GRPO 的理论基线

重要性采样与策略比率

在一次训练迭代中,通常先用旧策略 $\pi_{\theta_{\mathrm{old}}}$ 生成数据,再用这些固定数据更新当前策略 $\pi_\theta$。但数据来自旧策略,而目标是评估新策略,因此需要用重要性采样(importance sampling)修正分布差异。

对第 $t$ 个 token,策略比率定义为:

$$r_t(\theta) = \frac{\pi_\theta(a_t\mid s_t)} {\pi_{\theta_{\mathrm{old}}}(a_t\mid s_t)}$$

当 $r_t(\theta)>1$ 时,当前策略提高了该动作的概率;当 $r_t(\theta)<1$ 时,当前策略降低了该动作的概率。若一个动作的优势函数为 $A_t$,没有任何限制的策略目标可以写为:

$$L_t^{\mathrm{CPI}}(\theta) = r_t(\theta)A_t$$

如果 $A_t>0$,希望提高该动作概率;如果 $A_t<0$,希望降低该动作概率。问题在于,单纯最大化这个目标可能鼓励策略一次性做出过大的变化。

价值函数与优势函数

价值函数(value function)描述从某个状态开始,按照当前策略继续执行时的期望回报:

$$V^\pi(s_t) = \mathbb{E}_\pi \left[ \sum_{l=0}^{T-t}\gamma^l r_{t+l} \mid s_t \right]$$

其中 $\gamma\in[0,1]$ 是折扣因子。动作价值函数(action-value function)则进一步指定当前采取的动作:

$$Q^\pi(s_t,a_t) = \mathbb{E}_\pi \left[ \sum_{l=0}^{T-t}\gamma^l r_{t+l} \mid s_t,a_t \right]$$

优势函数(advantage function)是二者之差:

$$A^\pi(s_t,a_t) = Q^\pi(s_t,a_t)-V^\pi(s_t)$$

它回答的问题不是“这个动作最终得到多少回报”,而是“这个动作比处于同一状态时的平均水平好多少”。因此,优势函数的符号正好适合指导策略更新:

  • $A_t>0$:这个动作比当前状态下的平均选择更好,应提高其概率;
  • $A_t<0$:这个动作表现较差,应降低其概率;
  • $A_t\approx 0$:这个动作没有提供明显的相对信息。

实际训练中通常用一个参数化的价值网络 $V_\phi(s_t)$ 估计状态价值,并用时间差分误差构造广义优势估计(Generalized Advantage Estimation, GAE):

$$\delta_t = r_t+\gamma V_\phi(s_{t+1})-V_\phi(s_t)$$$$\hat A_t^{\mathrm{GAE}(\gamma,\lambda)} = \sum_{l=0}^{T-t} (\gamma\lambda)^l\delta_{t+l}$$

参数 $\lambda$ 在偏差和方差之间进行折中。$\lambda$ 较小,估计更接近局部时间差分,方差较低但偏差可能较大;$\lambda$ 接近 1,估计使用更长的未来信息,偏差较小但方差可能增大。

PPO 的裁剪目标

PPO 不直接最大化 $r_tA_t$,而是把比率限制在一个以 1 为中心的区间内:

$$L_t^{\mathrm{CLIP}}(\theta) = \min\left( r_t(\theta)\hat A_t, \operatorname{clip}\left(r_t(\theta),1-\epsilon,1+\epsilon\right)\hat A_t \right)$$

其中 $\epsilon$ 是较小的裁剪范围。这个 $\min$ 的作用必须结合优势的正负来理解:

  • 当 $\hat A_t>0$ 时,继续无限提高好动作的概率不会带来额外的裁剪目标收益;
  • 当 $\hat A_t<0$ 时,继续无限降低坏动作的概率同样会被限制;
  • 在没有触发裁剪时,目标仍然等于普通的重要性采样目标。

因此,PPO 并不是强制新旧策略完全相同,而是让“过大的有利更新”不再继续获得目标函数上的奖励。它把一次可能失控的策略更新变成了相对保守的局部优化。

完整的 PPO 训练通常还包含价值损失和熵正则项:

$$L^{\mathrm{PPO}} = \mathbb{E}_t \left[ L_t^{\mathrm{CLIP}} -c_v L_t^{\mathrm{value}} +c_e S[\pi_\theta](s_t) \right]$$

其中 $L_t^{\mathrm{value}}$ 用于训练价值网络,$S[\pi_\theta]$ 是策略熵,用来避免策略过早变得过于确定。不同实现对符号和系数的写法可能不同,但共同结构是策略目标、价值目标和熵正则的组合。上式采用“最大化目标”的记号;工程实现通常把它取负,转换成通过梯度下降最小化的损失函数。

PPO 的训练流程

一次典型的 PPO 更新可以概括为:

flowchart LR q["提示词 q"] --> old["旧策略 π_old"] old --> sample["采样回答与 token 轨迹"] sample --> reward["计算奖励 R"] sample --> critic["价值网络 V_φ"] reward --> adv["估计优势 A"] critic --> adv adv --> ratio["计算 π_θ / π_old"] ratio --> clip["裁剪策略目标"] adv --> clip clip --> update["更新策略与价值网络"]

PPO 的重要代价也在这里:除了策略模型,还需要维护一个价值网络,并用它估计每个状态的价值。对于大语言模型而言,价值网络往往需要与策略模型共享大部分结构,或者额外占用一套接近策略模型规模的参数和显存。

这正是 GRPO 试图改进的地方。

GRPO 的核心设定

GRPO 保留 PPO 的“旧策略比率 + 裁剪”框架,但改变了优势函数的来源。它不再为每个状态训练一个显式的价值网络,而是对同一个提示词一次采样多个回答,用这些回答在组内的奖励差异构造相对优势。

设训练批次中的一个提示词为 $q$。从旧策略中独立采样 $G$ 个回答:

$$\{o_1,o_2,\ldots,o_G\} \sim \pi_{\theta_{\mathrm{old}}}(\cdot\mid q)$$

然后通过奖励函数得到每个回答的标量奖励:

$$r_i=R(q,o_i), \qquad i=1,\ldots,G$$

奖励函数可以来自不同来源,例如:

  • 可验证任务的规则检查器,例如数学答案是否正确、代码测试是否通过;
  • 奖励模型(reward model)对回答质量的评分;
  • 多个奖励项的加权组合,例如正确性、格式、长度和安全性;
  • 对违反约束的回答施加惩罚。

GRPO 的关键并不在于奖励必须来自某一种模型,而在于同一个提示词的多个回答共享一个比较环境。它问的是:在这组回答中,哪一个相对更好?

组相对优势

组均值与组标准差

对同一个提示词产生的奖励集合,计算组均值和组标准差:

$$\mu_q = \frac{1}{G}\sum_{j=1}^{G}r_j$$$$\sigma_q = \sqrt{ \frac{1}{G} \sum_{j=1}^{G} (r_j-\mu_q)^2 }$$

然后为第 $i$ 个回答构造组相对优势:

$$\hat A_i = \frac{r_i-\mu_q}{\sigma_q+\varepsilon}$$

其中 $\varepsilon$ 是防止分母为零的极小常数。奖励高于组均值的回答得到正优势,奖励低于组均值的回答得到负优势。

这个标准化有三个作用:

  1. 消除提示词之间的绝对奖励尺度差异。 不同问题的奖励难度可能不同,组内比较比跨问题直接比较更稳定。
  2. 保留同一问题下的排序信息。 对一个问题而言,模型主要需要知道哪些候选答案值得提高概率。
  3. 控制更新信号的尺度。 除以组标准差后,不同批次的优势数值通常处在更相近的范围。

必须注意,$\hat A_i$ 是回答级别的标量,而语言模型的策略是 token 级别的。GRPO 的常见做法是把同一个回答的组相对优势广播给该回答中的每一个有效 token:

$$\hat A_{i,t}=\hat A_i$$

这意味着,如果回答 $o_i$ 在组内表现较好,那么它产生的所有有效 token 都会收到方向一致的提高信号;如果回答表现较差,则这些 token 都会收到降低信号。实际实现还需要用 attention mask 排除 padding 和回答之外的提示词 token。

为什么不需要显式价值网络

PPO 中的价值网络要估计“从状态 $s_t$ 出发的平均未来回报”,再用它作为基线计算优势。GRPO 改为用同一提示词下其他采样结果的奖励构造基线:

$$b(q)=\frac{1}{G}\sum_{j=1}^{G}r_j$$

于是:

$$\hat A_i \propto r_i-b(q)$$

这个基线依赖提示词 $q$ 和同组样本,而不是依赖一个单独的 $V_\phi(s_t)$。因此,GRPO 可以省去价值模型的参数、前向计算和价值损失优化。

“GRPO 没有 critic”这个说法需要精确理解。它不是说 GRPO 完全没有基线,也不是说它不需要任何参考分布;它是用组内奖励统计量替代了 PPO 中显式学习的价值函数。两者都在降低策略梯度估计的方差,只是基线的来源不同。

GRPO 的策略目标

token 级概率比率

对于第 $i$ 个回答的第 $t$ 个 token,定义新旧策略的概率比率:

$$\rho_{i,t}(\theta) = \frac{ \pi_\theta(o_{i,t}\mid q,o_{i,< t}) }{ \pi_{\theta_{\mathrm{old}}}(o_{i,t}\mid q,o_{i,< t}) }$$

这里的分子和分母都只取“实际采样出来的那个 token”的概率,而不是整个词表概率分布。完整回答的概率比率可以写成所有 token 概率比率的乘积,但直接使用这个乘积容易产生非常大的数值波动,因此策略优化通常在 token 级别计算目标。

裁剪后的组相对目标

把组相对优势代入 PPO 的裁剪形式,可以得到 GRPO 的主要策略目标:

$$L^{\mathrm{GRPO}}_{\mathrm{policy}}(\theta) = \mathbb{E} \left[ \frac{1}{G} \sum_{i=1}^{G} \frac{1}{|o_i|} \sum_{t=1}^{|o_i|} \min\left( \rho_{i,t}(\theta)\hat A_i, \operatorname{clip}\left(\rho_{i,t}(\theta),1-\epsilon,1+\epsilon\right)\hat A_i \right) \right]$$

其中 $|o_i|$ 表示回答 $o_i$ 的有效 token 数。对长度取平均可以避免长回答仅因为 token 更多就获得更大的总更新权重;一些实现会采用其他长度归一化方式,因此阅读代码时需要确认具体约定。

这个目标的逻辑可以分成四步:

  1. 对同一个提示词采样一组回答;
  2. 通过奖励函数评估每个回答;
  3. 用组均值和组标准差把奖励转成相对优势;
  4. 对每个回答的 token 使用相同的组相对优势,再通过 PPO 风格的比率裁剪更新策略。

所以 GRPO 并没有抛弃 PPO 的稳定更新机制。它主要改动的是优势估计部分。

参考策略与 KL 约束

只依赖奖励进行策略优化,可能导致模型为了提高奖励而偏离原本的语言能力,甚至利用奖励函数漏洞。GRPO 通常还会引入一个参考策略 $\pi_{\mathrm{ref}}$,并用 KL 散度约束当前策略不要偏离得过远。

严格来说,在状态 $s$ 下,当前策略与参考策略之间的 KL 散度需要对整个词表 $\mathcal{V}$ 求和:

$$D_{\mathrm{KL}} \left( \pi_\theta(\cdot\mid s)\;\middle\|\;\pi_{\mathrm{ref}}(\cdot\mid s) \right) = \sum_{v\in\mathcal{V}} \pi_\theta(v\mid s) \log \frac{\pi_\theta(v\mid s)} {\pi_{\mathrm{ref}}(v\mid s)}$$

在语言模型训练中,为了减少计算量,常在已经采样出的 token 上使用一个近似惩罚项:

$$\widehat{k}_{i,t} = \log \frac{\pi_\theta(o_{i,t}\mid s_{i,t})} {\pi_{\mathrm{ref}}(o_{i,t}\mid s_{i,t})}$$

它是当前策略相对于参考策略的单个采样 token 的对数概率差,经过样本平均后作为 KL 约束的近似。实际实现也可能直接使用完整词表分布,或采用其他数值更稳定的 KL 估计式,因此阅读代码时必须确认具体约定。抽象地写,GRPO 的目标通常是:

$$L^{\mathrm{GRPO}}(\theta) = L^{\mathrm{GRPO}}_{\mathrm{policy}}(\theta) - \beta L_{\mathrm{KL}}(\theta)$$

其中 $\beta\geq 0$ 控制偏离参考策略的惩罚强度。$\beta$ 较大时,模型更接近参考策略,训练通常更保守;$\beta$ 较小时,奖励对策略的推动更强,但奖励投机和语言能力退化的风险也更高。

这里要区分两个策略:

  • $\pi_{\theta_{\mathrm{old}}}$ 用于计算重要性采样比率,通常在收集这一批样本时被冻结;
  • $\pi_{\mathrm{ref}}$ 用于 KL 约束,通常是训练开始时的参考模型或某个固定检查点。

它们可以在某些实现中由同一个初始模型复制而来,但在概念上承担不同职责。

一次 GRPO 更新如何进行

将前面的部分合在一起,一次典型的 GRPO 迭代可以写成如下流程:

flowchart TD q["采样提示词 q"] --> old["冻结旧策略 π_old"] old --> group["生成 G 个回答 o_1 ... o_G"] group --> scores["计算组内奖励 r_1 ... r_G"] scores --> stats["计算组均值 μ 与标准差 σ"] stats --> adv["得到组相对优势 A_i"] group --> logold["记录旧策略 token 对数概率"] group --> current["当前策略 π_θ 重新计算 token 概率"] logold --> ratio["计算 token 比率 ρ_i,t"] current --> ratio adv --> clipped["PPO 风格裁剪目标"] ratio --> clipped clipped --> kl["加入与参考策略的 KL 约束"] kl --> update["反向传播并更新策略参数"]

更具体地说,训练循环可以分为以下阶段。

1. 收集一组回答

从提示词数据集采样一个或多个问题,对每个问题使用当前旧策略生成 $G$ 个候选回答。生成阶段需要保存回答 token、旧策略对这些 token 的对数概率,以及计算奖励所需的信息。

2. 计算奖励并归一化

对每个候选回答调用奖励函数,得到 $r_1,\ldots,r_G$。然后只在同一个提示词的组内计算均值和标准差,得到 $\hat A_1,\ldots,\hat A_G$。

如果一组回答的奖励完全相同,则 $\sigma_q=0$。此时所有回答没有可区分的组内相对信息,常见处理是加入 $\varepsilon$,或者跳过这组样本。加入 $\varepsilon$ 可以避免数值错误,但不会凭空创造有用的排序信号。

3. 重新计算当前策略概率

使用当前参数 $\theta$ 对已经生成的回答进行 teacher forcing,计算每个有效 token 的对数概率。将其与收集数据时保存的旧策略对数概率相减,再取指数即可得到概率比率:

$$\rho_{i,t}(\theta) = \exp\left( \log\pi_\theta(o_{i,t}\mid s_{i,t}) - \log\pi_{\theta_{\mathrm{old}}}(o_{i,t}\mid s_{i,t}) \right)$$

实际代码通常直接在对数空间中进行部分计算,以降低下溢和上溢风险。

4. 计算裁剪目标和 KL 惩罚

把 $\rho_{i,t}$ 与 $\hat A_i$ 代入裁剪目标,并根据回答 mask 忽略 padding。与此同时,计算当前策略和参考策略之间的 KL 约束。

5. 反向传播和参数更新

将策略目标和 KL 项组合成损失后,进行反向传播。每一次更新都应当受到新旧策略比率裁剪和参考策略约束的共同限制。

一个极简的数值例子

假设对同一个问题采样 $G=4$ 个回答,奖励分别为:

$$(r_1,r_2,r_3,r_4)=(1.0,\;0.5,\;0.0,\;0.5)$$

组均值为:

$$\mu_q=\frac{1.0+0.5+0.0+0.5}{4}=0.5$$

因此,回答 1 高于组均值,回答 3 低于组均值,而回答 2 和回答 4 正好处于组均值附近。若暂时忽略标准差归一化,可以先得到未标准化的相对信号:

$$(r_i-\mu_q)=(0.5,\;0,\;-0.5,\;0)$$

这意味着:

  • 回答 1 中出现的 token 倾向于被提高概率;
  • 回答 3 中出现的 token 倾向于被降低概率;
  • 回答 2 和回答 4 不提供明显的方向性更新。

加入标准差归一化后,只是对这组信号做尺度调整,并不改变正负关系。GRPO 的“相对”二字就在这里:奖励 1.0 是否足够好并不是唯一问题,更关键的是它是否比同一个问题下的其他候选回答更好。

PPO 与 GRPO 的区别

对比维度PPOGRPO
优势函数来源价值网络、回报和 GAE同一提示词下的组内奖励统计量
是否需要显式 critic通常需要通常不需要
采样方式可以使用轨迹批次每个提示词生成一组回答
更新约束概率比率裁剪,可配合 KL概率比率裁剪,通常也配合 KL
主要额外开销价值模型的参数和训练同一提示词的多次生成
适合的奖励形态通用的逐步或轨迹奖励能够比较同题多个答案的结果型奖励

GRPO 的优势不是无条件成立的。它把显式 critic 的成本换成了组采样成本:同一个提示词生成的回答越多,组内排序统计可能越稳定,但生成阶段消耗的计算量也越大。

从优化结构看,可以把二者的差异浓缩成一句话:

  • PPO 通过学习 $V_\phi(s)$ 估计“这个状态通常有多好”;
  • GRPO 通过比较同一个问题下的多个回答估计“这个回答相对同组其他回答有多好”。

GRPO 与 SFT、DPO 的位置关系

SFT:学习示范答案

SFT 直接最大化示范序列的似然:

$$L_{\mathrm{SFT}}(\theta) = - \mathbb{E}_{(q,o^\star)} \left[ \log\pi_\theta(o^\star\mid q) \right]$$

它需要示范答案 $o^\star$,训练信号是 token 级的监督标签。SFT 擅长把模型推向已有示范分布,但无法仅凭“答案是否通过验证”自动发现更好的生成路径。

DPO:使用偏好对直接优化

DPO(Direct Preference Optimization)通常使用同一个提示词下的偏好对,例如一个更好的回答 $o^+$ 和一个较差的回答 $o^-$,直接构造偏好分类目标。它不进行在线多次采样,也不显式执行 PPO 式的策略梯度更新。

GRPO:在线生成并利用组内相对奖励

GRPO 在训练过程中在线生成一组回答,调用奖励函数计算分数,再用组内相对关系更新策略。因此它尤其适合奖励可以自动验证、但很难提前写出完整示范答案的任务。

三者并不是互斥关系。常见训练流程可能先用 SFT 获得基础模型,再使用 DPO 或 GRPO 做偏好对齐;具体选择取决于是否有示范数据、偏好数据或可验证奖励。

奖励设计决定了 GRPO 学到什么

GRPO 优化的是奖励函数,而不是“正确性”这个抽象概念。如果奖励函数与真正目标不一致,组内比较越有效,模型越可能稳定地朝错误方向优化。

可验证奖励

在数学题或代码题中,可以使用答案匹配、符号验证器或测试用例得到相对客观的奖励。这类奖励的优点是评价标准明确,缺点是验证器只覆盖它能检查的部分。一个答案可能通过表面测试,却没有真正解决问题。

多项奖励的尺度

如果总奖励由多个部分组成:

$$R(q,o) = \sum_{k=1}^{K}w_k R_k(q,o)$$

那么各个奖励项的尺度和权重会直接改变组内排序。即使每个 $R_k$ 单独看都合理,组合后也可能出现格式奖励压过正确性奖励、长度惩罚压过推理质量等问题。因此需要分别检查各奖励项的分布、相关性和边界。

奖励投机

模型可能学习利用奖励函数的漏洞。例如,奖励模型偏好冗长表达,模型就可能重复论证;格式检查器只检查关键词,模型就可能生成包含关键词但内容错误的答案。这种现象称为奖励投机(reward hacking)。KL 约束只能限制策略偏移,不能替代对奖励函数本身的审查。

GRPO 的局限

组内相对信号不包含绝对质量

如果一组回答全部错误,其中一个只是“错得相对少一些”,它仍然可能获得正的组相对优势。GRPO 的正优势表示它在组内相对较好,不等于它已经达到任务要求。

组大小与计算成本

较小的组可能提供不稳定的均值和标准差,较大的组则需要更多生成计算。组大小 $G$ 是统计稳定性与训练吞吐之间的工程折中,而不是越大越好。

奖励方差为零

当一组回答奖励完全相同,组内无法提供排序信息。加入数值稳定项只能防止除零,不能恢复缺失的学习信号。更根本的处理方式是改进采样多样性、奖励函数或组构造方式。

长度归一化会影响学习偏好

按回答长度平均 token 目标,可以减少长回答天然拥有更多项的问题,但也会改变长短答案在优化中的权重。不同长度归一化策略可能使模型偏向更短或更长的回答,必须结合任务目标评估。

参考策略并不能保证事实正确

KL 项约束的是当前策略与参考策略之间的分布距离。它可以帮助保留原模型的语言能力,却不能保证奖励函数没有漏洞,也不能保证模型输出的事实内容正确。

总结

PPO 和 GRPO 都在解决同一个核心问题:如何根据奖励调整语言模型的生成分布,同时避免一次更新把策略推得过远。

PPO 的主要结构是:

  1. 使用旧策略采样;
  2. 通过价值网络估计优势;
  3. 用新旧策略概率比率构造目标;
  4. 用裁剪和正则限制更新幅度。

GRPO 保留了第 1、3、4 步,但把第 2 步改成组内比较:

  1. 对同一个提示词生成一组回答;
  2. 计算每个回答的奖励;
  3. 用组均值和组标准差构造相对优势;
  4. 将回答级优势广播到有效 token;
  5. 使用 PPO 风格的裁剪目标,并通过参考策略的 KL 项控制偏移。

因此,GRPO 可以理解为一种以组内相对奖励替代显式价值模型的策略优化方法。它降低了 critic 带来的参数和训练开销,但把成本转移到了同一提示词的多次采样上;它能够利用可验证奖励提升推理能力,但最终效果仍然取决于奖励函数是否真正对应任务目标。

参考