为什么你的 LLM RLHF 训练总是"奖励不涨、loss 震荡"?——arXiv 2609.18708 找到了 PPO Critic 的隐藏 bug

  • 关联论文:2609.18708

如果你做过 LLM 的 RLHF 后训练,大概率遇到过这种崩溃:训练 loss 看起来在下降,但模型在 reward model 上的得分纹丝不动、甚至反降;PPO 的 clip 目标在剧烈震荡;你开始怀疑 reward model 是不是有问题、KL 惩罚是不是太重——但都没找到原因。

你可能漏掉了一个 PPO 训练里隐藏最深的系统性 bug:Critic(价值网络)在悄悄"躺平"

2026 年 9 月来自 arXiv 2609.18708(SP³O 论文) 的工作给这个现象起了个名字:Value Flattening(价值扁平化)——而且给出了一种几乎"零成本"的修复方法:每个 response 只监督 3 个状态,反而比每个 token 都监督更稳定、最终策略质量更高

一句话故事

PPO 在 LLM 训练中使用的 Critic 网络存在系统性失效模式:真实状态价值在中间状态之间急剧变化,但 Critic 预测值却趋于平坦——它学会了"平均地正确"而不是"精确地正确"。根源是 MSE 损失隐含的方差惩罚 + 相邻 token 梯度冗余。SP³O 通过在每个 response 中仅对少量稀疏分布的状态施加价值损失(论文中每 response 仅 K=3 个状态),从根源上缓解了这一问题,在 Qwen3-Base 多个规模上一致提升所学策略质量

为什么这件事值得你关注

这件事对所有做大模型后训练的人都直接相关——尤其是你正在被 PPO 训练"奖励不涨"折磨的话:

  • 🛠️ LLM RLHF 工程师:你的 PPO 训练不再"奖励不涨",而是有了一个明确可排查的方向
  • 🧪 RL 算法研究者:Value Flattening 是首个被系统命名和剖析的 PPO Critic 失效机制,学术价值高
  • 🤖 AI 产品团队:后训练稳定性直接决定你的对齐模型能不能按时上线
  • 💼 内部训练基础设施:诊断工具(FrozenLake 代理 + Critic 方差检测)可立即集成进流水线
  • 📚 强化学习学习者:Value Flattening 是一个经典"反直觉发现"的现代范例——稀疏监督 > 全监督

更关键的是:修复门槛极低,改动只在一行 mask

Value Flattening 到底是怎么回事?——一个直觉解释

先把 PPO 在 LLM 训练里干的事说一遍:

PPO 用一个 Critic(价值网络) 来估计"在当前生成进度下,接下来能拿到多少 reward"——它就像一个比赛解说员,在棋局进行中持续告诉你"现在白棋胜率 70%"。策略(actor)根据这个解说员的判断去调整自己的生成方式。

理想情况:解说员对每一步的判断都精确——棋差一步胜率从 70% 跳到 60%,解说员应该敏锐地捕捉到这种变化。

实际情况:解说员学会了"打太极"——它对所有中间步骤的预测值都差不多。明明棋局形势剧变,它嘴里还是"双方均势"。

为什么会这样?论文从两个角度解释:

根源 1:MSE 损失隐含的方差惩罚

Critic 的训练目标是 MSE——预测值与真实价值的平方差。MSE 天然倾向于"保守预测"

为什么?因为 MSE 同时惩罚"高估"和"低估"。如果你预测的方差比真实方差大,那要么高估、要么低估,反正要罚;如果你预测得保守(方差小),"平均一下"反而 MSE 更低。

结果是:Critic 不是在拟合"真实价值",而是在拟合"真实价值的均值"——它的预测方差被人为压缩了,这就是 Value Flattening。

根源 2:相邻 token 梯度的时序冗余

LLM 生成时,相邻 token 对应的隐状态(embedding)非常相似——因为前一个 token 稍微改动就生成了后一个 token。

Critic 在每个 token 位置都计算价值损失 → 相邻 token 给出的梯度几乎相同 → 这些梯度被反复累加,但都指向同一个"保守预测"方向——进一步强化了平坦化。

结果:不是 Critic 没学到东西,而是它学到的"东西"全是同一个方向——把所有中间状态都预测成接近平均值的数。

SP³O 的解法:稀疏监督,反而更强

SP³O 的修复思路非常反直觉:

别每个 token 都监督价值损失了。每条 response 只挑 K=3 个稀疏分布的状态监督,其余的 loss 直接置零

为什么稀疏反而更好?

两个直接效果:

效果 1:缓解隐式方差惩罚

如果 Critic 只在 K=3 个状态上算损失,它无法通过"对所有 token 都平均一下"来降低整体 MSE——它必须更精确地拟合这 3 个被选中状态的价值。

效果 2:打破时序冗余

被选中的 3 个状态之间有足够间距(well-separated)→ 梯度信号不再被相邻相似状态稀释 → 每次 Critic 更新都是独立有效的信息。

伪代码:

