简介:本文面向对LLM强化学习仍感到抽象的技术读者,以教程方式拆解PPO与GRPO在“逐token优化”中的工作流程。文章涵盖从RLHF目标、策略模型与参考模型的作用,到采样、优势估计、策略更新和结果验证的完整链路,帮助开发者真正理解“从一条回复到每个token的强化学习”是如何发生的,并掌握实施前的前置准备、关键配置、常见问题排查与优化思路。
本教程的目标是:让已经了解大语言模型基础训练流程,但在面对PPO与GRPO时仍觉得“公式能看懂、落不了地”的读者,真正理解这两类算法在LLM强化学习中的工作机制。读完本文后,你应当能够:
本文适合大模型训练工程师、算法工程师、技术负责人,以及希望从原理上理解LLM对齐过程的开发者阅读。文中不绑定任何特定训练平台或深度学习框架,重点放在通用概念与实施思路上。
以下场景都适合系统理解PPO与GRPO:
在进入PPO与GRPO之前,建议先具备以下基础:
你应当已经有一个完成预训练和指令微调的模型。该模型能够生成结构合理的回复,但在风格、安全、推理深度等方面尚未完全贴合人类偏好。
RLHF需要奖励信号。奖励信号可以来自:
如果是GRPO这类算法,它对奖励来源的要求相对宽松,可以直接使用规则奖励或模型奖励,不需要额外维护一个与策略模型同规模的价值模型。
读者应了解以下概念:
不过,即使对这些概念不熟悉,本文也会在步骤中逐步解释。
需要具备分布式训练能力,因为LLM强化学习通常涉及多个模型副本。同时要准备好日志与指标监控,以便观察奖励均值、KL散度、策略更新幅度等关键信号。
RLHF的直观目标,是让模型生成的回复整体更符合人类偏好。最朴素的方法是:对一条回复打一个总分,然后用这个总分去强化或抑制整条回复。但这样会带来明显问题。
假设回复是:
“今天天气不错。我不太确定这个答案是否正确。”
如果整条回复只得到一个正奖励,模型可能会同时加强对“今天天气不错”和“我不太确定”两个部分的生成倾向。但后半句显然不是我们希望强化的对象。更合理的机制是:把奖励分配到每个token上,识别出哪些token对最终奖励有贡献,哪些token应当被抑制。
这就是“从一条回复,到每个token的强化学习”的核心动机。PPO与GRPO虽然实现方式不同,但都遵循这一基本思路:
下面按照RLHF训练的一般顺序展开,覆盖PPO与GRPO的共性阶段,并对两者差异进行说明。
要做什么:
为什么这样做:
如果只使用奖励信号更新策略模型,模型很可能通过“讨好奖励模型”或“输出极端内容”来提高奖励,而不是真正提升回答质量。参考模型提供了一个锚点。训练时计算策略模型与参考模型在输出分布上的KL散度,并将其作为惩罚项加入目标函数。
实施注意事项:
要做什么:
使用策略模型对一批提示词生成回复,每个提示词可以生成多条回复。
为什么这样做:
强化学习需要“探索”。如果只生成一条回复,策略模型看到的状态和动作覆盖有限,难以有效估计优势。多条采样可以提升训练信号的稳定性。
生成配置建议:
要做什么:
先为每条完整回复计算一个标量奖励。奖励可以来自规则、奖励模型或两者组合。
然后,将标量奖励分配到每个token位置。一个常见做法是:只在回复末尾放置实际奖励,其他位置的即时奖励为零。接着为每个token位置计算KL惩罚。
KL惩罚的通用形式:
对于每个token位置,比较策略模型与参考模型在该位置的输出分布。差距越大,惩罚越大。训练目标可以概括为:
最大化 E[奖励 - β × KL(策略 || 参考)]
其中β控制偏离惩罚的强度。
为什么这样做:
将奖励放在末尾,是因为很多任务只有在完整回复结束后才能判断好坏。KL惩罚则逐token计算,因为模型在整个生成过程中都可能逐渐偏离参考分布。
要做什么:
将包含KL惩罚的逐token回报转化为优势估计。
PPO的做法:
PPO通常依赖一个价值模型。价值模型尝试预测每个状态下的期望回报。优势函数可以近似为:
优势 = 实际回报 - 价值模型预测值
或者使用GAE等方式进行更平滑的估计。价值模型与策略模型同步更新,但通常结构较小或共享部分参数。
GRPO的做法:
GRPO不再维护单独的价值模型。它在一个提示词的多条回复之间做相对比较。例如,对一个提示词采样4条回复,计算每条回复的奖励,然后求均值和标准差。某条回复中每个token的优势可以用该回复奖励的相对位置来表示:
优势 = (回复奖励 - 组内均值) / 组内标准差
这种做法降低了计算和显存开销,同时天然形成了一种相对比较机制。
为什么这个差异重要:
PPO的优势估计依赖于价值模型的准确性。价值模型训练不好,优势信号会有偏。GRPO通过组内比较绕开了价值模型,但要求每个提示词至少采样两条以上回复,否则无法计算组内统计量。
要做什么:
基于token级优势信号,对策略模型进行梯度更新。
PPO的更新方式:
PPO使用裁剪机制。对于每个token位置,计算新旧策略概率比:
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散度应缓慢上升但不宜失控。如果KL快速增加,说明模型在过度偏离参考模型,即便奖励上升也可能存在质量风险。
如果回复长度突然大幅增加或减少,可能意味着模型学习到了某种“奖励捷径”,例如通过重复内容或极端冗长输出获得更高奖励。
奖励均值上升不代表实际体验变好。需要定期抽检生成结果,特别关注安全性、逻辑一致性、指令遵循度等维度。
观察梯度范数、损失曲线是否频繁尖峰。如果出现损失突然变大后无法恢复,应降低学习率或增加裁剪限制。
可能原因:
奖励信号与真实目标不一致,或者模型过度利用奖励模型的弱点。
排查思路:
可能原因:
价值模型、参考模型、策略模型同时参与计算,显存与通信开销大。
排查思路:
可能原因:
组内采样数量不足,导致组内均值和方差估计不可靠。
排查思路:
可能原因:
模型几乎没有偏离参考模型,更新幅度被过分限制,或者奖励信号太稀疏。
排查思路:
在正式大规模RLHF前,建议先在小模型或少量数据上验证流程闭环。重点确认:采样、奖励计算、KL惩罚、优势估计、策略更新、指标记录每个环节都能正常衔接。
单一奖励模型容易让策略走偏。建议将奖励拆分为多个维度,例如正确性、安全性、格式规范、语言流畅度等,再按权重汇总。这样即使某个维度被模型钻空子,其他维度仍能形成约束。
完全冻结参考模型可能导致后期策略偏离过大。可以在训练进入稳定阶段后,定期将当前策略模型复制为新的参考模型,但频率不宜过高,否则会削弱KL约束。
模型训练的长期稳定,比短期奖励冲高更重要。建议为关键指标设置合理范围,一旦超出范围立即触发告警。
RLHF训练可能在某个阶段突然退化。建议按固定步数保存检查点,并保留回滚能力。当发现生成质量或安全性指标恶化到阈值以下时,可以回退到最后一次稳定检查点。
PPO与GRPO并不是两个孤立的算法名称。它们解决的共同问题是:如何把“一条回复的整体好坏”细化成“每个token该被强化还是抑制”,并且在优化过程中保持模型不至于偏离太远。PPO依赖价值模型估计优势,GRPO则通过同一提示词的多条回复进行组内相对比较,省去了价值模型的维护。
理解这一流程的关键,不在于背公式,而在于把握几个核心环节:策略模型生成、奖励计算、KL约束、token级优势估计、受限更新。只要把这五步在训练框架中串起来,就能对“模型为什么越训练越会回答”以及“为什么有时越训练越差”形成清晰判断。对于工程团队而言,真正重要的工作不仅是实现算法,更是建立一套能够持续观察奖励、KL散度、生成长度和人工评价的验证机制,让强化学习训练始终处于可解释、可回滚、可优化的状态。