Skip to content

RLHF训练流程与对齐替代方案详解

内容整理自学习笔记,仅供面试备考参考;不构成录用、培训或考试承诺。

1. LLM 经典预训练 Pipeline

目前基于 Transformer decoder 的 LLM(如 ChatGPT、LLaMA、Baichuan 等),通常有基于预训练的 base 模型和使用 RLHF 微调的 Chat 模型。Chat 模型的训练一般包括三个步骤

步骤名称说明
1预训练(Pre-training)从大量无标注文本数据中学习通用知识
2有监督微调(SFT)优化模型以更好地遵守特定指令
3对齐(Alignment)使 LLM 更有用且更安全地响应用户提示

2. 预训练(Pre-training)

利用数十亿到数万亿个 token 的庞大文本语料库对模型进行预训练,使模型能够根据提供的文本预测**「下一个单词」**。

3. 有监督微调(Supervised Fine-tuning)

3.1 什么是 SFT?

虽然 SFT 训练目标与预训练类似(也是预测下一个单词),但需要人工标注的指令数据集,其中模型输入是指令(根据任务不同也可能包含输入文本),输出为预期回复内容。

3.2 SFT 的训练数据格式

Instruction: "Write a limerick about a pelican."
指令:"写一首关于鹈鹕的打油诗。"

Output: "There once was a pelican so fine..."
输出:"从前有一只鹈鹕很好..."

模型会把 "Write a limerick about a pelican" 作为输入,逐个 token 进行预测,输出 "There once was a pelican so fine..."

3.3 预训练 vs 有监督微调

对比维度预训练(Pre-training)有监督微调(SFT)
训练目标预测下一个单词预测下一个单词(相同)
训练数据量庞大(数十亿~数万亿 token)较小
数据格式无标注文本人工标注的指令数据
是否需人工标注

4. 对齐(Alignment)

通过微调的方式,将语言模型与人类的偏好、价值观进行对齐,这也是 RLHF 机制发挥的地方

5. RLHF 流程详解

5.1 RLHF 三步流程

  1. 在预训练好的模型上进行有监督微调(SFT)
  2. 在有监督微调模型基础上创建一个 Reward Model(RM)
  3. 基于 RM 模型使用 PPO 算法微调 SFT 模型

5.2 如何进行有监督微调?

先收集一个 Prompts 集合,要求标注人员写出高质量回复,然后使用该数据集以监督的方式微调预训练的基础模型。

5.3 如何创建 RM 模型?

  1. 对于每个 Prompt,要求 SFT 后的 LLM 生成 4~9 个回复
  2. 由标注人员根据个人偏好对所有回复进行排序
  3. RM 来自 RLHF 第一步的 SFT 模型,SFT 的输出通过一个回归层(单个输出节点)转换为奖励分数

虽然排序过程很耗时,但工作量比第一步的有监督数据集构建要少一些。

5.4 如何用 PPO 微调 SFT 模型?

基于 RM 模型使用 Proximal Policy Optimization(PPO)算法微调 SFT 模型。

5.5 InstructGPT 的原理

InstructGPT 是基于强化学习的文本生成模型,核心原理涉及两个概念:

概念说明
RLHF先用人类生成的示例预训练模型,再通过与人类评估者交互收集评估结果,创建强化学习数据集
Reward Shaping将人类评估者的反馈与模型生成的文本进行比较,计算差异度量作为奖励信号的一部分,引导模型训练

通过两者的结合,InstructGPT 能够通过人类评估者的反馈指导生成过程,逐步提升生成文本的质量和一致性。

6. LLaMA 2 的 RLHF

6.1 LLaMA 2 RLHF 概述

Llama-2-chat 在第一步 RLHF 微调上使用相同的指令数据,但在第二步使用了两个奖励模型

  • 侧重有用性(helpfulness)
  • 侧重安全性(safety)

通过多个阶段不断进化,奖励模型也会根据 Llama-2-chat 模型出现的错误进行更新,并增加了拒绝采样(rejection sampling)步骤。

6.2 Margin Loss 实现逻辑

例如四个回复排序结果为 A < C < D < B,可得六个对比结果:A<C, A<D, A<B, C<D, C<B, D<B

对比项InstructGPTLLaMA 2
回复对比数量同一提示下 4~9 个输出排序每次只看 2 个回复对比
对比标签仅优劣新增边际标签:「显著更好」和「好的不明显」

Margin Loss 中,m(r) 可调节两个回复之间的差值,如果对比结果为「显著更好」,则会增加梯度值,加快更新速度。

6.3 两个 RM 模型的实现逻辑

用于模型优化的最终奖励函数会将两个分数进行线性组合

  • 有用性 RM:评估回复对用户的有用程度
  • 安全性 RM:评估回复的安全程度

6.4 拒绝采样逻辑

对比项拒绝采样PPO
更新方式得到 K 个输出,使用最高奖励的输出更新梯度每次基于单样本更新
训练阶段SFT 初始阶段后仅用拒绝采样,再结合 PPO与拒绝采样结合使用

Llama 2 使用训练流水线,迭代产生多个 RLHF 模型(从 RLHF-V1 到 RLHF-V5)。

7. RLHF 替代方案

7.1 为什么需要替代方案?

RLHF 在 InstructGPT 和 LLaMA 2 论文中被证明有效,但过程比较复杂

7.2 替代方案总览

替代方案论文核心思路
Constitutional AIarxiv:2212.08073基于人类提供规则列表的自我训练机制
HIRarxiv:2302.05206基于重新标记的监督微调,将失败案例转化为有用训练数据
DPOarxiv:2305.18290直接用交叉熵损失微调 LLM,无需单独 RM
ReSTarxiv:2308.08998离线生成训练数据集,在质量越来越高的子集上迭代训练
RLAIFarxiv:2309.00267用 LLM 生成奖励模型训练的评级,替代人类标注

Constitutional AI 中的"红队"(Red Team)指测试目标系统防御能力的过程,通过模拟现实世界攻击者的战术来挑战并改进系统。

8. RLHF 训练中如何选取最优 Checkpoint?

8.1 核心问题

RLHF 训练过程中,Reward Model 输出的只是近似奖励(Proxy Reward),不能完全相信训练过程中的 Reward 变化——"更高"的 Reward 不一定意味着"更好"的效果。

8.2 真实 Reward 与近似 Reward 的关系

指标随 KL 增大的趋势
真实 Reward(实线)先逐步提升,到达峰值后逐渐减小
近似 Reward(虚线,RM 打分)一直稳步上升

最优模型出现在真实 Reward 曲线的最高点,但我们无法直接获得真实 Reward。

8.3 用 KL 估算真实 Reward

关键假设:真实 Reward 曲线与「当前模型和初始模型」之间的 KL 存在某种关系。

KL 可以被实时计算,OpenAI 找到了计算公式,公式中 3 个关键参数:

参数说明
α与 RM 大小和训练数据规模有关
β与 RM 大小和训练数据规模有关
d初始模型和当前模型的 KL 开根号

8.4 Scaling Law 实验结论

实验维度结论
RM 大小相同训练数据下,RM 越大 actor 模型能获得更高的真实 reward
RM 大小RM 越大,模型能在更大的 KL 处才发生下降转折
RM 数据集规模数据集越大提升越大,但最少需超过 2000 条
Policy Model 大小模型越大,利用 RM 做提升的收益越小(初始分已较高)
Policy Model 大小无论模型规模如何,最优 Reward 对应的 KL 值相同

论文中 2k 下限是在 3M~3B 大小模型下得出的结论,更大模型是否适用尚不确定。