06. RLHF 的完整流程是什么?Reward Model 怎么训练?

整理 RLHF 的完整流程、Reward Model 训练方式与工程挑战。

简单回答

RLHF(Reinforcement Learning from Human Feedback)的完整流程分三步:先做 SFT 得到一个能对话的模型,再用人类偏好数据训练一个 Reward Model(奖励模型),最后用 PPO 等强化学习算法以 Reward Model 的打分为奖励信号对 SFT 模型做策略优化。Reward Model 本质上是一个分类/回归模型,输入 prompt + response,输出一个标量分数,训练数据是人类标注的偏好对(A 比 B 好)。

详细解释

第一步:SFT(Supervised Fine-Tuning)

在 base model 上用指令数据做有监督微调,让模型具备基本的对话能力。这个阶段的模型已经能"回答问题"了,但回答质量参差不齐,可能啰嗦、可能有幻觉、可能不安全。SFT 模型是后续 RLHF 的起点。

第二步:训练 Reward Model

RM 是 RLHF 的核心组件。它的训练流程是这样的:

首先用 SFT 模型对同一个 prompt 生成多个候选回答(比如 4 个)。然后由人类标注员对这些回答做偏好排序(哪个更好)。通常标注的是 pair-wise 偏好:给定一对 (chosen, rejected),标注哪个更好。

Reward Model 的架构通常是在 SFT 模型的基础上去掉最后的 language head,换成一个输出标量的线性层。输入是 prompt + response 的拼接,输出一个 scalar reward。训练目标是 Bradley-Terry 模型:

其中 是 chosen response, 是 rejected response, 是 RM 对 (prompt, response) 的打分。这个 loss 的意思是让 chosen 的分数比 rejected 高,差值越大越好。

RM 的质量直接决定了 RLHF 的上限。如果 RM 给错误的回答打高分,后续 PPO 就会朝错误的方向优化。所以 RM 的标注一致性和覆盖度非常重要。

第三步:PPO 强化学习优化

这一步是真正的 RL 过程。把 SFT 模型当作 policy(策略),RM 当作 reward function,用 PPO(Proximal Policy Optimization)算法做优化。

具体流程:对一批 prompt,用当前 policy 生成回答,用 RM 打分得到 reward,然后用 PPO 更新 policy 的参数,让 policy 倾向于生成高分回答。同时加一个 KL 散度惩罚,约束更新后的 policy 不能偏离 SFT 模型太远,防止 reward hacking(模型找到 RM 的漏洞,生成 RM 给高分但实际质量很差的回答)。

PPO 训练涉及四个模型同时在线:当前 policy、reference policy(SFT 模型的冻结副本)、reward model、value model(估计 baseline)。显存开销极大,这也是 RLHF 工程上最痛的点之一。

工程上的核心挑战

第一是成本。PPO 训练需要同时维护四个模型的显存,70B 规模的模型做 RLHF 需要几十张甚至上百张 GPU。第二是训练不稳定。PPO 的超参数非常敏感,学习率、KL 系数、clip range 都要仔细调。第三是 reward hacking。模型可能学会"讨好"RM 而不是真正提升质量,比如生成特别长的回答(因为 RM 可能对长回答打高分)。第四是人类标注的质量和一致性,不同标注员对"什么是好回答"的标准不一致,会引入噪声。

这些挑战也是后来 DPO 等方法被提出的直接动机——绕开 RM 和 PPO 的复杂性。

面试时可以这样答

RLHF 的完整流程分三步。第一步 SFT,用指令数据训出一个能对话的模型。第二步训练 Reward Model,用 SFT 模型生成多个回答,让人类标注偏好对,然后训一个模型去预测人类偏好,本质是一个打分模型,训练目标是 Bradley-Terry loss,让 chosen 的分数高于 rejected。第三步用 PPO 做强化学习,以 RM 的打分为奖励信号优化 policy,同时加 KL 惩罚防止偏离 SFT 模型太远。

RM 的质量是整个流程的瓶颈。如果 RM 本身判断有偏差,PPO 优化方向就是错的。所以标注数据的一致性和覆盖度非常关键。

工程上 RLHF 最大的痛点是 PPO 阶段。需要同时加载四个模型——当前 policy、reference policy、reward model 和 value model,显存压力极大。而且 PPO 超参数很敏感,训练不稳定,还容易出现 reward hacking。这也是为什么后来 DPO 这类方法越来越流行,它直接跳过了 RM 和 PPO,用偏好数据做有监督训练就行了。

常见追问

  1. Reward hacking 具体有哪些表现?怎么检测和缓解?
  2. Reward Model 的规模和 policy model 的规模需要匹配吗?
  3. PPO 里的 KL 系数 β 怎么设?设大设小分别有什么影响?