大模型强化学习原理解析:从PPO到GSPO

作者:rousong2026.11.03 21:56浏览量:0

简介:本文系统解析大模型强化学习中PPO、GRPO、DAPO与GSPO四类策略优化算法的演进逻辑与底层机制,从优势估计来源、更新粒度、样本筛选与噪声处理四个维度拆解各自解决的核心瓶颈,并辅以关键公式、训练流程伪代码与对比分析,帮助读者建立完整的原理认知框架。

一、原理概述:四个算法,一条训练闭环

大模型强化学习把文本生成建模为序贯决策问题:模型即策略,已生成的上下文是状态,下一个 Token 是动作,一条完整回答是一条轨迹,奖励作用在轨迹末端。训练目标可以概括为一句话:最大化期望奖励,同时约束策略不偏离作为锚点的参考策略太远。

无论 PPO、GRPO、DAPO 还是 GSPO,都运行在同一个“生成—打分—更新”闭环中:

  1. 采样:用当前策略对一批问题各生成一条或多条回答;
  2. 打分:用规则奖励(答案比对、单元测试通过率等)或奖励模型给出分数;
  3. 估计优势:衡量每条回答或每个 Token 相对“平均水平”好多少;
  4. 受限更新:在信任域约束下执行策略梯度,提高好回答的概率、压低差回答的概率。

四个算法的真正差异集中在四个维度:优势从哪里来、更新以什么粒度发生、哪些样本进入训练、长回答与稀疏专家模型(MoE)的路由噪声如何处理。它们不是四个完全孤立的算法,而是同一条训练链上针对不同瓶颈的逐层修补。

二、背景问题:演进由瓶颈驱动

早期基于人类反馈的强化学习流程是“监督微调 → 训练奖励模型 → 强化学习对齐”。这条链路在大规模落地时暴露出几类问题:

  • 其一,PPO 依赖一个与策略模型同规模的价值模型(Critic)来估计优势,显存与算力开销大、训练难稳定、超参敏感;
  • 其二,数学、代码等可验证任务兴起后,奖励可以由规则直接计算,同一个问题一次采样多条回答成为可能,组内比较天然提供了基线,独立价值模型显得冗余;
  • 其三,长链推理成为主流后,回答动辄数千 Token,训练出现探索塌缩、零梯度样本占比高、长回答被系统性低估、超长截断带来奖励噪声等新问题;
  • 其四,超大规模 MoE 模型上,逐 Token 重要性比率受路由波动影响产生极端值,长时间训练容易失稳。

GRPO、DAPO、GSPO 正是分别针对第二、第三、第四类瓶颈的回应。

三、核心概念:理解四个算法的前置知识

  1. 优势函数与基线。优势 A 表示某动作(或整条回答)优于当前策略平均水平的程度。策略梯度中减去任意只依赖状态的基线,不改变梯度期望、只影响方差——这是“去掉价值模型”在数学上可行的根源。
  2. 重要性比率。r = π_θ(a) / π_old(a),用于修正“数据由旧策略采集、参数已更新”的离策略偏差。它既是多轮复用样本的依据,也是训练不稳定的主要来源。
  3. 信任域与裁剪。一次更新把新旧策略的概率比推得太远,会让策略进入旧数据无法代表的区域。裁剪通过把 r 限制在 [1−ε, 1+ε] 内,保证代理目标是真实改进的安全近似。
  4. KL 散度约束。用参考策略作锚点,抑制奖励投机与语言能力退化,通常以惩罚项形式加入损失。
  5. 组内相对优势。同一问题采样 G 条回答,用组内均值作基线、标准差作尺度,得到每条回答的相对优势,相当于对该问题期望回报做蒙特卡洛估计。

四、PPO:带裁剪的代理目标与价值模型

PPO 的核心目标函数为:L = E[ min( r_t·A_t, clip(r_t, 1−ε, 1+ε)·A_t ) ]。当优势为正时,r_t 被上界 1+ε 封顶;优势为负时被下界 1−ε 托底。这保证单步更新幅度受限,同一批采样数据因此可以安全复用多个轮次。优势估计通过广义优势估计(GAE)对时间差分残差做指数加权,在偏差与方差之间折中,给出 Token 级优势。

