从白话到落地:LLM强化学习中PPO与GRPO的完整理解教程

作者:demo2026.11.03 18:39浏览量:0

简介:本文面向对LLM强化学习仍感到抽象的技术读者,以教程方式拆解PPO与GRPO在“逐token优化”中的工作流程。文章涵盖从RLHF目标、策略模型与参考模型的作用,到采样、优势估计、策略更新和结果验证的完整链路,帮助开发者真正理解“从一条回复到每个token的强化学习”是如何发生的,并掌握实施前的前置准备、关键配置、常见问题排查与优化思路。

一、教程目标

本教程的目标是:让已经了解大语言模型基础训练流程,但在面对PPO与GRPO时仍觉得“公式能看懂、落不了地”的读者,真正理解这两类算法在LLM强化学习中的工作机制。读完本文后,你应当能够:

  1. 说清楚RLHF阶段为什么要对“一条回复”中的每个token分别进行强化学习,而不是只对整条回复打分。
  2. 理解策略模型、参考模型、奖励模型或奖励函数、价值模型在PPO与GRPO中分别扮演什么角色。
  3. 梳理从采样、奖励计算、优势估计到策略更新的完整训练步。
  4. 知道在通用训练框架中,哪些配置项会影响稳定性,以及如何判断训练是否有效。

本文适合大模型训练工程师、算法工程师、技术负责人,以及希望从原理上理解LLM对齐过程的开发者阅读。文中不绑定任何特定训练平台或深度学习框架,重点放在通用概念与实施思路上。

二、适用场景

以下场景都适合系统理解PPO与GRPO:

  • 正在为对话模型、指令模型或推理模型设计RLHF阶段;
  • 已经完成监督微调,但模型回答仍存在偏好不一致、安全性不足或推理链质量不高的问题;
  • 需要评估RLHF训练是否稳定,或者排查训练过程中奖励上升但生成质量下降的问题;
  • 需要向团队或客户解释“为什么大模型需要强化学习,以及强化学习到底在优化什么”。

三、前置准备

在进入PPO与GRPO之前,建议先具备以下基础:

1. 基础模型与监督微调模型

你应当已经有一个完成预训练和指令微调的模型。该模型能够生成结构合理的回复,但在风格、安全、推理深度等方面尚未完全贴合人类偏好。

2. 偏好数据或可验证奖励信号

RLHF需要奖励信号。奖励信号可以来自:

  • 训练好的奖励模型;
  • 基于规则的验证器,例如答案正确性检查、代码执行结果、格式约束检查;
  • 人工标注的偏好对。

如果是GRPO这类算法,它对奖励来源的要求相对宽松,可以直接使用规则奖励或模型奖励,不需要额外维护一个与策略模型同规模的价值模型。

3. 基础强化学习概念

读者应了解以下概念:

  • 策略:模型根据当前状态生成动作的规则。在LLM中,策略就是给定上文后输出下一个token的概率分布。
  • 回报:从当前时刻到序列结束所获得奖励的累计。
  • 优势函数:衡量某个动作比平均动作好多少。

不过,即使对这些概念不熟悉,本文也会在步骤中逐步解释。

4. 稳定训练的基础环境

需要具备分布式训练能力,因为LLM强化学习通常涉及多个模型副本。同时要准备好日志与指标监控,以便观察奖励均值、KL散度、策略更新幅度等关键信号。

四、核心原理:为什么要从“一条回复”细化到“每个token”

RLHF的直观目标,是让模型生成的回复整体更符合人类偏好。最朴素的方法是:对一条回复打一个总分,然后用这个总分去强化或抑制整条回复。但这样会带来明显问题。

假设回复是:

“今天天气不错。我不太确定这个答案是否正确。”

如果整条回复只得到一个正奖励,模型可能会同时加强对“今天天气不错”和“我不太确定”两个部分的生成倾向。但后半句显然不是我们希望强化的对象。更合理的机制是:把奖励分配到每个token上,识别出哪些token对最终奖励有贡献,哪些token应当被抑制。

这就是“从一条回复,到每个token的强化学习”的核心动机。PPO与GRPO虽然实现方式不同,但都遵循这一基本思路:

  1. 让当前策略模型生成完整回复;
  2. 为回复计算标量奖励;
  3. 将回复级奖励转化为token级优势信号;
  4. 对每个位置进行策略更新,同时限制模型偏离参考模型太远。

五、实施步骤

下面按照RLHF训练的一般顺序展开,覆盖PPO与GRPO的共性阶段,并对两者差异进行说明。

步骤一:构造策略模型与参考模型

要做什么:

  • 策略模型:参与训练、不断更新的模型。
  • 参考模型:通常在RLHF开始时冻结,用于约束策略模型不要偏离过远。

为什么这样做:

