你问“第一次学 Python,今天可以做点什么?”一个回答讲了半页语言发展史,另一个带你写几行代码,马上试一下。两段都可能没什么事实错误,但对于这个问题,后者更有用。

这样的差别,很难全写成标准答案。让人比较两份回答,往往容易一些:哪份更贴题,哪份漏了重要信息,哪份只是在凑字数。

RLHF 想利用的就是这类反馈,让模型在预训练(pre-training)和 SFT 之后继续调整回答方式。

反馈怎么变成训练信号?

经典做法先收集人的比较,再训练一个 Reward Model 去预测这些偏好。之后让语言模型(language model, LM)自己生成回答,用奖励(reward)模型给分,再用 RL 更新它。

人比较回答 → 学会预测偏好 → 模型生成新回答 → 根据评分更新

这里最值得留意的是中间那一步:训练时直接优化的是奖励模型的分数。如果它误把“长”当成“好”,模型可能越来越啰嗦,而不是越来越有用。所以训练结束后,还得另外检查回答质量。

这条路线的公开实例见 InstructGPT。后面的 GRPO、DPO 等方法会改动其中一些环节,我们会分开看。

读到后面,会遇到哪些名字?

真正生成回答、需要改进的模型叫 Actor。Reward Model 给结果打分;Critic 估计从当前前缀继续写,通常能拿多少回报;Reference 保留一份参照策略,帮助衡量模型改了多少。

第一次读不必一次记住这几个角色。先跟着一条回答看它怎么生成、怎么得到反馈,再回头看各自为什么需要。

从这里往下读

  1. 语言模型为什么也能做 RL:生成一个 token,怎样算一次动作
  2. Reward、Value 与 Advantage:这次得分,和原本预期的得分有什么区别
  3. 旧回答还能拿来训练吗:模型更新了,旧数据哪里开始不合适
  4. 三个阶段和四个模型:从示范到偏好,再到策略更新
  5. Reference 与 Critic:一个估计偏离,一个估计回报
  6. PPO clipping:为什么得到一次好反馈,也不一直往上加
  7. GRPO、DPO、RLVR:它们分别改了哪一环
  8. 怎么判断训练有用:把分数变化和真实收益分开

第一次读,先把这条主线串起来。写 loss 或看训练日志时,再看 KL 的三种估计:为什么有的样本估计是负数,为什么数值算对了,梯度却未必对。

想补普通强化学习(reinforcement learning, RL)的背景,可以从 Deep RL 基础开始;已经熟悉这些概念,就直接选你想看的问题。

本页术语 4
预训练 pre-training
先用大量数据学习通用表示和能力,再适配具体任务
语言模型 language model, LM
对文本序列建模,用上下文预测或生成后续内容
奖励 reward
RL 里指导策略更新的标量信号
强化学习 reinforcement learning, RL
根据行动带来的回报调整策略,学习怎样作出更好的选择