type
status
date
slug
summary
tags
category
icon
password
一、Proximal Policy Optimization (PPO) Loss
在RLHF的PPO(Proximal Policy Optimization)阶段,模型通常采用Actor-Critic架构,因此其损失函数是一个复合损失函数。它主要由三个部分组成:策略损失(Policy Loss/Actor Loss)、价值函数损失(Value Loss/Critic Loss)以及熵奖励(Entropy Bonus)(有时还会加入预训练梯度的PTX损失)。
通常的优化目标是最小化以下总损失函数:
以下是各组件的详细数学定义和物理含义:
1.1 策略损失 (Actor Loss)
这是PPO的核心,使用了Clipped Surrogate Objective(截断代理目标)来限制策略更新的幅度,保证训练的稳定性。为了便于通过梯度下降进行最小化,我们通常取其负值:
其中:
- (概率比率): 定义为 ,即新策略与旧策略在当前动作上的概率之比。
- (优势函数): 通常使用GAE (Generalized Advantage Estimation) 计算,表示当前动作比平均情况好多少。
- : 动作价值函数,指在这个状态选了这个动作,后续能拿到的总回报。
- : 状态价值函数,指在这个状态下,平均能拿到的总回报。
- PPO中的计算方式 (GAE - Generalized Advantage Estimation): 由于LLM生成的序列通常较长,直接使用蒙特卡洛回报(Monte Carlo Return)方差过大,PPO通常使用 GAE 来平衡偏差(Bias)和方差(Variance)。
- 也可以写成递归形式(工程实现常用):
- 它衡量了在状态 下采取动作 相对于平均预期的好坏。通常使用广义优势估计 (Generalized Advantage Estimation, GAE) 计算: 它是基于时序差分误差(TD Error) 计算的:
- KL 散度惩罚 (KL Penalty): 为了防止模型在训练中遗忘预训练知识或产生乱码(Mode Collapse),我们在每一个时间步(每一个 Token)都会计算一个微小的惩罚值。
- 。
- 奖励模型得分 (RM Score): 这通常是一个稀疏奖励,只在生成结束()时出现。RM 会对整个句子的质量打分,这个分数只加在最后一个 Token 的即时奖励上。
- 其中 是平滑系数。这种计算方式极大地依赖 Critic 网络 的准确性。
- 如果 :。
- 这变成了 TD(0)。
- 特点:低方差,高偏差。优势值的计算几乎完全依赖 Critic 网络 的准确度。如果 Critic 没训练好,优势估计就是错的。
- 如果 :。
- 这变成了 Monte Carlo 方法。
- 特点:高方差,低偏差。优势值累加了后续所有的真实奖励。虽然真实,但因为LLM生成长文本时的随机性,每次采样的结果波动极大,会导致训练不稳定。
- PPO通常取 :
- 这是一个“黄金平衡点”,既利用了 Critic 的平滑预测来减小方差,又利用了后续多步的真实奖励来修正偏差。
什么是优势(Advantage)
优势函数 的本质是回答:“在状态 下,采取动作 相比于平均情况(即基准 )到底好多少?”
由于我们无法直接获得真实的 值,因此必须对其进行估计。
这里 是当前步的即时奖励(主要是KL惩罚,最后一步包含RM得分),它是智能体在状态 采取动作 后立即获得的标量反馈值。
具体包含两部分:
这意味着如果生成的 Token 偏离 SFT 模型(Reference Model)太远, 就会变低(或为负)。
是Critic网络的预测值。
GAE 的核心在于 这个超参数,它控制了我们看多远:
- : 将比率限制在 区间内( 通常取0.2)。这一步消除了过大的参数更新,防止策略崩溃(Policy Collapse)。
- : 取未截断项和截断项的最小值,构成了一个悲观下界,确保只有在提升确实可靠时才进行更新。
1.2 价值损失 (Critic Loss)
Critic模型(价值网络)负责估计状态价值 ,用于辅助计算优势函数 。其损失函数通常是预测值与真实回报(Return)之间的均方误差(MSE):
其中 是实际的累积回报()。在一些实现中,价值损失也会进行类似于策略损失的Clip操作,以进一步稳定训练。
为了让上述的 计算准确,必须有一个网络能精准地评估当前状态(即Prompt + 已生成的部分文本)到底“值多少分”。这就是Critic网络(价值网络)的任务。
- (预测值): 这是Critic模型根据当前上下文输入 输出的一个标量分数。它代表了模型认为“从现在开始继续写下去,最终能拿到的总期望回报(包含Reward和KL惩罚)”。
- (目标值/真实回报): 这是回归训练的Target。在PPO中,这个 通常是由实际采样得到的经验回报计算得来的。 一般有两种计算方式:
- Monte Carlo Return: (即累加后续所有实际发生的奖励)。
- TD() Return (更常用): 为了与GAE保持一致,通常设定 。也就是说,目标值 = 旧的价值预估 + 这一步实际表现出的优势。
- 物理含义: 这是一个标准的均方误差(MSE)损失。 它的作用是强制 Critic 网络不断修正自己的评分标准,使其预测的价值 越来越接近真实的累计回报。
- 如果 Critic 预测不准(例如它以为当前句子写得很好,但最终RM给了低分), 就会很大,梯度下降会调整 Critic 的参数。
- Critic 越准, 的计算就越准(因为 ),Actor 就能收到更精准的“指导信号”,从而让整个强化学习过程收敛。
1.3 熵损失 (Entropy Loss/Bonus)
为了防止模型过早收敛到局部最优(即策略过于确定性),通常会减去策略的熵(即最大化熵):
这一项作为正则化项,鼓励模型在训练初期保持一定的探索性。
熵(Entropy)在RLHF-PPO中充当着“探索机制”和“正则化项”的角色。它的核心目的是防止策略过早收敛到局部最优解,并避免“模式坍塌(Mode Collapse)”。
- 在LLM的语境下,策略 是一个在词表(Vocabulary)上的概率分布。
- 高熵(High Entropy):概率分布平坦。意味着模型对下一个Token选什么比较“犹豫”,认为有多种可能的选择。这代表了较高的多样性和探索性。
- 低熵(Low Entropy):概率分布尖锐。意味着模型极度确信应该输出某个特定的Token,其他Token的概率接近0。这代表了较高的确定性。
对于当前的上下文状态 和策略网络输出的概率分布 ,其香农熵 定义为:
其中 是模型的词汇表, 是词汇表中的Token。
在损失函数中的位置:
我们的目标通常是最大化这个熵(鼓励探索),但在深度学习框架中通常是做最小化任务,因此在总Loss中是减去熵(或者加上负熵):
这里 是熵系数(Entropy Coefficient),是一个控制正则化强度的超参数。
- 为什么要引入熵奖励?(核心作用)
- 对抗“模式坍塌” (Preventing Mode Collapse)
- 维持探索 (Encouraging Exploration)
- 平滑概率分布
- 训练初期:熵通常较高,模型在进行广泛的试错(Exploration)。
- 训练后期:随着策略逐渐找到高Reward的路径,熵会自然下降,模型变得越来越确定(Exploitation)。
- 调优技巧:在工程实践中,熵系数 通常采用退火策略(Annealing)。即在训练开始时设得大一点,鼓励探索;随着训练进行逐渐减小,允许模型收敛,最终输出稳定、高质量的答案。
RL算法本质上是贪婪的。如果PPO发现某一种特定的回答模式(例如总是回答“我不知道”或者总是拍马屁)能获得稍微高一点的Reward,它就会倾向于把所有概率都压在这个回答上。
如果不加熵惩罚,模型会迅速退化成一个“复读机”,输出变得极度单一,失去语言模型的多样性。熵奖励强迫模型在优化Reward的同时,必须保持一定的概率分布广度。
在训练初期,策略可能还没找到最优解。如果此时熵过低,模型就会过早“自信”地锁定在一条次优路径上不再尝试其他可能。
熵奖励相当于给模型一个“好奇心”奖励:只要你保持尝试不同Token的可能性,我就给你加分。
对于LLM,过于尖锐的概率分布(one-hot dominant)在反向传播时往往会导致梯度消失或数值不稳定。保持一定的熵有助于梯度的健康流动。
二、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)优势 :对同一提示 生成 个响应,令奖励为 ,则
,
等价于以“其余 样本的均值”为基线的方差降低器。相比直接用全体均值作基线,RLOO 具有更强的无偏性与方差抑制能力。
- 序列视作单一动作: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 具备竞争力,并优于部分离线方法。适合作为轻量级的在线对齐基线或大模型资源受限场景的首选方案。
五、REINFORCE++ Loss
REINFORCE++ 是对经典 REINFORCE 的工程化增强变体,面向 RLHF 的在线对齐训练。其思路是保留“无 Critic”的简洁性,同时吸收 PPO 的一系列稳定化技巧(如 KL 正则、长度归一、批内基线、熵奖励等),在稳定性上优于 GRPO、在效率上接近或快于 PPO
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–8 是常用折中;较大 提升基线稳定性但增加采样与前向成本。
- 与学习率:联合调参;跟踪 KL、奖励均值/方差、win-rate,配合早停。
- 归一与惩罚:长度归一与缺失 EOS 惩罚常与 RLOO、PPO 一样有效;必要时做梯度裁剪。
5. 一句话小结
REINFORCE++ 用“序列级 REINFORCE + 批内基线 + KL 正则 + 若干稳定化技巧”,在无 Critic 的前提下实现“比 GRPO 更稳、比 PPO 更省”的对齐训练范式。
- 作者:SimonSun
- 链接:https://simonsun.xyz//article/llm-15
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章
.png?table=collection&id=cb472e47-cf59-4081-bd5f-899a844344db&t=cb472e47-cf59-4081-bd5f-899a844344db)


