第 5 课 · RLHF

RLHF 三阶段:把策略梯度接进 LLM

RL → GRPO 课程 · 第 5/12 课 · 预计 16 分钟 · ← 上一课 · 速查卡

第 4 课推出了 $\nabla_\theta J=\mathbb{E}[\sum_t\nabla_\theta\log\pi_\theta(a_t|s_t)\,A]$,但没说 $A$ 里的奖励 $r$ 从哪来。这课回答它:RLHF 的三阶段流水线,把人类的“这个回答更好”变成一个可求导的标量 $r$,再喂给第 4 课的公式。本课重新推导——你将看到第 4 课的公式几乎原样复用,只是奖励换了来源、多了一个 KL 锚。

复习锚点(你上节自评“把握一般”):本课会再次出现 $\nabla_\theta\log\pi_\theta$ 和优势 $A$。看到它们时,顺手对照 速查卡——这是用应用场景“再踩一次”公式,帮你把地基踩实。

一、为什么需要 RLHF:对齐问题

预训练模型会预测下一个 token,但它不知道人类想要什么样的回答——可能啰嗦、有害、答非所问。监督微调(SFT)能用示范数据缓解,但:

RLHF 的思路:让人比较回答好坏 → 学一个奖励函数 → 用第 4 课的公式把策略往高奖励方向调。三阶段如下。

二、三阶段总览(点任一阶段看产物)

SFT 监督微调 RM 奖励模型 PPO 第4课公式 π* 对齐模型
每一阶段产出一个东西喂给下一阶段。
选一个阶段:点上方圆圈或下方按钮。

三、阶段 3 的目标函数:相对第 4 课只多一项

第 4 课目标是 $\max_\theta \mathbb{E}_{\tau\sim\pi_\theta}[G]$。RLHF 把奖励换成 RM 的输出,并加一个 KL 锚(不让 $\pi_\theta$ 跑离 SFT 模型 $\pi_{\text{ref}}$):

$$ J_{\text{RLHF}}(\theta) \;=\; \mathbb{E}_{x\sim\mathcal{D},\, y\sim\pi_\theta(\cdot|x)}\!\Big[\, r_\phi(x,y) \;\Big] \;-\; \beta\,\mathbb{KL}\!\big(\pi_\theta(\cdot|x)\,\big\|\,\pi_{\text{ref}}(\cdot|x)\big) $$

其中 $r_\phi$ 是阶段 2 学出的奖励模型(参数 $\phi$),$\beta$ 控制“追奖励 vs 别跑偏”的权衡。$x$ 是 prompt,$y$ 是生成的回答。

关键一对照:对这个新目标求梯度,得到的更新式是 $$ \theta \;\leftarrow\; \theta + \alpha\,\nabla_\theta\log\pi_\theta(a|s)\,A,\qquad A = \underbrace{r_\phi(x,y) - \beta\log\frac{\pi_\theta(y|x)}{\pi_{\text{ref}}(y|x)}}_{\text{有效奖励 }r_{\text{eff}}} - V $$ 形式和第 4 课完全一样——只是 $A$ 里的奖励 $r$ 换成 $r_\phi$,并多了一项 $-\beta\log\frac{\pi}{\pi_{\text{ref}}}$(KL 罚)。公式没变,变的是“奖励哪来”和“加个锚”。

“魔法恒等式” $\mathbb{E}[\nabla\log\pi]=0$ 在这里仍保证基线 $V$ 可加可减、不偏梯度——这就是为什么阶段 3 能直接套第 4 课结论。(细节见 速查卡。)

四、代码演示:KL 锚把 π 往回拉

复用第 4 课的 3-臂老虎机,奖励 $r=[0.9,0.4,0.1]$ 现在当作奖励模型输出,$\pi_{\text{ref}}=$ 均匀分布(SFT 基线)。拖 $\beta$ 滑块:$\beta=0$ 退化为第 4 课(π(动作1)→0.95);$\beta$ 越大,KL 越把 π 拉回均匀。

第 4 课第 5 课(RLHF)新增
$\theta\!+\!=\!\alpha\nabla\log\pi\,A$奖励来源 $r\to r_\phi$(RM);加 $-\beta\log\frac{\pi}{\pi_{\text{ref}}}$(KL 罚)


本地运行:python lessons/code/0005_rlhf_stage3_skeleton.py(零依赖,已验证)。

五、自测

问题 1:RLHF 阶段 3 相对第 4 课的策略梯度,改了什么?

问题 2:KL 罚项 $\beta\,\text{KL}(\pi_\theta\|\pi_{\text{ref}})$ 的作用是?

六、推荐资源

InstructGPT 论文第 3 节(Method)。它就是 RLHF 三阶段的标准出处,本课结构与之完全对应。也可看 Spinning Up · Part 3 收尾,确认你已能读懂它。

提问邀请:本课用应用再踩了一次第 4 课公式。现在再自评一下这三点,比上节课是否清楚了些:
(1) $\nabla p=p\,\nabla\log p$;(2)$\mathbb{E}[\nabla\log\pi]=0$ 为何能加基线/丢过去奖励;(3)为什么 RLHF 的更新式和第 4 课“一字不差”。若仍“一般”,第 6 课前我会插一次专项补强。

这是第 5 课。下一课预告:第 6 课 · 奖励建模——拆开阶段 2:用 Bradley-Terry 模型从人类偏好 A≻B 学出 $r_\phi(x,y)$,配可运行代码。

任何不懂的,直接问老师。