在大语言模型的强化学习训练中,如何设计一个既稳定又高效的目标函数一直是核心挑战。NVIDIA最新发布的Nemotron-Cascade论文提出了一个出人意料的简化方案:完全移除KL散度约束,将GRPO简化为最基础的REINFORCE算法。这个看似"倒退"的设计,却在数学推理任务上取得了显著效果。
本文将深入剖析这个目标函数的设计哲学、数学细节和实践意义。
Nemotron-Cascade采用的GRPO目标函数形式如下:
其中优势函数定义为:
让我们逐个拆解这个公式的每个部分。
展开代码(q, a) ∼ D
展开代码{o_i}^G_{i=1} ∼ π_θ(·|q)
展开代码r_i = Reward(o_i, a)
对于数学推理任务(RLVR),奖励通常是二元的:
这个奖励是序列级(sequence-level)的,整个响应只有一个分数。
这是GRPO的关键创新:
其中:
为什么这样做?
假设对于一道难题,模型生成了8个响应:
标准化后:
这种相对比较使得不同难度的问题产生的梯度尺度保持一致。
注意到优势函数 对所有token位置 t 都相同。这意味着:
展开代码response: "Let's solve this step by step..." ↓ ↓ ↓ ↓ ↓ ↓ reward: +1.74 +1.74 +1.74 +1.74 +1.74 +1.74 (如果答案正确)
虽然奖励是序列级的,但每个token都会被同等地奖励或惩罚。
这个因子对所有生成的token总数进行归一化:
这确保了不同batch size和响应长度下梯度的可比性。
传统RLHF/GRPO 通常包含KL约束:
这个KL项的作用:
Nemotron-Cascade的选择:完全移除KL项
为什么敢这么做?
展开代码for iteration in training: # 1. 用当前策略采样 responses = current_policy.generate(questions) # 2. 立即计算奖励 rewards = evaluate(responses) # 3. 立即更新策略 current_policy.update(responses, rewards) # 4. 丢弃这批数据,下次迭代重新采样
优点:
代价:
对比三种优势估计方法:
方法A:全局baseline
展开代码Â_i = r_i - baseline_all_data 问题:不同难度问题的梯度尺度差异巨大
方法B:价值函数baseline
展开代码Â_i = r_i - V(state) 优点:方差更小 缺点:需要训练额外的价值网络
方法C:组内标准化(Nemotron采用)
展开代码Â_i = (r_i - μ_group) / σ_group 优点:自动适应问题难度,无需额外网络 缺点:需要组内有足够的方差
让我们看一个具体例子,理解梯度如何流动。
场景设置:
| 响应 | 内容 | 长度 | 正确性 | 奖励 r_i |
|---|---|---|---|---|
| o₁ | "23×47=1081" | 50 tokens | ✓ | 1.0 |
| o₂ | "Let me think... 1081" | 80 tokens | ✓ | 1.0 |
| o₃ | "23×47=1071" | 45 tokens | ✗ | 0.0 |
| o₄ | "I'll calculate... 1071" | 60 tokens | ✗ | 0.0 |
计算优势:
展开代码μ = (1.0 + 1.0 + 0.0 + 0.0) / 4 = 0.5 σ = std([1.0, 1.0, 0.0, 0.0]) = 0.577 Â₁ = (1.0 - 0.5) / 0.577 = +0.866 Â₂ = (1.0 - 0.5) / 0.577 = +0.866 Â₃ = (0.0 - 0.5) / 0.577 = -0.866 Â₄ = (0.0 - 0.5) / 0.577 = -0.866
策略梯度(简化形式):
其中235是总token数(50+80+45+60)。
解读:
| 特性 | Nemotron-GRPO | PPO |
|---|---|---|
| 策略更新 | On-policy | Near on-policy |
| KL约束 | ❌ 无 | ✓ Clipping或KL惩罚 |
| 价值网络 | ❌ 不需要 | ✓ 需要 |
| 优势估计 | 组内标准化 | GAE(λ-return) |
| 实现复杂度 | ⭐⭐ | ⭐⭐⭐⭐ |
| 特性 | Nemotron-GRPO | DPO |
|---|---|---|
| 训练数据 | 生成的响应 | 预先标注的偏好对 |
| 在线/离线 | 在线(生成新数据) | 离线(固定数据集) |
| 奖励模型 | 可选 | ❌ 隐式 |
| 适用场景 | 明确奖励(数学) | 偏好建模 |
ReSTEM(Reinforced Self-Training on Error-corrected Multi-step reasoning)的主要区别:
| 特性 | Nemotron-GRPO | ReSTEM |
|---|---|---|
| 训练方式 | 纯RL(策略梯度) | 蒸馏+RL混合 |
| 数据利用 | 丢弃旧数据 | 保留高质量轨迹 |
| 迭代方式 | 单步更新 | 多轮蒸馏 |
这看似违反直觉,但有几个解释:
去掉KL项后,目标函数退化为经典REINFORCE:
这其实是最原始的策略梯度形式!但通过:
让这个简单的算法在现代LLM上依然有效。
组内标准化的巧妙之处:
方差:
展开代码Var[Â] = Var[(r - μ_G) / σ_G] = 1 / σ_G² · Var[r - μ_G] ≈ 1 (标准化后方差为1)
偏差:
展开代码E[Â] = E[(r - μ_G) / σ_G] = 0 (期望为0)
这是一个无偏估计器,且方差被归一化,在不同问题间保持一致。


本文作者:Dong
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!