系统组成上,完整 PPO 训练需要四个模型同时在卡:策略模型、参考模型、奖励模型、价值模型,其中价值模型通常与策略同规模,显存占用与训练复杂度显著。使用中的主要痛点在于:价值模型本身是学习出来的近似,其误差会引入偏差;在超大规模语言模型上,Critic 的训练稳定性与调参成本居高不下,这为“去掉 Critic”的后续演进埋下伏笔。

五、GRPO:用组内相对优势替代价值模型

GRPO 的核心机制是:对每个问题用当前策略采样 G 条回答,得到奖励 r_1..r_G,优势定义为 A_i = (r_i − mean(r)) / std(r),并广播到该回答的所有 Token;随后沿用 PPO 式的裁剪代理目标更新,同时把 KL 惩罚以无偏估计形式直接加入损失。

为什么可行:组内均值正是对该问题期望回报的蒙特卡洛估计,充当基线;标准差归一化让不同问题的优势尺度可比。在可验证任务中,奖励本身可靠且作用于结果,组内比较的信号噪声小,无需再学一个价值函数来降方差。收益是少训练一个同规模模型,显存与流水线复杂度显著下降,且优势与最终奖励直接对齐。

代价是新引入四类问题:熵塌缩(探索能力衰减)、全对/全错组零梯度、长回答在样本级归一化下被低估、超长截断产生奖励噪声。这四点正是 DAPO 的靶子。

六、DAPO:面向长链推理的四项补强

DAPO 没有另起炉灶,而是保留 GRPO 目标骨架,针对长链推理的大规模训练逐项修补:

  1. Clip-Higher(非对称裁剪):将上界从 1+ε 放宽为 1+ε_high(ε_high > ε_low)。原因在于对称裁剪下,低概率 Token 的概率增长被 1+ε 封顶,而概率下降不受限,探索性 Token 被系统性压制,熵迅速塌缩、多样性枯竭。放宽上界为稀有 Token 留出生长空间,维持探索能力。
  2. 动态采样:组内全部正确或全部错误时,优势为零、梯度为零,这批算力被浪费。DAPO 过量采样并过滤零方差组,只保留能产生有效梯度的样本组成批次,提高样本效率并稳定训练。
  3. Token 级策略梯度损失:原始损失按“每条回答内的 Token 数”归一化,长回答中每个 Token 的权重被稀释,长推理样本被系统性低估。改为按批次内 Token 总数归一化后,每个 Token 对梯度的贡献相等,长回答的推理步骤得到应有权重。
  4. 超长奖励塑形:超过最大长度的回答被截断,正确但被截断的答案拿到零奖励,形成奖励噪声。在截断阈值后设置缓冲区、奖励随长度线性衰减,并屏蔽截断尾部的损失计算,可抑制噪声并隐式抑制冗余生成长度。

七、GSPO:把重要性比率提升到序列级

GSPO 的问题定位是粒度错配:奖励评价的是整条回答,而 GRPO/PPO 的裁剪与修正却发生在逐 Token 粒度上。在 MoE 模型上问题被放大——路由波动使个别 Token 的重要性比率出现极端值,逐 Token 裁剪产生高频梯度噪声,长时间训练累积后可能诱发崩溃。

核心机制是定义序列级重要性比率:si = exp( (1/|y_i|) · Σ_t [logπθ(y_t) − logπ_old(y_t)] ),即对该回答所有 Token 的对数比率取长度归一化的几何平均,裁剪与目标函数都在序列级进行:L = E[ min(s_i·A_i, clip(s_i, 1−ε, 1+ε)·A_i) ]。

