第 16 章 大模型训练范式
第 16 章 大模型训练范式
第 15 章给出了 Transformer 这台机器的结构,本章回答的是"这台机器用什么目标函数、喂什么数据、经过哪几个阶段被训练成对话助手"——即从预训练到偏好对齐的完整流水线,以及在每个阶段"评估什么、什么时候该停"。
学习目标
读完本章,你应当能够:
- 写出语言模型的自回归分解式,并辨析自回归目标与掩码语言模型目标的差异;
- 解释困惑度(perplexity)的定义、与交叉熵的关系,以及它作为代理指标的局限;
- 推导 PPO 的 clip 目标与优势函数的作用,说明 KL 惩罚项为什么必要;
- 写出 GRPO 的组内相对优势公式,并解释它为什么能替代 critic、代价是什么;
- 说明 token 级重要性采样比率在长序列下方差爆炸的机理,以及 GSPO 的序列级修正;
- 从 RLHF 目标推导出 DPO 的偏好损失主干,说明它省掉了什么;
- 判断一个给定的预训练评估与终止策略是否合理。
前置知识检查
| 你需要知道 | 在哪一节补齐 |
|---|---|
| 条件概率、链式法则、期望与方差 | 见第 4 章 4.1~4.4 节 |
| 交叉熵、KL 散度、互信息 | 见第 4 章信息论部分 |
| Softmax 与数值稳定性 | 见第 5 章、第 9 章 Softmax 回归 |
| 梯度下降、学习率调度、Adam | 见第 6 章 |
| 过拟合、早停、偏差-方差 | 见第 7 章、第 8 章 |
| 自注意力、因果掩码、KV Cache | 见第 15 章 |
16.1 语言模型的形式定义
16.1.1 从联合概率到自回归分解
一段文本在词元(token)层面就是一个序列 x = (x₁, x₂, …, x_N),其中每个 x_t 取自词表 V。语言模型要建模的全部内容,就是这个序列的联合概率 P(x₁, x₂, …, x_N)。
直接用一张表存 |V|^N 个概率是不可能的:|V| = 50000、N = 1000 时参数量是天文数字。概率论给了我们唯一的出路——链式法则(chain rule):
| |
链式法则本身是恒等式,没有任何近似。真正引入建模假设的是下一步:假设条件概率只依赖前 t−1 个 token 构成的前缀 x_<t,且这个依赖由一个参数为 θ 的神经网络统一表达:
| |
这就是自回归语言模型(autoregressive LM)。它有两个关键性质:① 参数共享——整条序列的所有位置共用同一个网络、同一套参数,因此参数量与 N 无关;② 训练信号密集——长度为 N 的序列一次前向就产生 N 个预测任务(第 t 位预测第 t+1 位),这是自监督学习效率极高的根源。
重要
自回归分解是"乘法“形式的,取对数后变成加法,这正是训练目标写成"逐 token 交叉熵之和"的原因。对数把连乘转成连加,既避免了 N 个小于 1 的数相乘导致的数值下溢,也让梯度可以逐位置分解。
16.1.2 训练目标:逐 token 交叉熵
给定语料中一条真实序列,模型在第 t 位给出的分布是 P_θ(· | x_<t),真实的下一个 token 是 x_t。用交叉熵度量两个分布的差距:
| |
按第 4 章的结论,−log P_θ(x_t|x_<t) 就是"在模型分布下观测到真实 token 的负对数似然”;对整条序列求和再平均,等价于最小化模型分布与数据分布之间的交叉熵,也等价于最大化对数似然。三者是同一件事的三种说法:
| 说法 | 表达式 | 优化视角 |
|---|---|---|
| 最大似然 | max Σ_t log P_θ(x_t|x_<t) | 统计估计 |
| 最小交叉熵 | min H(p_data, p_θ) | 信息论 |
| 最小负对数似然 | min −Σ_t log P_θ(x_t|x_<t) | 深度学习实现 |
16.1.3 自回归与掩码语言模型的目标对比
BERT 一类模型走的是另一条路:掩码语言模型(Masked Language Model, MLM)。它随机遮盖 15% 左右的 token,让模型根据左右两侧的上下文还原被遮的词。两者的差别不只是"遮不遮",而是建模的对象不同:
| |
| 维度 | 自回归 LM(GPT 式) | 掩码 LM(BERT 式) |
|---|---|---|
| 条件方向 / 联合分布 | 单向(因果掩码),给出合法联合分布 | 双向,多个条件分布互相不自洽 |
| 训练与推理是否一致 | 一致(都是逐位预测),可直接流式生成 | 不一致(预训练含 [MASK],下游不含) |
| 天然擅长的任务 | 生成、续写、对话 | 分类、抽取、句对匹配 |
MLM 的"训练-推理不一致"是长期存在的缺陷:预训练时输入含 [MASK],微调时不含,模型从未学过"没有 [MASK] 时该做什么"。这也是 Encoder-Decoder 与自回归统一路线逐渐占据生成任务主流的原因。
16.2 预训练:数据、规模与上下文
16.2.1 数据规模与清洗去重
预训练的本质是"用海量文本把语言与世界知识压进参数"。工程上真正决定成败的往往不是模型结构,而是数据管线。典型处理链路:
| |
为什么要去重? 重复文本会让模型把有限容量浪费在记忆副本上,等效于降低有效数据量;更严重的是,若重复内容同时出现在训练集与验证集,验证 loss 会被人为压低、评估失效(数据泄漏)。业界反复观测到:重复率高的语料上训练到后期 loss 会突然跳变上升,这通常是模型开始记住重复片段、泛化退化的信号。至于规模,给定算力预算时参数量 N_p 与训练 token 数 D 存在近似最优比:Chinchilla 的结论是"两者同比扩展"(D ≈ 20·N_p),而实际部署的模型常在推理成本约束下故意把 N_p 压小、把 D 拉得远超 20 倍(“过度训练”),因为推理是一辈子的事,训练是一次性的事。
16.2.2 Scaling Law 的直觉
Scaling Law(扩展律)是经验规律:测试集上的交叉熵损失随参数量、数据量、算力的增加呈幂律下降:
| |
它值得记住不是因为能精确预测,而是因为它给出三条工程直觉:① 单调且平滑——没有"过了某个规模就突然变聪明"的台阶,因此小规模实验可以外推,但规模决策必须靠算力预算终止;② 收益递减但不停滞——每提升固定比例算力,损失的绝对改善越来越小却始终为正;③ 可加性——模型容量、数据量、不可约噪声的贡献近似可加,“数据不够"与"模型太小"因此可以用小规模消融实验区分,这是决定加参数还是加数据的依据。引入不可约项(irreducible loss,数据固有熵下界)后得到 L = L_∞ + A·N_p^(−α):L_∞ 是再怎么变大也降不下去的底线。
16.2.3 困惑度:为什么它的量纲是"等效候选数”
perplexity(困惑度,PPL)定义为交叉熵的指数:
| |
它的直觉解释:如果模型对每个位置的预测完全均匀分布在一个规模为 k 的候选集上,那么 P_θ(x_t|·) = 1/k,于是 H = log k、PPL = k。所以 PPL 可以读作"模型在每个位置平均在多少个等概率候选之间犹豫"。PPL = 1 表示模型对每个 token 都给出概率 1(完美);PPL = |V| 表示模型完全没学到东西(等于均匀猜测)。
警告
不同分词器的 PPL 不可直接比较。PPL 是"每 token"的量纲:同一段文本,用 50000 词表的 BPE 切成 100 个 token 和切成 130 个 token,即使模型完全一样,PPL 也会差出可观的数值。跨模型比较 PPL 必须换算到每字符/每字节的层面,或者干脆不用 PPL 比较,改用下游基准。
16.2.4 上下文长度扩展
预训练时通常固定一个上下文窗口 N_max(如 2048 或 4096),因为注意力复杂度是 O(N²)、KV Cache 线性增长,窗口越大单步成本越高。但部署时又希望窗口更长。常见的扩展手段有三类:
| 手段 | 做法 | 代价 |
|---|---|---|
| 位置插值(position interpolation) | 把超出训练范围的位置索引压缩进原区间 | 高频细节分辨率下降 |
| RoPE 频率缩放(NTK / YaRN 类) | 只降低低频分量的旋转频率,保持高频分辨力 | 需要少量长文本继续训练 |
| 继续预训练(long-context continued pretraining) | 直接在长文档上继续训一段时间 | 算力成本最高,但效果最稳 |
为什么不能直接把窗口设成 100 万? 一是注意力 O(N²) 的成本,二是更要紧的:位置编码在训练范围外没有见过,“外推"行为不可控。长度扩展的实质不是把数组开大,而是让位置编码在更长区间上仍然良定义、且模型见过足够多的长依赖样本。
16.3 损失是代理指标
这一节专门解释三个反直觉现象。它们既是工程常识,也是 09-09 Q10 的命题依据。
现象一:预训练 loss 趋平,但下游能力仍在爬升。 loss 衡量的是"对语料下一个 token 的预测能力”,是一个代理指标(proxy metric);下游能力(推理、代码、指令遵循)是能力的涌现表现,与 loss 不是严格同步的函数关系。可以这样理解:后期 loss 的下降主要来自"把已经会的东西的概率调得更准"(校准改进),而不是"学会了新技能";而新技能往往依赖若干能力的组合,只有当每个组成部分都跨过可用阈值时才突然显现,于是出现"loss 平、分数升"的错位。
现象二:大规模预训练几乎不出现传统意义的过拟合。 第 8 章讲的过拟合,条件是"参数量相对数据量过大 + 训练轮次过多"。预训练恰恰相反:数据量以万亿 token 计,而训练通常只遍历语料 1 遍左右(甚至不足 1 遍),模型容量远小于数据的信息量,也没有反复记忆同一批样本的机会。因此"训练 loss 继续降 = 一定在过拟合"这个在中小数据集上成立的推论,在这里不成立。
现象三:验证 loss 抖动,多数不是过拟合。 大规模训练中验证 loss 的短期上升常见来源是:数据分布切换(语料按来源配比混采,某个 batch 全是代码、下一个全是网页,而验证集分布固定)、学习率调度(warmup 或余弦衰减的周期内学习率变化本身会让曲线出现台阶)、数值与硬件因素(混合精度 loss scale 调整、梯度累积边界、通信重排改变有效 batch 组成)。
重要
一句话总结:loss 是代理指标,能力要靠下游基准测;预训练几乎不会过拟合,不要拿小数据集的早停逻辑去套预训练。 这正是 09-09 Q10 选 A 的全部理由,也是排除 B、C、D 的依据。
16.4 监督微调与指令微调
预训练出来的模型只会"续写",不会"听话"。监督微调(Supervised Fine-Tuning, SFT) 用人工构造的"指令 → 理想回答"配对数据,把续写模型改造成对话助手。数据构造有三个要素:
- 格式一致性:训练与推理必须用同一套对话模板(chat template)。系统提示、角色标记、结束符的位置若训练与部署不一致,模型会表现出"莫名其妙的自言自语"或"不停重复用户问题"。
- 只对回答部分计算损失:用户指令的 token 通常被 mask 掉(loss mask),因为要教的是"给定指令该输出什么",而不是"生成用户的指令";对指令部分也算 loss 会浪费容量去建模用户话术。
- 多样性与难度分布:SFT 数据的质量(正确性、格式、信息密度)远比数量重要——少量高质量样本即可显著改变行为,海量低质样本会把模型带向"话痨、含糊、格式漂移"。
灾难性遗忘(catastrophic forgetting):SFT 数据分布极窄(都是对话),训练若干轮后,模型在预训练阶段习得的部分能力(长文续写、代码补全、多语言)会明显退化。缓解手段:混入一定比例的预训练数据(replay)、用较小学习率、只训练部分层或用 LoRA 类低秩适配器、对参数更新施加约束(KL 或 L2 惩罚,见第 8 章)。
16.5 RLHF:三阶段流水线
SFT 之后,模型"会答"但"答得不够好"——它不知道人类更偏好哪种风格、更在意安全性还是信息量。基于人类反馈的强化学习(Reinforcement Learning from Human Feedback, RLHF) 用人类偏好作为信号继续优化,由三个阶段组成:
| |
阶段 2 的目标函数。奖励模型要学到"哪个回答更好",最常用的建模假设是 Bradley-Terry 模型——偏好概率是奖励差的 Sigmoid:
| |
注意损失只依赖奖励之差,因此 r_φ 整体加一个常数不改变任何东西——奖励的绝对尺度没有意义,只有相对大小可辨识。这是后面"用组内均值做基线"合理的根本原因之一。
阶段 3 的目标。RLHF 要最大化期望奖励,同时不允许策略偏离参考模型 π_ref(通常是 SFT 模型)太远:
| |
16.6 PPO:策略梯度、优势与 clip
16.6.1 从策略梯度到优势函数
策略梯度的基本结论(REINFORCE)是:要让期望回报变大,就沿着"回报高时提高该动作概率"的方向更新:
| |
这条式子的方差极大,因为 R(y) 的绝对值没有意义(奖励整体平移不该改变梯度方向)。解决方法是减去一个基线(baseline):
| |
R(y) − b 就是**优势函数(advantage)**的采样估计,表示"这个动作比平均水平好多少"。对语言模型,通常逐 token 分解:
| |
其中 V(s_t) 是**价值网络(critic)**对"从当前前缀出发的期望回报"的预测。GAE(Generalized Advantage Estimation,广义优势估计) 用折扣因子 γ 和迹参数 λ 在"高偏差低方差"(只用 V)与"低偏差高方差"(用完整回报)之间插值:
| |
16.6.2 clip 目标与 KL 惩罚
PPO 的核心是用重要性采样比率限制每次更新的幅度。设更新前策略为 π_old:
| |
min 与 clip 的组合表达了"乐观时不占便宜,悲观时不给奖励":A_t > 0 时目标鼓励提高 r_t,但一旦 r_t > 1+ε 就被截断、梯度归零,防止一次把某条轨迹的概率推得过高;A_t < 0 时目标鼓励压低 r_t,但一旦 r_t < 1−ε 也截断,防止把概率压到接近 0 而丧失探索。
KL 惩罚项有两个作用:① 防止策略跑偏——奖励模型是有限数据上拟合的近似函数,在分布外区域会给出错误的高分;若允许策略无约束地追逐 r_φ,它一定会跑到 r_φ 的盲区去,这就是奖励黑客(reward hacking),KL 项把策略拴在 π_ref 附近使它留在奖励模型可靠的分布内;② 保留基座能力——偏离 π_ref 越远,语言流畅性、格式、知识越容易退化(对齐税,见 16.10 节)。
实际实现中 KL 常以"逐 token 惩罚加到奖励里"的形式出现:
| |
括号内是 KL 的单样本估计:KL(π_θ‖π_ref) = E_{a∼π_θ}[ log π_θ(a) − log π_ref(a) ],用当前采样出的那个 a 就能算,无需遍历词表。
16.6.3 critic 的成本
PPO 需要一个与策略同规模的价值网络,这带来三重成本:
| 成本项 | 具体表现 |
|---|---|
| 显存 | 多存一整套参数 + 优化器状态(Adam 下是参数的数倍),约等于显存占用翻倍 |
| 算力 | 每次前向/反向都要多跑一遍同规模网络 |
| 训练难度 | 价值网络本身就难训:回报尺度不定、长期信用分配困难、与策略同步漂移 |
这三个成本合起来,正是 GRPO 出现的直接动因。
16.7 GRPO:用组内相对优势去掉 critic
分组相对策略优化(Group Relative Policy Optimization, GRPO) 的关键观察是:既然优势函数只需要"比平均水平好多少",而这个"平均水平"完全可以用同一 prompt 下多次采样的平均奖励来估计,那么 critic 就是可以省掉的。
具体流程:对同一个 prompt x,用当前策略采样一组 G 个回答 {y₁, y₂, …, y_G},打分得到 {R₁, …, R_G},然后:
| |
然后把 A_i 当作该条回答所有 token 共用的优势,套进 PPO 的 clip 目标:
| |
为什么它能替代 critic?
- 策略梯度的方差来自"回报绝对值的不确定性"。减去任何与动作无关的基线
b(x)都不改变梯度的期望值(因为E_{a∼π}[∇log π(a)·b] = b·∇Σ_a π(a) = 0)。所以"基线必须是V(s_t)“是一个被过度强化的印象——它只是方差最小的那个选择,不是唯一合法选择。同一 prompt 下的G个回答共享同一个输入、条件分布相同,因此组内均值μ天然是V(x)的一个无偏、低方差估计,且完全不需要额外网络。 - 分母
σ进一步把不同 prompt 的奖励尺度归一化——因为奖励模型只知道相对大小(16.5 节),不同 prompt 的奖励绝对值不可比,除以组内标准差恰好消除了这个不可比性。于是"相对优势"被定义为"在这G个回答里排得怎么样”,与奖励的绝对尺度无关。
代价是什么?
| 代价 | 说明 |
|---|---|
| 采样量更大 | 每个 prompt 要采 G 条(常见 8~64),PPO 通常用较少条轨迹 + bootstrap |
| 组内零方差 | 若 G 个回答得分完全相同则 σ = 0、A_i = 0,该 prompt 对梯度毫无贡献(白采样) |
| 需要可重复打分的奖励 | 组内比较要求打分稳定;生成式评判(LLM-as-judge)的噪声会直接污染优势 |
| 长序列的归一化选择 | 按 token 平均还是按序列平均会改变长度偏置,见 16.10 节 |
注意
GRPO 仍然是**在线(on-policy)**算法:必须用当前策略新采样数据,且一次要采一组。所以"不需要采样"(09-04 Q5 选项 A)与"完全离线"(选项 D)都是错的;“需要训练 critic”(选项 B)描述的正是它要去掉的东西。
16.8 GSPO:序列级重要性比率
16.8.1 token 级比率为什么会爆炸
PPO/GRPO 在实现时把重要性采样比率逐 token 计算:
| |
这个写法在长序列下有三个叠加的问题:
- 连乘的方差累积。序列级重要性权重在数学上是 token 级比率的连乘
R_i(θ) = Π_t r_{i,t}(θ)。若单个比率的对数方差为v,L个近似独立的比率连乘后对数方差约为L·v——方差随序列长度线性增长,权重波动幅度按exp(√(Lv))放大。序列越长,估计越不可靠。 - 逐 token 裁剪破坏理论一致性。clip 原本要限制整条序列的概率变化幅度,逐 token 裁剪却只能限制单点变化:每个 token 都恰在
1±ε内,连乘后整条序列的比率仍可达(1+ε)^L——L = 2048、ε = 0.2时这个数大到荒谬,裁剪的约束力随长度衰减。 - 目标与奖励粒度不匹配。奖励
R_i是整条序列的一个标量,比率却是 token 级的;用 token 粒度匹配序列粒度的信号,相当于给每条轨迹人为制造了L个独立噪声通道。
16.8.2 序列级比率与序列级裁剪
组序列策略优化(Group Sequence Policy Optimization, GSPO) 的做法是:把重要性采样比率直接定义在整条序列上,并用长度归一化控制尺度:
| |
这个开 1/|y_i| 次方(等价于对 log 比率取平均)是全部技巧的关键:它把"连乘导致的对数方差随 L 线性增长"变成"平均对数比率",其方差随 L 下降(约 v/L)。于是不同长度的序列落在同一个可比的尺度上,裁剪阈值 1±ε 对长短序列才有了一致的约束力。
对应的目标:
| |
整条序列共用一个比率、只裁一次,梯度也按序列粒度回传。这既降低了方差,也让优化目标与"序列级奖励"的粒度对齐。
重要
08-05 Q15 的答案链条是:token 级比率在长序列下连乘/逐 token 裁剪 → 方差随长度迅速放大 → GSPO 改用序列级比率 + 序列级裁剪 → 压低方差、稳定长序列训练。题干问的是"引入序列级比率的主要原因",答案只能是方差控制;“提高探索能力"“消除奖励模型偏差"都不属于重要性采样比率的功能。
16.9 DPO:把 RLHF 折叠成分类损失
16.9.1 从 RLHF 目标推导偏好损失
从 16.5 节的目标出发。为书写方便把 prompt x 省略,把 KL 项写成期望形式:
| |
关键一步:定义配分函数 Z = Σ_y π_ref(y)·exp( r(y)/β )。因为 π_ref(y)·exp(r(y)/β)/Z 非负且求和为 1,它是一个合法的概率分布,记为 π*(y)。于是上式可改写为
| |
KL 散度非负、当且仅当 π = π* 时取 0,因此 RLHF 目标的最优解有闭式:
| |
这就是 DPO 的枢纽:奖励可以用"最优策略与参考策略的对数比"重新参数化,log Z 只依赖 x 而与 y 无关。把它代回 16.5 节的 Bradley-Terry 偏好损失:
| |
两个 β·log Z 在相减中正好抵消——这正是"奖励只可辨识到相差一个常数"的直接兑现。最终损失里只剩策略模型 π_θ 与固定的参考模型 π_ref,奖励模型和 RL 循环都不见了。
16.9.2 DPO 的性质与家族
| 维度 | PPO/GRPO(在线 RLHF) | DPO(离线偏好优化) |
|---|---|---|
| 需要奖励模型 | 需要 | 不需要 |
| 需要在线采样 | 需要(每轮新采样) | 不需要(用固定偏好数据集) |
| 训练稳定性 | 对超参敏感,易崩 | 类似监督学习,稳定 |
| 数据效率 / 能力上限 | 采样贵,但可在线探索持续改进 | 依赖离线数据集覆盖度,分布外行为无法纠正 |
| 工程复杂度 | 高(actor/critic/RM/ref 四个模型) | 低(只有 π_θ 与 π_ref) |
DPO 的理论局限也很明确:推导假设"偏好数据与最优策略同分布”,而实际数据由某个历史策略采出。当训练策略偏离数据分布时,log(π_θ/π_ref) 的比值可能被推到极值,导致损失饱和、梯度消失,或者模型学到"降低 y_l 概率"这种退化解。家族成员:IPO 把对数 Sigmoid 换成带有界目标的平方损失、缓解确定性偏好下的过拟合;KTO 只需二元标签(好/坏)而不需成对比较,大幅降低标注成本;ORPO 把 SFT 与偏好对齐合并成一个阶段,用优势比对同时压低被拒回答的概率。
提示
记忆锚点:PPO 需要 critic、GRPO 去掉 critic、GSPO 换序列级比率、DPO 连 RL 循环一起去掉。 四者的演化方向都是"减少需要同时训练的模型数量”。
16.10 RLHF 的工程问题
奖励黑客(reward hacking):策略找到奖励模型的漏洞,拿高分但人类并不满意。典型形式包括无意义的谄媚、堆砌免责声明、把回答写成模板化的清单。根因是奖励模型是有限数据的近似,而策略的搜索空间是整个词表序列空间——在优化压力下,策略必然找到近似函数的盲区。缓解:更强的 KL 约束、奖励模型集成(多个 RM 取最小值)、对奖励做长度与格式的显式惩罚、定期用新的人类标注刷新 RM。
长度偏置(length bias):人类标注者与奖励模型都倾向于给更长的回答更高分(长回答通常包含更多正确内容)。策略于是学会"写得更长",即使内容没有增加。在 GRPO/GSPO 这类按 token 平均优势的实现里,长度还会通过归一化方式引入额外的偏置。缓解:长度惩罚、长度分桶后比较、训练时对长短回答做奖励归一化。
对齐税(alignment tax):对齐训练在提升偏好得分的同时,往往使某些通用能力(推理、多样性、代码)轻微下降。原因是对齐数据分布窄、且 KL 之外的优化压力会把参数推向特定风格。缓解:混入通用能力数据、用小 β、用 LoRA 只改少量参数、在关键能力上做回归测试。
评测方法:RLHF 的评估比 SFT 更麻烦,因为"好"本身是主观的。常见手段见下表:
| 方法 | 做法 | 局限 |
|---|---|---|
| 奖励模型打分 | 用 r_φ 评新策略 | 循环论证:策略就是朝它优化的,分数必然涨 |
| 人类成对偏好(Arena 式) | 盲测两条回答选更好的,算胜率 | 贵、标注者偏好不一致、位置偏置 |
| LLM-as-judge | 用强模型当裁判 | 有风格与长度偏置,需要人工校准 |
| 能力基准回归 | 在 MMLU/代码/数学上测退化 | 与"人类偏好"不一定正相关 |
警告
不要用奖励模型的分数上升来证明对齐成功。r_φ 是训练目标本身,它上升是必然的(和训练 loss 下降一样),只能说明优化在起作用,不能说明模型变好了。必须用独立的指标(人类胜率、能力基准)来判定。
16.11 评测体系与训练终止判断
预训练与后训练关心不同的问题,因此指标也不同。
| 阶段 | 主指标 | 代表基准 | 指标在测什么 | 主要局限 |
|---|---|---|---|---|
| 预训练 | 困惑度 PPL、验证 loss | 语料验证集 | 对语料的建模能力 | 与下游能力不同步;受分词器影响 |
| 预训练(下游) | 零样本准确率 | HellaSwag、ARC、MMLU、代码补全 | 常识推理、科学问答、知识广度、代码 | 单项基准可被数据污染;零样本受提示格式影响大 |
| SFT | 任务准确率 / 格式符合率 | 指令遵循评测集 | 是否按指令输出 | 数据集覆盖度决定天花板 |
| 偏好对齐 | 成对胜率 | Arena 式盲测 | 人类偏好 | 贵、主观、有位置偏置 |
各基准的性质:HellaSwag 给一段情境和四个续写选最合理的,测常识与叙事连贯性(能力较浅,现代模型已接近饱和);ARC 是中小学科学选择题,测基础科学推理(规模小、易被记忆污染);MMLU 是 57 个学科的多选题,测知识广度,局限是主要考知识回忆而非推理、题目公开存在污染风险、对提示格式与选项顺序敏感;代码补全(HumanEval/MBPP 类) 用单元测试判定补全的代码,测可执行正确性、比选择题更客观,但题目只有百量级、单题方差大、pass@k 对采样温度敏感。
评估与终止判断的合理做法(09-09 Q10 的完整依据):① 定期在多样化下游任务上做零样本评估,看能力是否饱和,而不是只看 loss(loss 是代理指标,两者不同步);② 不要因验证 loss 短期上升就停机——大规模预训练单轮遍历海量语料,几乎不过拟合,短期抖动更可能来自数据分布切换或学习率调度;③ 不要只在训练结束时评估——没有中间评估就无法及时发现发散、数据污染、指标崩坏,而评估成本相对训练极小;④ 不要用训练 loss 单指标终止——它深受学习率调度影响,且衡量的是"拟合语料的程度"而非通用能力。
重要
预训练终止决策的正确形态是多信号综合:下游基准是否饱和 + 验证 loss 是否进入平台期 + 算力预算是否耗尽。任何单一信号(尤其是 loss 单指标)都不足以作为停机依据。
本章小结
| 关键结论 | 一句话表述 | 常见错误 |
|---|---|---|
| 自回归分解 | P(x) = Π_t P(x_t|x_<t),链式法则恒等,假设在网络表达 | 以为链式法则本身是近似 |
| 训练目标 | 最大似然 = 最小交叉熵 = 最小 NLL,同一件事 | 把三者当成不同算法 |
| 困惑度 | PPL = exp(逐 token 交叉熵),可读作"平均犹豫的候选数" | 跨分词器直接比 PPL |
| loss 是代理 | loss 趋平不等于能力饱和;预训练几乎不过拟合 | 用验证 loss 抖动触发早停 |
| RLHF 三阶段 | SFT → RM(Bradley-Terry)→ RL(PPO 类) | 以为奖励的绝对值有意义 |
| PPO | clip 限制单次更新幅度,KL 把策略拴在 π_ref 附近 | 认为 KL 只是"防止过拟合" |
| GRPO | A_i = (R_i − μ)/(σ + EPS),组内均值代替 critic 基线 | 以为 GRPO 不需要在线采样 |
| GSPO | 序列级比率 s_i = (Π_t r_{i,t})^(1/|y_i|),序列级裁剪 | 以为 token 级比率连乘没问题 |
| DPO | 由 RLHF 闭式解反解奖励,偏好损失只需 π_θ 与 π_ref | 以为 DPO 等同于在线 RLHF 的效果 |
| 对齐评测 | 不能用奖励模型分数自证成功 | 用 r_φ 上升证明对齐有效 |
自测题
Q1(辨析)GRPO 相对 PPO 的核心改动是"使用组内相对奖励代替 critic"。请说明:这个改动为什么在数学上是合法的?它付出了什么代价?
答案与解析
合法性来自策略梯度的基线无关性:对任意与动作 y 无关的基线 b(x),
| |
所以减去任何基线都不改变梯度的期望值,V(s_t) 只是"方差最小的那个选择",不是唯一合法选择。对同一 prompt 采样一组 G 个回答,条件分布相同,组内均值 μ 就是 V(x) 的一个无偏低方差估计;分母 σ 再把不同 prompt 不可比的奖励尺度归一化(回忆 16.5 节:奖励只可辨识到相差一个常数)。于是
| |
就是合法的相对优势估计。
代价:① 每个 prompt 必须采一组(常见 G = 8~64),采样量比 PPO 更大;② 若组内奖励完全相同则 σ = 0、A_i = 0,该 prompt 白采样、对梯度无贡献;③ 打分必须稳定可复现,生成式评判的噪声会直接污染优势。
易错点:把"合法性"理解成"等价性"。组内优势与 GAE 优势不是同一个量,只是都满足"无关于动作"这个必要条件。
Q2(推导)从 RLHF 目标 max_π E_{y∼π}[r(y)] − β·KL(π‖π_ref) 出发,推出最优策略的闭式解,并说明 DPO 损失中为什么 log Z 会消失。
答案与解析
把 KL 展开并合并到同一个期望里:
| |
令 π*(y) = π_ref(y)·exp(r(y)/β)/Z,Z = Σ_y π_ref(y)·exp(r(y)/β),则 π_ref(y)·exp(r(y)/β) = Z·π*(y),代入得
| |
于是目标等于 −β·KL(π‖π*) + 常数,KL ≥ 0 且仅当 π = π* 取 0,故 π*(y) = π_ref(y)·exp(r(y)/β)/Z。
反解:r(y) = β·log(π*(y)/π_ref(y)) + β·log Z。代回 Bradley-Terry 损失 −log σ(r(y_w) − r(y_l)) 时,两项各自带一个 β·log Z,相减直接抵消。抵消的深层原因是:奖励只可辨识到相差一个仅依赖 x 的常数(16.5 节),而 log Z 恰好就是这样一个常数。
Q3(辨析)判断:“GRPO 是离线算法,因为它用一组采样结果的平均奖励做基线,不需要与环境交互。”
答案与解析
错误。 采样本身就是交互,“用一组采样结果"恰恰要求当前策略去生成这批数据,所以它是在线的。区分在线/离线的标准是"训练数据由谁产生”:在线(on-policy) 的数据由正在被优化的策略产生,策略更新后旧数据失效;离线(off-policy) 的数据由固定数据集或历史策略产生,可反复使用。GRPO 每轮都要用当前策略重新采样一组,属于典型在线方法;DPO 才是离线的(16.9 节)。这道判断对应 09-04 Q5 的两处陷阱:选项 A 说"不需要任何采样"、选项 D 说"完全离线训练,不需要与环境交互",都在同一个误解上。
答案与解析
连乘比率 R = Π_{t=1}^{L} r_t,取对数得 log R = Σ_t log r_t。独立同分布假设下
| |
L 翻倍则对数标准差乘 √2,权重波动幅度按 exp 放大——这就是长序列训练的崩溃来源。
GSPO 的比率取几何平均,即 log s = (1/L)·Σ_t log r_t,于是 Var(log s) = v / L,方差随长度下降。序列级裁剪 clip(s, 1−ε, 1+ε) 因此对任意长度保持一致的约束强度。
为什么"必须"配长度归一化:若不归一化,L 长度序列的比率对数标准差是 √(Lv),L = 2048 时仅统计涨落就可能把 s 推出 1±ε 区间,导致几乎所有样本都被裁剪、梯度信号被抹平;同时短序列几乎从不触发裁剪,长短序列受到的实际约束完全不同,训练目标与"按序列给奖励"的设定脱节。
Q5(判断/设计)某团队发现训练 loss 连续三天不再下降,决定提前结束一个为期两个月的预训练。请指出这个决策的问题,并给出一个可操作的替代方案。
答案与解析
问题有三层:① 指标选错——训练 loss 衡量"拟合语料的程度"而非通用能力,且深受学习率调度影响(衰减期内 loss 会自己往下走,平台期可能只是当前学习率下的平衡);② 现象误读——loss 趋平是预训练的正常形态,此时下游能力仍可能明显爬升(16.3 节现象一),以此为唯一依据会过早停机;③ 风险失控——只看训练 loss 无法发现发散、数据污染、指标崩坏。
替代方案是多信号监控:① 每隔固定步数在多样化下游任务(HellaSwag、ARC、MMLU、代码补全等)上跑零样本评估,观察能力是否饱和;② 同时记录固定验证集 loss,但理解其短期抖动可能来自数据分布切换与学习率调度,不据此即时停机;③ 把算力预算作为硬约束的一部分。三者综合判断,且单次评估成本相对训练极小,没有省它的理由。
Q6(辨析)为什么在 RLHF 中普遍使用 π_ref(SFT 模型)的 KL 约束,而在 SFT 阶段通常不需要显式 KL?
答案与解析
两个阶段优化的信号性质不同。
SFT 阶段的监督信号(人工写的理想回答)是逐 token 的、稠密的、有界的:模型被明确告知每个位置应该输出什么,优化目标本身就把解限制在"数据分布附近"。因此不需要额外的锚点。
RLHF 阶段只有一个标量奖励,而且这个奖励是奖励模型 r_φ 在有限数据上拟合出来的近似函数。优化压力会搜索整个序列空间,必然找到 r_φ 的盲区——在那里 r_φ 给出高分而实际质量很差(奖励黑客)。同时,无约束地远离 π_ref 会丢失基座的语言流畅性与知识(对齐税)。KL 项同时解决这两件事:把策略限制在"奖励模型可靠、基座能力保留"的邻域内。
因此 KL 的作用不是"正则化过拟合",而是限定有效搜索区域。这也解释了为什么 β 太小会崩、太大则学不动。
与真题的关联
| 真题 | 考查角度 | 对应本章小节 |
|---|---|---|
【09-04 选择 Q5】 GRPO 相比 PPO 的优势 | 组内相对优势替代 critic;排除"不需采样"“离线"“需 critic” | 16.7 |
【08-05 选择 Q15】 GSPO 序列级比率(全卷唯一困难题) | token 级比率在长序列下方的方差爆炸与序列级裁剪 | 16.8 |
【09-09 选择 Q10】 预训练评估与终止判断 | loss 是代理指标、预训练几乎不过拟合、必须做中间下游评估 | 16.3、16.11 |
延伸阅读
- Ashish Vaswani 等,《Attention Is All You Need》,2017——Transformer 原始结构(见第 15 章)。
- Jared Kaplan 等,《Scaling Laws for Neural Language Models》,2020;Jordan Hoffmann 等,《Training Compute-Optimal Large Language Models》(Chinchilla),2022。
- Paul F. Christiano 等,《Deep Reinforcement Learning from Human Preferences》,2017;Long Ouyang 等,《Training language models to follow instructions with human feedback》(InstructGPT),2022。
- John Schulman 等,《Proximal Policy Optimization Algorithms》,2017;《High-Dimensional Continuous Control Using Generalized Advantage Estimation》,2015。
- Zhihong Shao 等,《DeepSeekMath》(GRPO),2024;《Group Sequence Policy Optimization》(GSPO),2025;Rafael Rafailov 等,《Direct Preference Optimization》,2023。