找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

4563

积分

0

好友

631

主题
发表于 18 小时前 | 查看: 9| 回复: 0

PPO(Proximal Policy Optimization)一直是 RLHF 训练的主流算法,但其对 Critic 网络的依赖和高昂的内存开销,使得训练大规模语言模型(LLM)的成本极高。GRPO(Group Relative Policy Optimization)由 DeepSeek 团队在 DeepSeek-R1 训练中提出,它通过完全移除 Critic 网络、使用组内相对优势替代值函数估计,在显著降低内存和计算开销的同时,依然保持了出色的训练效果。

理解 PPO 与 GRPO 的本质区别及各自的适用场景,对于设计高效、稳定的大模型强化学习训练系统至关重要。

01 PPO 的核心机制与代价

(1)PPO 算法框架

PPO 通过一个精巧的目标函数,在鼓励策略改进和防止其偏离旧策略过远之间寻求平衡:

PPO目标函数公式:L_PPO = E[min(r_t(θ)A_t, clip(r_t(θ), 1-ε, 1+ε)A_t)]

其中 r_t(θ) = π_θ(a_t|s_t)/π_θ_old(a_t|s_t) 是新旧策略的概率比,A_t 是优势估计,ε(通常设为0.2)用于控制更新步长。

(2)Critic 网络的作用与开销

PPO 算法需要一个与策略模型规模相当的 Critic(价值函数网络) 来估计优势函数 A_t,其计算通常依赖于广义优势估计(GAE):

优势估计公式:A_t = r_t + γV(s_{t+1}) - V(s_t)

正是这个 Critic 网络,带来了显著的资源与复杂性开销:

  • 内存开销翻倍:一个70B参数的策略模型加上一个70B参数的 Critic 模型,总参数量达到140B。以 BF16 精度计算,训练时显存需求高达约 560GB。
  • 训练复杂度增加:策略网络和 Critic 网络需要交替更新,而 Critic 的训练目标(最小化时序差分误差)有时会与策略网络的改善目标产生矛盾。
  • 方差-偏差权衡难题:GAE 虽然有助于降低估计方差,但也引入了自举偏差(bootstrapping bias),在处理长序列任务时,这种偏差尤为明显。

(3)PPO 在 LLM 训练中的实际挑战

当 PPO 应用于语言模型时,还面临一些特有的问题:

  • 奖励归因困难:在文本生成任务中,“状态”是已生成的序列,“动作”是下一个 token。Critic 需要估计每个中间 token 的“价值”,但许多功能性 token(如连接词、标点)本身并无明确的语义价值,导致 Critic 难以学习到有效的信号。
  • 训练不稳定:InstructGPT 的实践报告指出,PPO 训练在大约500步后容易出现奖励退化现象,这通常是因为 Critic 出现高估,进而导致策略过于激进地偏离参考模型。

02 GRPO 的设计理念与优势

(1)无 Critic 的组内相对优势

GRPO 的核心创新在于完全摒弃了 Critic 网络。它的思路很直观:与其训练一个复杂的网络来估计每个动作的绝对价值,不如直接比较同一问题的多个回答,使用它们在组内的相对表现作为优势信号。

其优势 A_i 的计算公式为:

组内归一化优势公式:A_i = (r_i - mean({r_1, ..., r_N})) / std({r_1, ..., r_N})

具体训练流程可分为四步:

GRPO训练流程:1.采样多个回答;2.打分;3.计算归一化优势;4.PPO更新

这本质上是将 REINFORCE 算法与一个基线函数(即组内奖励的均值) 相结合,完全基于蒙特卡洛回报,避免了自举带来的偏差。

(2)GRPO 的资源与效率优势

移除 Critic 带来了立竿见影的好处。我们可以通过一个直观的对比表格来看:

PPO与GRPO对比表格,涵盖模型数量、显存、复杂度、超参数和稳定性

GRPO 在 开源实战 项目 DeepSeek-R1-Zero(一种无需 SFT 预热、纯靠 RL 训练的模型)中展现了令人惊讶的效果:模型自发地涌现出长链思维和反思行为,而这在传统的 PPO 训练框架中是极难实现的。

(3)REINFORCE++ 的改进