如果只使用奖励信号更新策略模型,模型很可能通过“讨好奖励模型”或“输出极端内容”来提高奖励,而不是真正提升回答质量。参考模型提供了一个锚点。训练时计算策略模型与参考模型在输出分布上的KL散度,并将其作为惩罚项加入目标函数。

实施注意事项:

  • 参考模型与策略模型的初始化权重通常来自同一个监督微调模型。
  • 参考模型在训练期间不进行梯度更新,但需要持续参与前向计算。
  • 如果资源有限,可以考虑周期性更新参考模型,而不是完全冻结。不过初期建议先冻结,以简化调试。

步骤二:采样生成回复

要做什么:

使用策略模型对一批提示词生成回复,每个提示词可以生成多条回复。

为什么这样做:

强化学习需要“探索”。如果只生成一条回复,策略模型看到的状态和动作覆盖有限,难以有效估计优势。多条采样可以提升训练信号的稳定性。

生成配置建议:

  • 保留采样随机性,可以使用温度采样或top-p采样。
  • 设置最大生成长度,避免超长序列挤压有效学习信号。
  • 如果任务对格式有要求,可以在提示词中明确输出格式,并在奖励中检查格式。

步骤三:计算逐token奖励与KL惩罚

要做什么:

先为每条完整回复计算一个标量奖励。奖励可以来自规则、奖励模型或两者组合。

然后,将标量奖励分配到每个token位置。一个常见做法是:只在回复末尾放置实际奖励,其他位置的即时奖励为零。接着为每个token位置计算KL惩罚。

KL惩罚的通用形式:

对于每个token位置,比较策略模型与参考模型在该位置的输出分布。差距越大,惩罚越大。训练目标可以概括为:

  1. 最大化 E[奖励 - β × KL(策略 || 参考)]

其中β控制偏离惩罚的强度。

为什么这样做:

将奖励放在末尾,是因为很多任务只有在完整回复结束后才能判断好坏。KL惩罚则逐token计算,因为模型在整个生成过程中都可能逐渐偏离参考分布。

步骤四:估计优势函数

要做什么:

将包含KL惩罚的逐token回报转化为优势估计。

PPO的做法:

PPO通常依赖一个价值模型。价值模型尝试预测每个状态下的期望回报。优势函数可以近似为:

  1. 优势 = 实际回报 - 价值模型预测值

或者使用GAE等方式进行更平滑的估计。价值模型与策略模型同步更新,但通常结构较小或共享部分参数。

GRPO的做法:

GRPO不再维护单独的价值模型。它在一个提示词的多条回复之间做相对比较。例如,对一个提示词采样4条回复,计算每条回复的奖励,然后求均值和标准差。某条回复中每个token的优势可以用该回复奖励的相对位置来表示:

  1. 优势 = (回复奖励 - 组内均值) / 组内标准差

这种做法降低了计算和显存开销,同时天然形成了一种相对比较机制。

为什么这个差异重要:

PPO的优势估计依赖于价值模型的准确性。价值模型训练不好,优势信号会有偏。GRPO通过组内比较绕开了价值模型,但要求每个提示词至少采样两条以上回复,否则无法计算组内统计量。

步骤五:策略更新

要做什么:

基于token级优势信号,对策略模型进行梯度更新。

PPO的更新方式:

PPO使用裁剪机制。对于每个token位置,计算新旧策略概率比:

  1. ratio = 当前策略概率 / 旧策略概率

然后限制ratio的变化范围,例如裁剪到0.8到1.2之间。这样即使某一步优势特别大,也不会让策略发生剧烈跳变。

GRPO的更新方式:

GRPO同样会对策略更新幅度进行限制,但优势信号来自组内相对奖励。更新公式在结构上与PPO相似,核心区别在于优势的来源不同。

为什么需要裁剪或限制:

大模型的输出分布一旦偏离太远,生成能力可能迅速恶化。限制更新幅度,是为了在提升奖励和保持生成质量之间取得平衡。

步骤六:迭代训练与奖励模型更新

要做什么:

重复步骤二至步骤五。在PPO中,如果价值模型也在更新,需要同步维护其损失。在Reward Model based RLHF中,奖励模型通常是冻结的;但如果进入迭代式训练,也可以定期用新采集的偏好数据更新奖励模型。

为什么这样做:

策略模型不断变化后,旧奖励模型可能不再能准确评估新策略的输出。定期更新奖励模型有助于保持训练信号的有效性。不过这会增加流程复杂度,初期可以先使用固定奖励模型。

六、配置说明与常见参数逻辑

以下是RLHF训练中常见的配置维度及通用取值逻辑。不同训练框架的名称可能不同,但语义基本一致。

配置项 作用 常见取值逻辑
采样温度 控制生成多样性 0.7到1.2较常见;过高会因模型早期性能差而崩溃
采样数量 每个提示词生成多少条回复 GRPO建议2条以上;PPO至少2条
KL系数β 控制与参考模型的偏离惩罚 0.01到0.2,过大导致奖励难上升,过小则可能失真
裁剪范围 限制单步策略变化 0.1到0.3较常见
学习率 更新步长 通常低于监督微调阶段,可用1e-6到5e-6
批次大小 每次更新使用的提示词与回复数量 根据显存调整;较小批次会增加方差
最大生成长度 限制回复token数 根据任务目标设定,过长可能稀释有效学习信号

