RLHF 完整数学推导

分类: 预训练与微调 · 难度: 进阶 · 关联讲座: L08

RLHF 完整数学推导

本文整理从人类反馈中强化学习(RLHF)的完整数学框架,涵盖预训练 LM 与助手模型的目标差异、SFT 目标函数、Bradley-Terry 偏好建模、奖励模型训练,以及 PPO 优化目标。同时收录 InstructGPT 三阶段训练流水线的形式化描述。


1. 预训练 LM 与助手模型的目标差异

📐 预训练 LM 与助手模型的目标差异

预训练语言模型的目标:在给定任意前缀的情况下,预测最可能的下一个 token:

PLM(xt+1xt;θ)P_{LM}(x_{t+1} \mid x_{\leq t}; \theta)

这个目标对输入内容完全无偏——给定 “The sky is” 和给定 “How do I make a bomb? Answer:” 都一视同仁,只预测下一个最可能的 token。

助手模型的目标:给定用户请求 xx 和系统角色描述 rr,生成有帮助的回复:

Passistant(yx,r;θ)其中 y 最大化用户满意度P_{assistant}(y \mid x, r; \theta) \quad \text{其中 } y \text{ 最大化用户满意度}

两者的根本差异:LM 目标是描述性的(世界上的文本是什么样的),助手目标是规范性的(回复应该是什么样的)。这个差距——对齐问题(Alignment Problem)——是后训练(post-training)存在的根本原因。

2. SFT 目标函数

📐 SFT 目标函数

监督微调(Supervised Fine-Tuning) 与标准语言模型训练的区别仅在于损失计算的范围

JSFT(θ)=(xi,yi)DSFTt=1yilogPθ ⁣(yi(t)yi(<t),xi)J_{SFT}(\theta) = -\sum_{(x_i, y_i) \in D_{SFT}} \sum_{t=1}^{|y_i|} \log P_\theta\!\left(y_i^{(t)} \mid y_i^{(<t)}, x_i\right)

  • (xi,yi)(x_i, y_i):(指令 / 用户请求,示范回复)对
  • 只在回复 yiy_i 上计算损失,指令 xix_i 的 token 损失被 mask 掉(不参与梯度更新)
  • 这与标准 CLM 预训练的区别:SFT 的模型需要学的是”给定指令,生成好的回复”,而不是”给定任意前缀,续写任意文本”

数学上,SFT 等价于在条件分布 P(yx)P(y \mid x) 上做最大似然估计(MLE),以人类示范回复作为正样本。

3. RLHF 完整流程

📐 RLHF 完整流程的数学推导

Step 1:训练奖励模型(Reward Model)

收集人类偏好数据:对同一输入 xx,标注者标记哪个回复更好,形成偏好对 (yw,yl)(y_w, y_l)(winner, loser)。

基于 Bradley-Terry 偏好模型(人类选择 ywy_w 优于 yly_l 的概率):

P(ywylx)=σ(r(x,yw)r(x,yl))P(y_w \succ y_l \mid x) = \sigma(r(x, y_w) - r(x, y_l))

训练 RM 最大化偏好数据的对数似然(最小化负对数似然):

JRM=E(x,yw,yl)Dpref[logσ ⁣(rϕ(x,yw)rϕ(x,yl))]J_{RM} = -\mathbb{E}_{(x, y_w, y_l) \sim D_{pref}} \left[\log \sigma\!\left(r_\phi(x, y_w) - r_\phi(x, y_l)\right)\right]

Step 2:PPO 微调策略

最大化奖励,同时通过 KL 惩罚约束策略不偏离参考模型过远:

JPPO(θ)=ExD,yπθ(x) ⁣[rϕ(x,y)βlogπθ(yx)πref(yx)]J_{PPO}(\theta) = \mathbb{E}_{x \sim D,\, y \sim \pi_\theta(\cdot|x)}\!\left[r_\phi(x, y) - \beta \cdot \log\frac{\pi_\theta(y \mid x)}{\pi_{ref}(y \mid x)}\right]

其中 β[0.01,0.1]\beta \in [0.01, 0.1] 是 KL 惩罚系数,πref\pi_{ref} 是 SFT 模型(固定不更新)。

完整训练所需的模型数量:Policy(更新) + Reference(固定) + Reward(固定) + Value(更新)= 4 个模型同时在显存中,这是 PPO 内存开销大的根本原因。

4. InstructGPT 三阶段训练流水线

📐 InstructGPT 三阶段训练流水线

阶段 1 — SFT:在人工示范数据上监督微调,得到 πSFT\pi_{SFT}θSFT=argmaxθ(x,y)DSFTlogPθ(yx)\theta_{SFT} = \arg\max_\theta \sum_{(x,y)\in D_{SFT}} \log P_\theta(y \mid x)

阶段 2 — RM 训练:学习人类偏好排序,得到奖励函数 rϕ(x,y)r_\phi(x, y)ϕ=argminϕE(x,yw,yl)[logσ(rϕ(x,yw)rϕ(x,yl))]\phi^* = \arg\min_\phi -\mathbb{E}_{(x,y_w,y_l)}\left[\log\sigma(r_\phi(x,y_w) - r_\phi(x,y_l))\right]

阶段 3 — PPO:在 RM 的奖励下优化策略,约束不偏离 πSFT\pi_{SFT}θ=argmaxθEyπθ[rϕ(x,y)βKL(πθπSFT)]\theta^* = \arg\max_\theta \mathbb{E}_{y \sim \pi_\theta}\left[r_\phi(x,y) - \beta \cdot KL(\pi_\theta \| \pi_{SFT})\right]

关键结论(InstructGPT 论文原文数字)

在人类评测中,1.3B 参数 InstructGPT 优于 175B 参数 GPT-3(85% 的评测者偏好 InstructGPT 输出)。参数量相差 134 倍,但对齐使小模型胜出——说明行为对齐的收益远超单纯的模型规模