← 知识图谱 ← 返回学习站

RLHF 全景指南

Illustrating Reinforcement Learning from Human Feedback (RLHF)
Nathan Lambert, Louis Castricato, Leandro von Werra, Alex Havrilla · HuggingFace · 2022-12-09

Language models generate compelling text, but what makes "good" text is inherently subjective and context-dependent — creativity for stories, truthfulness for informative text, executability for code. Writing a loss function to capture these attributes seems intractable, and most LMs are still trained with simple next-token prediction (e.g. cross-entropy). Metrics like BLEU/ROUGE compare to references with simple rules and are also limited. Wouldn't it be great to use human feedback as a measure of performance — or even as a loss to optimize the model? That's RLHF: use reinforcement learning to directly optimize a language model with human feedback.

语言模型能生成多样、有说服力的文本,但"什么是好文本"本质上是主观的、依赖上下文的——故事要创造力,科普要真实,代码要可执行。要写一个损失函数来捕获这些属性几乎不可能,而大多数语言模型至今仍用最朴素的下一 token 预测损失(如交叉熵)来训练。人们设计了 BLEU、ROUGE 等指标来更好地衡量人类偏好,但它们也只是用简单规则把生成文本和参考文本做比较,同样有限。那能不能直接把人类反馈当作性能度量,甚至当作优化模型的损失?这就是 RLHF(基于人类反馈的强化学习):用强化学习方法,直接以人类反馈来优化语言模型。它让模型开始从"在通用语料上预训练"对齐到"复杂的人类价值观"。RLHF 最近的巨大成功便是 ChatGPT。

💡 AI 解读

开篇点出了 RLHF 存在的根本理由:"好"是无法写成损失函数的。预训练只能让模型"会说话",但"说得好、说得有用、说得安全"是人类主观判断,无法用交叉熵表达。RLHF 的天才之处在于——把人类偏好转化为一个可微分的标量信号(奖励),再用 RL 去优化它。这就绕开了"写不出好损失"的难题。理解了这一动机,后面三步训练流程就顺理成章了。

RLHF:分三步走

RLHF is challenging because it involves a multiple-model training process and different deployment stages. We break it into three core steps: (1) pretrain a language model; (2) gather data and train a reward model; (3) fine-tune the LM with reinforcement learning.

RLHF 之所以难懂,是因为它涉及多模型训练过程和不同的部署阶段。HuggingFace 把它拆成三个核心步骤:① 预训练一个语言模型;② 收集数据并训练一个奖励模型;③ 用强化学习微调该语言模型

第一步:预训练语言模型

RLHF starts with an LM already pretrained with classical objectives. OpenAI used a smaller GPT-3 for InstructGPT; Anthropic used transformers from 10M to 52B parameters; DeepMind used up to their 280B Gopher. This initial model can also be fine-tuned on additional text/conditions, but doesn't have to be (OpenAI fine-tuned on "preferable" human text; Anthropic distilled on context clues for "helpful, honest, harmless"). Core to starting RLHF is having a model that responds well to diverse instructions. There is no clear answer on which model is best — the design space is not thoroughly explored.

RLHF 的起点,是一个已经用经典预训练目标训练好的语言模型。OpenAI 在 InstructGPT 中用的是较小版的 GPT-3;Anthropic 用了 1000 万到 520 亿参数的 Transformer;DeepMind 用到了他们 2800 亿参数的 Gopher。这个初始模型也可以在额外文本/条件上再做微调,但并非必须(OpenAI 在"更受偏好"的人类文本上微调;Anthropic 则通过对上下文线索做蒸馏来生成"有用、诚实、无害"的初始模型)。开始 RLHF 的核心是拥有一个能对多样指令良好响应的模型。至于"哪个模型最适合做起点"——没有明确答案,这也是本文的 recurring theme:RLHF 的设计空间尚未被充分探索

💡 AI 解读

记住:RLHF 不是从零训练,而是"对齐"一个已经很强的基座模型。基座模型(base model)决定了能力上限,RLHF 决定的是"行为方向"——更服从指令、更符合人类偏好。这也是为什么"基座 + 对齐"成为现代大模型的标准配方。原文反复强调"设计空间没被充分探索",潜台词是:RLHF 仍是一门半工程半实验的手艺,没有标准答案

第二步:训练奖励模型

Generating a reward model (RM, or preference model) calibrated with human preferences is where the new research begins. The goal: a system that takes a text sequence and returns a scalar reward numerically representing human preference. The scalar output is crucial for existing RL algorithms to integrate later. The RM can be a fine-tuned LM or one trained from scratch. Anthropic used preference model pretraining (PMP) for sample efficiency. The dataset: sample prompts, generate outputs from the initial LM, then have human annotators rank the outputs. Rather than having humans apply scalar scores directly (uncalibrated and noisy), rankings compare outputs from multiple models. An Elo system can generate a ranking; these rankings are normalized into a scalar reward signal.

