机器之心编译
强化学习已成为 LLM 后训练技术栈中最重要的技术之一。它是促成 GPT-3 向 InstructGPT 转变的关键要素。此后,它也成为当前这波推理能力提升浪潮的核心。
第一代针对 LLM 的强化学习以 PPO为主导。该方法最初为雅达利游戏和机器人等传统强化学习场景开发,后来极其成功地适配到了 RLHF 中。
在提升推理能力这一目标的驱动下,第二代方法带来了新一轮的算法演进。短时间内涌现了大量变体。多数变体与前代方法只有微小差异,但这些差异却产生了深远的影响。
本文简明扼要地概述了用于推理 LLM 的强化学习(2024 至 2026 年)的主要进展。文章将从基础知识(REINFORCE 和 PPO)讲起,随后探讨 GRPO 及其后续的改进与优化方法。
强化学习简介
举个具体的例子,机器人在房间内导航:状态是其当前位置和传感器读数,动作是移动指令,状态转移的动力学由物理规律决定(如车轮可能会打滑),而奖励则反映了其向目标推进的程度。
这个循环会持续 T 个时间步。智能体的目标是最大化期望的折扣回报
其策略通常由参数 θ 表示。许多强化学习算法中的一个核心概念是价值函数
它衡量了在策略 π 下处于状态 s 的好坏程度。由此,我们可以推导出优势,用于评估某个具体动作比预期更好还是更差。
人们依然可以对该环境进行建模。其中状态为「提示词加上之前生成的 token」,动作为下一个 token。但在实际操作中,通常无法为单个 token 分配有意义的奖励。我们只能在给定提示词的情况下,为完整的回复提供一个整体奖励。如果强行分配,除最后一个 token 外,所有 token 的奖励都将为零。这会让问题设定变得不必要地复杂。
REINFORCE
我们从 REINFORCE 开始讲起。它不仅在概念上很简单,同时也是所有策略梯度方法的基础。
在最简单的形式下,REINFORCE 的目标函数是:
该目标函数的梯度具有一种简单且易于解释的形式:
作为对比,监督微调的梯度为
(请注意,SFT 损失是最小化的,而强化学习目标是最大化的)。
这一对比表明,REINFORCE 本质上是一种带有权重的 SFT 形式。我们不再强化外部提供的异策略答案 y^*。相反,我们根据奖励对采样的同策略答案 y 进行加权,以此来强化或惩罚它们。
REINFORCE 的主要缺点是方差较大。即使奖励结构相对明确(例如一个大型测试套件中,每个测试项贡献部分奖励),不同样本之间的梯度估计值也可能存在巨大差异。
为了减小方差,REINFORCE 会减去一个与采样动作(回复)无关的基线 b(x)。这使得期望梯度保持不变,因为
同时这通常能大幅降低方差。此时梯度变为
数量 r(x,y)-b(x) 便是优势估计的最简单形式。
PPO
PPO (近端策略优化) 曾是占据主导地位的通用策略梯度算法。在过去几年里,它也是 RLHF 的默认选择。
PPO 的目标函数通常以一种看起来很复杂的形式呈现:
其中
有人可能会问:「对于同策略强化学习,这个值不应该始终为 1 吗?」答案是肯定的,但这仅限于生成推演数据后的第一个优化器步骤。
引入这个比例是因为推演数据的生成成本很高。在实际应用中,人们通常会将生成的一批数据重复用于多个微批次更新或多个轮次的训练。在第一个优化器步骤之后,训练策略就不再与生成策略完全一致了。因此,PPO 变得略微带有一些异策略的性质。该比例纠正了这种不匹配。同时,裁剪操作限制了优化过程偏离生成策略的程度。这是 PPO 对信任域的一种近似计算。
需要注意的是,裁剪不仅会影响目标函数的值,更重要的是会影响其对 θ 的依赖关系。由于我们通过优化 θ 来最大化 J,被裁剪的情况会产生零梯度,这是因为学习到的策略已不再是等式的一部分。由于此时已经超出了信任域,针对这些情况的更新将被跳过。
裁剪操作处理以下四种场景:
我们也可以将这种裁剪表达为一个掩码:
采用这种表达方式后,目标函数可简化为:
因此,PPO 本质上是一个带有信任域掩码、经过重要性加权的策略梯度方法。
对于优势估计,PPO 使用了广义优势估计器(GAE):
计算 δ 需要一个学习到的价值函数。在 LLM 的设定中,这通常需要一个额外的价值模型。其参数规模往往与策略模型相当。这会消耗大量内存,并增加训练的复杂性。由于移除这一组件正是 GRPO 的主要实际贡献,本文将不深入探讨 GAE 细节。关于 PPO 及其所有组件的深度解析,请参阅这篇详尽的文章。
最后,PPO 目标函数通常会结合 KL 正则化:
这里的 π_ref 通常是强化学习训练前的模型。在 RLHF 中,这一项尤为重要。它保留了模型的通用能力,并有助于控制相对于奖励模型的分布偏移(奖励模型是在参考策略 π_ref 上训练的)。在推理强化学习中,KL 惩罚项通常设置得非常小,甚至完全省略。
在其完整形式下,PPO 需要在内存中驻留四个庞大的组件:可训练策略、推演策略、参考策略以及价值模型。
GRPO
GRPO (组相对策略优化)最初在 DeepSeekMath 中提出,随后被 DeepSeek-R1 发扬光大。它移除了 PPO 的价值模型,取而代之的是一个相对组内的基线。
直观上来说,一条推演数据的基线不再是一个学习到的价值函数。相反,它是同一提示词下其他推演数据的表现。当奖励稀疏但在每个提示词下可以获得多个样本时,这种方法效果尤为显著。
GRPO 目标函数保留了 PPO 风格的裁剪重要性采样。在其最初的公式中,也包含了一个 KL 项:
组内归一化带来两个有用的效果。减去均值使得学习信号变为相对于当前提示词的信号。如果某个提示词的所有样本奖励都在 [0.8, 1.0] 之间,那么 0.8 的奖励含义,与所有样本奖励都在 [0.2, 0.8] 之间时截然不同。除以标准差则降低了对奖励尺度的敏感度。当组合具有不同奖励范围的任务时,这一点非常有用。
然而,GRPO 成功的更重要原因非常简单:它移除了 critic 模型。这大幅减少了内存占用,使得面向推理模型的大规模强化学习更容易运行。
RLOO
RLOO 从不同的方向得出了类似的结论:对于 LLM 微调场景,PPO 可能比实际需要的更复杂。
对于每个提示词,RLOO 会采样 K 个回复 {y_1, ..., y_K}。回复 y_i 的优势等于其奖励减去其他 K-1 个回复的平均奖励:
这个基线是无偏的,并且不需要学习额外的价值模型。与 GRPO 不同,RLOO 不会除以组内的标准差。
更重要的是,RLOO 放弃了 PPO 风格的裁剪,转而回到纯粹的 REINFORCE 风格更新。
RLOO 的目标函数为:
作者提出,在他们的实验中,这种裁剪机制仅在不到 5% 的情况下被激活。在这个场景下,它可能是不必要的。我们接下来会看到,后续的研究得出了不同的结论。
Dr. GRPO
DeepSeek 在其 DeepSeek-Math 和 R1 的论文中指出,随着强化学习训练的推进,回复长度大幅增加。他们将此归因于推理和反思能力的提升(即著名的「顿悟」时刻)。
尽管这可能是一个驱动因素,Dr. GRPO (意为「做对的 GRPO/GRPO Done Right」) 的作者们发现了另一个更重要的原因。标准的样本级损失归一化引入了一种偏置。这种偏置倾向于支持简短的正确回复以及冗长的错误回复。
在常见的 GRPO 实现中,token 损失首先在每个序列内取平均值,然后再跨序列取平均值。这意味着一个固定的序列级奖励会被均摊到序列中的所有 token 上。因此,如果回复正确,较长回复在每个 token 上受到的强化力度会更弱。如果回复错误,较长回复在每个 token 上受到的惩罚力度也会更弱。这可能会带来过度冗长的倾向。
修复方法很简单。Dr. GRPO 不再先除以序列长度再除以批次大小,而是除以一个固定常量(即最大 token 数)。这有效地消除了使得错误答案变得不必要冗长的激励因素。
Dr. GRPO 还移除了另一种会引入有害偏置的归一化操作。当每个提示词的奖励通过其标准差进行归一化时,如果某个提示词的所有答案都具有相似的奖励(例如,除了一个答案外其他全都正确,奖励方差很低),哪怕极其微小的奖励差异也会放大成巨大的归一化优势。结果就是,模型在那些已经基本回答正确的提示词上,可能会接收到极不相称的巨大更新。
Dr. GRPO 的优势估计简化为:
这里没有除以标准差。而且损失是在 token 级别通过固定归一化进行聚合,而不是先根据序列长度取平均值。
这里传达的实践意义在于,GRPO 在根本上并没有什么问题。只是其中一些看似无害的归一化操作并非中立。在长文本推理任务中,它们改变了哪些提示词和 token 会接收到梯度信号。
DAPO
DAPO (解耦优势策略优化) 对 GRPO 的多个组件进行了另一种深入分析,并提出了四项改进:
首先,DAPO 将样本级的均值计算替换为了基于 token 级别的聚合计算(这与 Dr. GRPO 类似。不过 DAPO 除以的是实际 token 数量,而 Dr. GRPO 使用的是常量)。
第二项改进针对的是裁剪机制。PPO 的对称比例裁剪对低概率 token 的限制尤为严格,甚至有些过度。例如,如果一个 token 的概率为 0.01,在 ε = 0.2 的情况下,其概率只能上升到 0.012 就会被裁剪。这几乎无法改变其被采样的可能性。这种机制会抑制模型学习那些罕见但有用的推理延续过程。
因此,DAPO 解耦了裁剪边界。它采用了一个更大的上界 ε_high = 0.28,同时保留了原有的下界 ε_low = 0.2(即非对称裁剪)。
结合 token 级别的聚合和非对称裁剪,DAPO 的目标函数变为:
另外两项改进并未修改目标方程,它们的作用在于提升单步训练效率。
第三项改变是超长奖励塑形。在许多设定中,被截断的回复与完全错误的回复会获得相同的奖励。这种做法充满了噪声。一条回复可能包含了主要正确的推理过程,但仍然因为长度限制而被截断。DAPO 在硬性截断之前增加了一个软性惩罚区域:
这创造了一个更明确的学习信号。因为略微超长的回复只会受到轻微的惩罚,而过度冗长的回复则会收到强烈的负面反馈。由此,模型能够学习到问题出在回复长度上。模型避免了将截断与彻底的任务失败混为一谈。
第四项改变是动态采样。如果某个提示词下采样的所有回复全部正确,或者全部错误,那么组内相对优势将全为零。该提示词将无法提供任何梯度贡献。在这种情况下,DAPO 会持续采样,直到每个提示词都出现了正负混合的结果。这确保了优化批次中的每个提示词都能提供学习信号。这种方法提升了单步效率。由于较难的批次可能需要更多的生成操作,它也可能会增加实际运行时间。
CISPO
CISPO (裁剪重要性采样策略优化)在 MiniMax-M1 报告中首次提出。它针对的是 PPO 风格裁剪的一个特定弱点:当一个 token 落在裁剪范围之外时,PPO 会完全阻断其梯度。
这种行为非常保守,有时甚至可以说是过度谨慎。那些经历了大幅概率波动的 token 往往正是对于学习推理行为最关键的 token。报告中提到,像「However」(然而)、「Recheck」(复核)、「Wait」(等等)和「Aha」(啊哈)这类词汇在基座模型中的概率很低,但它们却可以作为推理轨迹中的分叉点。
如果每当比例变得过大时,这些 token 就会被屏蔽,那么这种丢弃富含信息的梯度的做法将大大延缓学习进程。
因此,CISPO 将裁剪与梯度流进行了解耦。它不再以一种产生硬性掩码的方式来裁剪目标函数。相反,它仅裁剪重要性采样的权重,并对该权重应用停止梯度(stop-gradient)操作:
其中 sg(·) 表示停止梯度。
有趣的是,他们报告称只需使用并调节上边界裁剪项 ε_h。下边界 ε_l 则被设置为一个足够大的值,使其在实际中处于未激活状态。
这种公式化的表达既保留了重要性采样权重裁剪带来的降低方差的优势,同时又允许所有 token 的梯度正常反向传播。结果是带来了更稳定的训练过程,并且不会抑制对高信息量 token 的学习。在 MiniMax 的实验中,与 DAPO 相比,其单步训练效率实现了两倍的提速。
CISPO 可以看作是 PPO 风格掩码的一种软性替代方案。它保留了信任域的直觉理念,同时仅仅裁剪权重,从而避免了删掉整个更新的情况。
MaxRL
这一点非常重要。作者团队证明了
因此,最大似然的梯度实际上是 pass@k 梯度的无限调和混合,而不仅仅是 pass@1 的梯度。标准的强化学习仅仅保留了该展开式的第一阶项。
基于此,MaxRL 定义了一个受计算量索引截断的目标函数家族:
期望梯度与此目标相匹配的同策略估计器非常简单。给定某个提示词的 N 个推演结果,设 K 为成功推演的数量。接着,MaxRL 仅对这些成功轨迹的得分函数求均值:
对于截断至 T=N 的 MaxRL 目标函数,这个估计器是无偏的。它与 REINFORCE 的关键区别在于,在这种情况下,增加推演次数不仅能降低估计器的方差,同时也能使优化目标本身更好地逼近最大似然估计。
实证结果表明,MaxRL 提升了 pass@k 性能。与 GRPO 相比,它能更好地保留输出多样性,并在测试时算力扩展的效率上带来了巨大的收益。
在概念层面,这种方法同样颇具趣味。它将面向可验证任务的强化学习,重新构建为在不可微采样条件下的近似最大似然训练。
DPPO
相比于 DAPO 或 CISPO,DPPO (散度 PPO) 更加直接地重新审视了信任域问题。
它的核心批判点在于,PPO 仅仅基于采样 token 的概率比例进行裁剪。这种方式可能并不能很好地代表实际策略散度,对于那些罕见 token 尤其如此。这些 token 的概率可能发生了一个数量级的改变,但对全局分布的影响仍然微乎其微。
这种问题在训练与推理框架存在差异的情况下会被进一步放大。即使参数完全一致,在不同框架间,低概率 token 的概率比例也可能出现剧烈波动。反观总变差等散度度量指标,则要稳定得多。
因此,DPPO 用基于预估策略散度定义的信任域(TV 或 KL 散度)取代了基于比例的掩码。在整个词表上计算精确的完整散度代价极其高昂。不过实证研究表明,采用二元近似(仅比较采样的 token 在两种策略下的概率)或者 Top-K 近似方法都能取得不错的效果。
DPPO 的更新公式变为
其中 M_div 充当一个掩码,用于屏蔽那些预估散度超过阈值 τ 的更新。
从他们的实验中可以得出一个有趣的洞察:绝大部分的不稳定性仅由一小部分(不足 0.5%)的更新引起。这种情况发生在负样本将策略推得过远时。在他们的实验设定下,只要屏蔽这部分更新,就足以让训练变得稳定。
总而言之,DPPO 引出了一个关键问题,即我们在 LLM 领域究竟应该如何定义信任域。同时它也为这个问题提供了一种解答方案。
ScaleRL
ScaleRL 的重点并非在于发明一种全新的目标函数。它更侧重于探索在算力规模大幅扩张后,哪些设计选择依然至关重要。
该论文报告了超过 40 万 GPU 小时的消融实验。更重要的是,在评估不同方法时,他们通过拟合出类似 S 型的「性能与算力」曲线来进行分析。这完全不同于仅仅对比某一个单独的训练检查点。
这种分析框架非常有用,因为它把两个经常被混为一谈的变量分离开了:第一是方法在给定算力预算下性能提升的速度,第二是它最终达到瓶颈的位置。一种方法可能在低算力下表现强劲,但很快就进入了平台期;另一种方法可能上升缓慢,但最终能达到更好的渐近性能上限。
他们的主要发现包括:
ScaleRL 的价值体现于两个方面。其一是它进行了大规模的实证验证;其二是它厘清了性能提升曲线的形态,这涵盖了早期学习速度和渐近性能表现。
总结
下表总结了各方法之间的主要区别:
其中
纵观这些方法,我们可以发现几个反复出现的模式:
对于 LLM 训练而言,critic 模型似乎不再是必需项。自 PPO 之后,每一种方法都发现,诸如组均值、留一法或贪婪推演等更为简单的基线设定,不仅能够达到甚至超越学习到的价值函数效果,还能节省约 50% 的内存。在 LLM 的微调设定下,模型是从强大的预训练检查点起步,而非随机初始化。这似乎使得 PPO 的方差削减机制显得颇为多余。这并不意味着我们永远不会再见到价值模型。只不过,目前将其用作方差削减工具所付出的内存代价是不划算的。
标准差归一化往往会产生副作用。Dr. GRPO 和 MaxRL 都表明,将优势除以 σ 会使得模型过度关注那些几乎已经解决的问题。ScaleRL 的消融实验也证实了这一点。与 CISPO 和 GSPO (本文未涵盖,可能会在扩展阅读中介绍)相比,采用标准差归一化的 DAPO 在渐近性能上明显更低。
损失聚合绝非无关紧要的细节。Dr. GRPO 和 DAPO 指出,序列级奖励结合样本级均值的做法会扭曲每个 token 的学习信号。损失函数的规约是一个关键环节。不当的选择可能会引入不易察觉的偏置。
信任域是一个极佳的优化切入点。PPO 对信任域的定义(ε = 0.2)似乎恰到好处,它在各种模型和任务上都有良好的表现。然而,最近许多新方法将目光对准了信任域,并展示了更优的性能。DAPO 放宽了非对称限制。CISPO 选择裁剪权重,从而避免对梯度设置硬掩码。DPPO 则提出,采样 token 概率比值一开始就不是应当约束的正确对象。目前学术界尚未对信任域得出一个普遍认可的优秀定义,而且可能根本不存在适用于所有任务和模型的统一标准。该领域的深入研究有望带来持续的突破。
一份初步的最佳实践正在成型。目前最有说服力的大规模证据指向了一些共同的特征:无 critic 模型训练、感知 token 或感知提示词的损失聚合、更柔性或更具原则性的信任域处理机制,以及对课程学习和算力分配日益明确的关注。尽管这是实打实的进步,但随着新方法或新细节的引入,这一现状随时可能被颠覆。
开放挑战
尽管进展神速,但仍有几个根本性挑战尚未解决。本节的参考文献可能并不完整,如果您认为我有遗漏,请随时与我联系。
信用分配机制。现有的基于结果的方法本质上是将相同的奖励分配给回复中的所有 token。这种方式出人意料地有效,且易于实现,但效率显然很低。导致推理失败的那个关键 token 接收到的信号,与其周围无关紧要的模板化词汇完全相同。目前,过程奖励模型、步骤级验证器、基于搜索的方法以及对分支敏感的训练目标都在试图解决这个问题。由于技术尚未收敛,还没有任何一种方案成为标准的解决之道。
样本效率。众所周知,强化学习中的信息增益仅仅只有一个比特(对或错)。当前大多数训练配方依赖于为每个提示词生成多个推演结果(通常是 8 到 64 个)来构建有效的相对基线。即便拥有自动验证器,这种做法的代价依然高昂。而在验证成本很高或需要部分人工介入的情况下,情况则会进一步恶化。更好地重复利用失败样本、优化离线与在线数据的混合比例,或是改进提示词选择策略,都有望大幅降低这一成本。
极具挑战的难题。如果模型始终无法对某个提示词生成正确的推演结果,那么本文提到的所有方法都无法提供任何梯度。课程学习在实践中有所帮助,但这仅仅是权宜之计。从部分正确的轨迹中提取信号的更强方法,或者将搜索与强化学习相结合的机制,依然是重要的研究方向(这与信用分配机制息息相关)。
向数学与代码领域之外的拓展。最近几乎所有的突破都源于那些验证成本低廉且对错分明的领域(即数学和代码)。将这些方法扩展到伴随噪声奖励、延迟奖励、主观评估或是多轮交互的场景,依然是一项艰巨的任务。
实证结果的可靠性。在这些开放性挑战中,也许最容易被低估的一个问题在于,该领域的大部分证据仍停留在实证层面,适用范围相对狭窄,且复现成本高昂。许多论文仅仅测试了单一模型家族、单一验证器设定、单一数据集组合以及固定的算力预算。正如 ScaleRL 所指出的,一种人为干预措施可能会改变早期学习速度,也可能会影响渐近性能,或者对两者都有影响。但这两种提升指标不可互相替代。因此,我们对该领域的实际了解,或许远少于表面上看起来的程度。部分方法可能是稳健的算法层面改进;另一部分方法或许只适用于特定的模型、奖励设计或训练机制。它们都有其价值所在。问题在于,我们必须清楚其各自的局限性。
这些挑战引出了一个更宏观的结论。缺乏可用的算法,已经不再是阻碍大语言模型强化学习发展的瓶颈所在。目前我们已经掌握了好几种优秀的算法。更为棘手的问题在于效率、鲁棒性以及泛化能力。与此同时,我们需要弄清楚,在模型规模扩展和跨任务迁移的过程中,哪些实证改进是真正能够留存下来的。