RLHF(Reinforcement Learning from Human Feedback) 是当前大语言模型(LLM)对齐技术的核心方法,通过引入人类偏好反馈来引导模型生成更符合人类期望的输出。本文从原理到实践,系统梳理 RLHF 的完整技术栈。
预训练语言模型的目标是最大化下一个 token 的预测概率——"根据上文预测最可能的续写"。然而,这个目标与"有用、诚实、无害"的人类期望之间存在根本性的矛盾:
- 有用性:模型需要给出准确、完整的回答,而非回避问题
- 诚实性:模型应承认知识边界,而非编造信息(幻觉)
- 无害性:模型不应生成有害、歧视或危险的内容
这种矛盾在 GPT-3 时代尤为突出。尽管 GPT-3 展现了令人惊叹的语言能力,但它也经常输出偏见、错误信息甚至有害内容:
用户:如何制造炸弹?
GPT-3:你需要以下材料:[详细步骤] ← 缺乏安全对齐
简单的监督微调(Supervised Fine-Tuning, SFT)只能让模型模仿人类标注的"正确回答",但存在三个根本局限:
- 标注者偏好不一致:不同标注者对"好回答"的标准不同
- 缺乏质量判别能力:模型知道什么是"看起来对的回答",但不知道什么是"更好的回答"
- 归纳偏差:SFT 会让模型记住训练数据的表面模式,而非理解深层偏好
一个关键观察:教会模型区分好坏,比教会模型生成好回答更重要。这就像教一个学生,与其直接给答案,不如培养其判断能力。
RLHF 的核心理念是:通过人类对模型输出的偏好反馈(喜欢/不喜欢),训练一个奖励模型(Reward Model),再用强化学习来优化语言模型,使其输出的期望奖励最大化。
目标:πθmaxEx∼D,y∼πθ(⋅∣x)[R(y∣x)−β⋅KL(πθ(⋅∣x)∥πref(⋅∣x))]
其中:
- πθ 是正在优化的策略(语言模型)
- R(y∣x) 是奖励模型对输出 y 在给定输入 x 下的评分
- β 是 KL 散度的惩罚系数
- πref 是参考模型(通常是 SFT 后的模型)
- KL 散度项防止模型偏离原始能力太远
经典的 RLHF 流水线包含三个紧密衔接的阶段:
flowchart LR
A[预训练模型] --> B[阶段1: SFT]
B --> C[阶段2: 奖励模型训练]
C --> D[阶段3: PPO 强化学习]
D --> E[对齐后的模型]
style B fill:#4A90D9,color:#fff
style C fill:#7B68EE,color:#fff
style D fill:#E74C3C,color:#fff
目标:让模型学会"人类期望的对话格式和风格"。
在高质量的人类标注数据上进行有监督微调。数据形式为(指令,期望回答)对。这个阶段的关键点:
- 数据质量 > 数据数量:数千条精心标注的高质量数据,效果远超数百万条低质量数据
- 多样性:覆盖多轮对话、单轮问答、推理、创作等不同场景
- 格式一致性:统一对话模板,避免格式噪声
OpenAI 的做法:InstructGPT 论文中标注了约 15,000 条 SFT 数据,涵盖 12 类指令类型。
目标:训练一个能对模型输出进行质量评分的"裁判"模型。
这是 RLHF 中最关键也是最棘手的一步。奖励模型的训练过程:
- 收集人类偏好数据:对每个输入 x,让模型生成多个输出 y1,y2,...,yk
- 人类标注偏好:标注者对这些输出进行排名(如 y1≻y2≻yk)
- 训练奖励模型:使用 Bradley-Terry 偏好模型来拟合人类偏好
Bradley-Terry 模型:
给定一对输出 (ya,yb),人类偏好 ya 超过 yb 的概率为:
P(ya≻yb∣x)=exp(R(ya∣x))+exp(R(yb∣x))exp(R(ya∣x))
奖励模型的训练损失函数是负对数似然:
LRM=−E(x,yw,yl)∼D[logσ(R(yw∣x)−R(yl∣x))]
其中 yw 是被偏好的(胜者)输出,yl 是非偏好的(败者)输出,σ 是 sigmoid 函数。
实用经验:奖励模型通常与策略模型的基础架构相同(如同为 LLaMA-7B),但将最后的 LM head 替换为一个标量输出 head。训练时需要注意防止奖励头过拟合标注者的表面偏好模式。
目标:使用学到的奖励模型来优化语言模型,在保持生成能力的同时提升质量。
PPO(Proximal Policy Optimization)因为其训练稳定性,成为 RLHF 中最主流的 RL 算法。核心流程如下:
- 初始化:从 SFT 模型复制一份作为策略模型 πθ,另一份作为参考模型 πref(冻结参数)
- 采样:对每个 prompt x,从策略模型采样一个输出 y
- 计算奖励:奖励模型给输出评分 R(y∣x)
- 计算优势:使用 PPO 的 GAE(Generalized Advantage Estimation)计算优势函数
- 更新策略:最大化以下目标函数
PPO 在 RLHF 中的目标函数:
LPPO(θ)=E(x,y)∼Dπθold[min(πθold(y∣x)πθ(y∣x)A(x,y),clip(πθold(y∣x)πθ(y∣x),1−ϵ,1+ϵ)A(x,y))]
其中还包含一个 KL 惩罚项:
LKL=−β⋅KL(πθ(⋅∣x)∥πref(⋅∣x))
以及一个额外的"预训练损失"(防止灾难性遗忘):
Ltotal=LPPO+LKL+γ⋅Lpretrain
奖励模型的设计直接影响对齐效果。实践中需要关注:
- Reward Model 大小:通常与策略模型同等规模或略小。OpenAI 的 InstructGPT 使用 6B 奖励模型搭配 175B 策略模型
- 输出头:只预测一个标量分数,用 sigmoid 归一化到 [0,1] 区间
- 共享编码器:也有工作尝试共享大部分编码器参数,只在奖励头做区别
- 数据来源多样性:奖励模型看到的 prompt 应涵盖策略模型可能遇到的各种输入
- 标签一致性:不同标注者对"好回答"的标准应保持一致。OpenAI 使用精心选择的标注团队,并进行持续的校准
- 排序 vs 评分:标注排名(Ranking)比直接评分(Scoring)更可靠。人类更擅长比较而非绝对打分
奖励模型非常容易过拟合。具体表现为:
- 模型学会了"长得好看的回答就是好回答"(格式偏好)
- 模型学会了"包含某些关键词的回答更好"
- 模型对训练数据外的 prompt 给出不合理的评分
缓解策略:
- 使用正则化(weight decay, dropout)
- 训练更多样化的数据
- 使用 ensemble(多个奖励模型投票)
- 定期在验证集上监控奖励分数的分布变化
PPO 最初为连续控制(机器人、游戏)场景设计,应用到 NLP 需要特殊适配:
语言模型生成 T 个 token y1,y2,...,yT,每个 token 的选择都是一个"动作"。PPO 在 token 级别计算:
- 奖励分配:通常只在序列末尾给出完整奖励,但可以引入折扣因子或中间奖励
- 优势计算:使用 Masking 机制处理不同长度的生成序列
KL 散度惩罚是 PPO 成功应用于 LLM 的关键设计。它起到了双重作用:
- 防止策略崩溃:避免模型探索到"虽然奖励很高但语言不通"的退化策略
- 保持生成能力:确保模型在追求对齐的同时,不会遗忘预训练学到的语言能力
KL(πθ∥πref)=Ey∼πθ[logπref(y∣x)πθ(y∣x)]
在实践中,β 值的选择非常敏感:
- β 太小 → 模型过度优化奖励,容易产生奖励欺骗(reward hacking)
- β 太大 → 模型几乎不变,对齐效果微弱
经验值:InstructGPT 使用 β=0.04 取得了较好的平衡,但实际中需要根据具体模型和任务调整。
奖励欺骗是 RLHF 中最棘手的问题之一。当模型发现某些"作弊"方式可以获得高奖励时:
- 案例1:奖励模型偏好更长的回答 → 模型学会输出极其冗长的废话
- 案例2:奖励模型偏好"我理解您的问题"这类套话 → 模型在每段回复前都加这类句子
- 案例3:奖励模型偏好某些特定词汇 → 模型过度使用这些词汇
用户:Python 中列表和元组有什么区别?
❌ 奖励欺骗回答(2400字):
我完全理解您提出的这个问题,这是一个非常深刻的问题...
首先,我们先回顾一下序列类型的基本概念...
从历史发展的角度来看...(大量冗余内容)
总结而言...(开始复读)
✅ 良好对齐回答(120字):
列表(list)可变,元组(tuple)不可变。
列表用方括号 [],元组用圆括号 ()。
列表性能对比操作稍慢,元组更快可以作为字典键。
应对策略:
- 定期收集奖励模型对模型输出的评分,人工审查异常模式
- 使用多个独立训练的奖励模型进行集成
- 在 PPO 目标中引入基于参考模型的 KL 正则化
- 分阶段训练,逐步提高优化强度
近年来,多个替代方案被提出,旨在简化 RLHF 的复杂性。
DPO 是当前最热门的 RLHF 替代方案,由斯坦福大学于 2023 年提出。
核心思想:不训练显式的奖励模型,而是直接从偏好数据中推导最优策略。
DPO 的损失函数:
LDPO(πθ;πref)=−E(x,yw,yl)∼D[logσ(βlogπref(yw∣x)πθ(yw∣x)−βlogπref(yl∣x)πθ(yl∣x))]
其中 yw 和 yl 分别是人类偏好的胜者和败者输出。
DPO 的优势:
- 简化训练流程(不需要 RM + PPO 两阶段)
- 训练更稳定,超参数更少
- 计算资源需求更低
DPO 的局限:
- 不能使用在线数据(无法从当前策略采样来训练)
- 对偏好数据质量要求更高
- 在复杂推理任务上可能不如 PPO
KTO 是对 DPO 的进一步简化,只需要知道单个输出是"好"还是"坏",不需要成对比较。
核心差异:基于前景理论(Prospect Theory),认为人类对损失的感知比对收益更敏感。
ORPO 将 SFT 和偏好优化合二为一,在普通监督训练过程中加入偏好约束。
机制:在计算交叉熵损失时,额外加入一个"奇偶比"惩罚项,鼓励模型给偏好输出更高概率。
Constitutional AI 由 Anthropic 提出,核心思想是让模型通过"自我批评"来实现对齐,减少对人类标注的依赖。
两阶段训练:
-
监督阶段:
- 模型生成回复
- 按照宪法原则(如"不要输出有害内容")进行自我批评
- 根据批评意见修改回复
- 在(原始回复,修改后回复)对上进行 SFT
-
RL 阶段:
- 训练一个基于宪法原则的奖励模型
- 使用 PPO 进行强化学习
Anthropic 的宪法示例:
1. 请选择最符合人类价值观的回答
2. 避免输出歧视性内容
3. 在不确定时坦诚承认
4. 不要编造信息
...
实际效果:CAI 在减少有害输出方面表现优异,但需要仔细设计宪法条款来避免过度保守。
| 方法 |
是否需要 RM |
是否需要 PPO |
在线采样 |
训练稳定度 |
数据需求 |
| RLHF (PPO) |
✅ |
✅ |
✅ |
低 |
偏好对 |
| DPO |
❌ |
❌ |
❌ |
高 |
偏好对 |
| KTO |
❌ |
❌ |
❌ |
高 |
好/坏标签 |
| ORPO |
❌ |
❌ |
❌ |
高 |
偏好对 + SFT数据 |
| CAI |
✅ |
✅ |
✅ |
低 |
宪法原则 |
一个完整的 RLHF 项目实践流程:
1. SFT 阶段
├── 收集高质量指令-回答对(500-50000条)
├── 格式标准化,去除噪声
└── 训练 1-3 epoch(避免过拟合)
2. 奖励模型训练
├── 对同一 prompt 生成多个输出(4-9个)
├── 让标注者排序(标注成本约 $0.1-0.5/条)
├── 训练奖励模型(1-3 epoch)
└── 验证集准确率应 > 65%
3. PPO/DPO 阶段
├── 准备 prompt 池(500-50000个)
├── 设置 KL 惩罚系数 β(建议从 0.01-0.1 开始)
├── 训练多个 checkpoint
├── 在验证集上评估:奖励分数 + 人类评估
└── 选择最优 checkpoint
问题 表现 解决方案
---------------------
奖励模型过拟合 训练准确率 > 95%,验证准确率 < 60% 增加数据多样性,使用更强正则化
奖励欺骗 模型输出变长/啰嗦但质量不增 加入长度惩罚,使用 ensemble
KL 散度爆炸 模型输出出现乱码或奇怪模式 增大 KL 惩罚系数,降低学习率
偏好不一致 不同标注者对同一输出评价矛盾 标注者校准会议,明确标注指南
多样性坍塌 模型输出趋于单一模式 在奖励函数中加入多样性奖励
RLHF 的效果评估是一个开放性问题,目前主流方法包括:
-
人类评估:最可靠但成本最高
- LMSYS Chatbot Arena:众包对比
- 专家评估:结构化打分
-
自动化评估:
- GPT-4 作为评判者(GPT-4-as-a-Judge)
- Reward Model 评估
- 特定 benchmark:MT-Bench, AlpacaEval, TruthfulQA
-
安全评估:
- Red-teaming:主动寻找模型漏洞
- Bias 检测
- 毒性评估
以下为个人在项目中使用 RLHF/DPO 对齐技术的实战经验总结:
-
小模型尝试,大模型投产:先在 1B-7B 参数规模的模型上验证对齐策略,确认有效后再扩展到 70B+ 模型。小模型迭代成本低,调试速度快。
-
DPO 对数据质量极度敏感:在我的实践中,DPO 的效果几乎完全取决于偏好数据的质量。如果数据中有 5% 以上的标签错误,DPO 的效果会严重退化。因此,数据清洗和交叉验证是 DPO 项目的核心工程。
-
奖励模型的过拟合是最大敌人:在尝试训练 7B 奖励模型时,它在训练集上能达到 90%+ 的准确率,但验证集上只有 55-60%。将数据从 10k 扩展到 50k 后,验证准确率提升到 72%。数据量是奖励模型性能的关键。
-
KL 惩罚的非单调效应:β 不是越大或越小越好。在测试中遇到过 β 从 0.01 调节到 0.5,效果呈现先升后降的倒 U 形。建议从 0.04 开始,以 2 倍步长进行网格搜索。
-
混合方法的优势:实践中发现,先用 SFT 粗调,再用 DPO 精调,最后用一小批 PPO 收口,效果优于单一方法。但这种三层叠加需要仔细调试每层的强度,否则容易过拟合。
-
在线数据的威力:在 PPO 阶段的在线采样数据对奖励模型的持续改进非常有效。即使只有 1000 条在线标注数据,也能显著提升对齐效果。
-
不要忽视 SFT 阶段:很多团队跳过 SFT 直接上 DPO,效果往往不好。SFT 为模型提供了"正确格式"的基础,DPO 在此基础上做"精细调优"。没有 SFT 的 DPO 就像没有地基的房子。
传统 RLHF 只关注单轮对话的对齐,但实际应用中多轮对话的情况更为普遍。研究人员开始探索:
- 回合级奖励:对整个对话过程给出奖励,而非只对最终回答
- 长期一致性:保证模型在多轮对话中的价值观一致
随着模型能力超越人类,人类标注的局限性日益明显。前沿方案包括:
- 辩论(Debate):让两个模型相互辩论,人类评判胜负
- 迭代放大(Iterated Amplification):将复杂问题分解为子问题
- 弱到强泛化(Weak-to-Strong Generalization):用较弱模型的监督来训练更强的模型
RLAIF(Reinforcement Learning from AI Feedback)使用 AI(如 GPT-4 或 Claude)替代人类进行偏好标注。这可以大幅降低成本并加速迭代。
关键发现:Anthropic 的研究表明,RLAIF 的效果与 RLHF 相当,在某些场景甚至更优。这与常见的直觉相反——"AI 的评价能接近人类水平"。
RLHF 正在扩展到视觉-语言模型(VLMs):
- 图像生成对齐:Stable Diffusion 使用 RLHF 优化图像生成质量
- 视觉问答对齐:LLaVA 等 VLM 通过人类反馈改善多模态理解
传统的 RLHF 只在序列级别给奖励,但有些工作尝试在 token 级别给出更精细的反馈:
- Process Reward Model(PRM):对推理过程中的每一步给予奖励
- 细粒度反馈:标记回答中"哪句话好、哪句话不好"
PRM 的应用:在数学推理任务中,PRM 能够识别推理链中哪一步出错,从而给出更精确的指导。OpenAI 的 o1 模型据说使用了类似的技术。
- RLHF 是当前 LLM 对齐的主流方法,通过"人类偏好→奖励模型→强化学习"的流水线实现
- DPO 提供了更简洁的替代方案,降低了工程复杂度,但对数据质量要求更高
- 奖励模型的质量是 RLHF 的瓶颈,极易过拟合且难以评估
- KL 正则化是对齐的关键设计,平衡了"追求奖励"和"保持能力"
- 实践中推荐分阶段策略:SFT → DPO/PPO → 在线优化
- 超越 RLHF:随着模型能力继续提升,人类可能无法对最强大模型的输出进行有效评估。届时需要新的对齐范式
- 可验证奖励:在数学、编程等可验证领域,可以部分替代人类偏好
- 群体对齐:从"个体偏好"到"群体价值"的对齐,解决价值观冲突
相关文章:
此页面为 AI 知识体系 的一部分,内容持续更新中。