RLHF 与 LLM 训练
本页讨论强化学习在与大语言模型交叉处的几个关键问题:RLHF 三阶段流水线怎么运作、AlphaGo 的归类、“RLHF 算不算真正的 RL”,以及本站年份标注的约定。
RLHF(Reinforcement Learning from Human Feedback)可以理解为给 AI 请”人类导师”打分:
- 问题:GPT-3 已经能生成流畅文本,但它不知道什么是”有用的”、什么是”安全的”——它只是预测下一个词。
- 思路:先让人类给 AI 的多个回答排序(哪个更好),训练一个”奖励模型”学会人类的偏好,再用 RL 让 AI 最大化这个奖励。
- 类比:就像新员工(基础模型)能力很强但不懂规矩,先培训基本礼仪(SFT),再让主管不断反馈打分(RLHF),最终培养出专业得体的助理(ChatGPT)。
RLHF 三阶段流水线
Section titled “RLHF 三阶段流水线”InstructGPT(Ouyang et al. 2022)提出的经典三阶段,ChatGPT 正是基于此流程训练:
奖励模型工作原理
Section titled “奖励模型工作原理”奖励模型本质上是一个回归分类器:输入 prompt + response,输出一个标量分数。训练数据是人类的排序结果。
RLHF 的数学形式
Section titled “RLHF 的数学形式”强化学习的标准框架是马尔可夫决策过程(MDP, Markov Decision Process——一种用状态 S、动作 A、奖励 R、状态转移 P 来建模序贯决策问题的数学框架)。RLHF 将 LLM 对齐建模为以下要素:
- 策略(Policy)πθ:参数为 θ 的语言模型,给定 prompt x,生成回答 y ~ πθ(·|x)。
- 奖励函数 r(x, y):奖励模型输出的标量分数。
- 目标函数:最大化期望奖励,同时用 KL 散度约束防止偏离参考模型 πref:
其中 β > 0 是 KL 惩罚系数,控制策略可以偏离参考模型多远。这个 KL 约束可以转化为等价的逐 token 奖励信号:在每个 token 步的奖励中减去 β · log(πθ(a|s) / πref(a|s)),从而保持 PPO 标准接口。
Bradley-Terry 偏好模型:奖励模型训练时,给定人类偏好对 (yw, yl)(winner 和 loser),最大化:
其中 σ 是 sigmoid 函数。直觉:让好回答的分数比差回答的分数高,sigmoid 将差值映射为 0-1 概率。
PPO 的策略梯度目标(策略梯度 policy gradient 是一类直接对策略参数求梯度来优化期望回报的 RL 方法):在阶段 3,PPO(近端策略优化——一种通过限制策略更新幅度来保证训练稳定的策略梯度算法)优化以下截断目标:
其中 rt = πθ(at|st) / πold(at|st) 是新旧策略概率比,Ât 是优势函数(advantage——衡量当前动作比平均水平好多少的估计量),ε 是截断阈值(通常 0.2),用于限制每步更新幅度、防止策略剧烈变化导致训练崩溃。
探索-利用权衡(exploration-exploitation tradeoff):RL 的核心难题——是利用已知的高奖励策略,还是探索新的可能更好的策略?在 RLHF 中,KL 惩罚实际上扮演了”温和探索”的角色:它防止策略过早收敛到某个 reward hacking 的局部最优。
奖励模型概念代码
Section titled “奖励模型概念代码”以下用 scikit-learn 演示奖励模型的核心训练逻辑——从偏好排序数据学习一个打分函数:
import numpy as npfrom sklearn.linear_model import Ridge
# 模拟:每条回答用 4 维特征表示(如 [简洁度, 准确度, 安全性, 有用性])# 人类排序结果:回答A > 回答B,即 score(A) 应大于 score(B)responses = np.array([ [0.9, 0.8, 1.0, 0.9], # 回答 A(好) [0.3, 0.4, 0.5, 0.2], # 回答 B(差) [0.8, 0.9, 0.9, 0.85], # 回答 C(好) [0.2, 0.3, 0.8, 0.1], # 回答 D(差)])# 偏好对:(winner_idx, loser_idx) —— 人类标注 A>B, C>Dpairs = [(0, 1), (2, 3)]
# 构建 Bradley-Terry 损失的训练数据:winner 特征 - loser 特性 → 正标签X_train = np.array([responses[w] - responses[l] for w, l in pairs])y_train = np.ones(len(pairs)) # 希望 w 的分数比 l 高
# 用线性回归近似奖励模型(实际用神经网络 + 对比损失)rm = Ridge(alpha=0.01).fit(X_train, y_train)scores = responses @ rm.coef_ # 给每条回答打分print(f"奖励分数: {np.round(scores, 2)}")# 输出示例: [0.7 -0.65 0.75 -0.8] —— 好回答分数高,差回答分数低PyTorch 实现:奖励模型与 Bradley-Terry 损失
Section titled “PyTorch 实现:奖励模型与 Bradley-Terry 损失”以下用 PyTorch 实现一个基于 Transformer 的奖励模型,并用 Bradley-Terry 偏好损失训练——这是 RLHF 第二阶段的核心代码:
import torchimport torch.nn as nn
# 奖励模型概念实现:本质是一个"给 (prompt, response) 打分"的回归头class RewardModel(nn.Module): """奖励模型:在 LLM 的最后一层隐藏状态上加一个线性回归头""" def __init__(self, hidden_size=768): super().__init__() self.transformer = nn.TransformerEncoder( nn.TransformerEncoderLayer(d_model=hidden_size, nhead=8, batch_first=True), num_layers=2 # 实际中复用 SFT 模型,这里用 2 层演示 ) self.reward_head = nn.Linear(hidden_size, 1) # 输出标量分数
def forward(self, response_ids): """输入回答的 token 序列,输出标量奖励分数""" hidden = self.transformer(response_ids) # [batch, seq_len, hidden] last_hidden = hidden[:, -1, :] # 取最后一个 token 的隐藏状态 return self.reward_head(last_hidden).squeeze(-1) # [batch] → 分数
# 用偏好数据训练:chosen(好的回答)分数应高于 rejected(差的回答)reward_model = RewardModel()optimizer = torch.optim.Adam(reward_model.parameters(), lr=1e-5)
chosen = torch.randint(0, 1000, (4, 32)) # 4 个"好回答"rejected = torch.randint(0, 1000, (4, 32)) # 4 个"差回答"
# Bradley-Terry 损失:让 chosen 的分数比 rejected 高r_chosen = reward_model(chosen)r_rejected = reward_model(rejected)loss = -torch.log(torch.sigmoid(r_chosen - r_rejected)).mean() # 偏好排序损失loss.backward(); optimizer.step()print(f"偏好损失: {loss.item():.4f} (越小越好,0 = 完美排序)")真实 LLM 的 RLHF 实践(HuggingFace TRL 库)
Section titled “真实 LLM 的 RLHF 实践(HuggingFace TRL 库)”前面的代码展示了奖励模型的核心思想;真正在大模型上跑 RLHF 通常直接用 HuggingFace TRL 库(即上方类库表中的 TRL)。以下是一个三阶段的标准写法(需要 TRL 0.16+ 与 transformers 4.51+,SFT 已并入 transformers;真实训练需要 GPU,建议先用 0.5B 小模型 + 小数据集跑通流程):
# -*- coding: utf-8 -*-# RLHF 三阶段的 TRL 库实现。安装依赖:pip install trl transformers datasets accelerateimport torchfrom datasets import Dataset, load_datasetfrom transformers import AutoModelForCausalLM, AutoTokenizer, SFTConfig, Trainer
# ---------- 阶段 1:监督微调 SFT ----------# 数据文件 sft_data.json:每行 {"prompt": "问题", "response": "人工写的高质量回答"}model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2-0.5B-Instruct") # 演示用小模型,生产常用 7B 以上tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2-0.5B-Instruct")
sft_config = SFTConfig(output_dir="./sft_out", num_train_epochs=1, max_seq_length=1024)sft_trainer = Trainer( model=model, args=sft_config, train_dataset=load_dataset("json", data_files="sft_data.json", split="train"), processing_class=tokenizer, # 较旧的 transformers 版本用 tokenizer= 参数)sft_trainer.train()sft_trainer.save_model("./sft_model") # 阶段 1 产物:SFT 模型
# ---------- 阶段 2:训练奖励模型 RM ----------from trl import RewardConfig, RewardTrainer
# 数据文件 rm_data.json:每行 {"prompt": ..., "chosen": 好回答, "rejected": 差回答}rm_config = RewardConfig(output_dir="./rm_out", num_train_epochs=1)rm_trainer = RewardTrainer( model="./sft_model", # 从 SFT 模型继续训练,自动加上打分头 args=rm_config, train_dataset=load_dataset("json", data_files="rm_data.json", split="train"),)rm_trainer.train()rm_trainer.save_model("./rm_model") # 阶段 2 产物:奖励模型
# ---------- 阶段 3:PPO 强化学习 ----------from trl import AutoModelForCausalLMWithValueHead, PPOConfig, PPOTrainerfrom transformers import AutoModelForSequenceClassification
# PPO 需要在策略模型上加价值头(value head),并准备冻结的参考模型用于 KL 惩罚ppo_model = AutoModelForCausalLMWithValueHead.from_pretrained("./sft_model", is_trainable=True)ref_model = AutoModelForCausalLMWithValueHead.from_pretrained("./sft_model") # 参考模型,冻结rm_model = AutoModelForSequenceClassification.from_pretrained("./rm_model") # 奖励模型
ppo_config = PPOConfig(batch_size=16, learning_rate=1.41e-5)prompts = ["解释什么是黑洞", "写一首关于秋天的短诗", "如何快速学习 Python"] # 提示词池ppo_trainer = PPOTrainer( config=ppo_config, model=ppo_model, ref_model=ref_model, tokenizer=tokenizer, dataset=Dataset.from_dict({"query": prompts}),)query_tensors = [tokenizer(p, return_tensors="pt")["input_ids"][0] for p in prompts]
for epoch in range(3): for query in query_tensors: # 1. 当前策略(ppo_model)生成回答 response_tensor = ppo_trainer.generate(query, return_prompt=False, max_new_tokens=64) # 2. 奖励模型打分:reward 就是强化学习的奖励信号 text = tokenizer.decode(query) + tokenizer.decode(response_tensor) reward = rm_model(**tokenizer(text, return_tensors="pt")).logits.item() # 3. PPO 更新:最大化奖励,内部自动加入与参考模型的 KL 惩罚 stats = ppo_trainer.step([query], [response_tensor], [torch.tensor(reward)]) print(stats) # 输出 PPO 统计(KL、熵、回报等),KL 异常增大说明发生 reward hackingprint("RLHF 三阶段训练完成。真实工程还需:更大数据集、多卡并行(DeepSpeed)、更长训练步数。")AlphaGo 怎么归类
Section titled “AlphaGo 怎么归类”AlphaGo 混合了监督学习(人类棋谱预训练)、RL(自对弈)与 MCTS 符号搜索,不宜归入任何单一算法类——它也是神经符号 AI 的典型例子。
RLHF 算不算”真正的 RL”
Section titled “RLHF 算不算”真正的 RL””这是近年最活跃的归类争议:
- 支持方:InstructGPT 流水线确实用 PPO 优化标量奖励,形式上就是策略梯度 RL,且源于 preference-based RL(Christiano 2017)。
- 质疑方:LLM 的 RLHF 通常是单步 contextual bandit(prompt→完整回复→奖励),没有多步状态转移与信用分配,更像”RL-inspired fine-tuning”。
- DPO(2023)直接从偏好数据做闭式监督优化、完全去掉 RL 循环却达成类似效果,进一步说明”人类反馈对齐”并不内在地要求 RL。谨慎的归类:RLHF 属于”对齐(alignment)/偏好学习”领域,其中基于 PPO 的实现属于 RL,DPO 类实现则不是。
DPO:绕过 RL 的直接偏好优化
Section titled “DPO:绕过 RL 的直接偏好优化”DPO(Direct Preference Optimization,Rafailov et al. 2023)的关键洞察是:RLHF 的 KL 约束优化目标存在闭式解(analytical closed-form solution)。通过对奖励函数重新参数化,可以直接从偏好数据训练策略,完全跳过奖励模型训练和 PPO 循环。
DPO 的核心推导——将奖励表示为策略与参考模型对数比的函数:
代入 Bradley-Terry 损失后得到 DPO 的训练目标:
直觉:让策略模型相比参考模型,对好回答(yw)提升概率、对差回答(yl)降低概率。这本质是一个带 sigmoid 的对比分类损失,可以用标准语言模型训练流程实现,不需要任何 RL 基础设施。
DPO 的变体(2024-2025)
Section titled “DPO 的变体(2024-2025)”DPO 的简洁性催生了大量变体,主要方向是改进损失函数设计、降低数据要求或提升效率:
| 方法 | 核心改进 | 特点 |
|---|---|---|
| IPO(2023) | 用均方误差替代 sigmoid,解决 DPO 对偏好数据过拟合问题 | 更稳定,适合标注噪声大的数据 |
| KTO(2024) | 不需要成对偏好数据,只需”好/坏”二元标签(pointwise) | 数据需求大幅降低,更贴近实际用户反馈(点赞/点踩) |
| SimPO(2024) | 用回答的平均 token log-prob 代替总 log-prob,去掉参考模型 | 训练更快、省显存,效果与 DPO 持平或更优 |
| ORPO(2024) | 将偏好优化融入 SFT 阶段,一步完成对齐 | 省去单独的对齐阶段,训练流程更简洁 |
| CPO(2024) | 对比偏好优化,关注 hard negatives | 在困难样本上效果更好 |
SimPO(Simple Preference Optimization) 是 2024 年最受关注的变体之一。它去掉了对参考模型的需求(参考模型在 DPO 中需要额外的显存和前向计算),用序列长度归一化的 log-prob 作为隐式奖励:
这一改动使 SimPO 训练效率更高(无需前向传播参考模型),且在多项基准测试(AlpacaEval、MT-Bench 等)上达到或超过 DPO,成为开源社区的新宠。
KTO(Kahneman-Tversky Optimization) 的独特之处在于:它不需要成对的偏好排序(chosen vs rejected),只需要知道每个回答是”好”还是”坏”(thumbs up/down)。它基于行为经济学的前景理论(prospect theory——人类对损失的痛感强于等量收益带来的快感)建模,使得训练数据可以来自更自然的用户反馈,而非需要精心设计的 A/B 对比标注。在工业界大量实际标注场景中,获取二元反馈远比构建偏好对容易,这使得 KTO 具有显著的实用价值。
ORPO(Odds Ratio Preference Optimization) 则更进一步,将对齐目标直接嵌入 SFT 的交叉熵损失中,用 odds ratio(优势比)项惩罚不偏好回答、奖励偏好回答。这意味着整个训练流程只需要一个阶段(而非 SFT → 对齐两个阶段),显著简化了训练管线。
GRPO:DeepSeek 的组相对策略优化
Section titled “GRPO:DeepSeek 的组相对策略优化”GRPO(Group Relative Policy Optimization)是 DeepSeek 在 2024 年提出、用于 DeepSeek-Math 和 DeepSeek-R1 训练的 RL 算法,也是 RLVR(可验证奖励的强化学习)训练推理模型的核心方法。
GRPO 的关键改进——去掉 PPO 中的价值网络(value network / critic——一个独立训练的、用于估计每个状态长期价值的辅助网络):
标准 PPO 需要训练一个额外的价值网络 Vφ(s) 来估计基线(baseline——用于减少策略梯度估计方差的参考量),以计算优势函数:
GRPO 的做法是:对每个 prompt x,采样一组(group)G 个回答 {y₁, …, yG},用组内奖励的均值和标准差作为基线:
这样完全不需要训练价值网络,大幅降低了显存和计算开销——这对参数量巨大的 LLM 尤为重要(价值网络通常与策略模型同等规模,几乎翻倍显存需求)。
为什么 GRPO 适合推理模型训练?
- 推理任务有客观正确答案:数学题有标准答案,代码有测试用例——奖励信号天然明确且可自动验证,不需要人类标注偏好。
- 组内对比自然:同一个难题采样多个推理路径,谁答对了谁的奖励就高,组内归一化天然产生”谁比平均水平好”的信号。
- 去掉价值网络降低成本:LLM 的价值网络本身是一个与策略同等规模的模型,去掉它意味着训练显存减半。
GRPO 与 PPO 的核心区别总结:
| 特征 | PPO | GRPO |
|---|---|---|
| 基线估计 | 训练价值网络 Vφ(s) | 组内奖励统计量(mean/std) |
| 显存需求 | 高(策略 + 价值网络 + 奖励模型) | 较低(策略 + 奖励信号) |
| 适用场景 | 通用 RL(游戏、机器人等) | LLM 对齐与推理训练 |
| 奖励来源 | 学习的奖励模型 | 可验证的规则/验证器 |
RLVR:用可验证奖励训练推理模型
Section titled “RLVR:用可验证奖励训练推理模型”RLVR(Reinforcement Learning with Verifiable Rewards)是 2024-2025 年最重要的范式转变之一:奖励不再来自人类偏好标注,而来自可程序验证的客观信号。这一范式直接催生了 OpenAI o1、DeepSeek-R1 等推理模型。
RLVR 的奖励来源:
- 数学推理:将模型答案与标准答案比对(精确匹配或数值比较),答对奖励 1,答错奖励 0。
- 代码生成:运行模型生成的代码,通过/失败单元测试作为奖励信号。
- 形式化证明:用证明助手(如 Lean、Coq、Isabelle)验证证明的正确性。
RLVR 的关键发现——推理行为的涌现:
2024-2025 年的研究(OpenAI o1、DeepSeek-R1)揭示了一个重要现象:当用 RLVR 训练时,模型会自发发展出长链推理(long chain-of-thought)能力——模型学会自我验证、回溯、反思,这些行为并未被显式训练,而是从”答对拿奖励”的优化目标中自然涌现(emergence)。DeepSeek-R1 论文报告,纯 RLVR 训练的 R1-Zero 模型展现了显著的推理能力提升,包括自发出现”Aha moment”(模型意识到之前推理有误并自我纠正的行为),这种自我反思能力完全是从奖励信号中涌现的,而非人为设计。
从对齐到推理的范式跃迁:RLHF 解决的是”说什么话讨人喜欢”(style/alignment),RLVR 解决的是”怎么把题做对”(capability/reasoning)。这是 RL 在 LLM 中角色的一次根本升级——从”对齐工具”变成”能力训练工具”。
RLVR vs RLHF 对比:
| 维度 | RLHF | RLVR |
|---|---|---|
| 奖励来源 | 人类偏好标注 | 可验证的规则/验证器 |
| 奖励质量 | 主观、有噪声 | 客观、精确(二值或多值) |
| 可扩展性 | 受限于标注成本 | 理论上无限(自动验证) |
| 适用任务 | 对话对齐、风格控制 | 数学、代码、逻辑推理 |
| 训练目标 | “人类喜欢” | “答案正确” |
| 核心算法 | PPO + 奖励模型 | GRPO + 验证器 |
RLHF 和 RLVR 并非互斥——现代前沿模型(如 GPT-4o、Claude 4.5、DeepSeek-R1)通常先用 RLVR 训练推理能力,再用 RLHF 对齐交互风格与安全性,形成”能力 + 对齐”的两阶段训练范式。
- SFT 数据质量 > 数量:少量高质量的指令-回答对(几千条精心编写)效果可能优于几十万条低质量数据。InstructGPT 只用了约 1.3 万条 SFT 数据。
- 奖励模型会”过拟合”人类偏见:如果标注员偏好冗长回答,RM 就会给长回答高分,导致模型变成”话痨”(reward hacking 的典型表现)。
- PPO 阶段要加 KL 惩罚:为防止模型为了刷高分而生成奇怪的文本(reward hacking),通常加一个 KL 散度约束,限制 RLHF 模型不能偏离 SFT 模型太远。
- DPO 是更简单的替代方案:不需要训练奖励模型、不需要 PPO,直接从偏好对训练,工程上简单得多,但效果上限可能略低于精心调参的 PPO。
- 奖励模型是瓶颈:RLHF 的效果上限由奖励模型决定。如果标注者之间分歧大或标注质量差,奖励模型学到的是噪声,PPO 只会放大问题。
- RLAIF 替代人类标注:用另一个强 LLM(如 GPT-4)代替人类做偏好标注(Constitutional AI),成本大幅降低,但质量取决于标注模型。
- 从”对齐”到”推理”:2024 年起 RLVR(可验证奖励的强化学习)用数学/代码的正确性做奖励信号——不需要人类偏好,可大规模训练推理模型(o1 / DeepSeek-R1)。
- DPO 系方法的选择建议:数据量小(< 1 万对)时优先用 DPO;数据量大且追求效率时用 SimPO(省去参考模型);只有二元反馈(好/坏标签)时用 KTO;想一步完成 SFT+对齐时用 ORPO。PPO 的效果上限通常仍最高,但工程复杂度和显存开销也最大。
- GRPO 训练的工程考量:组大小 G 的选择影响方差与效率——G 太小(如 4)优势估计噪声大,G 太大(如 64)采样开销高,实践中常用 G=8~16。温度参数需仔细调节:太高采样出的回答全错(无学习信号),太低回答太相似(组内方差趋零、优势全为零)。
- RLVR 的奖励设计陷阱:仅用最终答案对错做奖励会导致”中间推理过程混乱但碰巧答对”的问题。2025 年的改进方向包括过程奖励模型(PRM, Process Reward Model——对推理的每一步而非仅最终答案给予奖励)和多维度混合奖励。
- 长上下文与推理链管理:RLVR 训练的推理模型生成的推理链可能极长(数千甚至上万 token),训练时需要处理超长序列的显存压力、推理时需要控制延迟与成本,这是 2025 年工程实践的重点难题。
- ChatGPT / Claude 对话对齐:OpenAI 和 Anthropic 都用 RLHF(或 RLAIF)让基础模型学会”有帮助、诚实、无害”地回答问题——这是 ChatGPT 从”会续写文本”变成”会对话”的关键一步。Anthropic 的 Claude 用 Constitutional AI(RLAIF)配合宪法原则清单,大幅降低人工标注成本的同时让模型自觉遵守安全边界。
- InstructGPT 的 PPO 优化:OpenAI 2022 年的 InstructGPT 用三阶段流水线(SFT → RM → PPO)将 GPT-3 对齐到人类指令,论文中报告人类偏好率从 33%(原版 GPT-3)提升到 85%(InstructGPT)。
- Llama 2/3 的 RLHF 微调:Meta 在 Llama 系列开源模型的训练中大规模使用 RLHF 进行对齐,发布的 Llama-2-Chat 系列证明了开源模型经 RLHF 后可达到接近闭源助手的对话质量。
- DPO 在开源 LLM 微调中的应用:Meta 的 LLaMA-2/3、Mistral 等开源模型大量采用 DPO 做对齐——无需训练奖励模型和 PPO 循环,几行代码即可从偏好数据微调,已成为开源社区的主流对齐方案。
- RLVR 训练推理模型:OpenAI o1 和 DeepSeek-R1 用可验证奖励(数学题对错、代码能否通过测试)做强化学习训练,让模型学会多步推理——RL 从”对齐工具”升级为”能力训练工具”的标志性应用。DeepSeek-R1 用 GRPO(组相对策略优化)+ RLVR,无需人类偏好标注,靠答案正确性信号驱动模型学会长链推理。
典型类库与工具
Section titled “典型类库与工具”| 类库 | 语言 | 说明 |
|---|---|---|
| TRL | Python | HuggingFace 官方 RLHF/DPO 训练库,封装 SFT→RM→PPO 全流程,与 transformers 无缝集成 |
| DeepSpeed-Chat | Python | 微软开源的大模型 RLHF 训练框架,支持三阶段流水线与 ZeRO 分布式优化 |
| Axolotl | Python | 配置驱动的 LLM 微调工具,支持 DPO、PPO 等多种对齐方法 |
| PEFT | Python | HuggingFace 参数高效微调库(LoRA 等),常与 RLHF 配合降低显存开销 |
| TRLX | Python | CarperAI 开源的 RLHF 训练框架,支持 PPO 和 ILQL 算法,专注于大规模在线强化学习训练 |
| Unsloth | Python | 高效 LLM 微调库,用 Triton 手写算子大幅加速 SFT / DPO 训练,显存占用降低数倍 |
| verl | Python | 字节跳动出品的 RL 后训练框架,支持 PPO / GRPO,专为大规模 RLHF 和 RLVR 训练优化 |
| 术语 | 英文 | 解释 |
|---|---|---|
| 奖励模型 | Reward Model | 从人类偏好排序数据学习、给模型回答打标量分数的模型 |
| 人类偏好 | Human Preference | 人类标注员对模型多个回答的优劣排序,RLHF 的训练信号来源 |
| 监督微调 | SFT (Supervised Fine-Tuning) | 用人工编写的指令-回答对微调基础模型的 RLHF 第一阶段 |
| 近端策略优化 | PPO (Proximal Policy Optimization) | RLHF 第三阶段使用的策略梯度算法,限制更新幅度保证训练稳定 |
| KL 散度惩罚 | KL Divergence Penalty | 防止 RLHF 模型偏离参考模型太远的正则约束项 |
| 直接偏好优化 | DPO (Direct Preference Optimization) | 无需显式奖励模型和 RL 循环,直接从偏好数据优化策略的方法 |
| 可验证奖励的 RL | RLVR (RL with Verifiable Rewards) | 用客观可验证信号(如数学题对错)作为奖励训练推理模型的方法 |
| 偏好数据 | Preference Data / Pair | 人类标注者对同一问题的多个回答排序(A > B),以 (prompt, chosen, rejected) 三元组形式组织 |
| Bradley-Terry 模型 | Bradley-Terry Model | 将偏好排序建模为概率的经典统计模型,奖励模型的训练损失基于此:chosen 分数越高概率越大 |
| 奖励黑客 | Reward Hacking | 模型学会利用奖励模型的漏洞获取高分但生成人类认为低质量输出的现象 |
| Constitutional AI | Constitutional AI (CAI) | Anthropic 提出的 RLAIF 方案,用 AI 代替人类做偏好标注并依据”宪法”原则清单进行自我修正 |
- 年份双标注:Q-learning(1989 论文/1992 期刊)、DQN(2013 arXiv/2015 Nature)、ResNet(2015/2016)等,本站一律并列标注。
- RLHF 奠基论文:Christiano et al. 2017, “Deep RL from Human Preferences”——首次提出从人类偏好数据训练奖励模型的范式。
- InstructGPT:Ouyang et al. 2022, “Training language models to follow instructions with human feedback”,定义了 SFT→RM→PPO 三阶段流水线。
- DPO:Rafailov et al. 2023, “Direct Preference Optimization”——无需 RL 循环的直接偏好优化方法。
- RLAIF / Constitutional AI:Anthropic 2022,用 AI 代替人类做偏好标注,依据”宪法”原则清单自我修正。
- GRPO:DeepSeek 2024,组相对策略优化——RLVR 训练推理模型(o1 / DeepSeek-R1)背后的 RL 算法。