RLHF 的完整训练流程是怎样的?从 SFT 到 Reward Model 到 PPO 每个阶段做了什么?
RLHF 的完整训练流程是怎样的?从 SFT 到 Reward Model 到 PPO 每个阶段做了什么?
这道题考的是 RLHF(人类反馈强化学习)的完整训练流程,属于大模型微调领域的综合深度题。核心要掌握三阶段各做什么、PPO 四角色职责、Actor Loss 演进过程。
我从六个方面来讲:RLHF 整体架构、SFT 和 Reward Model 的作用、PPO 四角色详解、Actor Loss 进化、SFT 与 PPO 本质区别、面试高频追问。
一、RLHF 是什么——为什么需要三阶段训练
RLHF 就是让大模型学会"按人类偏好回答"的一套方法。
光靠预训练,模型只会续写文本,不知道什么算"好回答"。RLHF 通过三阶段训练解决这个问题:
第一阶段 SFT(Supervised Fine-Tuning):让模型学会按指令格式回答。相当于学写作规范。
第二阶段 Reward Model:建立评分标准。模型生成的每个回答,该得几分?需要有个裁判来打分。
第三阶段 PPO:让模型不断练习,通过奖励信号强化好的回答、抑制差的回答。
打个比方。就像培养一个写作助手:
- 先让他学会写作规范(SFT)
- 再请编辑建立评分标准(Reward Model)
- 最后让他不断练习,编辑每次给反馈,他就进步一点(PPO)
三阶段是串联关系。SFT 打好基础,Reward Model 定好标准,PPO 做强化训练。没有前两个阶段,PPO 就没法工作。
二、SFT 与 Reward Model——打基础和定标准
SFT:学会按格式回答
SFT 用人工标注的问答数据微调预训练模型。
输入是"问题",输出是"标准回答"。模型从这个数据里学到:遇到类似问题,该怎么组织答案格式、该说什么内容。
类比一下。SFT 就像临摹字帖——有标准答案照着练,练完就知道横该怎么写、竖该怎么拐。
这阶段让模型具备基本的指令遵循能力。但光靠 SFT 不够:模型只是记住了训练数据的模式,遇到没见过的提问方式,可能就答不好。
Reward Model:学会评判好坏
Reward Model 的任务是:给任意 (问题, 回答) 对打一个分数。
训练数据是人类偏好排序。比如同一个问题,模型生成 A、B 两个回答,人类标记"A 比 B 好"。Reward Model 学的就是这个相对偏好。
训练好的 Reward Model 能输出即时收益 R_t,表示"这个回答质量如何"。
这里要注意:Reward Model 打的是即时收益,不是最终收益。最终收益由 Critic 网络通过 R_t + γ×V_{t+1} 来预估。
三、PPO 四角色——演员、评论家、裁判、参照物
PPO 是 RLHF 最复杂的阶段。搞懂四角色各自的职责,这条题就理解了一半。
Actor(演员)
Actor 是被训练的目标语言模型。它根据输入的对话上下文 S_t,生成回答 A_t。
训练目标:最大化优势函数。优势越大,说明这次生成比平均水平越好,就越值得强化。
Critic(评论家)
Critic 负责预估"从当前状态开始,预期能拿多少总收益"。
它输出 V_t,即状态价值函数。用 R_t + γ×V_{t+1} 来逼近真实收益(γ 是折扣因子,通常 0.99 或 0.95)。
Critic 参与参数更新,帮 Actor 更准确地评估每个动作的价值。
Reward Model(裁判)
Reward Model 来自第二阶段训练好的模型。它负责计算即时收益 R_t。
给定 (S_t, A_t),输出一个分数。这个分数就是"观众实时反馈"。
Reference Model(参照物)
Reference Model 是 SFT 模型的快照,参数固定不更新。
它的作用:计算 Actor 生成的分布与 SFT 分布之间的 KL 散度。
KL 散度太大,说明 Actor 跑偏了——生成的回答可能很"野",偏离了 SFT 教会的基本能力。
用拍电影的类比来记:
- Actor 是演员,演什么由它决定
- Critic 是影评人,提前预测票房(总收益)
- Reward Model 是观众,实时打分
- Reference Model 是原版剧本,演员不能魔改太多
四、Actor Loss 进化史——从基础到 PPO Clip
Actor Loss 不是一步到位的。它经历了四步演进,每一步都在解决一个问题。
第一步:基础 log loss
最早的思路:让 Actor 学会生成高收益的回答。
Loss = -log P(A_t | S_t)
这相当于 SFT 的思路——只管学,不管收益。
第二步:加上 KL 约束
光有 log loss 不够。模型可能为了提高某个词的生成概率,导致整体分布跑偏。
加上 KL 散度约束:
Loss = -log P(A_t | S_t) + β × KL(Actor || Reference)
β 是 KL 权重。KL 越大,loss 越大,惩罚越狠。
这一步解决的是"防止偏离 SFT 能力"的问题。
第三步:加上优势函数
优势函数 = 实际收益 - 平均收益
如果某个动作 A_t 比平均水平的收益高,优势就是正的,loss 应该让这个动作更容易被选中。
Loss = -log P(A_t | S_t) × advantage(A_t)
这一步解决的是"学什么值得强化"的问题。
第四步:加上 PPO Clip
问题来了:如果某次采样到了一个极端好的样本,Actor 可能疯狂放大这个样本的概率,导致分布剧烈变化,训练崩溃。
PPO Clip 出场。引入概率比值 r_t = P_new(A_t) / P_old(A_t)。
当 r_t 超出 [1-ε, 1+ε] 范围(ε 通常取 0.2),就停止更新:
- r_t 1.2 时,loss 变成 0,不再更新
- 只在 [0.8, 1.2] 范围内更新
类比一下学习过程:
- 基础 log loss = 死记硬背
- 加 KL 约束 = 理解题意,不跑题
- 加优势函数 = 举一反三,知道哪类题该用哪种解法
- 加 PPO Clip = 防止走火入魔,一次学太猛把自己学崩
五、SFT vs PPO——为什么 RL 能获得更强泛化
面试官可能会追问:既然 SFT 能让模型学会回答,为什么还要 PPO?
核心区别在于学习方式不同。
SFT 是行为克隆,也叫模仿学习。模型学到的是"遇到这个问题,就按训练数据的样子回答"。本质上是在记忆模式。
PPO 是强化学习,模型通过奖励信号自己摸索。什么回答能拿高分?模型会去探索,哪怕探索出训练数据里没见过的表达方式。
结果就是:PPO 训练出的模型,泛化能力更强。它不只是记住了答案,而是理解了"什么样的回答是好回答"。
当然代价也有:
- PPO 训练不稳定,需要 KL 约束和 PPO Clip 保驾护航
- 计算成本高,需要 Reward Model、Critic 等额外网络
- 调参麻烦,KL 权重、clip 范围、折扣因子都要调
总结一下区别:
- SFT:学得快、稳,但泛化一般
- PPO:学得慢、难,但泛化强
六、面试高频追问——RLHF 实战细节
Q1:Reward Model 训练数据是什么?
人类偏好排序数据。给同一个问题,生成多个回答,让人类标注哪个更好、哪个更差。
常用数据集格式是 (prompt, chosen_response, rejected_response)。模型学到的是"chosen > rejected"的相对偏好。
Q2:KL 散度为什么重要?
防止 Reward Hacking。
模型可能会"作弊"——比如遇到"写一首诗"的问题,它发现生成超长、超华丽的诗能拿高分。但这不是人类想要的。
KL 散度约束让 Actor 不能离 Reference Model 太远。Reference Model 代表"正常回答"的能力边界,偏离太多就惩罚。
Q3:PPO 为什么用 clip?
限制单次更新幅度。
如果某次采样的样本特别好,Actor 可能一下子把概率调到很高。PPO Clip 相当于踩刹车——更新太猛就不更新了,防止模型崩溃。
[0.8, 1.2] 这个范围是经验值。太小会让学习太慢,太大可能还是会震荡。
Q4:DeepSpeed-Chat 是什么?
微软开源的 RLHF 框架,把 SFT、Reward Model、PPO 三个阶段串起来实现了一遍。
面试提到这个能体现工程实践认知。知道工业界怎么落地,比只懂理论加分不少。
面试怎么答
基础版(能过的回答)
RLHF 分三个阶段。
第一阶段 SFT,用标注数据微调预训练模型,让模型学会按指令格式回答。
第二阶段训练 Reward Model,用人类偏好排序数据,让模型学会区分高质量和低质量回答。
第三阶段 PPO 强化学习,有四个角色:Actor 是被训练的目标模型,Critic 预估总收益,Reward Model 计算即时收益,Reference Model 固定参数防止模型跑偏。Actor Loss 在 log loss 基础上加了 KL 散度约束和 PPO Clip 机制,保证训练稳定。
加分版(让面试官眼前一亮)
RLHF 三阶段各有分工:SFT 打基础,Reward Model 定标准,PPO 做强化。
重点讲清楚两点:
第一,PPO 四角色的数据流。Reward Model 计算即时收益 R_t,Critic 用 R_t + γ×V_{t+1} 逼近真实收益,Actor 通过最大化优势函数更新,Reference Model 固定防止 Reward Hacking。
第二,Actor Loss 的演进逻辑。从基础 log loss,到加 KL 约束防止偏离,再到加优势函数学什么值得强化,最后加 PPO Clip [0.8, 1.2] 限制更新幅度。Clip 的本质是:当概率比值超出范围时,loss 置零停止更新,防止一次更新过猛导致模型崩溃。
还可以加一句:SFT 是模仿学习,PPO 是强化学习,RL 能获得更强的泛化能力,这也是为什么 GPT-4、Claude 这些模型都用 RLHF。
一句话总结
RLHF 三阶段:SFT 学格式、Reward Model 建标准、PPO 强化练习;PPO 四角色各司其职,Actor Loss 加 KL 约束和 PPO Clip 保证稳定,RL 比 SFT 泛化更强。