# 在标准 PPO Critic loss 上加稀疏 mask
def sparse_critic_loss(values, target_values, mask, k=3):
    """
    每条 sequence 仅保留 k 个稀疏分布的位置算价值损失
    """
    # 策略:按等间隔选 k 个位置
    # mask 是 [batch, seq_len],只有这 K 个位置是 1,其余是 0
    loss = ((values - target_values) ** 2) * mask
    return loss.sum() / mask.sum()

就这么简单——不需要新架构、不需要额外训练、不需要复杂算法,只在 Critic loss 处加一行 mask。

这件事为什么"反直觉"——也更值得传播

你可能会问:减少监督信息不是损失吗?怎么反而学得更好了?

这个反直觉的根源是"信息密度 ≠ 信息价值"。

全监督的 100% 信号里,有多少是"新信息"? 在 LLM 场景里,相邻 token 的价值高度相关——监督位置 1 和位置 2、3、4、5 几乎是同一个信号的 5 次重复。真正的"独立信号"可能只有稀疏的几个

稀疏监督把这部分冗余砍掉,留下的反而是信息密度最高的 K 个状态——这才是 Critic 真正需要学的"棋局关键转折"。

这种"少即是多"的洞察在机器学习里反复出现:

  • 🖼️ 计算机视觉:剪枝掉 90% 权重的神经网络,准确率几乎不变
  • 📚 NLP 训练:对比学习中,1 个正样本 + 5 个负样本比 100 个负样本更有效
  • 🤖 强化学习:稀疏奖励 + shaping,往往比稠密奖励训练更稳定
  • 🧠 人类学习:刻意练习(针对关键节点反复练)胜过题海战术

SP³O 在 PPO Critic 这个具体场景里再次验证了这个规律:信息的数量 ≠ 信息的质量

SP³O 的工程落地:一行 mask 的改动

如果你已经在用 OpenRLHF / veRL / TRL 训练 PPO,集成 SP³O 几乎是"无门槛":

现有系统 集成改动 难度
OpenRLHF critic loss 处加稀疏 mask 低(开源、PPO 实现完整)
veRL(字节) 对接内部训推框架的 critic loss 中(大规模 RLHF 场景验证)
TRL(HuggingFace) PPOTrainer 自定义价值损失 低(生态最广)
内部自研 视当前 Critic 实现而定 高(可深度定制)

落地 checklist:

  1. K 值从 3 起:论文给的最小可用配置。如果训练不稳定,调到 5–7
  2. 状态选择策略:论文 abstract 未披露具体算法,工程上推荐先做等间隔采样快速验证,再迭代到更复杂的"梯度方差最大 K 个"
  3. 先做诊断,再上 SP³O:用下面这套检查确认 Value Flattening 确实存在 - Critic 预测在 validation 集上的 token 级 std(V) < 0.05 → Value Flattening 存在 - 在 FrozenLake 8×8 上跑标准 PPO,观察 Critic 是否比 4×4 更平坦 → 小环境下的具象验证
  4. PPO clip 区间需要重调:ε ∈ [0.1, 0.3] 重新 grid search,默认的 0.2 不一定最优
  5. 不要同时改 critic_update_freq:稀疏 loss 和更新频率改动叠加可能变差,先固定更新频率,只改 mask
  6. 必须做 RLHF 端到端评估:论文只测了"学到的策略质量",没给 Helpful/Harmless 分数——上线前要在目标任务 reward model 上做端到端测试

这件事对你的"思维启发"

不止技术层面,这件事还给所有做"用 AI 评估 AI"的人一个观念上的冲击:

当一个评估网络(Critic)被要求"准确判断每一步的形势",它最终学会的不是"准确",而是"平均"——因为平均化是降低评估误差的最简单策略

这和人类社会的很多评估机制惊人相似:

  • 📊 绩效考核:评估者学会了"打分平均",不敢给极端高分或低分——结果所有人都差不多,真正优秀的员工没被识别
  • 🎓 考试评分:标准化考试追求"公平",反而掩盖了学生的真实差异
  • 💼 KPI 体系:平均化指标掩盖了关键转折点的价值——SP³O 的"稀疏监督"思路,本质上就是"只对关键节点严格打分"
  • 🤖 AI 安全评估:Reward Hacking 的本质就是 Critic 学会"躺平",所有回答都给差不多的分,模型就会利用这个漏洞

SP³O 的洞察可以推广到所有"评估一件事的质量"的工作场景:稀疏而精确 > 密集而平均

一句话总结

PPO Critic 的 Value Flattening 是 LLM RLHF 训练里"奖励不涨"的最常见隐藏原因之一。SP³O 的解法简单到只有一行 mask:每条 response 只监督 3 个稀疏分布的状态,反而比每个 token 都监督更稳定、最终策略质量更高——这是"少即是多"在 RLHF 领域的又一次验证

如果你的 RLHF 训练卡在"loss 下降但 reward 纹丝不动",先诊断 Critic 预测的方差,再考虑 SP³O。


本文基于 arXiv:2609.18708 摘要 + 精修版深度解读整理,具体实验数据与 well-separated 选择算法细节请参阅原论文。


