高级微调技术(RLHF)
一、RLHF 技术详解
1. SFT 的局限性与 RLHF 的必要性
SFT(有监督微调)的核心问题:
- 只能教会模型模仿高质量范例(指令遵循)
- 缺乏对人类偏好的深度理解
- 主要缺陷:
- 泛化能力弱(难以应对千变万化的真实用户指令)
- 对齐不足(回答可能正确,但风格、语气、有用性、无害性、诚实性不符合人类期望)
RLHF(Reinforcement Learning from Human Feedback)的核心价值:
- 从“模仿正确答案” → “理解并内化人类偏好”
- 目标:让模型输出更有用(Helpful)、诚实(Honest)、无害(Harmless)(简称3H 原则)
- 关键验证:InstructGPT 中,13B 参数的 RLHF 模型在人类评估中超越了 175B 参数的原始 GPT-3
SFT vs RLHF 核心差异:
| 对比维度 | 监督微调 (SFT) | 人类反馈强化学习 (RLHF) |
| 核心目标 | 模仿正确答案(指令遵循) | 对齐人类偏好(有用/无害/诚实) |
| 数据需求 | 高质量的(指令, 回答)对 | 提示词(Prompt)+ 偏好排序/评分 |
| 学习方式 | 填鸭式教学(拟合分布) | 探索式学习(试错与反馈) |
| 优化信号 | Token 级预测概率(交叉熵) | 整句生成质量评分(标量奖励) |
| 泛化能力 | 局限于训练数据分布 | 可泛化到未见过的复杂指令 |
2. 对齐训练的三大阶段
在实践中,对齐训练通常划分为三个阶段,分别面向通用语言能力、指令遵循与偏好对齐:
- 基础模型预训练(Pre-training)
- 万亿级 Token 无标注文本自回归预训练
- 目标:获得基础语言能力与世界知识
- 成本极高,技术门槛最高
- 有监督指令微调(SFT / Instruction Tuning)
- 使用数千到几万条高质量(prompt, response)数据
- 目标:让模型学会理解并执行人类指令
- 数据类型:
- 任务型指令数据集(WizardLM Evol-Instruct、Dolly-15k):提升“智商”(做事能力)。
- 对话型数据集(OpenAssistant / OASST):提升“情商”(聊天能力)。真实志愿者众包、多轮对话树、带质量评分和标签,是 SFT 和 RLHF 的双重宝贵资源。
- 基于人类反馈的强化学习(RLHF)
- 从“及格”(能遵循指令)到“卓越”(懂人类偏好)
- 核心:RLHF 引入了人类价值观作为指导信号,通过构建奖励模型来模拟人类的判别标准,并利用强化学习算法让模型在生成过程中不断“试错”并学习如何获得更高的奖励。这一过程不再要求模型死记硬背固定的标准答案,而是鼓励它探索出更符合有用性(Helpful)、诚实性(Honest)和无害性(Harmless)(简称 3H 原则)的回复路径。
3. RLHF 的形式化定义(关键理解)
为什么文本生成任务可以被建模为强化学习问题?
在 RLHF 框架中,将 Token 生成过程建模为“片段的(Episodic)马尔可夫决策过程(MDP)”是连接 NLP 与 RL 的核心桥梁。这个“片段”特指“从接收用户提示到生成完整输出”的单次生成任务。
将文本生成建模为片段式(Episodic)马尔可夫决策过程(MDP):
- 状态 (State):当前已生成的上下文,包括用户提示 x 和已生成的 Token 序列 y<t。 s_t = (x, y_1, ..., y_{t-1})(当前上下文)。
- 动作 (Action):模型在当前时间步生成的下一个 Token y_t 。
- 策略 (Policy):即我们的大语言模型。π_θ(y_t | s_t)对应模型在当前上下文下预测下一个 Token 的概率分布。
- 奖励 (Reward):通常在序列结束时由奖励模型给予一个标量反馈 R(x, y),中间步骤的奖励通常为 0。
RLHF 的目标就是寻找一个最优策略 πθ ,使得生成的完整序列期望奖励最大化:优化目标:
因此PPO 等算法可以通过试错(Sampling)和反馈(Reward)来调整模型参数,从而让模型生成的“轨迹”(文本)更符合人类偏好。
4. RLHF 经典三步法(核心流程)
- 有监督微调(SFT)→ 得到初始策略模型
- 训练奖励模型(Reward Model, RM)
- 使用强化学习算法优化策略模型(PPO / DPO / GRPO 等)
4.1 奖励模型(RM)训练
步骤:
- 收集人类偏好数据:同一个 prompt,让 SFT 模型生成多个回答 → 人工排序(Ranking)
这些排序数据构成了偏好数据集,其中 yw 是比 yl 更受偏好的回答 (winner),ylyl 是较差的回答 (loser)。
- 将排序数据转为成对比较数据,将一个包含 K 个回答的排序数据,转换成
个成对的比较数据。例如,(回答A > 回答B)、(回答A > 回答C)、(回答B > 回答C)...
奖励模型(RM)通常和我们正在优化的语言模型结构类似(但可以小得多),它的任务不是生成文本,而是输入
(prompt, response),输出一个标量分数reward。- 使用Bradley-Terry 模型训练 RM:该模型假设人类对两个回答的偏好概率可以用它們的潜在奖励分数通过 Sigmoid 函数来建模:
- 其中 rθ 是奖励模型,yw 是比 yl 更受偏好的回答,σ 是 Sigmoid 函数。
- 损失函数为负对数似然,旨在最大化偏好回答与非偏好回答之间的分数差距。
经过训练,RM 能够逼近人类偏好函数,作为自动化的偏好评估器,为后续策略优化提供稳定的标量奖励信号。
4.2 策略优化算法对比(重点!)
有了“裁判”(或者隐式的偏好信号),就可以开始真正的“强化学习”训练了。这个阶段的目标是更新语言模型的策略,让它生成的回答能够获得更高的奖励。传统的强化学习算法存在高方差、训练不稳定的问题。因此,学术界和工业界发展出了一系列更先进的策略优化算法,其中 PPO、DPO 和 GRPO 是目前的主流。
不同的对齐范式在流程设计上有所侧重。经典的RLHF范式依赖奖励模型和 PPO 进行在线优化;DPO直接基于偏好数据进行离线优化;而RLVR则利用确定性的验证器(如代码执行器)结合GRPO进行训练。
(1)PPO(Proximal Policy Optimization) - 经典在线 RL
主要思路:在尝试最大化奖励的同时,通过一个约束项来限制新旧策略的差异范围,继而避免单步更新过大导致训练崩溃。它通过优化一个“替代目标函数”(Surrogate Objective)来实现这一点。
PPO 最常用的替代目标是Clipped Surrogate Objective,使用 Clipped Surrogate Objective 限制策略更新幅度
- 这个裁剪操作有效地构建了一个悲观的下界,防止策略更新过于激进。
- 当优势 A^t>0 时(左),目标函数随概率比 rt(θ) 的增加而增加,但增长被限制在 1+ϵ 处;当 A^t<0 时(右),目标函数随 rt(θ) 的增加而减小,但减小幅度被限制在 1−ϵ 处,从而约束了策略更新的步长。
单纯用 PPO 优化奖励模型,可能会导致模型在某些传统 NLP 任务(如 SQuAD)上的性能下降,这种现象被称为“对齐税”(Alignment Tax)。引入PPO-ptx混合预训练损失,它在优化奖励的同时,混合了一部分预训练数据的梯度,其优化目标为:
优点:稳定、可控;缺点:流程复杂、成本高、不稳定
(2)DPO(Direct Preference Optimization) - 离线高效范式
尽管 PPO 效果很好,但它流程复杂(需要训练奖励模型、价值模型,并进行在线采样),训练成本高且不稳定。直接偏好优化(Direct Preference Optimization, DPO)是一项创新的技术 ,它巧妙地绕过了显式的奖励模型训练和复杂的强化学习过程。
- 直接从偏好数据优化,无需显式奖励模型和在线采样
主要思路:DPO 证明了,我们可以从人类偏好数据 D={(x,yw,yl)} 中,直接推导出最优策略,而无需先拟合一个奖励模型。它将问题转化为一个简单的分类任务,不需要显式训练奖励模型,也无需在线采样,所以更稳定、高效。
- 优化目标:DPO 的损失函数直接最大化模型对“更好”回答的偏好概率,同时用 KL 散度进行约束:
其中 πref 是参考模型(通常是 SFT 模型),σ 是 Sigmoid 函数。这个损失函数简洁地鼓励模型提高 yw 的概率,降低 yl 的概率。
训练动力学:DPO 的梯度更新有一个直观的解释。它会给那些被隐式奖励模型错误排序的样本(即认为 ylyl 比 ywyw 更好)更大的权重,从而集中火力修正模型的“判断失误”。这个隐式奖励由下式定义:
- 优势:训练稳定、计算高效、数据利用率高,已成为主流轻量对齐方法
(3)GRPO(Group Relative Policy Optimization) - 适合推理任务
- 专为RLVR(Reinforcement Learning with Verifiable Rewards)设计(数学、代码等可验证奖励场景)
- 创新点:“去 Critic 化” +组采样(Group Sampling)+ 组内相对优势估计
- 显著降低显存占用,适合千亿参数模型
- 助力思维链(CoT)、自我反思、长链推理能力涌现(DeepSeek-R1 等)
算法选择指南:
- PPO:需要精细控制、多轮对话、已有成熟 RL 框架时
- DPO:数据有限、追求效率、快速迭代时(最常用)
- GRPO:数学、代码、复杂推理等需要在线探索 + 可验证奖励时
5. RLHF 的实际效果与局限
积极效果(以 InstructGPT 为例):
- 显著提升回答的真实性和信息量
- 降低有害/有毒输出
- 更好遵循人类偏好(有用、无害、诚实)
仍存在的问题:
- 对齐税(Alignment Tax)
- 奖励过拟合(Reward Hacking):模型可能生成啰嗦、讨好式回答
- 偏见缓解不彻底
- 评估困境(如何真正衡量“对齐”?)
- 文化/价值观多样性不足
6. RLHF 的前沿方向与挑战
主要挑战:
- Reward Hacking
- 评估困难
- 多模态对齐
- 文化价值观对齐
- 计算成本高
前沿趋势:
- RLAIF:用 AI 反馈替代/补充人类反馈
- 迭代式后训练(Iterative Post-training,如 LLaMA 3)
- 从对齐到推理:RLVR + 长 CoT(OpenAI o1、DeepSeek-R1)
- 更轻量、高效、低延迟的对齐方法
核心 takeaway:
RLHF 是让大语言模型从“会说话”进化到“懂人性”的关键技术。它通过人类偏好数据构建奖励信号,再用强化学习(或其高效变体)让模型主动探索并内化什么是“更好的回答”。随着 DPO、GRPO 等新型算法的出现,RLHF 已从昂贵复杂的过程逐渐走向高效可扩展,并正在从单纯的对齐工具,演变为激发模型推理能力的重要引擎。
掌握 RLHF 的三大阶段、奖励模型训练原理、以及 PPO / DPO / GRPO 的适用场景,是理解现代大模型后训练(Post-training)的核心基础。
二、LLaMA-Factory RLHF(DPO)实战
1、章节核心目标
通过 LLaMA-Factory 框架,在消费级硬件(甚至单张显卡或 CPU)上,使用Qwen2.5-0.5B-Instruct模型,完整跑通DPO(Direct Preference Optimization)对齐流程,直观感受 RLHF/DPO 对模型行为风格的改善。
2、LLaMA-Factory 框架简介(重点掌握)
主要特点:
- 支持主流开源模型(LLaMA、Qwen、Baichuan、Mistral、Yi 等)
- 全流程覆盖:Pre-training → SFT → RLHF(PPO、DPO、KTO、ORPO 等)
- 支持多种高效微调方法:LoRA、QLoRA、DoRA、GaLore
- 提供友好Web UI(LLaMA-Board),实现“零代码”训练
- 硬件友好:支持 4-bit/8-bit 量化、DeepSpeed、FlashAttention 等加速技术
核心优势:极大降低了大模型微调的门槛,适合个人开发者与小团队使用。
3、环境搭建要点
- 克隆仓库:
git clone https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory - 安装依赖:
pip install -e .[metrics] - 验证安装:
llamafactory-cli version - 启动 Web UI:
默认访问地址:http://127.0.0.1:7860llamafactory-cli webui
4、DPO 训练实战流程(重点操作步骤)
1. 模型选择
- 使用已完成指令微调的模型:Qwen2.5-0.5B-Instruct
- 可通过 Hugging Face / ModelScope / OpenMind 下载
2. 重要配置参数
- Stage:选择DPO
- 微调方法:LoRA(推荐)
- 量化:对于显存较小的设备,可以选择将
Quantization bit设置为8或4,启用量化训练(QLoRA)。如果显存充足或希望获得更好的效果,可以保持默认(不量化)。 - Chat Template:必须选择与模型对应的模板(Qwen 系列选qwen)
- 对于Base模型,可选择
default,alpaca,vicuna等。 - 对于Instruct/Chat模型,务必选择对应的模板(例如 Qwen 系列选择
qwen)。 - 训练和推理时必须使用相同的模板。
- 对于Base模型,可选择
- 训练参数推荐:
- Learning rate: 1e-4
- Epochs: 3(训练轮数)
- Batch size: 1(根据显存调整)
- Gradient accumulation: 16(使有效 batch size ≈ 16)(建议 Batch size × Gradient accumulation ≈ 16 或 32)
- LoRA rank: 8(LoRA 的秩,决定微调参数量,8 是默认配置)
- LoRA alpha: 16(缩放系数,通常设为 rank 的 2 倍)
- Cutoff length: 2048
- Compute type: fp16(兼容性好,若显卡适配可选
bf16)
3. 数据集选择
- 使用框架自带的演示数据集:dpo_zh_demo
- 数据格式为偏好对:(prompt, chosen, rejected)
- 建议训练前使用Preview dataset查看数据格式
4. 启动训练
- 设置输出目录
- 可点击Preview command查看实际运行命令
- 点击Start开始训练
- 训练后,Adapter 权重保存在: saves/Qwen2.5-0.5B-Instruct/lora/Qwen2.5-0.5B-dpo-demo
5、训练前后效果对比(核心 takeaway)
测试场景:复杂阅读理解 + 推理任务(涉及盐、脂肪与过量进食的研究描述,并要求选择答案并解释思考过程)
原始 Qwen2.5-0.5B-Instruct 表现:
- 回答简短、武断
- 倾向于直接猜测答案
- 忽略 System Prompt 中“逐步思考并解释步骤”的要求
- 缺乏严谨性,容易“快速完成任务”
经过 DPO 对齐后的模型表现:
- 回答更加严谨、诚实
- 能够忠实执行 System Prompt,展示推理过程
- 明确指出“缺乏足够信息”,而非随意猜测
- 更符合人类偏好的交互风格(诚实 + 解释性强)
结论:DPO 通过偏好数据(chosen vs rejected),成功让模型从“急于给出答案”转变为“更严谨、更注重推理过程”的风格,体现了 RLHF/DPO 在对齐模型“性格”方面的有效性。
6、本章小结与重点知识点
本节核心知识点总结:
- DPO 的优势(对比 PPO)
- 无需单独训练 Reward Model
- 无需复杂的在线采样(on-policy)
- 训练更稳定、效率更高、实现更简单
- 适合在 SFT 模型基础上进行快速偏好对齐
- LLaMA-Factory 实战能力
- 通过 Web UI 可视化完成整个 DPO 流程
- 支持消费级硬件(甚至低显存设备)完成对齐训练
- 高度灵活的参数配置与模板管理
- DPO 训练关键配置记忆
- Stage 必须选DPO
- Chat Template 要与模型匹配
- LoRA rank=8 + alpha=16 是常用起始配置
- 有效 batch size(batch size × gradient accumulation)建议设为 16~32
- RLHF 的本质价值
- 不只是让模型“答对”,而是让模型学会人类偏好的回答风格(严谨、诚实、解释性、有帮助)
- DPO 能有效改变模型的行为倾向
- 实际开发建议
- Web UI 适合快速上手和实验
- 实际大规模训练或自动化流程更推荐使用命令行方式
一句话总结:
本节通过 LLaMA-Factory + Qwen2.5-0.5B-Instruct 在消费级硬件上成功跑通了DPO实战,证明了使用少量偏好数据就能显著改善模型的回答风格,使其从“简单粗暴”变得“严谨且更符合人类偏好”。这是从理论走向落地的关键一步,也为后续更复杂的 RLHF 应用打下了坚实基础。