为什么有效:几何平均把逐 Token 的路由噪声在序列内平均掉,比率分布更平滑,梯度方差下降;修正粒度与奖励粒度对齐——奖励判整条回答,比率也约束整条回答;长度归一化使长短回答的比率尺度一致;超出边界的序列整体退出本轮更新,也为工程侧的批次调度与舍弃优化留出空间。其边界在于:序列级控制比 Token 级更粗,收益在 MoE 大模型与超长训练场景中最明显,稠密小模型上差距可能有限。

八、机制对比总览

维度 PPO GRPO DAPO GSPO
优势来源 GAE+价值模型 组内相对优势 组内优势+动态筛选 组内相对优势
是否需要 Critic 需要 不需要 不需要 不需要
裁剪粒度 Token 级 Token 级 Token 级(非对称) 序列级
主要解决 更新过猛 Critic 成本 长 CoT 数据与奖励利用 MoE 与长训稳定性

九、通用训练流程(伪代码)

  1. 初始化策略 π_θ、参考策略 π_ref(= SFT 模型)
  2. for 每轮迭代:
  3. prompts = 从数据集采样一批问题
  4. responses = π_θ.generate(prompts, 每题 G 条) # 生成
  5. rewards = rule_or_model_score(responses) # 打分
  6. A_i = (r_i - mean(r)) / std(r) # 组内优势(GRPO 系)
  7. # DAPO: 过滤全对/全错组后重采样补齐批次
  8. for epoch in 1..K:
  9. ratio = exp(logp_θ - logp_old) # Token 级或序列级
  10. loss = -mean(min(ratio*A, clip(ratio,1-ε_low,1+ε_high)*A))
  11. + β * KL(π_θ || π_ref)
  12. 更新 θ

十、技术优势与限制

  • PPO:通用性最强、理论成熟,适用于奖励模型打分的开放场景;限制是系统重、Critic 难训。
  • GRPO:结构简洁、显存友好,契合可验证奖励任务;限制是依赖组采样算力、对组内方差敏感,长推理场景需补强。
  • DAPO:显著改善长推理任务上的探索与数据利用;限制是动态采样需要过量采样基础设施,非对称裁剪与缓冲区参数需按任务调节。
  • GSPO:为 MoE 与超长训练提供稳定性;限制是控制粒度变粗,对小规模稠密模型收益有限。

无论自建训练框架,还是使用百度智能云等平台提供的模型精调与训练类通用服务,算法层的原理与调参逻辑是一致的:奖励设计决定信号质量,优势估计决定方差,裁剪与 KL 决定更新幅度。

十一、常见误区

  1. “GRPO 去掉了基线”——错。它去掉的是学习出来的价值函数,组内均值本身就是基线。
  2. “DAPO、GSPO 是 GRPO 的替代品”——不准确。DAPO 改进训练配方(采样、奖励、损失归一化),GSPO 改进更新粒度,两者正交,可以组合使用。
  3. “放宽裁剪上界必然不稳定”——非对称放宽只作用于上界,下界仍限制塌缩,目的是给探索留空间,属于权衡而非放松纪律。
  4. “动态采样是丢弃难例”——它过滤的是零梯度组(全对/全错),不是困难样本;有区分度的组才是有效信号。
  5. “序列级比率丢失 Token 信息”——几何平均聚合了全部 Token 的对数比率,是聚合而非丢弃。
  6. “KL 惩罚可随意去掉”——它是对抗奖励投机与语言退化的锚点,移除需承担训练后期失控的风险。

十二、总结

回到主线:PPO 解决“更新不要太猛”,用裁剪与信任域保证多轮复用样本时的安全;GRPO 解决“没有必要为每个大模型再训一个 Critic”,用组内相对优势在可验证任务上换掉价值模型;DAPO 解决“长链推理中数据和奖励不够好用”,用四项机制恢复探索、筛出有效梯度、校正长短偏差、抑制截断噪声;GSPO 解决“整条回答的奖励不应被逐 Token 的重要性噪声拆散”,把修正粒度提升到与奖励一致的序列级。四者构成一条从更新约束、优势来源、训练配方到更新粒度的完整演进链——理解每个环节的瓶颈与修补逻辑,比记住算法名更重要。