训练一个用人类偏好校准的奖励模型(Reward Model,RM,也叫偏好模型),是 RLHF 中相对较新研究的起点。其目标:构建一个系统,输入一段文本序列,输出一个标量奖励,用数字代表人类偏好。"标量"输出至关重要——它让后续的 RL 算法能无缝接入。这个 RM 可以是另一个微调过的 LM,也可以是从零在偏好数据上训练的 LM。Anthropic 用了一种专门的"偏好模型预训练(PMP)"来初始化,发现它比普通微调更省样本。数据集的构建方式是:从预定义数据集采样一批提示(prompt),让初始 LM 生成输出,再用人工标注员对生成结果排序。注意——不是让人类直接给每段文本打标量分(不同人的评分尺度不一致、噪声大),而是用排序来比较多模型的输出。可以用 Elo 评分系统生成排名,再把这些排名归一化为一个标量奖励信号用于训练。

💡 AI 解读

这一步有个反直觉但极重要的设计:让人排序,而不是打分。原因是人类打分主观、不可比(张三的 7 分 ≠ 李四的 7 分),而"A 比 B 好"这种相对判断则稳定得多。这和推荐系统、竞技排名用 Elo 是同一个道理。奖励模型的本质是"学会了人类偏好的自动裁判"——之后强化学习阶段就不需要真人了,全靠 RM 给分。这也是 RLHF 成本和质量的命门:RM 学得好不好,完全取决于标注质量。

第三步:用强化学习微调

The method that works: fine-tuning some/all parameters of a copy of the initial LM with a policy-gradient RL algorithm, Proximal Policy Optimization (PPO). Some parameters are frozen because fine-tuning a 10B/100B+ model is prohibitively expensive (see LoRA). Formulate this as an RL problem: the policy is an LM that takes a prompt and returns a text sequence; the action space is all vocabulary tokens (~50k); the observation space is possible input token sequences. The reward function combines the preference model and a constraint on policy shift.

多家组织都跑通的方法是:用一种策略梯度 RL 算法——近端策略优化(PPO)——来微调初始 LM 副本的部分或全部参数。部分参数被冻结,因为微调一个 100 亿乃至 1000 亿+ 参数的模型成本极其高昂(参见 LoRA 等低秩适配方法)。"冻多少、不冻多少"至今仍是开放研究问题。先把这件事形式化成一个 RL 问题:策略(policy)= 一个 LM,输入 prompt、返回文本序列;动作空间= 词表中所有 token(约 5 万个);观测空间= 可能的输入 token 序列分布。而奖励函数把偏好模型和一个"策略偏移约束"结合起来。

Given a prompt x, text y is generated by the current policy. Concatenated with the prompt, it's passed to the preference model, which returns a scalar "preferability" r_θ. Additionally, per-token probability distributions from the RL policy are compared to the initial model to compute a penalty on their difference — designed as a scaled KL divergence r_KL. The KL term penalizes the RL policy from drifting far from the initial pretrained model, ensuring coherent output. Without it, optimization can produce gibberish that nonetheless fools the reward model. The final reward sent to the update rule is r = r_θ − λ·r_KL. The update rule is PPO's parameter update that maximizes reward on the current batch (PPO is on-policy).

给定数据集中的 prompt x,当前迭代的策略生成文本 y;把它和原 prompt 拼接后送入偏好模型,得到一个标量"可偏好度" r_θ。同时,把 RL 策略的逐 token 概率分布与初始模型的分布做比较,计算两者差异的惩罚项——在 OpenAI、Anthropic、DeepMind 的多篇论文里,这个惩罚被设计成两者分布间缩放过的 KL 散度 r_KL

最终奖励 = r_θ − λ · r_KL   (偏好奖励 减去 加权的 KL 散度惩罚)

KL 散度项的作用是惩罚 RL 策略在每个训练批次里大幅偏离初始预训练模型,从而保证模型仍输出连贯的文本片段。没有这个惩罚,优化过程会开始生成"胡言乱语却能骗过奖励模型拿高分"的文本——也就是所谓的 reward hacking(奖励作弊)。实践中 KL 散度通过对两个分布采样来近似。最终送入更新规则的奖励就是 r = r_θ − λ·r_KL。而更新规则则是 PPO 在当前批次数据上最大化奖励指标的参数更新(PPO 是on-policy 的,即只用当前批次的 prompt-生成对来更新参数)。PPO 是一种信赖域优化算法,用梯度约束确保更新步不会破坏学习稳定性。DeepMind 在 Gopher 上用了类似的奖励设定,但用 A2C 来优化梯度,差别明显但尚未被外部复现。