配置风险提示:

  • KL系数过大时,模型生成质量可能保持不变,但奖励不上升,训练看似无效。
  • 采样温度过低时,探索不足,优势估计方差可能变小,但模型容易只学会少量模式。
  • 裁剪范围过小会严重限制模型进步;过大则可能让模型偏离参考模型太远。

七、结果验证

训练过程中需要同时观察以下指标,而不是只看奖励是否上涨。

1. 奖励均值

如果奖励在稳步上升,说明策略确实在朝着奖励信号期望的方向变化。

2. KL散度

KL散度应缓慢上升但不宜失控。如果KL快速增加,说明模型在过度偏离参考模型,即便奖励上升也可能存在质量风险。

3. 回复长度

如果回复长度突然大幅增加或减少,可能意味着模型学习到了某种“奖励捷径”,例如通过重复内容或极端冗长输出获得更高奖励。

4. 人工抽检质量

奖励均值上升不代表实际体验变好。需要定期抽检生成结果,特别关注安全性、逻辑一致性、指令遵循度等维度。

5. 训练稳定性指标

观察梯度范数、损失曲线是否频繁尖峰。如果出现损失突然变大后无法恢复,应降低学习率或增加裁剪限制。

八、常见问题与排查

问题一:奖励上升,但生成质量下降

可能原因:

奖励信号与真实目标不一致,或者模型过度利用奖励模型的弱点。

排查思路:

  • 检查奖励函数的合理性;
  • 提高KL系数;
  • 增加人工抽检频率;
  • 在奖励中加入格式、安全等约束项进行修正。

问题二:PPO训练极慢

可能原因:

价值模型、参考模型、策略模型同时参与计算,显存与通信开销大。

排查思路:

  • 尝试减小采样数量或生成长度;
  • 评估是否可以改用GRPO,放弃独立价值模型;
  • 确认是否有多余的同步等待或模型重复加载。

问题三:GRPO训练不稳定,指标跳动大

可能原因:

组内采样数量不足,导致组内均值和方差估计不可靠。

排查思路:

  • 将每个提示词的采样回复数量提高到4条以上;
  • 降低学习率;
  • 适度扩大裁剪范围,减少单步极端更新。

问题四:KL散度接近零,但奖励不上升

可能原因:

模型几乎没有偏离参考模型,更新幅度被过分限制,或者奖励信号太稀疏。

排查思路:

  • 检查奖励是否只在极少数情况下给出正值;
  • 减小KL系数;
  • 增加采样多样性。

九、优化建议

1. 先跑通小规模实验

在正式大规模RLHF前,建议先在小模型或少量数据上验证流程闭环。重点确认:采样、奖励计算、KL惩罚、优势估计、策略更新、指标记录每个环节都能正常衔接。

2. 奖励信号要分层设计

单一奖励模型容易让策略走偏。建议将奖励拆分为多个维度,例如正确性、安全性、格式规范、语言流畅度等,再按权重汇总。这样即使某个维度被模型钻空子,其他维度仍能形成约束。

3. 保持参考模型更新策略可控

完全冻结参考模型可能导致后期策略偏离过大。可以在训练进入稳定阶段后,定期将当前策略模型复制为新的参考模型,但频率不宜过高,否则会削弱KL约束。

4. 优先关注稳定信号,而非单次最高奖励

模型训练的长期稳定,比短期奖励冲高更重要。建议为关键指标设置合理范围,一旦超出范围立即触发告警。

5. 保留中间模型并配合回滚机制

RLHF训练可能在某个阶段突然退化。建议按固定步数保存检查点,并保留回滚能力。当发现生成质量或安全性指标恶化到阈值以下时,可以回退到最后一次稳定检查点。

十、总结

PPO与GRPO并不是两个孤立的算法名称。它们解决的共同问题是:如何把“一条回复的整体好坏”细化成“每个token该被强化还是抑制”,并且在优化过程中保持模型不至于偏离太远。PPO依赖价值模型估计优势,GRPO则通过同一提示词的多条回复进行组内相对比较,省去了价值模型的维护。

理解这一流程的关键,不在于背公式,而在于把握几个核心环节:策略模型生成、奖励计算、KL约束、token级优势估计、受限更新。只要把这五步在训练框架中串起来,就能对“模型为什么越训练越会回答”以及“为什么有时越训练越差”形成清晰判断。对于工程团队而言,真正重要的工作不仅是实现算法,更是建立一套能够持续观察奖励、KL散度、生成长度和人工评价的验证机制,让强化学习训练始终处于可解释、可回滚、可优化的状态。