你问“第一次学 Python,今天可以做点什么?”一个回答讲了半页语言发展史,另一个带你写几行代码,马上试一下。两段都可能没什么事实错误,但对于这个问题,后者更有用。
这样的差别,很难全写成标准答案。让人比较两份回答,往往容易一些:哪份更贴题,哪份漏了重要信息,哪份只是在凑字数。
RLHF 想利用的就是这类反馈,让模型在预训练(pre-training)和 SFT 之后继续调整回答方式。
反馈怎么变成训练信号?
经典做法先收集人的比较,再训练一个 Reward Model 去预测这些偏好。之后让语言模型(language model, LM)自己生成回答,用奖励(reward)模型给分,再用 RL 更新它。
人比较回答 → 学会预测偏好 → 模型生成新回答 → 根据评分更新
这里最值得留意的是中间那一步:训练时直接优化的是奖励模型的分数。如果它误把“长”当成“好”,模型可能越来越啰嗦,而不是越来越有用。所以训练结束后,还得另外检查回答质量。
这条路线的公开实例见 InstructGPT。后面的 GRPO、DPO 等方法会改动其中一些环节,我们会分开看。
读到后面,会遇到哪些名字?
真正生成回答、需要改进的模型叫 Actor。Reward Model 给结果打分;Critic 估计从当前前缀继续写,通常能拿多少回报;Reference 保留一份参照策略,帮助衡量模型改了多少。
第一次读不必一次记住这几个角色。先跟着一条回答看它怎么生成、怎么得到反馈,再回头看各自为什么需要。
从这里往下读
- 语言模型为什么也能做 RL:生成一个 token,怎样算一次动作
- Reward、Value 与 Advantage:这次得分,和原本预期的得分有什么区别
- 旧回答还能拿来训练吗:模型更新了,旧数据哪里开始不合适
- 三个阶段和四个模型:从示范到偏好,再到策略更新
- Reference 与 Critic:一个估计偏离,一个估计回报
- PPO clipping:为什么得到一次好反馈,也不一直往上加
- GRPO、DPO、RLVR:它们分别改了哪一环
- 怎么判断训练有用:把分数变化和真实收益分开
第一次读,先把这条主线串起来。写 loss 或看训练日志时,再看 KL 的三种估计:为什么有的样本估计是负数,为什么数值算对了,梯度却未必对。
想补普通强化学习(reinforcement learning, RL)的背景,可以从 Deep RL 基础开始;已经熟悉这些概念,就直接选你想看的问题。
本页术语 4
- 预训练 pre-training
- 先用大量数据学习通用表示和能力,再适配具体任务
- 语言模型 language model, LM
- 对文本序列建模,用上下文预测或生成后续内容
- 奖励 reward
- RL 里指导策略更新的标量信号
- 强化学习 reinforcement learning, RL
- 根据行动带来的回报调整策略,学习怎样作出更好的选择