
Comparison of RL Algorithm —— PPO、GRPO、DPO、DAPO、GSPO技术详解与对比
从12个核心维度系统对比PPO、GRPO、DPO、DAPO与GSPO五种大模型强化学习对齐算法,剖析其技术演进脉络、核心机制与适用场景,揭示从"通用重器"到"专属利刃"的进化逻辑。
阅读文章ZHY's Blog
A UNIVERSE OF IDEAS · BY ZHANG HAOYI
让好奇心 点亮知识宇宙
在代码、模型与思想之间自由漫游。这里持续记录人工智能、机器学习、软件工程与成长实践,让每次阅读都成为一次新的发现。
ARTICLE NOTE
Important
如果说2024年之前大模型的竞争焦点在于预训练(Pre-training),那么2025年之后,主战场已经彻底转向了后训练(Post-training)阶段。通过利用数学、代码等领域可验证的结果作为反馈信号,大模型正在实现推理能力的显著跃升。这种范式,就是本文的主题——RLVR(Reinforcement Learning with Verifiable Rewards,可验证奖励强化学习) 。
RLVR的核心突破在于:不再依赖不可靠或昂贵的人类反馈(即RLHF中的奖励模型),而是利用客观、可验证的规则来给予模型奖励。这一转变使得大模型可以在数学、编程等可自动验证答案的环境中通过强化学习训练,自发地形成类似推理的策略:它们学会了将复杂问题拆解为中间步骤,并掌握了多种来回推敲以解决问题的策略。
从DeepSeek-R1登顶Nature封面,到OpenAI o1、Kimi k1.5等顶尖模型的大规模应用,RLVR已经成为后训练阶段的事实标准。本文将从数学原理、核心算法、工程实践到前沿进展,为你系统性地拆解这一技术。
传统的基于人类反馈的强化学习(RLHF) 通过训练一个奖励模型(RM)来模拟人类偏好,然后使用PPO等算法优化策略。然而,RLHF在解决复杂的数学、代码和逻辑推理问题时,严重依赖大量的人类标注数据,限制了模型的扩展性。
RLVR则走了一条截然不同的路。它用自动化验证器(Verifier) 替代了人类标注或神经网络奖励模型。验证器根据预定义的规则自动检查模型输出的正确性,给出可验证的奖励信号。
RLVR vs RLHF:RLVR优化客观正确性(答案对或错),RLHF优化主观偏好(哪个回答更好)。对于数学推理、代码生成等有明确正确答案的任务,RLVR是天然的选择。
在RLVR中,验证器(Verifier) 是整套系统的“裁判”。常见的验证器包括:
验证器输出的奖励通常是二元的(正确为1,错误为0)。虽然简单,但这种“答对加分、答错扣分”的机制已被证明极其有效。
标准RLVR中的推理任务可以形式化为一个有限时域的马尔可夫决策过程(MDP) 。一个MDP由五元组 (S,A,P,R,γ) 定义:
策略 πθ(a∣s) 是一个语言模型,根据当前状态(prompt + 已生成内容)生成下一个动作(token或推理步骤)。
RLVR与传统RLHF最核心的区别在于奖励函数的设计。
对于一个数学问题 x,模型生成完整的推理轨迹 y=(y1,y2,...,yT),验证器在最终输出上给出奖励:
R(y)={10if y 正确if y 错误
这种二元设计消除了人类标注的主观偏差,但也带来了新的挑战——奖励信号稀疏(奖励只在轨迹结束时给出,中间步骤没有直接的监督信号)。模型可能生成长达数千token的推理链,却只在最后得到一个二元的成功/失败信号。
为了解决这个问题,研究者们提出了软奖励(Soft Reward) 的方案。例如Soft-RLVR框架将每个prompt分解为原子要求的检查清单,由LLM验证器逐项评分,产生更密集的部分得分(partial credit) 信号。
RLVR的优化目标是最大化期望累积奖励:
J(θ)=Eτ∼πθ[∑t=0TR(st,at)]
其中 τ=(s0,a0,s1,a1,...,sT) 是一条完整的推理轨迹。
由于奖励只在轨迹结束时才非零(二元奖励的情况),上式可以简化为:
J(θ)=Ey∼πθ(⋅∣x)[R(x,y)]
其中 x 是输入问题,y 是模型生成的完整回答。
为了稳定训练,通常会加入KL散度约束,防止策略偏离参考模型(通常是SFT模型)太远:
J(θ)=Ey∼πθ(⋅∣x)[R(x,y)]−β⋅DKL(πθ∣∣πref)
其中 β 是KL惩罚系数。
为了优化 J(θ),使用策略梯度方法。标准的策略梯度定理给出:
∇θJ(θ)=Ey∼πθ[R(x,y)⋅∇θlogπθ(y∣x)]
RLVR最早采用的主流算法是PPO(Proximal Policy Optimization) 。PPO通过限制每次更新的策略变化幅度来保证训练稳定性。
PPO的核心是裁剪的目标函数:
LCLIP(θ)=Et[min(rt(θ)A^t,clip(rt(θ),1−ϵ,1+ϵ)A^t)]
其中 rt(θ)=πθold(at∣st)πθ(at∣st) 是重要性采样比率,A^t 是优势函数的估计。
但PPO在RLVR场景中有一个问题:它需要一个价值网络(Circle) 来估计优势函数,这增加了训练的复杂度和内存开销。
GRPO(Group Relative Policy Optimization) 的核心思想是去掉价值网络,用组内相对比较来代替绝对价值估计。
具体流程如下:
GRPO的优势函数计算方式:
A^i=σrri−μr
其中 μr=G1∑i=1Gri,σr=G1∑i=1G(ri−μr)2
这样做的好处是:无需价值网络,减少了模型参数和计算开销;天然的对比信号,组内比较提供了相对优劣的信息;更稳定的训练,标准化处理降低了梯度的方差
对GRPO的改进算法:DAPO(Dynamic Sampling Policy Optimization) 的核心改进在于非对称裁剪和动态调整采样等策略,使模型能够更有效地探索样本。GSPO(Group Sequence Policy Optimization) 的优化点是将优化粒度从token级提升到序列级,从而实现奖励单位与优化单位的对齐。
PACS(imPlicit Actor Critic coupling via a Supervised learning framework) 是一个新颖的RLVR框架,它将结果奖励视为可预测的标签,将RLVR问题重新表述为监督学习任务。
具体来说,PACS定义一个评分函数 fθ(y)(由策略模型参数化),然后用交叉熵损失进行优化:
LPACS=−Ey∼πθ[r(y)⋅logσ(fθ(y))+(1−r(y))⋅log(1−σ(fθ(y)))]
梯度分析表明,这种监督式表述内在地恢复了经典的策略梯度更新,同时隐式地耦合了Actor和Critic的角色。PACS在AIME 2025上的pass@256达到了59.78%,比PPO和GRPO分别提高了13.32和14.36个百分点。
ROVER(Random Policy Valuation for Diverse Reasoning) 提出的观点是标准RLVR可以形式化为具有确定性状态转移和二元终止奖励的MDP,其结构比通用强化学习问题简单得多。基于这一洞察,ROVER证明最优动作可以从固定均匀随机策略的Q函数中恢复,从而完全绕过了广义策略迭代循环。
ROVER的算法极其简单:从基于均匀策略Q值的softmax中采样动作。尽管极度简化,ROVER在多个基准测试上超越了复杂的现有方法,在pass@1上提升了8.2%,在pass@256上提升了16.8%。
RLVR的训练是一个迭代的四步循环:
以下是一个基于GRPO的简化RLVR训练循环伪代码
1import torch2import torch.nn.functional as F3
4def rlvr_training_step(policy_model, ref_model, prompts, verifier,5 num_samples_per_prompt=16, beta=0.1, lr=1e-6):6 """7 单步RLVR训练(基于GRPO)8 Args:9 policy_model: 当前策略模型 π_θ10 ref_model: 参考模型 π_ref(用于KL约束)11 prompts: 输入的prompts列表12 verifier: 可验证奖励函数,返回0/113 num_samples_per_prompt: 每个prompt采样的回答数 G14 beta: KL惩罚系数15 lr: 学习率16 """17 all_responses = []18 all_rewards = []19 all_log_probs = []20
21 # === 步骤1-2:采样与验证 ===22 for prompt in prompts:23 # 对每个prompt采样G个回答24 responses = []25 rewards = []26 log_probs = []27
28 for _ in range(num_samples_per_prompt):29 # 从策略模型采样30 with torch.no_grad():31 response, log_prob = policy_model.sample(prompt)32
33 # 验证器计算奖励34 reward = verifier.verify(prompt, response) # 返回0或135
36 responses.append(response)37 rewards.append(reward)38 log_probs.append(log_prob)39
40 all_responses.extend(responses)41 all_rewards.extend(rewards)42 all_log_probs.extend(log_probs)43
44 # === 步骤3:组内相对优势估计 ===45 advantages = []46 for i in range(0, len(all_rewards), num_samples_per_prompt):47 group_rewards = all_rewards[i:i+num_samples_per_prompt]48 mu = sum(group_rewards) / len(group_rewards)49 sigma = (sum((r - mu) ** 2 for r in group_rewards) / len(group_rewards)) ** 0.550 sigma = max(sigma, 1e-8) # 防止除零51
52 for r in group_rewards:53 advantages.append((r - mu) / sigma)54
55 # === 步骤4:策略更新 ===56 # 重新计算当前策略下的log probability(用于重要性采样)57 current_log_probs = []58 for prompt, response in zip(prompts * num_samples_per_prompt, all_responses):59 log_prob = policy_model.log_prob(prompt, response)60 current_log_probs.append(log_prob)61
62 # 重要性采样比63 ratios = torch.exp(torch.tensor(current_log_probs) - torch.tensor(all_log_probs))64
65 # KL惩罚项(计算当前策略与参考策略的KL散度)66 ref_log_probs = []67 for prompt, response in zip(prompts * num_samples_per_prompt, all_responses):68 with torch.no_grad():69 ref_log_prob = ref_model.log_prob(prompt, response)70 ref_log_probs.append(ref_log_prob)71
72 kl_penalty = beta * (torch.tensor(current_log_probs) - torch.tensor(ref_log_probs))73
74 # GRPO损失(带裁剪的策略梯度 + KL惩罚)75 advantages_tensor = torch.tensor(advantages)76 clipped_ratios = torch.clamp(ratios, 1 - epsilon, 1 + epsilon)77
78 loss = -torch.mean(79 torch.min(ratios * advantages_tensor, clipped_ratios * advantages_tensor)80 - kl_penalty81 )82
83 # 反向传播与参数更新84 loss.backward()85 optimizer.step()86
87 return loss.item()验证器是RLVR的“奖励函数”,其质量直接决定训练效果。验证器设计面临几个核心挑战:
| 维度 | RLHF | RLVR |
|---|---|---|
| 奖励信号来源 | 人类标注的主观评分 | 自动化工具的客观验证结果 |
| 奖励信号类型 | 连续值(如1-5分) | 二元信号(通过/失败) |
| 数据需求 | 百万级标注样本 | 数千条验证用例即可启动 |
| 训练成本 | 标注成本高昂 | 验证自动化,成本极低 |
| 擅长领域 | 创意写作、对话生成等开放域任务 | 数学推理、代码生成等封闭域任务 |
| 核心风险 | 奖励黑客、主观偏差 | 验证器脆弱性、奖励稀疏 |
| 是否需要奖励模型 | 需要(训练成本高) | 不需要 |
| 可扩展性 | 受限于人力标注 | 高度可扩展 |
| 可审计性 | 低(奖励模型是黑箱) | 高(每个奖励可追溯) |
RLHF的奖励信号本质上是对人类偏好的建模:RRLHF=RewardModel(response),这个奖励模型本身是个神经网络,会犯错,会被“黑客攻击”。
RLVR的奖励信号本质上是对客观真理的验证:RRLVR=Verifier(response),验证器可以是确定性的(如编译器),其输出是可复现、可解释的。
RLHF在创意写作等开放域任务中表现优异,因为这类任务没有“标准答案”,人类偏好是唯一的评价标准。
RLVR在数学、编程等封闭域任务中能实现接近100%的准确率,因为这些任务有明确的正确/错误判断标准。
但RLVR的局限也很明显:它依赖于验证工具的覆盖范围。对于没有明确验证标准的任务(如“写一篇有说服力的文章”),RLVR目前还无法直接应用。
RLHF和RLVR代表了两种不同的优化方案:
| 核心挑战 / 问题 | 解决方案 / 方法 | 关键结果 / 数据 |
|---|---|---|
| 验证器可靠性: 假阳性:LLM 验证器易被表面线索欺骗 假阴性:规则验证器过于脆弱,对格式敏感 | 探索噪声奖励下的 RLVR,通过校正算法抵消验证器误差 | - GPT-4o 作为验证器时,若答案以 “Let’s solve…” 开头,假阳性率达 35%–66.8% - 规则检查器可能将正确分数 12/36 误判(与标准答案 1/3 格式不同) |
| 奖励稀疏与探索困境: 二元奖励仅在学习结束时提供信号,导致模型过早收敛(熵崩塌)或无效探索(熵爆炸) 低概率探索 token(“推理火花”)逐渐消失 | - | 模型生成数千 token 的推理链,仅在最后知道对错,信号极度稀疏 |
| 二元奖励稀疏导致训练效率低 | Soft-RLVR:将 prompt 分解为原子要求的检查清单,由 LLM 验证器逐项评分,提供密集的部分得分信号 | 在 IFEval 基准上提升 +11.1 分 |
| 规则验证器构成根本瓶颈,无法处理复杂或开放答案 | 生成式验证器:使用强大 LLM 作为软性、概率性的奖励模型,自动化生成奖励,无需人工标注 | 7B 策略模型借助 7B 生成式奖励模型,显著超越 72B 的 Qwen2.5-Instruct,性能超出 8.6% |
| 标准 RLVR 依赖人类标注答案或手工奖励规范 | 无标签 RLVR:通过模型 rollout 的投票提议候选答案,并用形式化验证器(如 Lean)决定正奖励 | 在数学推理基准上达到与有监督训练相当的性能,无需人工标签 |
NoteRLVR代表了大模型后训练的一次范式转变——从依赖人类主观偏好的“对齐”,转向基于任务客观正确性的“验证”。它跳过了昂贵的奖励模型训练环节,用确定性的验证信号驱动模型探索复杂的推理路径。
DeepSeek-R1等推理模型已经证明了这条路径的可行性。随着验证器技术的成熟和算法理论的深化,RLVR有望在更广泛的领域发挥作用。
当然,RLVR并非RLHF的替代品,而是互补品。对于有标准答案的任务,RLVR是更优选择;对于开放性的创作任务,RLHF仍然不可替代。未来的大模型后训练,很可能是两者的深度融合与协同。
按顺序完成这组文章,循序渐进地掌握主题
发现错误、内容过时或有改进想法?欢迎告诉我
根据本文分类与标签,为你推荐可能感兴趣的内容

从12个核心维度系统对比PPO、GRPO、DPO、DAPO与GSPO五种大模型强化学习对齐算法,剖析其技术演进脉络、核心机制与适用场景,揭示从"通用重器"到"专属利刃"的进化逻辑。
阅读文章
系统梳理GSPO群组序列策略优化的核心原理,解析其如何通过序列级重要性比率与长度归一化从根本上修复GRPO的token级采样缺陷,解决MoE专家震荡与长序列方差累积问题,并探讨GSPO的局限与后续演进。
阅读文章
系统梳理DAPO解耦裁剪与动态采样策略优化的核心技术原理,解析Clip-Higher、Dynamic Sampling、Token-Level Loss与Overlong Reward Shaping四项创新如何解决GRPO在长CoT场景下的熵崩塌与训练不稳定问题,将GRPO从实验室算法打磨为工业级系统。
阅读文章请使用微信扫描二维码分享
当前文章会保持在原页面