三个标题变体

  1. 数字钩子版:每条 response 只监督 3 个状态——arXiv 2609.18708 反直觉发现:稀疏监督反而让 PPO Critic 更稳定
  2. 拟人化版:你的 PPO Critic 在悄悄"躺平"?——arXiv 2609.18708 命名了一个被忽视的 bug:Value Flattening
  3. 类比版:相当于"只对棋局关键转折点打分,而不是每一步都打分"——arXiv 2609.18708 重新设计 PPO Critic 监督

📱 小红书风格卡片文案(直接可用)

📱 为什么你的 LLM RLHF 训练总是"奖励不涨、loss 震荡"?——2026 年 9 月这篇论文给了一个被忽视的答案

做 LLM 后训练的人都遇到过这种崩溃:loss 在降,但 reward 纹丝不动;PPO clip 目标剧烈震荡;你开始怀疑 reward model、KL 惩罚、clip 区间——但都找不到原因

罪魁祸首可能是 PPO Critic(价值网络)在悄悄"躺平"

📍 2026 年 9 月,arXiv 2609.18708(SP³O) 给这个现象起了名字:Value Flattening(价值扁平化)

🧠 什么是 Value Flattening?

PPO 里的 Critic 就像一个比赛解说员——在棋局进行中持续说"现在白棋胜率 70%"。理想情况下,解说员对每一步的判断都敏锐;但实际训练中,它学会了"打太极"——对所有中间步骤的预测值都差不多,明明棋局剧变,嘴里还是"双方均势"

🔍 为什么 Critic 会躺平?

根源 1️⃣ MSE 损失隐含的方差惩罚——MSE 同时惩罚高估和低估,预测得保守(方差小)反而 MSE 更低,Critic 最终拟合的是"真实价值的均值"而不是"真实价值本身"

根源 2️⃣ 相邻 token 梯度的时序冗余——LLM 生成时相邻 token 的隐状态非常相似,每个位置都算 loss → 同一个"保守预测"梯度被反复累加,进一步强化平坦化

💡 SP³O 的解法:稀疏监督,反而更强

别每个 token 都监督价值损失了。每条 response 只挑 K=3 个稀疏分布的状态监督,其余的 loss 直接置零。

def sparse_critic_loss(values, target_values, mask, k=3):
    loss = ((values - target_values) ** 2) * mask
    return loss.sum() / mask.sum()

就这么简单——一行 mask

🎯 为什么稀疏反而更好?

  • 缓解方差惩罚:只对 3 个状态算 loss,无法通过"平均所有 token"降低 MSE
  • 打破时序冗余:稀疏间距的梯度是独立信息,不再被相邻相似状态稀释
  • Qwen3-Base 多个规模一致提升——不是某个规模下的偶然

📊 反直觉的洞察:

全监督的 100% 信号里,真正独立的"新信息"可能只有稀疏的几个。相邻 token 的价值高度相关,监督位置 1 和 2、3、4、5 几乎是同一个信号的重复。稀疏监督砍掉冗余 — 留下的反而是信息密度最高的 K 个"棋局关键转折"

🛠️ 零门槛集成:

系统 改动
OpenRLHF critic loss 处加 mask
HuggingFace TRL PPOTrainer 自定义价值损失
veRL(字节) 对接内部 critic loss

⚠️ 但有 6 个工程坑:

  1. K 值从 3 起,训练不稳定调到 5–7
  2. 状态选择策略:论文 abstract 未披露,先做等间隔采样快速验证
  3. 先做诊断再上 SP³O——validation 集上 std(V) < 0.05 才确认 Value Flattening 存在
  4. PPO clip 区间需重调:ε ∈ [0.1, 0.3] grid search
  5. 不要同时改 critic_update_freq:稀疏 loss + 更新频率改动叠加可能变差
  6. 必须做 RLHF 端到端评估——论文没给 Helpful/Harmless 分数,上线前要在目标任务 reward model 上跑测试

🔑 可推广的洞察:

当一个评估网络被要求"准确判断每一步的形势",它最终学会的不是"准确",而是"平均"。

这和人类社会的评估机制惊人相似: - 📊 绩效考核"打分平均" → 真正优秀的员工没被识别 - 🎓 标准化考试追求"公平" → 反而掩盖真实差异 - 🤖 AI 安全的 Reward Hacking → Critic 躺平被模型利用

SP³O 的本质洞察:稀疏而精确 > 密集而平均

🎯 适合谁: - 🛠️ LLM RLHF 工程师(被"奖励不涨"折磨的) - 🧪 RL 算法研究者(对 Critic 失效机制感兴趣的) - 🤖 AI 产品团队(后训练稳定性关键) - 💼 内部训练基础设施(需要诊断工具) - 📚 强化学习学习者(反直觉发现的范例)

🔔 评论区聊聊:你做 RLHF 时遇到过"loss 下降但 reward 不涨"吗?诊断出来是什么问题?

RLHF #PPO #Critic #LLM训练 #大模型 #AI训练 #强化学习 #ValueFlattening #SP3O #Qwen3 #后训练 #arXiv2609.18708