在 GRPO 的基础上,REINFORCE++ 算法进行了几点重要优化:

  • Token-level KL 惩罚:逐 token 计算与参考模型的 KL 散度,提供比序列级约束更精细的控制。
  • 小批次多轮更新:对同一批采样数据进行多轮梯度更新,提高了数据利用率。
  • 优势归一化:在 mini-batch 内部对优势进行归一化,有助于稳定梯度量级。

实验表明,这些改进使得 REINFORCE++ 在数学推理任务上的准确率比标准 GRPO 高出约 1-2%。

03 适用场景对比与选型

那么,在实际项目中,我们究竟该如何选择呢?

(1)GRPO 更适用的场景

  • 结果清晰可验证的任务:例如数学推理(答案对错分明)、代码生成(单元测试通过与否)。这类任务只需最终结果的奖励信号,无需中间的价值估计,完美契合 GRPO 的组内比较模式。
  • 计算资源受限的环境:节省 30-40% 的显存开销,使得在单台机器上训练更大规模的模型成为可能。
  • 训练初期的策略探索:在策略随机性较高的训练初期,GRPO 基于蒙特卡洛的方法方差相对较小,因为组内样本的多样性天然提供了丰富的对比信号。
  • 需要快速迭代的研究项目:超参数更少,调参成本低,能加速实验循环。

(2)PPO 更适用的场景

  • 密集奖励或连续控制任务:如果任务本身能提供步骤级的奖励信号,PPO 的 Critic 网络能更有效地利用这些中间信号进行自举学习。
  • 具有长期依赖的任务:当序列极长(超过1000步)且奖励信号出现在序列中间时,PPO 的 GAE 机制在时序信用分配上可能优于蒙特卡洛方法。
  • 拥有高质量预训练 Critic 时:如果已经通过其他方式获得了一个稳定、准确的价值函数估计网络,PPO 的偏差-方差权衡可能会优于纯蒙特卡洛的 GRPO(后者在奖励稀疏时方差可能较高)。

(3)混合训练策略

在实践中,越来越多的团队开始采用混合方案来取长补短:

  • SFT 预热 + GRPO 微调:即 DeepSeek-R1 采用的路线。先用监督微调让模型掌握基础的回答格式,再用 GRPO 强化其推理能力。
  • PPO 的渐进式启动:先用 GRPO 训练若干轮,得到一个初步优化的策略模型,然后用这个策略模型来初始化 PPO 中的 Critic 网络,从而降低 Critic 网络冷启动的难度和不稳定性。

04 工程实践建议

如果你决定尝试 GRPO,以下是一些来自实践的经验建议:

  1. 数学/代码类任务可优先考虑 GRPO:其实现简单,无需维护 Critic 网络,训练过程通常也更稳定。
  2. 采样数 N 建议设为 8-16:N 太小(如4)会导致组内方差过高,估计不准;N 太大(如32以上)则容易导致组内样本“全对”或“全错”,使得优势计算失效。8-16 是一个经验上的甜点区间。
  3. 监控组内奖励方差:如果 std(r_group) < 0.05,意味着奖励高度集中,表明当前任务对模型来说要么太简单,要么太难,都需要调整任务难度或模型能力。
  4. 注意采样温度:GRPO 对生成多样性敏感。温度过低(如0.5)会导致组内样本多样性不足,影响优势估计的质量。建议将 temperature 设置在 0.8 到 1.0 之间。

参考文献

  1. Schulman et al., Proximal Policy Optimization Algorithms, arXiv 2017
  2. Shao et al., DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models, 2024
  3. DeepSeek-AI, DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via RL, 2025
  4. Hu et al., REINFORCE++: A Simple and Efficient Approach for Aligning LLMs, 2025

本文探讨了 强化学习 领域中两种重要算法的工程选型,希望对你的项目有所启发。关于大模型训练与对齐的更多深度讨论,欢迎访问 云栈社区 的智能与数据板块进行交流。




上一篇:腾讯AI应用开发二面复盘:Agent开发与RAG机制考察实录
下一篇:硅谷AI供应链事件聚焦:Cursor新模型基于Kimi K2.5,中国开源模型崛起
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-3-24 21:26 , Processed in 0.585037 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表