type
status
date
slug
summary
tags
category
icon
password
一、Proximal Policy Optimization (PPO) Loss
PPO 的核心思想是在更新策略时,限制新旧策略之间的差异,从而保证训练的稳定性。这通过一个裁剪的(Clipped)代理目标函数来实现。PPO 的优化目标通常包含三个主要的组成部分:策略收益 (Policy Objective)、价值函数损失 (Value Function Loss) 和 熵奖励 (Entropy Bonus)。
将这些组合成一个单一的、需要被优化器最小化的总损失函数 (Total Loss Function),其标准形式为:
其中:
- 是策略网络和价值网络的参数。
- 表示对一个批次中所有时间步 的期望。
- 我们希望最大化策略收益 和熵 ,因此在最小化的损失函数中对它们取负。
- 我们希望最小化价值函数误差 ,因此在损失函数中直接将其相加。
- 和 是相应的权重系数。
1. 策略损失 (Clipped Surrogate Objective):
这是 PPO 最具创新性的部分,旨在通过限制策略更新的幅度来提高稳定性。
- 概率比 (Probability Ratio): 它衡量了新旧策略在特定状态动作对上的差异。 是进行数据采样时的旧策略。
- 优势函数 (Advantage Function): 它衡量了在状态 下采取动作 相对于平均预期的好坏。通常使用广义优势估计 (Generalized Advantage Estimation, GAE) 计算: 其中 是时序差分误差 (TD Error), 是由价值网络估计的状态价值。
- 裁剪 (Clipping): 它将概率比 强制限制在 的区间内( 通常为 0.2)。当优势 时,目标函数被上限 限制,防止因有利可图的动作而过度更新。当优势 时,目标函数被下限 限制,防止因不明智的动作而过度惩罚。
2. 价值函数损失 (Value Function Loss):
价值网络 (Critic) 的目标是准确估计状态的价值 。它通过最小化与目标价值之间的均方误差来训练。
- : 价值网络对状态 的价值估计。
- : 目标价值,在 GAE 框架下,它通常是优势函数估计值与当前价值估计之和,即 。
3. 熵奖励 (Entropy Bonus):
为了鼓励探索、防止策略过早地收敛到次优解,PPO 在目标函数中加入了一个熵项。熵衡量了策略的随机性。
最大化熵等同于在总损失中减去它,从而鼓励策略保持探索性。
二、Generative Reward Policy Optimization (GRPO) Loss
GRPO 专为简化大语言模型(LLM)的 RLHF (Reinforcement Learning from Human Feedback) 过程而设计。其核心创新在于移除了价值网络 (Critic),直接通过对一批生成结果的奖励进行归一化来估计优势,显著降低了训练的内存和计算开销。
GRPO 的损失函数形式上与 PPO 的策略损失非常相似,但其应用方式和优势计算完全不同。
1. 核心组件
- 概率比: 在 LLM 的上下文中, 是提示 (prompt), 是生成的响应 (response)。
- 基于组的优势估计: 这是 GRPO 的关键。对于同一个提示 ,首先用旧策略 生成一组 个响应 。然后,用一个奖励模型 对每个响应打分,得到奖励 。优势通过对这组奖励进行标准化得到:
其中 。GRPO 使用组内奖励的均值作为基线 (baseline),而不是像 PPO 那样依赖一个独立训练的价值网络。
2. 核心问题:粒度错配 (Granularity Mismatch)
GRPO 的不稳定性根源在于其内在的设计矛盾:
- 奖励信号是序列级的:优势 是根据整个序列 的质量计算出来的。
- 策略更新是Token级的:上述损失函数被(隐式地)应用到序列中的每一个Token (token) 上。
即,使用序列级的优势 去加权每个Token的概率比 。
这种错配导致一个序列的整体好坏(高或低的 )被不加区分地归因于其中的每一个Token。这引入了极高的训练方差,尤其是在长序列中,噪声会不断累积,最终导致模型训练崩溃。
三、Group Sequence Policy Optimization (GSPO) Loss
GSPO 的提出正是为了解决 GRPO 的严重不稳定性问题。其核心创新是将优化的基本单位从“Token”提升到了“序列”,确保了奖励、裁剪和优化都在同一层级上进行,完美解决了 GRPO 的粒度错配问题。
GSPO 的优化目标函数如下:
1. 核心组件
- 序列重要性比例 (Sequence Importance Ratio): 这是 GSPO 最关键的革新,它在序列级别上进行重要性采样,并进行了长度归一化以降低方差:
- 是当前策略对整个序列 的生成概率。
- 次方根的长度归一化,统一了不同长度序列的重要性比例的尺度。
- 这个比例直接衡量了整个采样序列与当前策略的整体偏差,与序列级的奖励天然对齐。
- 优势函数: GSPO 完全沿用了 GRPO 中基于组的优势估计方法,无需价值模型。
2. 核心优势:粒度对齐 (Granularity Alignment)
GSPO 的成功源于它在根本上对齐了三个关键组件的运作粒度:
- 奖励信号 (): 序列级 (Sequence-level)。
- 重要性权重 (): 序列级 (Sequence-level)。
- 优化单位 (Clipping & Min): 直接作用于 ,也是序列级 (Sequence-level)。
通过将优化的所有核心环节都统一在“序列”这个维度上,GSPO 修正了 GRPO 的基本缺陷,使得信用分配更加准确,梯度方差大大降低,从而实现了对大型生成模型的稳定、高效的策略优化。
四、REINFORCE Leave-One-Out (RLOO) Loss
RLOO 是一种用于 RLHF 的在线策略优化算法,核心思想是用“留一法”的组内基线来估计优势,并将整段完成(completion)视为一个单一动作,从而避免价值网络并显著降低显存占用与实现复杂度。与 PPO 相比,RLOO 不训练 Critic,只需策略模型、参考策略与奖励模型即可。
其中:
- 概率比(序列级) 通常取参考 KL 正则后的对数比的指数化形式,亦可等价写作序列对数似然差的加权;最常见实现采用每个 token 的 log-prob 与参考模型的差异计算 KL 惩罚,再与奖励相加形成总回报信号。实际更新时使用 REINFORCE 梯度 加权。
- 留一法(Leave-One-Out)优势 :对同一提示 生成 个响应,令奖励为 ,则
,
等价于以“其余 样本的均值”为基线的方差降低器。相比直接用全体均值作基线,LOO 具有更强的无偏性与方差抑制能力。
- 序列视作单一动作:RLOO 将整段完成 作为一次动作更新,避免了“序列级奖励、token 级更新”的粒度错配。
1. 训练目标(含 KL 正则)的常用实现
实际 RLHF 中,常将奖励模型分数与 KL 惩罚合成为“正则化回报”:
,
并据此计算 。优化目标可写为:
,
对应的损失为其相反数(最小化)。
2. 与 PPO / GRPO / GSPO 的对比
- 与 PPO:RLOO 去除了价值网络,避免 Critic 训练与 GAE 估计,显存与实现难度显著下降;同时以组内基线降方差,实践中速度更快、稳定性具竞争力。[1]
- 与 GRPO:两者都使用组内归一化思想,但 GRPO 通常在 token 级进行重要性加权,存在“序列奖励 vs token 更新”的粒度错配;RLOO 将序列视作单一动作,在实现上天然规避该问题。[2]
- 与 GSPO:GSPO 显式在“序列级”引入重要性比与裁剪,系统性解决粒度对齐;RLOO 不做序列级裁剪,而是用 REINFORCE+LOO 基线的简洁范式,工程更轻量,二者可视为不同的稳定化路径。[3]
3. 实践要点(实现建议)
- 批组大小 :常见取值 4 到 8。 越大,LOO 基线越稳,但开销更高。
- KL 系数 :控制对参考策略的约束强度,过小易漂移、过大易欠学习,建议与学习率联调。
- 缺失 EOS 的惩罚:对未正确终止的序列施加额外负项,避免无穷延长。[4]
- 序列归一化:可对总 log-prob 或 KL 作长度归一,缓解长序列方差问题。
- 监控指标:建议同时跟踪 win-rate、KL、采样长度分布与奖励均值方差,以便早停与稳定性诊断。[5]
4. 小结
RLOO 以“组采样 + 留一法基线 + 序列级 REINFORCE”的组合,在保持在线 RLHF 框架的同时显著降低了资源需求与实现门槛;在多项指标上对 PPO 具备竞争力,并优于部分离线方法。适合作为轻量级的在线对齐基线或大模型资源受限场景的首选方案。[5][1][4]
五、REINFORCE++ Loss
REINFORCE++ 是对经典 REINFORCE 的工程化增强变体,面向 RLHF 的在线对齐训练。其思路是保留“无 Critic”的简洁性,同时吸收 PPO 的一系列稳定化技巧(如 KL 正则、长度归一、批内基线、熵奖励等),在稳定性上优于 GRPO、在效率上接近或快于 PPO。[4][5][6]
1. 目标函数与基线
对同一提示 ,策略 生成 个序列 ,奖励模型与 KL 正则合成正则化回报 。REINFORCE++ 采用“批内(或组内)归一化”基线来降方差:
,其中 为该批 的均值与标准差,或使用留一法 。
最终优化目标为序列级 REINFORCE:
。
2. 稳定化技巧(常见配置)
- KL 正则:对参考策略 加惩罚,抑制策略漂移。 可自适应或手动调度。
- 长度归一:对 或 KL 按 归一,缓解长序列方差。
- 批内标准化或 LOO 基线:显著降低方差并提高鲁棒性。[4]
- 熵奖励:小权重鼓励探索,防止过早收敛。
- 温和裁剪:可选地对 或梯度范数做裁剪,避免尖峰更新。
3. 与 PPO / GRPO / GSPO / RLOO 的关系
- 对比 PPO:去除 Critic 与 GAE,显存与实现复杂度更低;通过 KL 正则与批内基线获得接近 PPO 的稳定性与效果。[5]
- 对比 GRPO:两者均为无 Critic。GRPO 常在 token 级加权并易出现粒度错配;REINFORCE++ 采用序列级 REINFORCE,配合批内标准化与 KL 正则提升稳定性。
- 对比 GSPO:GSPO 在序列级进行重要性比与裁剪;REINFORCE++ 不引入序列级 clip,而以简洁的 REINFORCE 框架+正则与基线取得稳定性。
- 对比 RLOO:二者都可用组采样与 LOO 基线;RLOO更“极简”的 REINFORCE 版本,而 REINFORCE++ 进一步系统性引入 PPO 的工程技巧(标准化、熵、长度归一、可选裁剪等)。[4]
4. 实践建议
- 组大小 :4–8 是常用折中;较大 提升基线稳定性但增加采样与前向成本。
- 与学习率:联合调参;跟踪 KL、奖励均值/方差、win-rate,配合早停。
- 归一与惩罚:长度归一与缺失 EOS 惩罚常与 RLOO、PPO 一样有效;必要时做梯度裁剪。
5. 一句话小结
REINFORCE++ 用“序列级 REINFORCE + 批内基线 + KL 正则 + 若干稳定化技巧”,在无 Critic 的前提下实现“比 GRPO 更稳、比 PPO 更省”的对齐训练范式。[5][6]
- 作者:SimonSun
- 链接:https://simonsun.xyz//article/llm-15
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。