💡 AI 解读

这一段是全文技术含量最高的部分,核心就一句话:奖励 = 偏好分数 − 偏离惩罚。理解 KL 散度惩罚是理解 RLHF 的关键——它是一道"安全阀",防止模型为了讨好奖励模型而钻空子生成垃圾。这就是著名的 reward hacking 问题:RM 是个不完美的裁判,模型会找到 RM 的盲区去骗分(就像学生钻研阅卷老师的漏洞而非真正学会知识)。KL 惩罚强行要求"你不能离原来的自己太远",从而守住基本的语言连贯性。把这个机制和"奖励作弊"主题的文章对照读,会非常透彻。

Technical note: the RL policy generates text, which is fed into the initial (reference) model to produce probabilities for the KL penalty — this reference model is untouched by gradient updates during training. Optionally, RLHF can continue by iteratively updating the reward model and policy together (Iterated Online RLHF, as Anthropic discusses), where iterations of the policy enter the Elo ranking across models — but this needs an engaged user base and dialogue agents, and remains a complex open question.

技术细节备注:实际流程中,是 RL 策略生成文本,再把这些文本喂给初始(参考)模型来产生用于 KL 惩罚的概率分布——这个参考模型在训练中不接收任何梯度更新。可选地,RLHF 还能继续:迭代地同时更新奖励模型和策略(Anthropic 称之为 Iterated Online RLHF)——随着策略更新,用户继续把这些输出与模型早期版本比较排名,策略的各轮迭代进入跨模型的 Elo 排名系统。但这需要拥有活跃用户群的对话 Agent 才能收集这类数据,至今仍是一个复杂的开放研究问题。

RLHF 的开源工具

The first RLHF code for LMs came from OpenAI in TensorFlow (2019). Today, active PyTorch repos grew from this: TRL (fine-tune pretrained LMs in the HF ecosystem with PPO); TRLX (CarperAI's expanded fork for larger models, online/offline, production-ready PPO + ILQL at 33B scale, targeting 200B); RL4LMs (building blocks for fine-tuning/evaluating LLMs with many RL algorithms — PPO, NLPO, A2C, TRPO — and customizable arbitrary reward functions, well-tested with ~2000 experiments).

最早在 LM 上做 RLHF 的代码来自 OpenAI 2019 年的 TensorFlow 版本。如今已有几个活跃的 PyTorch 仓库从中发展而来:TRL——在 HuggingFace 生态中用 PPO 微调预训练 LM;TRLX——CarperAI 在 TRL 基础上扩展的分支,能处理更大模型,支持在线/离线训练,已有可在 LLM 部署所需规模(如 330 亿参数)上做到生产就绪的 PPO 和 ILQL(隐式语言 Q 学习)API,未来版本将支持到 2000 亿参数;RL4LMs——提供用多种 RL 算法(PPO、NLPO、A2C、TRPO)微调和评估 LLM 的构建块,以及任意用户自定义奖励函数,库的可定制性很强,并在最近一项多达约 2000 次实验的工作中做了充分测试与基准评测,给出了数据预算比较、奖励作弊处理、训练不稳定等实用洞察。

💡 AI 解读

对想亲手做 RLHF 的工程师,这是实操入口:TRL(HuggingFace 官方,最易上手)→ TRLX(更大模型、生产级)→ RL4LMs(最灵活、算法最全)。值得注意的是,"用 LoRA 冻结大部分参数"是开源/预算有限场景的常见做法,而最大的实验室在 RL 阶段往往不冻结任何参数——资源决定了你能探索到多大程度。

RLHF 的下一步与局限

These techniques are promising but have clear limitations. Models can still output harmful or factually inaccurate text without uncertainty — an inherent long-term challenge. Gathering human preference data is expensive; RLHF performance is only as good as the quality of its annotations (human-generated text + preference labels). Generating well-written text for specific prompts is very costly (often requires paid part-time staff). Training the reward model (~50k labeled samples) is less expensive but still beyond academic budgets. There's only one large-scale general LM RLHF dataset (Anthropic's) and a few smaller task-specific ones (e.g. OpenAI summarization). Human annotators often disagree, adding variance without ground truth. Huge unexplored design options remain, especially in the RL optimizer: PPO is old; offline RL (e.g. ILQL) could avoid costly forward passes; exploration-exploitation balance is undocumented.

这些技术极其有前景、影响力巨大,并已引起最大 AI 研究机构的关注,但仍存在明确局限

模型仍不完美。即便更好,仍可能输出有害或事实错误的文本,且没有任何不确定性表示。这种不完美是 RLHF 的长期挑战与动力——在一个本质上属于人类的领域里运作,永远不会有一条清晰的"完成线"可跨越

