RLHF原理与流程
RLHF(Reinforcement Learning from Human Feedback)即基于人类反馈的强化学习,是将大语言模型与人类偏好、价值观对齐的核心技术,也是ChatGPT、InstructGPT成功的关键。
RLHF 三阶段流程
RLHF分为三个清晰的训练阶段:
阶段一:有监督微调(Supervised Fine-Tuning, SFT)
步骤:
- 收集Prompt集合,要求人工标注人员写出高质量回复
- 使用该数据集以监督学习方式微调预训练基础模型
- 得到SFT模型,作为后续阶段的起点
数据格式:
Instruction: Write a limerick about a pelican.
Output: There once was a pelican so fine...
模型输入:将指令作为上下文,逐个token预测输出。
阶段二:训练奖励模型(Reward Model, RM)
步骤:
- 对于每个Prompt,用SFT模型生成4-9个不同的回复
- 人工标注人员根据偏好对这些回复排序(不是打固定分,而是排序)
- 基于排序数据训练奖励模型:
- RM通常复用SFT模型的骨干
- 在输出端加一个回归层,将模型输出转换为标量奖励分数 rθ(x,y)
训练目标:
对于排序好的两个回复 yw(更好)和 yl(更差),对数似然损失:
L(θ)=−E(x,yw,yl)∼D[logσ(rθ(x,yw)−rθ(x,yl))]
这个损失的目标就是让更好的回复得到更高的奖励分数。
阶段三:PPO强化学习优化
基于训练好的奖励模型,使用PPO算法微调SFT模型:
- Actor模型:就是我们要优化的策略网络(初始为SFT模型),根据Prompt生成回复
- Critic模型:估计状态价值
- 奖励来源:奖励模型给出的分数 + SFT模型的KL散度约束,防止模型漂移太大
流程:
- Actor根据Prompt采样生成回复
- 计算奖励:R=rRM(x,y)−β⋅KL(πθ(y∣x)∥πSFT(y∣x))
- 使用PPO更新Actor参数,最大化预期累积奖励
- 重复迭代直到收敛
Reward Model 训练
模型架构
奖励模型通常共享SFT模型的 backbone,只在最后替换一个线性头输出标量奖励分数。
不需要从头开始训练,从SFT初始化可以节省数据和计算。
LLaMA 2 的改进:两个奖励模型
LLaMA 2 使用了两个独立的奖励模型:
- 有用性奖励模型:衡量回答对用户的帮助程度
- 安全性奖励模型:衡量回答是否安全、不有毒
最终奖励是两个分数的线性组合:
R=λ1Rhelpful+λ2Rsafety
LLaMA 2 的 Margin Loss
标准RLHF使用 pairwise 排序损失,LLaMA 2 引入Margin Loss:
L=−logσ(rθ(x,yc)−rθ(x,yr)−m⋅s)
其中:
- yc 是更优回复,yr 是较差回复
- s 是边际标签:0表示"差别不明显",1表示"显著更好"
- m 是边际超参数
当对比是显著更好时,增加梯度,加快更新。
偏好数据收集
传统流程
- 收集Prompts集合
- 模型对每个Prompt生成多个候选回复
- 人工标注人员对这些回复进行比较排序
- 排序结果用于训练奖励模型
成本问题
人工标注成本高,速度慢,难以大规模量产。
缓解方法:AI辅助标注
RLAIF(RL from AI Feedback):用AI模型替代人工进行偏好排序。
- SFT阶段:AI自我批评修正,生成高质量数据
- RL阶段:AI评估生成样本,得到AI偏好数据集,训练奖励模型
- 研究表明,标注人员对RLAIF和RLHF生成结果的偏好程度差不多
LLaMA 2 RLHF 实践要点
拒绝采样
LLaMA 2 使用迭代式RLHF,结合PPO和拒绝采样:
- 模型生成K个输出
- 用RM对输出打分,选择奖励最高的输出更新梯度
- PPO每次只基于单样本更新,拒绝采样可以选择更好的样本更新
流程:
- SFT初始化 → 只使用拒绝采样训练 → 结合拒绝采样 + PPO迭代 → 最终模型
最优 Checkpoint 选择
RLHF中一个关键问题:Reward Model给出的是近似奖励,更高的近似奖励不一定对应更好的真实效果。
观察发现:
- 随着当前模型与初始SFT模型的KL散度增大,真实奖励先升后降
- 但Reward Model给出的近似奖励一直上升,容易过拟合RM
经验公式估算最优点:
Rbon(d)=α−βd
其中 d=KL(πθ∥πSFT),找到 Rbon(d) 最高点即可。
面试常见问题
Q: 简要说说RLHF的三个阶段?
A:
- SFT阶段:人工标注高质量指令-回复数据,有监督微调预训练模型,得到初始对齐模型
- 奖励模型训练:SFT模型对每个prompt生成多个回复,人工排序,训练奖励模型给回复打分
- PPO强化学习:用奖励模型作为奖励信号,使用PPO算法微调SFT模型,最大化预期奖励,得到最终对齐模型
Q: 奖励模型需要和基础模型一致吗?
A: 不一定一致,但通常使用同系列模型,需要相同的tokenizer。一些实现(如Colossal-AI Coati)要求RM和base同系列。从SFT初始化RM比从头训练效果更好,也更省数据。
Q: RLHF有什么缺点?
A:
- 数据成本高:人工偏好标注成本高,难以量产
- 训练流程长:三个阶段依次进行,整体迭代慢
- 资源要求高:PPO训练同时需要4个模型(actor、critic、reference RM、初始SFT),显存要求高
- RM过拟合:RM只是真实人类偏好的近似,优化RM可能不代表真实效果提升
Q: RLHF中的KL散度约束起什么作用?
A: KL散度惩罚当前模型与初始SFT模型输出分布差异太大,防止模型漂移,避免生成完全不连贯的文本,同时缓解奖励坍塌问题。KL系数β控制惩罚强度。
Q: 什么是对齐(Alignment)?
A: 对齐就是通过微调等方式,让语言模型的输出符合人类偏好、价值观和安全要求,使得模型回答更有用、更符合人类预期,同时减少有害内容。RLHF是当前最主流的对齐方法。
Q: 为什么要做RLHF,直接SFT不行吗?
A: SFT只能教模型模仿人类回答,但无法处理"哪个回答更好"的偏好问题。RLHF通过人类反馈直接优化模型输出,使其更符合人类偏好,生成更有用、更安全的回答。简单来说,SFT教模型怎么回答,RLHF教模型回答得更好。