大模型的预训练(next-token prediction)在形式上可以看作一种行为克隆(Behavioral Cloning, BC)—— 给定输入 x(上下文),最大化正确输出 y 的似然。
LBC=−E(x,y)∼D[logP(y∣x)]其中,D 是训练数据集,x 是输入,y 是目标输出。通过最小化该损失,模型学到语言建模与世界知识。
为了提升模型在下游任务中的可用性与对齐能力,还需要后训练(post-training)。后训练常见两条主线:
- 监督微调(SFT):用高质量示范数据,让模型学会指令遵循与回答风格。
- 偏好对齐(preference alignment):让模型在“多个候选回答”里更倾向人类偏好的那个。
SFT 目标函数仍是最大似然:
LSFT=−E(x,y)∼DSFT[logP(y∣x)]工程上常见的完整链路是:
- 预训练 → base 模型
- SFT → 参考/起点策略 πref
- 学偏好(训练奖励模型 RM,或直接用偏好优化)
- 用 RL(PPO/GRPO 等)进一步对齐
为什么使用 RL 做后训练#
- 验证比生成更便宜:人类更容易判断“哪个更好”,而不是写出最优答案
- 目标更贴近真实需求:很多指标不可微/不可监督(有用性、安全性、工具成功率、通过率等)
- 序列决策与延迟回报:回答是一个 trajectory,奖励往往在末端给出(典型 credit assignment 问题)
- 探索与超越示范:不只拟合示范分布,而是围绕奖励探索更优策略
一句话总结:SFT 在拟合 P(y∣x),而 RL 允许你显式优化你真正关心的 R(x,y)。
RL-LLM 建模#
状态、动作与确定性转移#
强化学习问题可以抽象为 MDP。对 LLM 来说,这个 MDP 很“干净”:状态就是已生成的 token 序列,动作是下一个 token。
初始状态 s0 可视为一个确定性的 Dirac 分布:输入 prompt 就是初始状态(实现中通常有 <BOS>):
s0=<BOS>⊕prompt.模型是自回归策略:
at∼πθ(at∣st),st+1=st⊕at.对应的确定性动力学为
p(st+1∣st,at)=δ(st+1=st⊕at).当模型输出 <EOS> 或达到最大长度,该幕结束。
将一次生成过程记作轨迹 τ=(s0,a1,…,aT)。策略的序列概率可分解为
πθ(a∣s0)=t=1∏Tπθ(at∣st),st=s0⊕a1:t−1.回报与目标#
最一般地,回报是逐步奖励之和:
R(τ)=t=1∑Tγt−1rt.训练目标为
J(θ)=Es0∼D,τ∼πθ(⋅∣s0)[R(τ)].在 LLM 对齐里,rt 往往是末端奖励(例如 RM 打分、验证器通过/不通过),也可能是过程奖励(例如 PRM 给每一步 reasoning 打分)。
KL 正则:让 RL 不“跑偏”#
直接最大化奖励容易导致奖励过优化(reward hacking),因此常引入参考策略 πref 做 KL 约束。
常见写法是无约束正则化目标:
θmaxE[R(τ)]−βE[DKL(πθ(⋅∣s)∥πref(⋅∣s))].实现中常用“采样 KL”的逐 token 近似:
KLsample(τ)≈t=1∑T(logπθ(at∣st)−logπref(at∣st)).并把 KL 惩罚并入奖励做 shaping:
ildert=rt−β(logπθ(at∣st)−logπref(at∣st)).长度偏置(实践里很常见)#
当奖励只在末端给出时,回答长度会显著影响优化:
- 模型可能为了“覆盖更多得分点”而变得啰嗦
- 或者为了避免犯错而过早
<EOS>
常见处理:长度归一化、对 <EOS> 的额外奖励/惩罚、或在 RM 中显式惩罚冗长/跑题。
奖励模型#
奖励函数/奖励模型决定了“对齐到底对齐什么”。常见类别:
- RLVR(验证奖励):数学/编程题用 verifier 直接判对错(0/1 或更细粒度)。优点是客观,缺点是稀疏与可投机。
- PRM/过程奖励:给 reasoning 中间步骤打分,缓解稀疏奖励与 credit assignment。
- RLHF(人类偏好):人类在多候选里做比较,训练 RM 或直接偏好优化。
- RLAIF(AI 偏好):用强模型代替人类偏好标注,规模大但可能引入偏差。
- GRM(生成式反馈):用生成式 LLM 给反馈/评分,本质是一种可扩展的自动评估信号。
稀疏奖励问题很关键:奖励往往只能在序列结束时给出,这会导致智能体更容易修改末尾而忽视中间推理过程。这也是 PRM 被提出的重要动机。
RLHF 奖励模型(RM)的经典训练:Bradley–Terry#
偏好数据通常是 (x,y+,y−):同一 prompt x 下,人类更喜欢 y+ 胜过 y−。
令奖励模型输出标量分数 rϕ(x,y),用 Bradley–Terry(BT)定义偏好概率:
P(y+≻y−∣x)=σ(rϕ(x,y+)−rϕ(x,y−)).最大似然训练对应的损失为
LRM(ϕ)=−E[logσ(rϕ(x,y+)−rϕ(x,y−))].训练好 RM 后,常用 R(x,y)=rϕ(x,y) 作为末端奖励(再加 KL shaping)。
奖励模型的常见坑#
- reward hacking:策略学会利用 RM 的漏洞(模板、重复、虚假自信)
- 分布偏移:RL 采样把策略推到 RM 训练分布外,RM 可靠性下降
- 尺度漂移:RM 分数尺度变化会导致训练不稳定(需要归一化与 KL 控制)
- 多目标冲突:有用性/安全性/简洁性等可能互相矛盾,单一标量奖励难以表达
具体的 RL 算法#
REINFORCE(策略梯度基础)#
对数导数技巧给出
∇θJ(θ)=Eτ∼πθ[R(τ)∇θlogπθ(τ)].而
logπθ(τ)=t=1∑Tlogπθ(at∣st),所以实现上就是对每个 token 的 logprob 做加权。
为了降低方差,引入 baseline b(st)(常取 value model V(st)):
∇θJ(θ)≈G1i=1∑Gt=1∑Ti(G^i,t−b(si,t))∇θlogπθ(ai,t∣si,t).其中 G^i,t 是从 t 时刻往后的折扣回报。
Actor-Critic(PPO/RLHF 的常见基座)#
工业里更常用 Actor-Critic:训练一个 value model Vψ(st) 预测回报,并构造优势
At=G^t−Vψ(st).优势可以用 GAE(Generalized Advantage Estimation)平衡偏差与方差。
PPO(RLHF 最常见的在线 RL)#
PPO 维护采样时的旧策略 πold,通过 clipping 限制更新幅度。序列级 ratio 可写为
πold(a∣s0)πθ(a∣s0)=exp(t=1∑T(logπθ(at∣st)−logπold(at∣st))).实践中常用 token 级 PPO(每个 token 一个 ratio),更稳定且并行友好。原始 PPO surrogate 仍可写为
J(θ)=E[min(r(θ)A,clip(r(θ),1−ϵ,1+ϵ)A)].完整训练一般还包含:
- value loss(拟合 Vψ,常带 value clipping)
- entropy bonus(避免过早塌缩)
- KL penalty / early stop(把策略限制在 πref 附近)
GRPO(Group Relative Policy Optimization)#
GRPO 可以理解为“没有 critic 的相对优势策略优化”:对同一 prompt 采样一组回答(大小 G),组内归一化得到相对优势 Ai,再用策略梯度更新。
组内优势一个常见构造是
Ai=σR+ϵRi−μR,μR=G1j=1∑GRj.然后用
LGRPO=−E[i=1∑Gt=1∑TiAilogπθ(ai,t∣si,t)]+βE[KL]来更新策略。直觉是:同一个 prompt 里“相对更好”的回答被提升概率,“相对更差”的被压低。
DPO(Direct Preference Optimization,修正公式)#
DPO 是直接用偏好数据优化策略的方法之一,避免了在线采样与训练 RM。
给定 (x,y+,y−),定义
Δθ=logπθ(y+∣x)−logπθ(y−∣x),Δref=logπref(y+∣x)−logπref(y−∣x).经典 DPO loss 为
LDPO(θ)=−E[logσ(β(Δθ−Δref))].这里 β 控制偏好强度(也可理解为温度/正则强度)。
工程实践:训练时常见关键细节#
1) Online RL(PPO/GRPO)的数据流#
一个标准循环:
- 从 prompt 数据集采样一批 x
- 用当前策略采样回答 y(通常每个 prompt 采样多条)
- 计算奖励:RM/验证器/规则/工具成功率等
- 计算参考模型 logprob(得到 KL shaping)
- 构造优势:critic(PPO)或组内相对优势(GRPO)
- 反向传播更新 actor(以及可选的 critic/value model)
2) KL controller(非常实用)#
固定 β 常常不稳。常见做法是设定目标 KL(例如每 token KL 在某范围),动态调节 β:
- KL 过大:增大 β
- KL 过小:减小 β
3) Reward/Advantage 归一化#
- reward scale 直接决定梯度尺度,通常做 running mean/std 归一化
- advantage 常做 batch 标准化(均值 0 方差 1)提升稳定性
4) 监控指标(不监控基本必炸)#
- 平均 reward、reward 方差
- 平均 KL / 每 token KL
- 回答长度分布(是否越来越啰嗦/越来越短)
- 拒答率、安全触发率
- 离线任务集:正确率、事实性、毒性
5) 常见失败模式#
- “刷格式/刷模板”:RM 偏好被投机
- “啰嗦”:为了覆盖得分点而变长
- “自信胡编”:用看起来像的内容骗过偏好模型
- “过拟合验证器”:RLVR 场景下出现投机取巧