人类偏好数据昂贵。部署 RLHF 系统时,收集人类偏好数据相当昂贵,因为它直接依赖训练循环之外的人类标注者。RLHF 的性能上限取决于标注质量,分两种:人类生成的文本(如 InstructGPT 微调初始 LM)和模型输出之间的偏好标签。为特定 prompt 生成高质量人类文本非常烧钱(常需雇兼职员工,而非依赖产品用户或众包)。好在训练奖励模型所需的数据规模(约 5 万条标注偏好样本)对多数应用还不算太贵——但仍是学术实验室难以负担的。目前只有一个通用 LM 的大规模 RLHF 数据集(Anthropic 的),外加少数小规模任务特定数据集(如 OpenAI 的摘要数据)。

标注者分歧。人类标注员之间常常不一致,在没有 ground truth 的情况下给训练数据引入可观的方差。

巨大的未探索设计空间。尤其是 RL 优化器:PPO 是个相对老的算法,但没有任何结构性原因阻止其他算法带来收益。RL 微调的一大成本是策略每生成一段文本都要在奖励模型上做前向传播(RM 在标准 RL 框架里相当于环境的一部分)。为避免这些昂贵的大模型前向传播,离线 RL 可作为策略优化器——新算法如 ILQL 尤其契合这类优化。探索-利用平衡等 RL 核心权衡也尚未被记录。

💡 AI 解读

这一节是冷静的"现状盘点",三个要点:① 数据是命门——RLHF 的天花板由标注质量决定,而好标注极贵且标注者还会打架;② 优化器是瓶颈——PPO 老旧且每步都要跑昂贵的 RM 前向传播,离线 RL(ILQL)是潜在出路;③ 安全无终点——对齐是开放问题,永远没有"完成了"的那天。值得一提的是,自本文 2022 年发表后,社区已发展出 DPO(直接偏好优化)等绕开显式 RM 和 PPO 的方法,但原文描述的三步 PPO 流程至今仍是理解 RLHF 的经典框架——后续方法都是对它的改进或简化。

进一步阅读:关键论文脉络

Here is a snapshot of key papers showing RLHF's performance for LMs: Fine-Tuning Language Models from Human Preferences (Zieglar et al. 2019); Learning to summarize with human feedback (Stiennon et al. 2020); WebGPT (OpenAI 2021); InstructGPT (OpenAI 2022); GopherCite (Menick et al. 2022); Sparrow (Glaese et al. 2022); ChatGPT (OpenAI 2022); Scaling Laws for Reward Model Overoptimization (Gao et al. 2022); Training a Helpful and Harmless Assistant with RLHF (Anthropic 2022); Red Teaming Language Models (Ganguli et al. 2022); Llama 2 (Touvron et al. 2023). Earlier non-LM roots include TAMER (Knox & Stone 2008), COACH (MacGlashan et al. 2017), and Deep RL from Human Preferences (Christiano et al. 2017, on Atari).

下面是展示 RLHF 在 LM 上性能的"关键论文"快照:《用人类偏好微调语言模型》(Zieglar 等,2019,早期研究奖励学习对四个任务的影响);《用人类反馈学习摘要》(Stiennon 等,2020,RLHF 用于文本摘要);WebGPT(OpenAI,2021,训练能浏览网页的 Agent);InstructGPT(OpenAI 对齐团队,2022,RLHF 用于通用 LM);GopherCite(Menick 等,2022,让 LM 给出带引用的答案);Sparrow(Glaese 等,2022,用 RLHF 微调对话 Agent);ChatGPT(OpenAI,2022,用 RLHF 训练通用聊天机器人);《奖励模型过优化的缩放定律》(Gao 等,2022,研究所学偏好模型的缩放性质);《用 RLHF 训练有用且无害的助手》(Anthropic,2022);《红队测试语言模型以减少危害》(Ganguli 等,2022);Llama 2(Touvron 等,2023,含大量 RLHF 细节的有影响力开源模型)。更早的非 LM 根源包括 TAMER(Knox & Stone,2008)、COACH(MacGlashan 等,2017)和《从人类偏好做深度强化学习》(Christiano 等,2017,应用于 Atari 轨迹)。

💡 AI 解读

这条论文脉络揭示了一个重要事实:RLHF 不是某一天突然发明的,而是经历了"通用 RL → 文本任务 → 通用对话"的演进。Christiano 2017 的 Atari 工作是思想源头(用人类偏好替代难以设计的奖励),InstructGPT/ChatGPT 把它推向了通用 LM。两篇必读:Gao 2022 的奖励过优化缩放定律(揭示了 RM 越大作弊越难的规律)和 Anthropic 的 HH 助手论文(最详尽的 RLHF 工程文档)。如果要追溯"为什么 RLHF 有效"的根本,回到 Christiano 2017 即可——它定义了"用人类判断当奖励"这个范式。