为什么 SFT 之后还要 RLHF#
SFT 用“标准答案”训练模型,但很多问题没有唯一正确答案。同一句回答可以更简洁、更礼貌、更诚实,也可以更有用;SFT 无法表达“哪个更好”这种相对偏好。
人类反馈的强化学习(Reinforcement Learning from Human Feedback, RLHF)用人类偏好训练一个奖励模型,再用强化学习优化语言模型。目标通常概括为 3H 原则:
- Helpful:回答有帮助,真正解决用户问题;
- Honest:不编造、不误导,承认不确定性;
- Harmless:不产生有害、歧视或危险内容。
RLHF 的优势是能评估整段回答的质量和风格,而不仅是逐 token 的似然;代价是流程复杂、训练不稳定,且需要大量偏好标注。
把生成看作强化学习#
语言模型生成回答可以写成一个序列决策过程:
- 状态 st:提示词加上已经生成的前缀;
- 动作 at:下一个 token;
- 策略 πθ:语言模型本身;
- 奖励 r(x,y):整段回答结束后由奖励模型给出的分数。
设提示为 x,回答为 y=(y1,…,yT)。RLHF 的目标是最大化奖励,同时限制新策略不要偏离参考模型太远:
πθmaxEx∼D,y∼πθ(⋅∣x)[r(x,y)]−βKL(πθ(⋅∣x)∥πref(⋅∣x))πref 通常是 SFT 后的模型,β 控制 KL 惩罚的强度。没有 KL 约束时,策略会钻奖励模型的空子(reward hacking),生成奖励高但人类并不喜欢的文本。
实际实现常把 KL 惩罚分摊到每个 token 的奖励中:
r~t=−βlogπref(yt∣x,y<t)πθ(yt∣x,y<t)最后一个 token 再加上奖励模型的分数。这样每个生成步骤都有即时反馈,便于用 PPO 优化。
奖励模型#
奖励模型(Reward Model, RM)把“人类更喜欢哪个回答”学成一个可打分的函数。
数据收集#
对同一个提示,让模型生成两个回答,由标注者判断哪个更好。数据形式为 (x,yw,yl),其中:
- x:提示;
- yw:更受偏好的回答;
- yl:较差的回答。
标注时通常只保留偏好明确的样本,排除平局。
模型结构#
从 SFT 模型初始化,去掉最后的词表输出层,换成一个输出标量的线性头。输入 x 和回答 y,取最后一个 token 的隐藏状态,输出奖励 rϕ(x,y)。
损失函数#
采用 Bradley–Terry 模型,假设偏好概率由奖励差的 sigmoid 决定:
P(yw≻yl∣x)=σ(rϕ(x,yw)−rϕ(x,yl))训练目标是最小化负对数似然:
LRM=−E(x,yw,yl)logσ(rϕ(x,yw)−rϕ(x,yl))奖励模型的输出只有相对大小有意义,绝对数值并不重要。它也可能被策略“攻破”:策略找到得分高但实际质量差的模式,因此需要 KL 约束和持续的人工评估。
PPO 的训练流程#
PPO(Proximal Policy Optimization)是一种策略梯度方法,核心是用重要性采样复用旧策略采到的数据,并限制新旧策略的差异。完整推导见 PPO,这里只看它在 RLHF 中的用法。
RLHF 同时维护四个模型:
| 模型 | 作用 |
|---|
| 策略模型 πθ | 生成回答,被优化 |
| 评论模型 Vψ | 估计状态价值,计算优势 |
| 奖励模型 rϕ | 给完整回答打分 |
| 参考模型 πref | 计算 KL,约束策略偏移 |
1. 环境采样#
从数据集中取提示 x,用当前策略生成回答 y,奖励模型给出 r(x,y),同时计算每个 token 相对参考模型的 KL 惩罚。
2. 优势估计#
评论模型估计每个状态的价值 Vψ(st)。时序差分误差为
δt=r~t+γVψ(st+1)−Vψ(st)GAE(Generalized Advantage Estimation)对多步 TD 误差做指数加权:
A^t=l=0∑T−t(γλ)lδt+lλ=0 时退化为单步 TD,偏差大、方差小;λ=1 时接近蒙特卡洛,方差大、偏差小。λ∈(0,1) 在两者之间折中。
3. 优化策略#
设新旧策略的概率比为
ρt(θ)=πθold(yt∣st)πθ(yt∣st)PPO 的裁剪目标为
Lclip(θ)=−Et[min(ρtA^t,clip(ρt,1−ϵ,1+ϵ)A^t)]当优势为正时,提高该动作概率;当优势为负时,降低概率。裁剪项阻止 ρt 偏离 1 太远,避免一次更新把策略带崩。
评论模型用均方误差拟合回报:
LV=Et[(Vψ(st)−R^t)2]总损失通常是策略损失、价值损失和熵奖励的加权和:
L=Lclip+c1LV−c2H(πθ)熵奖励鼓励探索,防止策略过早坍塌到单一回答模式。
4. 迭代#
用收集到的轨迹更新策略和评论模型若干轮,然后重新采样。由于策略在变,旧数据只能有限次复用,这也是 PPO 数据效率不高的原因。
难点与改进#
- 显存开销:四个模型同时存在,策略和评论通常还要各自保存优化器状态,70B 级别模型的 RLHF 成本很高;
- 训练不稳定:奖励、KL、优势的尺度都会影响收敛,需要仔细调参;
- 奖励劫持:策略可能利用奖励模型的漏洞,生成高分低质内容;
- 标注成本:高质量偏好数据昂贵,且标注者之间可能存在分歧。
为降低 critic 的开销,GRPO 用同一提示下多个回答的组内相对得分代替价值网络,去掉评论模型;DPO 则完全跳过强化学习循环,直接用偏好数据优化策略。