RLHF (基于人类反馈的强化学习) 🧣✒️📋13
Keywords: 偏好学习, 对齐学习
监督微调 → 奖励模型 → 策略优化 (强化学习)
-
监督微调 (SFT):
-
目标:
🚩 构建基础能力, 使模型具备基本的指令跟随能力, 构建良好基线. -
训练数据:
- 人类编写的高质量
(Prompt, Response)对;
- 人类编写的高质量
-
训练方法:
- 全参数微调;
- 参数高效微调 (PEFT);
🚩 LoRA (低秩自适应):
-
目标函数:
🚩 交叉熵损失
-
-
奖励模型
$R_{\phi}(x, y)$ :-
目标:
🚩 将人类偏好转化为标量分数; -
输入输出:
- 预测时:
$(x,y) \rightarrow r$ - 训练时:
$(x,y^+,y^-) \rightarrow (x,y^+), (x,y^-) \rightarrow (r^+,r^-) \rightarrow \sigma(r^+ - r^-)$
- 预测时:
-
训练数据: 人类偏好数据
(Prompt, Chosen Response, Rejected Response) -
模型结构: SFT 模型 (移除
lm_head层) + 新线性层; -
目标函数: 🚩 成对排序损失 (Pairwise Ranking Loss) / 负对数似然损失
其中
$\boxed{\sigma \big( R_{\phi}(x, y^+) - R_{\phi}(x, y^-) \big) = P(y^+ \succ y^- \mid x)}$ 为 成对比较概率 (Bradley–Terry 模型), 表达了$y^+$ 优于$y^-$ 的概率.
-
-
策略优化 (基于 PPO 算法):
-
目标函数 (组合目标):
🚩 策略优化 (PPO-Clip) + 价值函数误差 + KL 正则项 -
策略模型
$\pi_{\theta}(s)$ 📌-
损失函数:
-
优势估计
$\hat{A}_t$ :其中
-
-
价值模型
$V_{\phi}(s)$ :- 训练方法: 自举 (Bootstrapping), 监督信号由 奖励模型 提供;
-
训练数据:
-
一条长度为
$T$ 的轨迹, 提供$T$ 个训练样本:其中
-
$T$ : Response 的 token 数; -
$r$ : 奖励模型对完整上下文 (prompt + response) 给出的最终奖励 (可能含 KL 惩罚, 折扣因子等修正); -
$s_t$ : prompt + 已生成的前缀 (partial response); -
$R_t$ : 每个时间步的奖励, 都取最终奖励$r$ ;直观理解: 无论在序列的哪个位置, 后续都会走向同一个结果.
-
-
-
目标函数:
- 均方误差 (MSE) 损失
-
参考模型
$\pi_{\text{ref}}$ :- 固定参数的 SFT 模型;
PPO-Penalty 需要, 因为要计算 KL;PPO-Clip 不需要 (主流), 只需要 旧策略 (即 上一次迭代的策略);
-
伪代码 📌
部分函数说明 (python):
Categorical():torch.distributions.Categorical(probs)Append():list.append()Extend():list.extend()Length():list.len()Gather():torch.gather()
💡 要点说明
-
RLHF (Reinforcement Learning from Human Feedback, 基于人类反馈的强化学习)
- 是一种通过结合 人类偏好 与 强化学习 来微调大语言模型的 技术 或 范式;
- RLHF 是建立在 SFT 基础上的进一步微调;
-
预训练的局限:
- 大规模无监督语料预训练 虽然能使 LLM 获得强大的 语言建模能力,
- 但输出内容可能与 人类价值观, 安全性要求 或 交互习惯 等不一致;
-
SFT 的不足:
- SFT 的目标是 拟合训练数据的条件分布, 虽然能让模型在 特定任务 上更可控,
- 但其性能上限取决于 数据的质量和范围,
- 对 未见场景的泛化 与 细粒度偏好的对齐 能力有限;
-
RL 引入难题:
- 奖励函数难以定义:
- 自然语言的好坏缺少客观标准;
- BLEU/ROUGE 等自动指标与人类主观感受差异较大;
- 奖励稀疏 & 延迟:
- LM 输出是逐 token 生成, 但奖励通常只在序列结束时给出;
- 这导致奖励信号稀疏, 难以为每个 token 的选择提供即时反馈;
- 传统 RL 在这种长序列且延迟奖励的场景下训练效率极低;
- 动作空间大:
- 对 NLP 来说, 动作空间是整个词表, 比一般游戏的动作空间大几个数量级;
- 传统 RL 算法在如此巨大的组合空间中极易陷入无效探索;
- 训练不稳定:
- 语言模型参数规模庞大, 若无良好初始化, 极易出现梯度爆炸/模式崩坏等问题;
- 传统 RL 算法在高维连续动作空间中表现不稳定;
- 奖励函数难以定义:
-
动机/思路
- RLHF 的核心在于 将人类偏好作为优化目标;
- 通过将 人类偏好 量化为一个 标量奖励分数 (当做评价一个回答好坏的信号),
- 鼓励 模型去探索那些未在原始训练集中出现, 但可能获得高奖励 (即更符合人类偏好) 的回答,
- 使模型具有 更大的策略搜索空间, 从而有可能 突破静态数据的限制, 生成 更符合要求 的输出;
- RLHF 的核心在于 将人类偏好作为优化目标;
-
优势 (相比仅 SFT)
- 更大的策略空间:
- SFT 的损失函数 (交叉熵) 惩罚模型输出与标准答案之间的差异, 因此其搜索空间被限制在示范数据附近;
- RLHF 的目标是 最大化奖励信号, 这允许模型 尝试训练中未出现, 但高奖励 (更符合偏好) 的表达, 因此拥有更大的策略探索空间;
- 更容易对齐抽象偏好:
- SFT 模仿给定的示范数据, 难以学习复杂/模糊/抽象的维度或概念, 比如 逻辑性/幽默感 等;
- RLHF 将人类反馈转化为 序列级奖励/排序信号/比较信号
- 抽象偏好虽然难以用单一答案标注, 但可以通过 成对比较 或 排序 体现 (如 A 比 B 更有说服力);
- 更低的数据成本:
- SFT 需要提供高质量的示范数据, 对抽象偏好更是难以统一标准;
- RLHF 只需要获得数据间的 相对关系, 比如 A 和 B 哪个更好/更幽默/更简洁/更有逻辑 等;
虽然不同人的判断标准依然有差异, 但相比直接撰写一个 "好的/幽默的/简洁的/有逻辑的" 的回答, 难度降低了非常多;
- 其他优势, 比如 更好的泛化性, 更好的安全性, 更少的幻觉/错误, 更灵活的优化方式, 平衡多个优化目标 等等, 基本都是以上优势的拓展;
- 更大的策略空间:
RLHF 通常包含三个核心步骤: SFT → RM → RL
构建基础能力
- 动机:
- 预训练模型虽然知识丰富, 但其输出格式和内容质量可能不符合特定任务的要求;
- 目的/预期:
- 将预训练语言模型调整到具备基本的 指令遵循能力, 为后续步骤提供一个性能良好的 基线模型;
- 提供一个稳定可用的初始策略, 避免 RL 从随机策略开始导致训练不稳定;
- SFT 是 RLHF 的基础, 若 SFT 模型效果不佳, 会导致后续 奖励模型失真 / RL 优化失败 等一系列问题;
- 输入:
- 预训练语言模型;
- 高质量指令-响应对数据集 (Prompt + 人工撰写的理想回答);
- 输出:
- 初步对齐 的 SFT 模型
- 失败模式:
- 数据质量差: 学到错误或不一致的模式;
- 数据覆盖低: 在未见任务上表现差;
- 灾难性遗忘: 在微调过程中可能遗忘预训练阶段获得的知识;
量化人类偏好
- 动机:
- 人类偏好难以用简单规则定义, 需要一种可泛化到新样本的自动化 评分机制;
- 目的/预期:
- 将 人类偏好 转化为可量化的 标量奖励信号;
- 训练一个能够 对模型输出打分 的 奖励模型 作为评价人类偏好的代理, 其评分能反映模型回答的好坏;
- 输入:
- SFT 模型 + 人类偏好数据集,
给定 提示 后, 由 SFT 模型 生成多个回答, 每组回答有人类标注的 偏好排序;
- SFT 模型 + 人类偏好数据集,
- 输出:
- 奖励模型: 一个能够为任何「提示+回答」对打分的模型;
- 模型输入: 提示+回答 → 模型输出: 标量分数;
- 失败模式:
- 奖励失真/标注偏差: 奖励模型学习到错误的偏好模式;
- 数据多样性不足/泛化能力不足: 奖励模型在 分布外数据 上表现不佳, 无法准确评估训练集范围外的回答;
- 过拟合: 在训练样本上打分准确, 但对新样本失效;
-
目标:
- 将人类的相对偏好转化为一个可优化的 标量奖励函数
$R_{\phi}(\cdot)$ ; - 训练一个模型, 使其能够为给定的 提示-回答 对
$(x, y)$ 分配一个 标量分数$r = R_{\phi}(x, y)$ ;
- 将人类的相对偏好转化为一个可优化的 标量奖励函数
-
训练数据:
-
来源:
- 使用 阶段一训练的 SFT 模型 在同一提示下生成的两个或多个候选输出;
- 由人类标注者进行成对比较或排序;
-
数据形式 (每条样本包含):
-
上下文 (Prompt):
$x$ ;
-
获胜回答 (Chosen Response)
$y_j$ ; -
失败回答 (Rejected Response)
$y_k$ ;
-
上下文 (Prompt):
-
来源:
-
模型结构:
-
骨干:
-
使用阶段一微调后的 SFT 模型初始化 Transformer 主体, 并 移除
lm_head层 (即预测下一个 token 的线性层)为了减少训练成本; 也可以是另一个经过微调的 LM; 还可以是根据偏好数据从头开始训练的 LM (Anthropic)
-
使用阶段一微调后的 SFT 模型初始化 Transformer 主体, 并 移除
-
输出层
- 一般取 最后一个 token (通常是
EOS) 对应的隐藏向量$h_{\scriptscriptstyle EOS}$ 作为整段输入的表示; - 通过一个新的 线性层
$Wh_{\scriptscriptstyle EOS}+b$ 得到标量分数;- 通常线性层的 输入维度 等于隐层维度, 输出维度 为 1;
- 一般取 最后一个 token (通常是
-
骨干:
-
损失函数
-
Bradley–Terry Loss / Pairwise Logistic Loss (成对样本, 一正一负)
-
对给定 上下文
$x$ 和 一对回答$(y_j, y_k)$ , 其中人类标注认为$y_j$ 优于$y_k$ , 记作$y_j \succ y_k$ ; -
根据 Bradley-Terry 模型, 定义
$y_j \succ y_k$ 的概率为:
-
训练目标是 最大化似然函数
$L$ , 或最小化对应的 负对数似然损失:
-
-
InfoNCE Loss (候选回答大于 2 时, 一正多负)
-
-
训练阶段:
-
在一次前向计算中, 奖励模型分别对
$(x, y_j)$ 和$(x, y_k)$ 各跑一遍, 得到两个标量分数$r_j$ 和$r_k$ ; - 若
$y_j \succ y_k$ , 则损失为$l = -\log \ \sigma(r_j - r_k)$
-
在一次前向计算中, 奖励模型分别对
-
推理阶段:
-
输入:
- Prompt + 单个候选输出;
-
输出:
- 标量分数 (越高表示越符合奖励模型学到的人类偏好);
-
输入:
训练奖励模型时, 在 损失函数 中使用了 Bradley–Terry (BT) 模型, 这里简单介绍下.
-
背景:
- BT 模型最早应用于体育领域,
- 其 目的 是通过分析一系列两两对战的胜负结果, 估算出参赛对象的潜在 能力分数;
- 核心思想: 能力分数越高, 获胜概率越大;
-
基本假设:
-
每个对象
$y$ 存在一个 不可直接观测的 的 标量能力分数$r$ , 用于衡量其 强度; -
当两个对象
$y_j$ 和$y_k$ 进行比较时, 结果是一个随机事件, 其 概率 仅取决于它们之间的 能力分数差, 即$r_j - r_k$ ; -
具体地,
$y_j$ 战胜$y_k$ (记$y_j \succ y_k$ ) 的概率由以下公式定义:其中
$\sigma(z) = \dfrac{1}{1 + e^{-z}}$ 为 Sigmoid 函数, 显然有$P(y_j \succ y_k) + P(y_k \succ y_j) = 1$ ; -
因此, BT 模型本质上是通过 Sigmoid 函数 将两个对象的 能力分数差 映射为其比较的胜率;
-
-
目的:
- 在经典 BT 模型中, 其目标是利用观测到的大量 成对比较结果
$D = {(y_j, y_k) \mid y_j \succ y_k}$ , 学习一个 评分函数$R_{\phi}(y)$ ; 该函数接收一个对象$y$ 作为输入, 输出其静态能力分数;
- 在经典 BT 模型中, 其目标是利用观测到的大量 成对比较结果
-
优化过程/损失函数:
-
模型的优化目标是 最大化 所有观测结果在模型下的 似然估计;
-
其对应的 负对数似然损失函数 为:
-
该损失函数的直观作用是: 鼓励模型拉大强弱对象之间的分数差, 使得模型的预测结果与观测到的胜负关系一致;
-
基于 强化学习 (RL) 框架 进一步优化 SFT 模型, 对齐人类偏好.
- 强化学习基础
- 动机:
- SFT 模型的学习受限于静态数据, 缺乏主动探索能力;
- 策略优化旨在让模型通过与 环境 的交互, 在 更大的策略空间 中寻找更优的行为;
LLM 微调语境下的 环境, 即模型生成下一个 token 时的 上下文 (Prompt + 已生成的 token 序列)
- 核心目标:
- 通过优化策略参数, 最大化策略模型的期望累计回报;
- 通常会引入一个正则项 (比如 KL 散度), 以防止优化后的策略过度偏离原始的 SFT 模型, 以保持生成内容的稳定性和质量;
- 输入 (关键组件):
以 PPO 算法为例, 不同策略优化算法需要的输入不同.
- Prompt 数据集;
- 策略模型: 待优化的模型, 通常由 SFT 模型初始化;
- 奖励模型 (可选): 作为人类的 偏好代理, 为模型输出打分; 在策略优化阶段不参与更新;
- 参考模型 (可选): 提供 KL 散度约束; 初始 SFT 模型的副本, 不参与更新;
- 价值模型 (可选): 估计 给定状态的回报; 结构与奖励模型一致, 在策略优化阶段 独立于策略模型进行训练, 使用 SFT 模型初始化;
- 输出:
- 对齐人类偏好的最终模型 (经过 RLHF 微调后的模型)
- 失败模式:
- 奖励过度/过度优化: 在奖励模型的打分上越来越高, 但实际输出质量下降;
- 模式坍塌: 过度优化的副作用之一, 输出模式单一, 失去多样性 (模型为了获得高分只会生成「安全」回答);
- 奖励黑客 (Reward Hacking): 模型学会利用奖励模型漏洞而非真正提升质量; 比如更冗长的回答/更礼貌的回答等, 观感提升但忽视质量;
- 除此之外, 还有 偏好冲突/价值错配 等失败模式,
- 根源 一般是 "奖励信号不完美/失真 + 优化算法过度依赖奖励模型";
TRPO → PPO (Clip/KL) → DPO → GRPO/IPO/KTO/...
- 1. 🏷️ 基础概念
- 1.1. ✅ 什么是 RLHF? 它的背景/动机是什么? 相比 SFT 的优势在哪里? 怎么实现的?
- 1.2. ⬆️ 什么是 对齐? RLHF 是如何实现大模型与人类意图对齐的?
- 1.3. ⬆️ 为什么说 RLHF 比 SFT 具有 更大的策略搜索空间?
- 1.4. ⬆️ 为什么说 RLHF 比 SFT 更容易 对齐抽象偏好?
- 1.5. ✅ RLHF 的一般流程是什么? 每一步的目的? 分别解决什么问题?
- 1.6. ⬆️ 指出每阶段的 输入, 输出 与 失败模式
- 1.7. ✅ 若 SFT 质量不高, RLHF 会发生什么连锁反应?
- 1.8. ✅ 什么是 奖励黑客 (Reward Hacking)/奖励过度/模式坍缩?
- 2. 🏷️ 奖励模型
- 3. 🏷️ 价值模型
• RLHF (Reinforcement Learning from Human Feedback, 基于人类反馈的强化学习), 是一种通过结合 人类偏好 与 强化学习 来 微调大语言模型 的技术;
-
展开详情 ⬇️
• 对齐: 让 AI 模型的目标与 人类偏好 (价值观和意图) 保持一致;
• 通过 奖励模型 将人类偏好作为优化目标, 使用 强化学习 驱动模型行为向这个目标靠近, 从而实现对齐;
• SFT: 拟合示范数据, 搜索空间被限制在其附近;
• RLHF: 对齐人类偏好, 鼓励模型探索高奖励回答;
• SFT: 基于示范数据, 抽象偏好的数据难以构造;
• RLHF: 基于奖励模型, 将抽象偏好转化为 比较信号;
• 1.SFT (构建基础能力) → 2.奖励模型 (量化人类偏好) → 3.策略优化/RL (对齐人类偏好)
-
展开详情 ⬇️
-
展开详情 ⬇️
• 基础能力弱 → 奖励模型失真 → RL 优化失败;
• 奖励黑客: 发现奖励模型漏洞, 使用奖励模型偏好的回答获得高分;
• 奖励过度 (过拟合): 在奖励模型上得分越来越高, 但实际输出质量下降;
• 模式坍缩: 输出模式单一, 失去多样性;本质是 奖励模型失真, RL 过度依赖奖励模型;
-
展开详情 ⬇️
-
训练数据:
$(x, y_j, y_k, l_{y_j \succ y_k})$ -
模型结构: SFT 模型 (移除
lm_head层) + sigmoid 线性层 -
损失函数:
$L = -\log \ \sigma (r_j - r_k)$
-
训练数据:
-
展开详情 ⬇️
- Bradley-Terry 模型是一种通过 成对比较 数据来估计实体强度的概率模型;
- 通过一系列成对的比较结果 (
$x_j \succ x_k$ ), 为每个对象估算出一个标量分数, 代表其强度;
- 通过一系列成对的比较结果 (
- 在 RLHF 中, 我们给出对同一 Prompt 下两个不同回答的偏好标注结果, 将 BT 模型应用到损失函数中, 来训练奖励模型;
- Bradley-Terry 模型是一种通过 成对比较 数据来估计实体强度的概率模型;
• 在轨迹采样过程中收集奖励信号, 然后在策略优化时与策略模型一起训练;
-
展开详情 ⬇️
• 1.奖励稀疏; 2.资源消耗
-
展开详情 ⬇️
- 奖励稀疏/奖励分配:
- LLM 场景下, 奖励模型通常只在 序列末尾 给出一个整体分数;
- 这意味着中间每个 token 没有直接的监督信号;
- 因此价值函数很难学到逐 token 的精确信号, 导致 baseline 不准确, 进而影响 PPO 的稳定性;
- LLM 场景下, 奖励模型通常只在 序列末尾 给出一个整体分数;
- 资源消耗:
- 在 PPO 中, 价值函数通常是一个与策略模型同规模的网络;
- 对于 7B, 13B 甚至更大的模型, 这意味着需要额外维护这样一个庞大的模型, 显著增加存储和计算成本.
- 奖励稀疏/奖励分配:
• RLHF 场景中 奖励模型 固定且基于旧策略训练, 导致实际优化过程可能带有 off-policy 的性质.
•
-
展开详情 ⬇️