简介:本教程面向开发者与技术负责人,系统梳理面向大模型推理能力的强化学习算法演进脉络。从强化学习基础概念与策略梯度出发,逐步讲解经典算法、分组相对策略优化及其后续改进思路,帮助读者理解各代算法的设计动机、核心差异与工程落地要点,并给出选型、验证与优化建议。
本教程要帮助读者完成一件具体的事:理解并掌握面向大语言模型(LLM)推理能力提升的强化学习算法演进路径,能够在自己的后训练流程中判断该选用哪一类算法、为什么这样选、以及如何落地与验证。
强化学习已成为 LLM 后训练技术栈中最重要的环节之一。它是促成早期指令遵循模型替代纯预训练模型的关键要素,也是当前这一波推理能力提升浪潮的核心驱动力。本教程将从最基础的策略梯度方法讲起,逐步过渡到分组相对策略优化及其后续改进,力求让读者建立一条完整的认知链路,而不是零散地记住几个算法名字。
适合读者:
前置知识: 建议读者具备概率论与微积分基础、了解梯度下降与反向传播、对 Transformer 结构和自回归生成有基本认识。若熟悉监督微调(SFT)流程,理解会更顺畅。
本教程所涉及的算法体系,主要适用于以下技术场景:
需要注意,本教程讨论的是通用方法论,不绑定任何特定平台或工具。不同云厂商、不同训练框架都可能有各自的实现,但算法思想是相通的。
在动手实践之前,建议完成以下准备:
如果你对强化学习完全陌生,建议先补一遍经典教材中关于策略梯度的章节,再回到本教程。
在标准强化学习设定中,智能体在时间步 (t) 观察状态 (st),根据策略 (\pi) 选择动作 (a_t),环境依据动力学 (P) 转移到新状态 (s{t+1}),并给出奖励 (r_t)。
举个直观例子:一个机器人在房间内导航。状态是它的位置和传感器读数,动作是移动指令,状态转移由物理规律决定(比如车轮可能打滑),奖励则反映它向目标推进的程度。这个循环持续 (T) 个时间步,智能体的目标是最大化期望折扣回报:
[
J(\theta) = \mathbb{E}\left[\sum_{t=0}^{T} \gamma^t r_t\right]
]
其中折扣因子 (\gamma) 控制未来奖励的折算程度。策略由参数 (\theta) 表示。许多算法中的核心概念是价值函数 (V^\pi(s)),它衡量在策略 (\pi) 下处于状态 (s) 的好坏程度。由此可以推导出优势函数 (A^\pi(s,a)),用于评估某个具体动作比预期更好还是更差。
对 LLM 而言,这个设定通常被大幅简化。我们有一个参数化模型 (\pi_\theta),给定从数据集中采样的提示词 (x),模型采样生成回复 (y),然后用一个标量奖励 (r(x,y)) 对其进行评分。目标函数变为:
[
J(\theta) = \mathbb{E}{x \sim D,\, y \sim \pi\theta(\cdot|x)}\left[r(x,y)\right]
]
理论上我们仍可以逐 token 建模:状态是「提示词加上已生成的 token」,动作是下一个 token。但在实际操作中,通常无法为单个 token 分配有意义的奖励——我们只能在给定提示词的情况下,为完整回复提供一个整体奖励。如果强行分配,除最后一个 token 外,所有 token 的奖励都将为零,这会让问题设定变得不必要地复杂,也会让信用分配(credit assignment)变得极其困难。
因此,LLM 强化学习的核心挑战可以概括为:在只有序列级奖励的前提下,如何把奖励合理地分配给每一步生成动作。
REINFORCE 不仅概念简单,而且是所有策略梯度方法的基础。在最简单的形式下,其目标函数为:
[
J(\theta) = \mathbb{E}{y \sim \pi\theta(\cdot|x)}\left[r(x,y)\right]
]
其梯度具有一种简单且易于解释的形式:
[
\nabla\theta J(\theta) = \mathbb{E}\left[r(x,y) \cdot \nabla\theta \log \pi_\theta(y|x)\right]
]
这个公式的含义是: 如果某条回复获得了正奖励,就提高生成它的概率;如果获得负奖励,就降低其概率。梯度方向由「奖励 × 对数概率的梯度」决定。
作为对比,监督微调的梯度是:
[
\nabla\theta J{\text{SFT}}(\theta) = \mathbb{E}\left[\nabla\theta \log \pi\theta(y^*|x)\right]
]
区别在于:SFT 只关心「正确答案」的概率提升,而 REINFORCE 关心的是「高奖励样本」的概率提升,且提升幅度与奖励大小成正比。
为什么先讲 REINFORCE? 因为后续几乎所有算法都可以看作对它的改良。REINFORCE 的三大痛点——方差大、样本效率低、无法利用负样本——正是后续算法要解决的核心问题。
第一代针对 LLM 的强化学习以 PPO(近端策略优化)为主导。该方法最初为雅达利游戏和机器人等传统强化学习场景开发,后来极其成功地适配到了 RLHF 中。
PPO 的核心思想是:限制每次策略更新的幅度,避免新策略偏离旧策略太远导致训练崩溃。它通过引入重要性采样比率:
[
\rhot = \frac{\pi\theta(at|s_t)}{\pi{\theta_{\text{old}}}(a_t|s_t)}
]
并配合裁剪操作,把目标函数写成:
[
L^{\text{CLIP}}(\theta) = \mathbb{E}\left[\min\left(\rho_t A_t,\ \text{clip}(\rho_t, 1-\epsilon, 1+\epsilon) A_t\right)\right]
]
其中 (A_t) 是优势估计,通常由价值网络估计得到。
在 LLM 场景中落地 PPO 需要准备:
注意点: 价值模型的引入显著增加了显存和计算开销,在 LLM 这种超大模型上尤其明显。这为后续「去价值模型化」的算法演进埋下了伏笔。
在提升推理能力这一目标的驱动下,第二代方法带来了新一轮的算法演进。短时间内涌现了大量变体,多数变体与前代方法只有微小差异,但这些差异却产生了深远的影响。
这一代算法的核心思路是:用「同组样本之间的相对比较」替代「绝对价值估计」。具体做法是:
为什么这样设计更高效?
配置说明: 组大小是一个关键超参数。组太小,归一化不稳定;组太大,采样成本高。常见取值在 4 到 16 之间,具体取决于任务难度和算力预算。
在基础的分组相对优化之上,后续改进主要围绕以下几个方向展开:
这些改进看似微小,但在大规模训练中往往决定了算法能否稳定收敛。
训练完成后,可以从以下几个维度验证效果:
问题一:奖励上升但下游评测不涨。
原因通常是奖励模型被「过优化」,模型学会了讨好奖励模型而非真正提升能力。解决思路是加强 KL 约束、引入更多样化的奖励信号、或定期用人工评估校准。
问题二:训练早期就崩溃。
可能是学习率过大、裁剪范围过宽或组内归一化不稳定。建议先调小学习率,检查组大小是否过小,并观察梯度范数。
问题三:显存不足。
如果是 PPO 路线,可考虑减少价值模型规模或改用分组相对优化路线;同时可启用梯度检查点、混合精度等手段。
问题四:生成结果长度失控。
推理任务中模型容易通过「啰嗦」来骗取奖励。需要在奖励设计中加入长度惩罚,或在数据层面做长度归一化。
问题五:组内奖励全相同,优势为零。
说明任务对当前策略太简单或太难,梯度信号消失。可提高采样温度、增加组大小,或筛选难度适中的提示词。
从工程落地角度,给出以下通用建议:
本教程从强化学习的基础设定讲起,依次梳理了 REINFORCE、PPO 以及分组相对策略优化及其后续改进的演进逻辑。核心脉络可以概括为:
对于希望在自己的后训练流程中落地强化学习的团队,建议先从分组相对优化路线入手,在中小规模上验证奖励设计和超参数,再逐步放大。后续可继续关注信用分配、多奖励融合、离线在线混合等方向的进展。