3、强化学习基础:马尔可夫决策过程、策略、奖励、价值函数、策略梯度
在深入 PPO 与 RLHF 的算法细节之前,必须先夯实强化学习的理论基石。大语言模型的“对齐”本质上是一个序贯决策问题:模型根据当前的上下文(状态)生成下一个 (动作),随后将新生成的 拼接到上下文中形成新的状态。这一过程天然符合马尔可夫决策过程(MDP)的建模框架。本章将系统梳理 MDP 的五元组定义、策略与奖励的设计逻辑、价值函数的估计方法,以及策略梯度定理的推导直觉。这些概念不仅是理解 PPO 截断目标函数的前提,更是后续设计 RLHF 奖励模型与 KL 散度约束的理论依据。
上图展示了强化学习各核心概念之间的逻辑关系:MDP 定义了问题框架,策略网络(即 LLM)负责产生动作,奖励信号提供学习反馈,价值函数用于评估当前状态或动作的长期收益,而策略梯度算法则利用这些信号更新策略参数。在 RLHF 场景中,我们通常使用 PPO 算法,其本质是一种基于策略梯度的 Actor-Critic 方法,其中 Actor 是生成模型,Critic 是价值网络。
3.1 马尔可夫决策过程:LLM 生成的形式化框架
马尔可夫决策过程(Markov Decision Process, MDP)是强化学习的数学基础。一个 MDP 由五元组 (S, A, P, R, γ) 定义。在 LLM 对齐场景中,这些元素有非常具体的对应关系:状态空间 S 是所有可能的 序列(包括 Prompt 和已生成的部分);动作空间 A 是词表 V 中的所有 ;状态转移概率 P(s'|s,a) 是确定性的——给定当前序列和选择的 ,下一个状态就是拼接后的新序列;奖励函数 R(s,a) 需要精心设计,通常由奖励模型(Reward Model)和 KL 散度惩罚项组成;折扣因子 γ 通常设为 1(因为序列长度有限,且我们不希望过度折扣远期 的影响)。
MDP 的核心假设是马尔可夫性质:当前状态包含了决定未来所需的所有历史信息。对于 LLM 而言,这意味着模型只需要关注当前的 序列,而不需要追溯更早的 Prompt 细节——因为所有历史信息都已编码在上下文中。这一性质使得我们可以将文本生成视为一个逐 的决策过程,从而使用强化学习算法进行优化。
3.2 策略与奖励:驱动模型行为的两个杠杆
策略 π(a|s) 定义了在状态 s 下选择动作 a 的概率。在 LLM 中,策略就是语言模型本身——它接收当前的 序列作为输入,输出词表上每个 的概率分布。在 RLHF 训练中,我们通常使用一个初始的 SFT(监督微调)模型作为策略的初始化,然后通过强化学习不断调整其参数,使得生成序列的期望奖励最大化。
奖励函数的设计是 RLHF 中最关键也最困难的部分。一个典型的奖励函数由两部分组成:
R(s, a) = R_RM(s, a) - β * KL(π_θ(·|s) || π_ref(·|s))
其中 R_RM 是奖励模型对当前状态-动作对的打分,β 是 KL 惩罚系数,π_ref 是参考策略(通常是 SFT 模型)。KL 散度项的作用是防止策略偏离参考模型太远,从而保持生成文本的流畅性和多样性。奖励模型通常基于人类偏好数据训练,能够对完整序列进行整体打分,但为了在 级别提供奖励信号,我们通常将序列级奖励分配到每个 上,或者使用密集奖励设计。
| 奖励类型 | 定义 | LLM 对齐中的应用 | 优缺点 |
|---|---|---|---|
| 稀疏奖励 | 仅在序列结束时给出奖励 | 整体回答质量评分 | 简单但学习效率低,难以定位问题 |
| 密集奖励 | 每个时间步都给出奖励 | 级 KL 惩罚 + 过程奖励 | 学习信号丰富,但可能引入噪声 |
| 基于偏好的奖励 | 由奖励模型从人类对比中学习 | RLHF 中的 RM 打分 | 能捕捉复杂人类偏好,但训练成本高 |
在 PPO 实践中,我们通常采用“序列级奖励 + 级 KL 惩罚”的混合方案。具体来说,当模型生成完整序列后,奖励模型给出一个整体分数,然后我们将这个分数均匀分配到每个 上,同时每个 位置减去该位置的 KL 散度值。这种设计既保证了全局优化方向,又提供了局部约束。
3.3 价值函数与优势估计:衡量“好”与“多好”
价值函数用于评估状态或状态-动作对的长期期望回报。状态价值函数 V(s) 表示从状态 s 开始,遵循当前策略所能获得的期望累积奖励;动作价值函数 Q(s,a) 表示在状态 s 采取动作 a 后,继续遵循策略所能获得的期望累积奖励。两者的差值 A(s,a) = Q(s,a) - V(s) 被称为优势函数,它衡量了相对于平均水平,采取某个特定动作的优势程度。
在 PPO 中,我们使用一个 Critic 网络(价值网络)来估计 V(s)。这个网络与 Actor 网络(策略网络)共享部分参数或完全独立。优势估计通常使用 Generalized Advantage Estimation(GAE)方法,它通过平衡偏差和方差来提供更稳定的优势信号:
A_t = δ_t + (γλ)δ_{t+1} + (γλ)²δ_{t+2} + ... + (γλ)^(T-t+1)δ_{T-1}
其中 δ_t = r_t + γV(s_{t+1}) - V(s_t)
λ 是 GAE 参数,控制偏差-方差权衡。当 λ=0 时,优势估计退化为一步 TD 误差,方差小但偏差大;当 λ=1 时,变为蒙特卡洛估计,偏差小但方差大。在 LLM 对齐任务中,由于序列长度通常为几百到几千个 ,我们倾向于使用中等大小的 λ(如 0.95),以平衡估计稳定性。
3.4 策略梯度定理与 PPO 的优化目标
策略梯度定理是强化学习中最核心的数学结论之一。它告诉我们,策略参数的梯度可以表示为期望形式:
∇J(θ) = E[∇_θ log π_θ(a|s) * A(s,a)]
这个公式的直觉是:如果一个动作的优势为正,我们就增加该动作的概率;如果优势为负,就降低其概率。梯度的大小由优势值加权,优势越大的动作,其概率调整幅度越大。然而,直接使用这个公式进行梯度更新存在两个问题:一是样本效率低,每次更新只能使用当前策略采样的数据;二是更新步长难以控制,可能导致策略剧烈震荡。
PPO(Proximal Policy Optimization)通过引入截断的替代目标函数解决了这些问题。其核心思想是限制每次更新的幅度,确保新策略与旧策略的差异不会太大:
L_CLIP(θ) = E[min(r_t(θ) * A_t, clip(r_t(θ), 1-ε, 1+ε) * A_t)]
其中 r_t(θ) = π_θ(a_t|s_t) / π_θ_old(a_t|s_t)
这里 r_t(θ) 是重要性采样比率,表示新旧策略在动作 a_t 上的概率比。clip 函数将比率限制在 [1-ε, 1+ε] 范围内(通常 ε=0.2),从而防止过大的更新。当优势为正时,我们限制比率不能超过 1+ε;当优势为负时,限制比率不能低于 1-ε。这种机制确保了策略更新在信任区域内进行,既保证了收敛性,又保持了样本效率。
3.5 案例拆解:从理论到 RLHF 训练的最小闭环
为了将上述概念串联起来,我们设计一个简化的 RLHF 训练场景。假设我们有一个 7B 参数的 SFT 模型作为初始策略,目标是让模型生成更符合人类偏好的回答。
初始状态: 我们收集了 10 万条 Prompt,每条 Prompt 对应 4 个不同模型生成的回答。人类标注者对这 4 个回答进行排序,得到偏好数据。我们使用这些数据训练了一个奖励模型 RM,其输入是 Prompt + 回答,输出是一个标量分数。
训练循环: 在每次 PPO 迭代中,我们从 Prompt 池中采样 512 条 Prompt,使用当前策略(LLM)生成回答。对于每个生成的序列,我们计算:
- 奖励模型打分:RM(prompt, response) → 标量
- 每个 位置的 KL 散度:KL(π_θ(·|s_t) || π_ref(·|s_t))
- 综合奖励:R_t = RM_score / T - β * KL_t(T 为序列长度)
- 使用 GAE 计算优势估计 A_t
- 计算截断目标 L_CLIP 和价值网络损失 L_V = (V(s_t) - R_t)²
关键参数设置: 学习率 1e-6(LLM 微调通常需要较小学习率),KL 系数 β 初始为 0.02,GAE 参数 γ=1.0, λ=0.95,PPO 截断 ε=0.2,每次迭代使用 4 个 epoch 的 mini-batch 更新。训练过程中监控两个关键指标:KL 散度值(应保持在 0.01-0.1 之间)和奖励模型打分(应逐步上升)。
结果与复盘: 经过 2000 步迭代后,我们发现奖励模型打分提升了 15%,但 KL 散度从 0.02 上升到 0.15,说明策略偏离参考模型过远。此时我们增大 β 到 0.05,KL 散度回落到 0.08,但奖励提升速度放缓。最终我们采用动态 KL 调整策略:当 KL 超过阈值时自动增大 β,低于阈值时减小 β。这种自适应机制在 PPO 中被称为 "Adaptive KL Penalty",是 RLHF 训练中非常实用的技巧。
3.6 常见误区与总结复盘
在强化学习基础概念的学习和实践中,有几个高频误区需要特别留意:
- 混淆状态价值 V 和状态-动作价值 Q: V(s) 是对状态的评估,不依赖于具体动作;Q(s,a) 是对动作的评估。在 PPO 中,我们只需要 V(s) 来计算优势,不需要显式估计 Q。有些实现错误地使用 V(s_{t+1}) 代替 Q(s_t, a_t),导致优势估计偏差。
- 忽略折扣因子 γ 的影响: 在 LLM 任务中,序列长度通常有限(几百到几千 ),γ=1 是合理选择。但如果任务涉及无限长对话,γ 必须小于 1 以保证累积奖励收敛。
- 奖励模型与策略共训练导致奖励黑客: 如果奖励模型与策略同时更新,策略可能找到奖励模型的漏洞,获得虚高分数。正确做法是冻结奖励模型参数,只更新策略。
- KL 惩罚系数 β 设置不当: β 过小导致策略偏离参考模型,生成质量下降;β 过大则抑制策略学习,奖励提升缓慢。建议使用自适应 KL 调整,目标 KL 值设为 0.02 左右。