RLVR (Reinforcement Learning with Verifiable Rewards) —— 可验证奖励强化学习
Important
引言:后训练时代的范式转移
如果说2024年之前大模型的竞争焦点在于预训练(Pre-training),那么2025年之后,主战场已经彻底转向了后训练(Post-training)阶段。通过利用数学、代码等领域可验证的结果作为反馈信号,大模型正在实现推理能力的显著跃升。这种范式,就是本文的主题——RLVR(Reinforcement Learning with Verifiable Rewards,可验证奖励强化学习) 。
RLVR的核心突破在于:不再依赖不可靠或昂贵的人类反馈(即RLHF中的奖励模型),而是利用客观、可验证的规则来给予模型奖励。这一转变使得大模型可以在数学、编程等可自动验证答案的环境中通过强化学习训练,自发地形成类似推理的策略:它们学会了将复杂问题拆解为中间步骤,并掌握了多种来回推敲以解决问题的策略。
从DeepSeek-R1登顶Nature封面,到OpenAI o1、Kimi k1.5等顶尖模型的大规模应用,RLVR已经成为后训练阶段的事实标准。本文将从数学原理、核心算法、工程实践到前沿进展,为你系统性地拆解这一技术。
一、RLVR的核心思想
1.1 从RLHF到RLVR
传统的基于人类反馈的强化学习(RLHF) 通过训练一个奖励模型(RM)来模拟人类偏好,然后使用PPO等算法优化策略。然而,RLHF在解决复杂的数学、代码和逻辑推理问题时,严重依赖大量的人类标注数据,限制了模型的扩展性。
RLVR则走了一条截然不同的路。它用自动化验证器(Verifier) 替代了人类标注或神经网络奖励模型。验证器根据预定义的规则自动检查模型输出的正确性,给出可验证的奖励信号。
RLVR vs RLHF:RLVR优化客观正确性(答案对或错),RLHF优化主观偏好(哪个回答更好)。对于数学推理、代码生成等有明确正确答案的任务,RLVR是天然的选择。
1.2 验证器的类型
在RLVR中,验证器(Verifier) 是整套系统的“裁判”。常见的验证器包括:
- 数学与逻辑验证:检查最终答案是否与标准答案精确匹配
- 代码单元测试:编译并运行代码,验证功能正确性
- JSON Schema验证:确保输出符合指定的结构化格式
- 引用与来源验证:检查引用是否可解析且支持论点
验证器输出的奖励通常是二元的(正确为1,错误为0)。虽然简单,但这种“答对加分、答错扣分”的机制已被证明极其有效。
二、RLVR的数学形式化
2.1 问题建模
标准RLVR中的推理任务可以形式化为一个有限时域的马尔可夫决策过程(MDP) 。一个MDP由五元组 (S,A,P,R,γ) 定义:
- 状态空间 S :当前推理的上下文,包括问题描述和已生成的推理步骤
- 动作空间 A :生成下一个token或下一个推理步骤
- 状态转移概率 P(s′∣s,a) :在RLVR的推理场景中,状态转移是确定性的——给定当前状态和生成的动作,下一个状态是唯一确定的
- 奖励函数 R(s,a) :由验证器定义的奖励信号
- 折扣因子 γ :通常取1(因为推理任务是有限时域的)
策略 πθ(a∣s) 是一个语言模型,根据当前状态(prompt + 已生成内容)生成下一个动作(token或推理步骤)。
2.2 奖励函数的设计
RLVR与传统RLHF最核心的区别在于奖励函数的设计。
- 在传统RLHF中,奖励函数是通过人类偏好数据训练出来的,是学习的、有噪声的:RRLHF(s,a)=E[rhuman∣s,a]。
- 而在RLVR中,奖励函数是确定的、可验证的:RRLVR(s,a)=V(response),其中 V 是验证器函数。
对于一个数学问题 x,模型生成完整的推理轨迹 y=(y1,y2,...,yT),验证器在最终输出上给出奖励:
R(y)={10if y 正确if y 错误
这种二元设计消除了人类标注的主观偏差,但也带来了新的挑战——奖励信号稀疏(奖励只在轨迹结束时给出,中间步骤没有直接的监督信号)。模型可能生成长达数千token的推理链,却只在最后得到一个二元的成功/失败信号。
为了解决这个问题,研究者们提出了软奖励(Soft Reward) 的方案。例如Soft-RLVR框架将每个prompt分解为原子要求的检查清单,由LLM验证器逐项评分,产生更密集的部分得分(partial credit) 信号。
2.3 优化目标
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惩罚系数。
2.4 策略梯度
为了优化 J(θ),使用策略梯度方法。标准的策略梯度定理给出:
∇θJ(θ)=Ey∼πθ[R(x,y)⋅∇θlogπθ(y∣x)]
- 直观理解:如果一个回答获得了正奖励,我们就增加生成这个回答的概率;如果获得零奖励,就降低其概率。
- 这个简单的形式在实际中会遇到高方差的问题。因此,实际实现中通常会引入基线(baseline) 来降低方差。
三、主流RLVR算法
3.1 传统方案:PPO
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) 来估计优势函数,这增加了训练的复杂度和内存开销。
3.2 新一代方案:GRPO
GRPO(Group Relative Policy Optimization) 的核心思想是去掉价值网络,用组内相对比较来代替绝对价值估计。
具体流程如下:
- 采样:对于同一个问题 x,模型生成 G 个不同的回答 {y1,y2,...,yG}
- 验证:验证器检查每个回答的正确性,得到奖励 {r1,r2,...,rG},其中 ri∈{0,1}
- 组内标准化:计算组内奖励的均值和标准差,将奖励标准化为优势值
- 策略更新:用标准化后的优势值进行策略梯度更新
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级提升到序列级,从而实现奖励单位与优化单位的对齐。
3.3 监督学习方案:PACS
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个百分点。
3.4 极简方案:ROVER
ROVER(Random Policy Valuation for Diverse Reasoning) 提出的观点是标准RLVR可以形式化为具有确定性状态转移和二元终止奖励的MDP,其结构比通用强化学习问题简单得多。基于这一洞察,ROVER证明最优动作可以从固定均匀随机策略的Q函数中恢复,从而完全绕过了广义策略迭代循环。
ROVER的算法极其简单:从基于均匀策略Q值的softmax中采样动作。尽管极度简化,ROVER在多个基准测试上超越了复杂的现有方法,在pass@1上提升了8.2%,在pass@256上提升了16.8%。
四、RLVR的算法流程
4.1 标准RLVR训练循环
RLVR的训练是一个迭代的四步循环:
- 采样(Sampling) —— 对每个prompt,从策略模型 ( \pi_\theta ) 中采样多个候选回答(通常使用Chain-of-Thought prompting引导模型生成推理过程)。
- 验证(Verification) —— 用验证器 ( \mathcal{V} ) 检查每个回答的正确性,输出二进制奖励。
- 奖励(Rewarding) —— 正确的回答获得 ( r=1 ),错误的获得 ( r=0 )。
- 策略更新(Policy Update) —— 使用GRPO/PPO等算法更新策略参数, 奖励成功的推理路径。
4.2 Python伪代码
以下是一个基于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()4.3 验证器设计考量
验证器是RLVR的“奖励函数”,其质量直接决定训练效果。验证器设计面临几个核心挑战:
- 规则验证器的脆弱性:基于规则的验证器虽然精确,但往往过于“死板”。例如,一个规则检查器可能将 ( \frac{12}{36} ) 标记为错误,因为它只识别标准答案 ( \frac{1}{3} )。这种假阴性(FN) 问题在RLVR中普遍存在。
- LLM验证器的不可靠性:用LLM作为验证器虽然更灵活,但容易被表面线索“欺骗”。研究表明,当回答以“Let’s solve this problem step by step”开头时,GPT-4o等验证器的假阳性率高达35%-66.8%。
- 应对策略:研究者提出了多种纠偏方法,包括后向校正(去偏观察到的二进制奖励以恢复无偏策略梯度估计)和前向校正(重加权得分函数项使期望更新方向与干净梯度对齐)。这些校正方法在GRPO-based RLVR pipeline中均可作为轻量级钩子实现。
五、RLVR vs RLHF
5.1 核心差异对比
| 维度 | RLHF | RLVR |
|---|---|---|
| 奖励信号来源 | 人类标注的主观评分 | 自动化工具的客观验证结果 |
| 奖励信号类型 | 连续值(如1-5分) | 二元信号(通过/失败) |
| 数据需求 | 百万级标注样本 | 数千条验证用例即可启动 |
| 训练成本 | 标注成本高昂 | 验证自动化,成本极低 |
| 擅长领域 | 创意写作、对话生成等开放域任务 | 数学推理、代码生成等封闭域任务 |
| 核心风险 | 奖励黑客、主观偏差 | 验证器脆弱性、奖励稀疏 |
| 是否需要奖励模型 | 需要(训练成本高) | 不需要 |
| 可扩展性 | 受限于人力标注 | 高度可扩展 |
| 可审计性 | 低(奖励模型是黑箱) | 高(每个奖励可追溯) |
5.2 奖励信号的本质区别
RLHF的奖励信号本质上是对人类偏好的建模:RRLHF=RewardModel(response),这个奖励模型本身是个神经网络,会犯错,会被“黑客攻击”。
RLVR的奖励信号本质上是对客观真理的验证:RRLVR=Verifier(response),验证器可以是确定性的(如编译器),其输出是可复现、可解释的。
5.3 能力边界的差异
RLHF在创意写作等开放域任务中表现优异,因为这类任务没有“标准答案”,人类偏好是唯一的评价标准。
RLVR在数学、编程等封闭域任务中能实现接近100%的准确率,因为这些任务有明确的正确/错误判断标准。
但RLVR的局限也很明显:它依赖于验证工具的覆盖范围。对于没有明确验证标准的任务(如“写一篇有说服力的文章”),RLVR目前还无法直接应用。
5.4 从“对齐”到“推理”的范式转移
RLHF和RLVR代表了两种不同的优化方案:
- RLHF追求的是主观质量的优化——让模型输出更“好”(更有帮助、更安全、更符合人类偏好),优化目标是让模型更像人类(对齐人类偏好)
- RLVR追求的是客观正确性的优化——让模型输出更“对”,优化目标是让模型更正确(最大化任务成功率) 2025年之前,大模型训练遵循“预训练+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仍然不可替代。未来的大模型后训练,很可能是两者的深度融合与协同。
Some information may be outdated