机器之心编译
作者:Han Fang、Karthik Abinav Sankararaman
机器之心编辑部
LLM 后训练最佳入门介绍。在大模型时代,Scaling Law 一度是 AI 领域公认的准则:只要堆更多数据、参数、算力,模型能力就会持续增长。GPT-3、PaLM 等的成功,几乎都是这种策略的胜利。
然而,事情并没有一直按这条曲线上涨。研究者发现当模型的规模扩展到百亿、千亿级之后,Scaling Law 带来的边际效益开始递减。
于是,业界开始将目光从大力出奇迹的预训练,转向收益更大的后训练(Post-training)阶段。也正是在这个阶段,我们看到了 RLHF、RLAIF、DPO、RLVR 等方法的爆发式创新。
一时间,「梭哈后训练」成了共识:
展开剩余95%OpenAI o 系列、DeepSeek R1、Google Gemini 等这些以推理为核心的模型,都通过强化学习后训练来提升模型的推理能力,后训练正在成为 LLM 走向高阶智能的必经之路。
既然后训练这么重要,那么作为初学者,应该掌握哪些知识?大家不妨看看这篇博客《Post-training 101》,可以很好的入门 LLM 后训练相关知识。
博客作者有两位,分别是 Meta 超级智能实验室研究科学家 Han Fang,他本科毕业于中山大学;以及 Meta 在线算法、机器学习和 LLM 相关的研究者 Karthik Abinav Sankararaman。
原文链接:https://tokens-for-thoughts.notion.site/post-training-101
该指南涵盖以下几个核心部分:
从对下一个 token 预测过渡到指令跟随; 监督微调(SFT) 基本原理,包括数据集构建与损失函数设计; 多种强化学习后训练技术(RLHF、RLAIF、RLVR),并详细解释奖励模型的工作机制; 用于评估模型质量的各类评测方法。从预训练到指令微调的演进之路
基础模型(或称预训练模型)通常是通过在大规模文本和图像数据上进行预训练得到的。预训练的主要目标是将关于世界(更准确地说是关于互联网)的知识编码进模型中。其训练目标非常直接:让模型学习预测在给定前文序列的情况下,下一个 token 是什么。
然而,尽管基础模型可能掌握了大量知识,但由于下一个 token 预测这一训练目标本身的限制,使得它在大多数实际应用场景中的效用并不理想。
下图 1 可以帮助我们理解这两类模型在行为上的区别。当它们被输入同一个提示语:「What is the capital city of U.S」时(注意:这里的提示语末尾没有问号),两者的响应会有所不同:
预训练模型(图左)由于是基于下一个 token 进行训练的,它会先预测出问号(即?),然后再继续生成后续文本; 指令微调模型则会直接回答「Washington, D.C.」,因为它在训练中通常被优化为直接回答用户的问题,而不是仅仅做续写。为了让 LLM 在问答场景中真正发挥作用,我们通常会在基础模型的基础上进行后训练(也称为微调)。与使用从互联网抓取的大规模网页语料不同,后训练所使用的数据规模通常更小,但质量更高、内容更精细。
后训练的核心目标是对模型的行为进行对齐(如诚实、无害),并进一步强化模型在预训练阶段积累的能力。
目前,主流的后训练技术包括监督微调(SFT)和基于人类反馈的强化学习(RLHF)等。
自 DeepSeek R1 之后,又出现了基于可验证奖励的强化学习(RLVR)方法,它在提升模型推理能力和代码能力方面表现尤为突出。
有时你可能还会听到一些术语,比如持续预训练(continued pre-training)或中间训练(mid-training)。这些术语并不十分正式,通常用来描述在基础模型之上,对特定高质量数据集或目标语料进行进一步预训练的过程,目的是提升模型在某些特定领域的能力。
后训练的端到端生命周期
在高层次上,后训练是将基础模型转化为一个既有用又安全的指令微调模型的过程(见下图 3)。后训练通常有两大类训练技术:监督微调(SFT)和强化学习(RL)。
在 InstructGPT(GPT-3.5 前身) 问世之初,OpenAI 引入了一个两阶段流程,即「SFT + RLHF」。到了 2024 年,DeepSeek 推出了 DeepSeek V3,该模型大量使用了 RLVR,其中 VR 代表可验证奖励(也称规则奖励或准确率奖励)。此后,DeepSeek 又发布了 R1 模型。它描述了 R1-zero(在基础模型上直接使用 RL)以及最终的 R1 模型,后者采用了一个两阶段 RL,其中第一阶段是面向推理的 RL,第二阶段是「全场景」RL(即与人类偏好对齐)。
目前,后训练研究仍在快速演进中。因此,「最佳实践」往往很快就会过时,研究社区在这一领域不断地取得新进展。
图 3:后训练的端到端生命周期。
在 SFT 和 RL 两个阶段中,绝大多数繁重的工作都集中在后训练数据的构建与实验上。这些数据既可以来自数据供应商(如数据标注公司),也可以由其他模型合成生成。可以说,后训练中最重要的部分无疑是后训练数据的质量。
如《Gemini 2.5 Pro》论文中特别强调地,「自从 Gemini 1.5 发布以来,我们在后训练方法论上取得了显著进展,而这些进展得益于我们在 SFT、奖励建模(RM)和 RL 阶段对数据质量的关注」。下文将讨论后训练数据质量中一些提升最终模型质量的重要因素。
贯穿整个后训练生命周期的是:每个阶段得到的模型都会经历某种形式的评估,包括:自动化评估(例如用于知识的 MMLU 和用于指令跟随的 IFEval)被研究人员用来理解每个训练阶段和模型变动的效果,人工评估(即由人工与模型交互,并根据标注准则对输出进行打分)仍然是衡量有用性和对齐程度的关键方法。
什么是监督微调(SFT)?
SFT 是这样一个阶段:它将一个在预训练过程中已经获得大量知识的模型,转化为能够遵循用户指令并具有普遍实用性的模型。SFT 的实现方式是通过向模型提供我们期望的行为示例来完成,具体做法是收集包含指令–回答对的数据集(例如提示及其理想答案),然后在这一数据集上对预训练模型进行微调。
最终得到的模型能做到:
学会遵循指令; 生成符合正确格式和语气的输出; 并可作为后续偏好优化和强化学习的基础。SFT 数据集
从本质上看,SFT 只是监督学习,其中模型被「教授」在一组输入查询下的正确输出。学习过程要求模型在给定前缀的情况下生成后续的一组 token,然后通过目标 token 的交叉熵损失对其进行优化。这与训练一个多类别分类问题的方式完全相同。
因此,该数据集是由指令–回答对 (x,y) 组成的集合,其中:
x 是输入的指令或提示; y 是目标输出(人工撰写或高质量模型生成)。图 4:SFT 数据示例。这里的回答通常被认为是由人类专家或教师模型撰写的「黄金回答」。
SFT 数据集的数据质量
SFT 的效果取决于背后的数据集质量。与预训练不同,预训练中庞大的规模可以在一定程度上掩盖噪声,而 SFT 数据集通常规模较小(约 1 万到 10 万个样本),且经过高度筛选。这使得它们对缺陷极为敏感:即便少量低质量样本也可能教会模型错误的行为。这也是为什么近年来的开源实践方案都强调严格的数据筛选与去污染。
尤其对于推理模型而言,粗糙的数据会导致不忠实或不一致的思维链。例如,模型生成的解释并不真正反映其得出答案的推理过程。高质量的 SFT 数据应当准确、风格一致、避免无关的枝节,并且要与期望模型学习的能力相匹配。
SFT 数据集中最常见的问题可以分为三类:标签噪声、分布不匹配和伪推理。
标签噪声来自人工标注者或模型生成的答案,这些答案可能是错误的、不完整的或不一致的。分布不匹配则出现在数据集范围过窄时(例如只包含数学题或简短回答),这会导致模型在真实世界场景中表现不佳。伪推理问题出现在看似逐步展开的推理轨迹中,实则包含逻辑漏洞、误导性的捷径,甚至是直接复制粘贴的模板。这些问题都会限制模型的泛化能力,并削弱后续基于 RL 的对齐效果。
为了减轻这些风险,实践者通常会结合使用过滤、验证和数据增强方法。
过滤技术包括自动化(或人工审核)的质量检查,例如验证数学答案是否计算正确、代码能否正常执行以及推理链是否真正导向所声称的最终答案。验证通常涉及保留一部分高质量的黄金数据集,用于持续监测模型漂移(即模型随着时间或数据变化,其输出行为或性能偏离预期目标的现象)。数据增强则可以通过采样更多样化的任务来平衡分布,利用更高质量的教师模型生成推理轨迹,或者将带噪声的样本改写为更清晰的格式。
在实践中,最有效的方法是形成一个反馈循环:收集数据、进行质量过滤、评估模型行为,并不断迭代优化数据集,直到 SFT 阶段能够为后续的偏好优化奠定坚实基础。
图 5:数据质量检查 pipeline。
在这个循环过程中,通常会使用一个或多个强大的 LLM 作为「裁判」,来识别各种类型的问题。以下是一份 SFT 数据集中常见问题的检查清单,这些问题都可以利用 LLM 裁判、代码或外部工具,以及其他分类器的组合来进行识别。
SFT 数据如何进行批处理和填充
一旦我们收集好了用于 SFT 的指令–回答对,下一个挑战就是如何高效地将它们输入 GPU。语言模型依赖固定形状的张量:一个批次中的每个样本必须具有相同的长度。但是,真实文本的长度差异很大,一个答案可能只有 12 个 token,而另一个可能有 240 个 token。
为了解决这一问题,我们会将数据打包成批次,并使用填充(padding)和固定的最大序列长度 T;许多大规模训练方案还会把较短的样本拼接在一起,然后再切分成固定长度的序列,以减少填充的浪费。
批处理(batching)指的是将多个样本分组,以便它们可以并行处理。例如,批大小为 16 表示模型会同时看到 16 个提示与回答。这样做能提升 GPU 利用率,并使梯度计算更加稳定。但是,由于序列长度不同,我们会以批次中最长的样本为基准,使其他所有序列都与它对齐。
这时就需要用到填充。填充 token 是一些特殊的「空」token(通常用 PAD 表示),它们会被附加到较短序列的末尾,使一个批次中的所有序列长度一致。我们会使用注意力掩码来告知模型忽略这些填充部分,因此它们不会影响损失计算。具体如下:
示例 1:[The, cat, sat] → 长度 3 示例 2:[Dogs, bark, loudly, at, night] → 长度 5 如果将它们放在同一个批次中,我们会把示例 1 填充到长度 5: [The, cat, sat, PAD, PAD]在训练过程中,注意力掩码为 [1, 1, 1, 0, 0],因此损失只会在真实 token 上计算。这样既能保证梯度的正确性,又能让张量保持矩形结构。
在实践中,批处理和填充策略会显著影响吞吐量。
动态批处理(分桶):将长度相近的样本分组,以减少填充需求。 序列打包:将多个较短的样本拼接成一个长序列,并用特殊 token 分隔,以减少空间浪费。 掩码机制:确保只有「真实」的 token 才会对梯度产生贡献。SFT 损失函数 - 负对数似然函数
由于 SFT 本质上就是一个多分类问题(number of classes = vocab_size),因此用于训练模型的损失函数就是在给定输入 x 的条件下,生成正确序列 y 的负对数似然(NLL)。这一过程通常通过计算模型预测类别与数据集中真实类别之间的交叉熵来实现(在输出序列的每个 token 上进行)。数学形式如下所示:
其中:
θ 表示模型参数 y_t 表示目标回答中的第 t 个 token y_<t 表示前缀(即之前的 token) p_θ(・) 表示模型给出的概率分布在实践中,这通常通过交叉熵函数来实现。在序列的第 t 步,设 y_t^* 为正确的 token(来自真实数据集)。设 p_θ(y_t^* | x,y_<t) 为参数为 θ 的模型生成 token y_t^* 的对数概率。然后模型会优化以下函数:
为了保证数值稳定性,这个函数通常基于最后一层的 logits 来实现(即 LLM 最后一层的输出,在通过 softmax 函数之前的结果)。设 V 为词表大小,z_t ∈ R^V 表示序列中第 t 个 token 在最后一层的 logits。针对 y_t^* 的预测分布由以下公式给出:
因此,SFT 损失简化为:
第二项就是常见的「log-sum-exp」项,它通常通过一种数值稳定的方式计算(称为「log-sum-exp 技巧」),如下所示。
由于 z_t,v - m ≤ 0,这可以确保 exp (z_t,v - m)≤ 1,因此不会出现整数溢出问题。整数下溢会被安全地舍入为 0,这正是预期的行为。将这些结合起来,最终得到的 SFT 损失函数为:
接下来将深入探讨后训练的主要阶段之一 —— 强化学习(RL)。
RL 训练技巧有哪些?
在所有后训练方法中,强化学习或许是最复杂的一种,同时也是目前最有效的模型微调方式之一。
在传统强化学习中,整体可以被看作一个循环过程:智能体根据环境状态从策略(policy,即模型)中采样动作,以最大化某种奖励信号。
RL 奖励
奖励是一个标量值,用于表示对某个动作或状态的期望程度。
上述公式旨在最大化期望奖励,同时通过 KL 散度来进行正则化约束。
在模型对齐与能力提升的过程中,有多种类型的奖励机制被证明是有效的:
RLHF(基于人类反馈的强化学习) 借助从人类偏好中训练出的奖励模型(Reward Models, RMs),帮助模型在日常对话中表现更优,并对其安全性与语言风格进行对齐。 RLAIF(基于 AI 反馈的强化学习),也被称为 Constitutional AI(由 Anthropic 提出),通过将 LLM 与一份书面形式的规则结合,实现监督信号的自主扩展,生成偏好导向的奖励信号。 RLVR(基于可验证信号的强化学习) 在提升数学推理与代码能力方面表现突出,它使用真实答案、单元测试、代码执行结果等可验证信号作为精确的奖励来源。 过程监督(Process Supervision) 的粒度比 RLVR 更细,它通过过程奖励模型(Process Reward Model, PRM),对长任务中的中间步骤进行逐步评分。 最后,基于评分标准(rubrics)的奖励机制可以通过判断模型输出是否满足一组明确的评分标准来生成奖励 。通常会使用多个评分标准,因此最终奖励往往是各评分项得分的加权和或平均值。在实际应用中,后训练流程通常采用一种混合式、多阶段的训练方案,在不同阶段融合多种奖励类型(例如:SFT → 偏好优化 → 带有可验证 / 评分标准信号的 RL)。
奖励模型与人类偏好
在 RLHF 发展初期,InstructGPT 论文提出了一种方法:即通过人类偏好排序来训练奖励模型,这也成为了 RLHF 中的核心组件之一。
最常见的奖励模型任务是:预测某个候选回复在多大程度上符合人类对该提示语的偏好。这种能力是通过一批带有人类偏好标签的「提示语–回复」数据集训练出来的。换句话说,奖励模型的目标是估计在给定指引下,人类标注者更倾向于哪一个输出。
为收集偏好数据,研究人员会针对一个提示语生成多个模型回复,让人工标注者对这些回复按从最好到最差进行排序。这些排序数据用于训练奖励模型,而训练好的奖励模型则在强化学习微调阶段为模型输出提供标量奖励信号。
什么是偏好数据?
偏好数据的一般形式是:一个提示语配对两个回复,即成对比较(pairwise preference)。简单说就是一个模型生成两个回复(回复 A 和回复 B)。标注者判断 A 是否比 B 更好,或反之。还可以让标注者对多个回复进行整体排序,记录任意两个回复之间的比较。许多 RLHF 流程正是通过这种方式来构建奖励模型所需的数据集。
数据示例如下:
JSON 格式:
{
"prompt": [
{"system":"You are a helpful, honest assistant."},
{"role": "user", "content": "What color is the sky?"},
],
"chosen": [{"role": "assistant", "content": "Washington, D.C."}],
"rejected": [{"role": "assistant", "content": "? The capital of the United States is Washington, D.C."}],
}
RL 提示和数据
接下来,文章给出了一些不同奖励类型下的 RL 提示示例数据。
可验证奖励(Verifiable rewards):
适用场景:存在可靠的自动化检验器,可用于判断结果是否正确或合规。 最佳应用领域:数学、代码生成、结构化抽取 / 格式化、有标准答案的检索任务、以及结果可检验的工具调用。JSON 格式:
{
"prompt": [
{"system":"You are a helpful, honest assistant."},
{"role": "user", "content": "Solve: (3x - 2)(x + 5) = 0. Provide only the roots separated by commas in ascending order."},
],
"metadata": [
"ground truth response": "-5, 0.6666667",
"reward": 1.0,
"scorer:" math_grader],
}
JSON 格式:
{
"prompt": [
{"system":"You are a helpful, honest assistant."},
{"role": "user", "content": "Implement is_palindrome (s: str) -> bool. Ignore case and non-alphanumerics."},
],
"metadata": [
"scorer": code_grader,
"suite": {
"suite_id": "palindrome_001_v3",
"suite_hash": "sha256:e2b4...9d",
"entry_point": "is_palindrome",
"runtime": {"image": "python:3.11", "timeout_s": 4, "mem_mb": 1024},
"public_tests_count": 4,
"hidden_tests_count": 18
},
],
}
偏好奖励:
何时使用:在没有严格检查的情况下。 最佳适用领域:聊天、摘要、重写、风格、安全性。RL 算法
下表给出了 LLM 后训练中常用的几类强化学习算法。
最初,社区主要使用 PPO(近端策略优化,Proximal Policy Optimization);但自 DeepSeek-V3 发布后,GRPO(组相对策略优化,Group Relative Policy Optimization) 成为了更受欢迎的选择。两者的主要区别在于:GRPO 去掉了单独的价值(critic)网络,而是通过组采样来估计相对优势,从而减少了内存与计算成本。
另外,REINFORCE 是一种经典的强化学习算法,它同样不依赖 critic 网络,且实现非常简单。
最后,尽管从技术上来说 DPO(直接偏好优化,Direct Preference Optimization) 并不是强化学习算法,但它因无需奖励模型而广受关注;其训练成本低、稳定性好,通常在固定的偏好数据上进行离线训练。
如何评估后训练模型?
后训练评估形式多样,需从多维度进行评估。传统指标(如困惑度)无法捕捉有效性,而人工评估昂贵且主观。因此,成功的评估需要融合多种方法,以覆盖模型质量的各个方面。
后训练评估方法可分为以下几类:自动评估、人工评估。
自动评估通常快速且廉价,且无需昂贵的人工干预。一般包含基于标准答案的评估、基于大语言模型的评估等。
而人工评估是由人类评估员直接评判模型输出,是评估模型主观质量的黄金标准,尤其适用于自动评估难以衡量的开放式或敏感任务(如评估礼貌性、创意性)。但此类方法成本高、耗时多,且结果易受标注者偏见、文化背景等因素影响。
下面是人工评估中的单点评估和基于偏好的评估对比:
发布于:北京市卓信宝-武汉配资网-炒股杠杆软件-股票配资平台网提示:文章来自网络,不代表本站观点。