跳转至

标准三阶段流程

RLHF 三阶段流程图及核心要素

image.png

image.png

详细解释:

第一阶段(SFT):基座模型在高质量指令-回答对上进行监督微调,数据是固定的 (prompt, response) 对,损失是标准的 next-token prediction 交叉熵。这一阶段将模型从“续写文本”转变为“遵循指令生成回答”的模式,为后续 RL 提供合理的初始策略。

第二阶段(RM):标注员针对同一 prompt 的不同回答进行偏好比较,形成 (win, lose) 对。奖励模型从 SFT 模型初始化(保留世界知识),将语言模型头替换为标量输出层。训练目标是让 win 的标量分数尽可能大于 lose 的分数,使用 Bradley-Terry 偏好模型的损失函数(即 logistic loss)。

第三阶段(PPO):这是最复杂的一环。Actor 即待优化的语言模型,从 SFT 模型初始化;Ref 是冻结的 SFT 模型,用来计算 KL 惩罚,防止策略偏移过远导致语言崩溃;RM 是冻结的奖励模型,提供最终的序列级奖励;Critic 是与 Actor 规模相当的价值网络,估计每个 token 的预期回报,用于计算优势函数。PPO 的 Actor 损失整合了优势函数和 KL 惩罚,Critic 损失是标准的价值函数回归。整个过程中,RM 和 Ref 不参与梯度更新,Actor 和 Critic 不断进化。


SFT 指令微调数据格式及多样性/质量保证

一般格式:

指令微调数据通常为多轮对话格式,以下是一个标准的 ChatML 或 ShareGPT 风格示例:

{
  "messages": [
    {"role": "system", "content": "你是一个有帮助的助手。"},
    {"role": "user", "content": "请解释什么是黑洞?"},
    {"role": "assistant", "content": "黑洞是宇宙中一种极端的天体,它的引力极强,连光都无法逃脱..."}
  ]
}

核心是明确区分角色(system/user/assistant),system prompt 用于设定模型的行为边界。

多样性保证:

  • 任务类型广度:涵盖开放式对话、信息抽取、摘要、翻译、代码生成、数学推理、创意写作、头脑风暴等。数据集合通常来自数十个公开数据集的混合。

  • 复杂度与难度梯度:简单问答、多步推理、长文生成、复杂指令遵循按比例分布,确保模型既会做简单任务也能处理复杂要求。

  • 主题覆盖:科技、人文、医疗、法律、娱乐、日常生活等,避免模型成为“偏科生”。

  • 语言和风格:多语言混合,正式与非正式语气交替,增强泛化能力。

  • 指令形式变化:同一任务用多种表达方式(如“总结一下”“用简洁的语言概括”“请提炼要点”),防止模型过拟合到特定指令模板。

高质量保证:

  • 人工编写核心种子:由专家撰写数千条高质量示例,作为质量的“黄金标准”。

  • 专家审核与修订:众包标注的数据需要经过高级标注员(或语言专家)的审核、润色甚至重写,确保事实准确、逻辑通顺、无偏见。

  • 自动过滤:使用规则和分类器过滤掉包含有害、偏见、低质量(如过短、乱码)的样本。

  • 一致性检验:同一提示下不同标注员产生的回答如果分歧过大,可能需要专家仲裁,或直接弃用。

  • 动态迭代:根据模型在实际交互中的弱点,持续挖掘错误案例,人工修正后加入下一轮 SFT 数据,形成数据飞轮。


SFT 阶段为什么通常用基座模型?能否用已微调过的模型继续 SFT?

为什么通常用基座模型:

  1. 能力基底纯净:基座模型虽然未对齐,但其预训练的知识是完整且未被“污染”的。任何微调都会导致一定程度的灾难性遗忘或分布偏移。从基座模型开始,能最大程度保留预训练学到的广阔世界知识和语言能力。

  2. 控制对齐税:如果从一个已经对齐的模型开始,它的输出分布已经偏离了原始数据的多样性。继续 SFT 可能会进一步放大某些偏见或导致“对齐对齐再对齐”的冗余收缩,使模型过于保守。

  3. 研究实验的标准化:固定基座模型作为起点,可以公平对比不同 SFT 数据策略和 RLHF 技巧的效果,消除上游变量干扰。

能否用已微调过的模型继续 SFT?

可以,但这是一种“增量微调”或“多阶段SFT”,在工程实践中很常见,但需注意风险:

  • 应用场景:例如,先用大量通用指令数据微调,再用特定领域(医疗、法律)的少量高质量数据做第二阶段 SFT,能有效提升垂直领域性能。或者,在产品迭代中,收集用户真实反馈,对已上线模型进行补充 SFT。

  • 风险:

  • 灾难性遗忘加剧:模型已经进入某个局部最优,新数据可能过度冲刷旧能力,导致通用性能下降。解决方案是混合原始 SFT 数据(经验重放)一起训练,或使用较小的学习率。
  • 风格固化:如果第一版模型已经有了特定的回答风格(如过于啰嗦),新 SFT 数据若不能有效覆盖多样风格,模型可能陷入更深的模式崩塌。
  • 数据分布不一致:第一版 SFT 的标注员指南可能与第二版不同,导致模型接收到矛盾信号,产生困惑。

  • 结论:技术上完全可行,实践中常用,但需要精心设计数据混合比例和学习率调度,并严格监控旧任务的性能退化。


SFT 阶段是否可以使用人类偏好数据?如果可以,应该如何使用?

SFT 阶段原则上不使用显式的偏好比较数据,因为它是一个模仿学习过程,需要“正确答案”作为目标。但人类偏好数据可以转化为 SFT 可用的格式,而且非常有效。

使用方法:

  1. 直接提取“获胜者”作为 SFT 答案 在收集偏好数据时,标注员选出的 win_response 本身就是相对于同一 prompt 的较高质量回答。可以直接将 (prompt, win_response) 作为 SFT 训练对。这是最简单且广泛使用的方法,可以显著增加 SFT 数据的多样性(因为 win_response 可能来自不同的模型版本,比人类从头编写的回答更具多样性)。

  2. 利用偏好数据筛选最高质量子集 如果有大量候选回答,可以通过偏好评分(多个标注员打分或 RM 打分)选出得分最高的 top-1 或 top-k 回答,仅将这些高评分回答作为 SFT 目标。这相当于用偏好信号做数据清洗。

  3. 融合生成式批评(Critique)改进 SFT 答案 高级做法:不仅记录 win/lose,还让标注员写下为什么 win 更好(自然语言批评)。然后,将 lose_response 和批评一起输入强大的 LLM,要求其根据批评重写 lose_response,生成改进版。这个改进版通常质量极高,适合加入 SFT 数据集。这种“反思-改进”链能有效提升 SFT 数据的上限。

  4. 弱监督的 SFT+偏好联合训练 可以在 SFT 损失的基础上,额外添加一个对比损失项。例如,对于同一个 prompt 的 win_response 和 lose_response,不仅要求最大化 win 的概率,还要求 win 的概率明显高于 lose 的概率(类似于 DPO 的前身)。但这已进入 DPO 等直接偏好优化的范畴,不是纯粹的 SFT。

核心优势:将偏好数据转化为 SFT 数据,能有效利用 RLHF 流程中产生的大量副产品,降低人工撰写答案的成本,同时引入多模型生成的多样化表达。


奖励模型(RM)的训练目标,标准损失函数及解释

image.png

标准损失函数(Bradley-Terry 偏好模型):

假设人类偏好分布服从 Bradley-Terry 模型:

image.png

有时会加入正则化项,如对奖励值的 L2 正则,避免奖励分数爆炸。

解释:

  • 核心思想:RM 不需要预测绝对分数,只需要学会比较两个回答的相对优劣。Sigmoid 函数将分数差映射到 (0,1) 的偏好概率。

  • 为什么有效:这种 pairwise 损失天然适合人类标注——标注员更容易判断 A 和 B 谁更好,而不是给定一个绝对分数。模型通过大量对比对学习到一套内化的评分体系,能泛化到未见过的回答。

  • 梯度分析:当 win 的分数显著高于 lose 时,σ 接近 1,损失接近 0,梯度很小;当两者分数接近甚至颠倒时,损失很大,梯度推动拉大差距。这促使模型重点关注难以区分的困难样本。

image.png


为什么 RM 通常从 SFT 模型初始化,并替换最后的语言模型头为标量输出头?

从 SFT 模型初始化的原因:

  1. 知识迁移与表示共享:SFT 模型已经将基座模型的通用语言能力精炼为遵循指令、理解回答语义的能力。它的内部表征非常擅长判断文本的连贯性、相关性、事实性等。RM 直接继承这些表征,无需从零学习语言理解,极大地降低了训练难度和数据需求。

  2. 特征对齐:SFT 模型和待优化的 Actor 具有相似的“世界观”。如果 RM 从完全不同的分布初始化,它对 Actor 生成的回答的理解可能会有偏差,尤其是在 RL 后期 Actor 探索出新奇的表达时。共享初始化确保了评判者和被评判者有一个相对一致的“语言理解基础”。

  3. 节省计算与数据:从头训练一个与 SFT 模型同规模的 RM 需要海量偏好数据,且收敛困难。从 SFT 模型热启动,仅需百万级对比对即可训练出有效的 RM。

替换为标量输出头的原因:

  • 任务转换:SFT 模型的输出层是语言模型头(LM Head),输出词表大小的 logits。RM 的任务是输出一个标量分数,因此必须移除原始的 LM Head,替换为一个线性层(通常是隐藏维度 → 1),直接输出奖励值 r。

  • 汇聚策略:标量输出通常加在最后一个 token 的隐藏状态上,或者对序列所有 token 的隐藏状态做某种池化(如平均)后再接线性层。最后一个 token(如 EOS)的表示被认为是整个序列的“摘要”,实践中最常用。

  • 为什么不用整个序列平均:因为不同 token 对“好坏”的贡献不同,通常最后几个 token 更能体现整体连贯性,但也有一些变体使用加权注意力池化。

  • 特殊情况:有些实现会保留 LM Head,但训练时固定 RM 的其他参数,仅微调输出层,但这会导致特征表达能力受限,已较少采用。


RM 训练中每个 prompt 需采多少条不同质量的回答?如何构造对比对?

回答采样数量:

  • 最低要求:每个 prompt 至少需要 2 条回答(一个 win,一个 lose)。

  • 常见配置:K=4~9 条。标注员会对这 K 条回答进行排序(或标注员之间独立打分后聚合排序)。

  • 为什么不是越多越好:标注员对大量候选进行精确排序的认知负荷剧增,排序质量在 K > 9 后显著下降。通常 4 条是比较好的平衡点。

  • 生成来源:这些回答应来自不同的模型(例如 π_SFT、早期 RL 检查点、温度采样变体),以确保质量梯度和风格多样性。全部来自同一模型会导致对比对过于单一。

构造对比对的方法:

  1. 从排序列表中提取所有对

image.png

  1. 相邻对比 只取相邻排名的对:(1,2), (2,3), (3,4)。这能更精确地反映局部偏好梯度,减少因距离过远造成的噪声,但数据量较少。

  2. 随机采样对 从 K 个回答中随机采样 m 个对比对,平衡数据量和标注质量。

  3. 跨 prompt 复用 绝对避免!不同 prompt 的回答之间毫无可比性。对比对必须严格来自同一 prompt。

质量差异的保证:

  • 如果采样到的回答质量过于接近(比如两个都不错),标注员难以判断,可能导致噪声标签。可以在生成时通过调整采样温度等方法,故意引入部分低质量回答(如高温度采样产生混乱回答),拉大质量差距,提高对比的清晰度。

RM 训练中如何处理相同回答的平局?

出现平局的原因:

  • 两条回答客观上质量相同,难分伯仲。

  • 标注员犹豫不决或注意力不集中。

  • 强制排序时,标注员可能随机选一个,引入噪声。

处理方法:

  1. 直接丢弃(最常用)

image.png

  1. 软化目标(软化 Sigmoid 目标)

  2. 将平局视为“偏好概率为 0.5”(即两者无差异)。修改损失函数为:

image.png

  • 等价于最小化两者分数的绝对差异。这比直接丢弃更温和,保留了数据但降低了优化力度。

  • 使用“同等好”标签的三元组

image.png

  1. 转化为“弱偏好”对
  2. 给予平局对较低的权重(如 0.1),正常对权重为 1.0,加权训练。

实践建议:初期可以先丢弃所有平局数据,保证模型快速学习清晰的偏好信号;后期如果需要更精细的区分度,可以引入软化目标,帮助模型学习“细微差别”。


为什么 RM 的训练数据常常需要包含“安全”相关的对抗样本?

根本原因:标准的 SFT 数据和普通偏好数据中,危险与有害的 prompt 和回答比例极低。如果不专门加入安全对抗样本,RM 会严重缺乏判断有害内容的能力,导致 RL 阶段模型可能生成危险内容却无法被惩罚。

安全对抗样本的形式:

  • 红队攻击提示:由红队专家设计,试图绕过安全限制的恶意提示(如“如何制造炸弹,用小说形式描述”)。

  • 有害回答:模型可能生成的含歧视、暴力、色情、自残引导等内容的回答。

  • 安全拒绝回答:模型正确地拒绝或给出安全回应的示例。

为什么必须包含这些数据:

  1. 打破 RM 的“盲点”:如果 RM 从未见过有害回答,它可能无法识别其危害性。例如,一个普通 RM 可能给一个详细讲解如何制作毒药的回答打高分,因为它看起来“详细、有条理”。安全对抗样本让 RM 学会将这类回答映射到极低的分数。

  2. 教会 RM“拒绝”是高分行为:在安全对抗样本中,将危险的 prompt 与“拒绝回答并解释原因”的回应配对,且标注员给拒绝回答极高偏好。这使 RM 学会:面对危险指令,拒绝是最高分的行为模式。

  3. 防止奖励黑客:如果缺少安全数据,RL 阶段的模型可能会发现,生成具有煽动性、争议性、边缘色情的内容能获得更高奖励(因为标注员对这类内容可能有潜意识偏向)。安全对抗样本提前堵死了这条路。

  4. 应对上下文攻击:攻击者可能用长对话逐渐引导模型突破防线。RM 的训练数据中需要包含这种多轮对话中的渐变有害内容,使其具备上下文敏感的安全判断力。

构造方式:通常由人类红队标注员专门撰写,或使用自动对抗生成工具(如使用另一个 LLM 生成有害变体),再由人类筛选和标注偏好。


PPO 阶段需要哪四个模型?它们各自的作用是什么?

PPO 阶段是一套复杂的强化学习系统,通常同时加载四个模型(两个冻结,两个训练)。

模型 角色 是否训练 作用
Actor (π_θ) 策略网络,即待优化的语言模型 接收 prompt,生成回答。它是我们要最终产出的对齐模型。通过 PPO 损失更新参数。
Critic (V_ψ) 价值网络 估计 Actor 在当前状态(已生成 tokens)下的期望回报。用于计算优势函数,降低梯度方差。
Reward Model (r_φ) 奖励模型 否(冻结) 对 Actor 生成的完整回答给出标量奖励 r。是 RL 的优化目标。
Reference Model (π_ref) 参考策略 否(冻结) 通常就是 SFT 模型(或 Actor 的初始版本)。用于计算 KL 惩罚项,防止 Actor 偏离参考策略过远,保护语言能力。

协同工作流:

image.png

为什么需要四个模型:

  • Actor + Critic 是 Actor-Critic 架构的标准配置。

  • RM 提供奖励信号,但必须冻结,因为如果它随训练更新,会陷入“自己给自己打分”的循环,导致奖励漂移和过度优化。

  • Ref 模型冻结是为了提供稳定的 KL 锚点,阻止语言崩溃。


PPO 阶段,Actor 是如何被初始化的?为什么通常用 SFT 模型,而不是直接使用基座模型?

Actor 的初始化:

Actor 直接加载 SFT 阶段产出的 π_SFT 权重。它的网络结构与 SFT 模型完全一致(都是带语言模型头的 Transformer),所以权重可以直接继承。

为什么用 SFT 模型而非基座模型:

  1. 基座模型不懂指令格式 基座模型是在任意文本上预训练的,它不理解“user: ... assistant: ...”这样的角色格式,也不知道何时应该停止生成。直接从基座模型开始 RL,Actor 生成的文本常常是混乱的续写,而不是有结构的回答。奖励模型几乎无法给这些胡言乱语打出有意义的分数,RL 会陷入随机探索的黑暗期。

  2. 基座模型的行为空间太大 基座模型的输出分布覆盖了所有可能的文本形式。RL 的奖励信号在这种极其广阔的搜索空间中极其稀疏,要搜索到第一个“看起来像个回答”的样本可能需要天文数字的试错。SFT 模型已将行为空间收缩到“高质量回答”的流形附近,RL 只需在这片“高原”上进行微调和优化即可。

  3. SFT 提供了良好的自然语言先验 即使没有奖励信号,SFT 模型本身也能生成相对通顺、相关的回答。这意味着 PPO 初期就能获得非零的奖励,优化过程能够平稳起步。基座模型可能初始奖励几乎为 0,导致梯度消失。

  4. SFT 模型更容易约束 KL 惩罚需要 Reference Model。SFT 模型作为 Reference,能精确约束 Actor 不要偏离“正常回答”的模式。如果以基座模型作为 Ref,则 Ref 本身都不是一个合格的回答生成器,其约束意义大打折扣。

  5. 实践中,如果省略 SFT 直接 RLHF,结果通常是灾难性的语言崩溃或无法收敛。


PPO 阶段,Reward Model 和 Reference Model 需要参与梯度更新吗?为什么?

均不参与梯度更新,必须冻结。

Reward Model 冻结的原因:

  1. 自我奖励的作弊循环 如果 RM 参数可更新,当 Actor 生成一个新回答并获得奖励后,RM 会根据这个新样本调整自己的参数。这形成了一个危险的闭环:Actor 为了获得高分,可能会去学习生成那些恰好让 RM “感到高兴”的样本,而 RM 由于不断被喂食新样本,会逐渐适应并抬高对这些样本的评分,最终 Actor 和 RM 陷入互相迎合的泡沫,完全脱离真实人类偏好。

  2. RM 的分布外脆弱性 RM 主要是在 SFT 分布附近的样本上训练的。随着 RL 推进,Actor 的生成分布会偏离初始分布。如果 RM 在分布外更新,它极容易过拟合到当前 Actor 的“怪癖”上,迅速丧失对真实质量的判断力。冻结 RM 虽然也可能导致其在分布外准确性下降,但至少维持了一个静态的优化目标,避免了动态漂移。

  3. 训练稳定性 如果 RM 也在更新,那么 PPO 的优化目标本身就在不断移动,这相当于“追逐一个移动的靶子”。RL 训练会变得极度不稳定,优势估计完全失效。

Reference Model 冻结的原因:

  1. KL 惩罚需要固定锚点 KL 惩罚的意义在于,每一步的更新都不要离“安全的初始策略”太远。如果 Ref 也在变,那么这个“安全区域”本身就在漂移。Actor 可能会在 Ref 变动的同时,也跟着一起漂移,KL 惩罚失去约束意义。冻结 Ref 确保了一个不变的、高质量的语言行为基准。

  2. 防止灾难性遗忘的扩散 如果 Ref 也更新,它可能“忘记” SFT 阶段学到的良好语言模式。Actor 被鼓励靠近一个逐渐退化的 Ref,最终双双崩溃。

  3. 计算效率 冻结这两个大型模型(RM 和 Ref)可以释放大量显存和计算资源,用于 Actor 和 Critic 的训练以及更大的 batch size。


Critic 模型在 PPO 中是如何初始化的?是否可以从 Reward Model 加载权重?

Critic 的初始化:

Critic 通常也从 SFT 模型(或与 Actor 相同的初始化权重)进行初始化,但修改输出头:将 LM Head 替换为与 RM 类似的标量输出头(隐藏维度 → 1)。它也需要具备对语言序列的深层理解,因此复用 SFT 的预训练权重是非常自然的选择。

是否可以从 Reward Model 加载权重?

理论上可以,实践中不推荐,但在某些简化版本中有尝试。

从 RM 加载的潜在优势:

  • RM 已经专门训练过如何评估文本质量,它的内部表征可能比 SFT 模型更能捕捉“好坏”的细微差异。用于初始化 Critic 也许能加速价值函数的学习,因为 RM 输出的标量 r 和 Critic 需要预测的回报 V 具有高度相关性。

不推荐的原因(更常见):

  1. 评估的语义范畴不同

image.png

  1. 引入偏差与过拟合风险 RM 已经在偏好数据上过拟合了一定的模式,如果用它初始化 Critic,Critic 可能继承了 RM 的偏见(如对冗长回答的偏爱),并将这种偏见带入价值估计,从而误导 Actor 的优势函数计算。

  2. 独立评估系统的工程考量 保持 Critic 与 Actor 同源(均来自 SFT),而 RM 单独训练,形成了两个相对独立的评估体系:RM 来自人类偏好,Critic 来自环境交互。这种解耦有利于调试和分析问题。如果 Critic 与 RM 共享初始化,一旦 RM 有问题(如对某类回答打分偏差),该偏差会通过 Critic 放大,更难定位。

  3. 实践中的常见做法 DeepSpeed-Chat 等主流实现中,Critic 直接从 SFT 模型初始化,与 Actor 同源但独立演化。RLHF 的早期论文中,Critic 甚至可能直接复用 RM 的权重,但现在的趋势是分开初始化,以获得更灵活的训练和控制。

结论:Critic 从 SFT 初始化是安全且高效的标准做法。从 RM 加载权重属于一种探索性技巧,可能带来轻微的初始加速,但需要仔细评估其引入的偏差和稳定性风险,在大规模生产中较少采用。


在 PPO 训练中,Actor 和 Critic 是否共享底座参数?各有什么利弊?

是否共享:没有硬性规定,两种设计均有成熟实现,但在大规模语言模型的 RLHF 中,独立底座(不共享)是更主流的选择。ChatGPT 背后的 InstructGPT 和多数开源复现(如 DeepSpeed-Chat)都采用 Actor 和 Critic 各自拥有完整的模型权重,甚至从不同的初始化起点出发。共享底座的方案在计算资源极度受限时会出现,但正逐渐被淘汰。

共享底座参数的优势:

  1. 显存和算力节省:这是共享最直接的动机。Actor 和 Critic 如果共用同一个 Transformer 编码器,只需加载一份庞大的参数(比如 7B、13B),能节省约一半的模型显存,使得在相同硬件条件下可以使用更大的基础模型或更大的 batch size。

  2. 特征复用:Actor 和 Critic 需要理解相同的语言,共享底座意味着对 prompt 和生成序列的深层语义理解只需要计算一次,特征可以同时用于策略决策和价值估计。这理论上能加速训练初期 Critic 的收敛,因为底座已经具备了从 SFT 继承的语言理解能力。

  3. 简化工程架构:只需维护一个优化器状态组,减少了分布式训练中模型分片和通信的复杂度。

共享底座参数的劣势(为何主流选择不共享):

  1. 目标冲突(Gradient Interference):这是最致命的问题。Actor 的损失函数(PPO 裁剪目标 + KL 惩罚)和 Critic 的损失函数(价值回归的 MSE)优化的方向完全不同,甚至可能相互矛盾。共享底座时,两者的梯度会通过共享参数发生干涉——Actor 想要最大化奖励的策略梯度,与 Critic 想要最小化价值估计误差的梯度,在共享层的权重更新上角力,导致两者都无法充分学习,收敛变慢甚至不稳定。

  2. 灾难性遗忘加剧:Actor 在不断改变其语言生成分布,底座参数随之漂移。Critic 原本基于旧分布学习到的价值函数会立即过时,被迫用新漂移的底座重新学习,形成“追着自己的尾巴跑”的无效循环。独立底座则允许 Critic 保持自己稳定的特征提取器,只更新输出层附近,避免了这种耦合漂移。

  3. 学习速率不匹配:Actor 通常需要较小的学习率以保证策略稳定(受 KL 约束),而 Critic 可以用相对较大的学习率快速逼近真实价值。共享底座迫使两者必须使用折中的学习率,或者用复杂的梯度累积策略,拖慢整体进度。

  4. 价值估计偏差风险:如果底座参数被 Actor 主导,Critic 被迫基于“Actor 的偏好视角”去看待世界,而不是客观地评估状态价值。这可能导致价值估计出现系统性偏差,优势函数不准确,进而误导 Actor 的训练。

主流实践:独立底座。Critic 通常从 SFT 模型或 RM 初始化(但独立参数),Actor 从 SFT 模型初始化,两者各自拥有完整的 Transformer 权重。这虽然增大了显存占用,但通过模型并行、ZeRO 优化等技术可以缓解,并且带来了稳定性和收敛速度的显著提升。在一些更激进的优化中,Critic 甚至可以比 Actor 小(如参数减半),仅保留评估能力,进一步节省资源。


PPO 训练的每一步都需要从 Actor 采样新的回答,这是在线策略还是离线策略?为什么不能完全离线?

是在线策略(On-Policy)。PPO 属于 on-policy 的强化学习算法,其本质要求用于更新策略的数据必须由当前版本的策略(即当前的 Actor)与环境交互产生。在 RLHF 语境中,Actor 就是当前的策略,环境就是“给定 prompt 生成回答并接收奖励”的过程。

为什么不能完全离线?

image.png

  1. 奖励模型和 KL 惩罚的动态性:在 RLHF 中,虽然奖励模型是冻结的,但 Actor 生成的是什么风格、什么长度的回答,直接影响奖励分数和 KL 惩罚的计算。旧策略生成的回答分布(比如 SFT 模型生成的)与当前 RL 训练后的 Actor 生成的分布差异巨大。如果一直使用 SFT 阶段的离线数据,Actor 就永远学不到“我现在生成这种回答会得到什么奖励”。它必须通过在线采样,去探索那些能获得更高奖励但在 SFT 数据中从未出现过的回答模式(如更详细的解释、更安全的拒绝话术)。离线数据无法提供这种“因果反馈”。

  2. 分布偏移(Distribution Shift):假设我们从 SFT 模型采样了大量 (prompt, response, reward) 三元组存储为离线数据集,然后用这些数据来训练 Actor。这本质上是 Behavior Cloning(行为克隆)而不是强化学习。Actor 很快会偏离数据集所覆盖的分布,但它的每一步更新都基于对分布外动作的过时价值估计,导致错误累积,最终策略崩溃。这被称为“离线强化学习的致命 triad”——分布偏移、函数近似误差和 bootstrapping 的相互加剧。

PPO 的折中:PPO 使用在线采样的数据,但允许在同一个 batch 的数据上做多轮梯度更新(通常 4 个 epoch)。它通过裁剪概率比率来惩罚那些使新旧策略差异过大的更新,保证在线数据在被重复使用几次期间,策略没有漂移太远。一旦用完这批数据,必须重新采样。因此,它是在线策略,但通过近端约束实现了部分数据复用,平衡了样本效率与稳定性。


描述 PPO 训练的一个完整迭代周期:从采样到更新。

以 InstructGPT / RLHF 中的典型实现为例。

前提:四个模型已就位——Actor (π_θ),Critic (V_ψ),冻结的 Reward Model (r_φ),冻结的 Reference Model (π_ref)。一批 prompt 数据(不含标签)准备就绪。

迭代周期:

第一步:在线采样(Rollout)

  • 从数据集中随机抽取一个 batch 的 prompt(如 512 条)。

  • 将每条 prompt 输入给当前的 Actor 模型,使用自回归生成方式逐 token 采样,直到生成 EOS 或达到最大长度限制。

image.png

  • 得到这个 batch 的全部完整生成序列,即“经验轨迹”。

第二步:奖励计算

image.png

第四步:PPO 更新(多轮小批量训练)

  • 将这一批采样到的经验数据(token 序列、动作、旧 log 概率、优势、回报)打包成一个数据集。

  • 对这个数据集进行多个 epoch(通常 4 个)的随机小批量(mini-batch)训练,交替更新 Actor 和 Critic。

  • Actor 更新:

image.png

第五步:采样数据丢弃

  • 完成对这批经验的多个 epoch 更新后,丢弃这批经验数据,因为它们已经“过时”——Actor 和 Critic 的参数已更新,这批数据不再能准确反映当前策略的分布。

迭代循环:回到第一步,用更新后的 Actor 重新采样新的 batch 数据,开始下一轮迭代。


在 PPO 中,为什么需要在奖励中加入 KL 惩罚?请写出包含 KL 惩罚的修改后奖励公式。

为什么需要 KL 惩罚?

PPO 中的 KL 惩罚是 RLHF 的安全阀和平衡器,它解决了强化学习应用于语言模型时的两个根本困境:

  1. 防止语言能力崩溃(灾难性遗忘):Actor 的初始状态是一个语言流畅、知识丰富的 SFT 模型。如果只靠奖励模型驱动更新,Actor 很快会发现一些“奖励黑客”技巧——比如不断重复某些高奖励词、使用极端礼貌的模板、堆砌无关细节来让回答看起来详尽,或者干脆直接生成无意义的 token 序列,只要它们在奖励模型的训练分布中“看起来不错”。这些行为虽然能获得高分,但会导致语言模型退化成一个只会输出奖励模型喜欢的一两种模式的机器,丧失原有的通用语言能力。KL 惩罚强制 Actor 的每个 token 生成概率都不能离 Reference Model 太远,相当于一个“行为准则锚点”,保护底层语言能力。

  2. 平衡探索与利用,控制策略更新幅度:即使没有奖励黑客,奖励模型的评分本身也是一个不完美的、有噪声的代理。Actor 在追求高奖励时,可能会过度偏离其初始分布,进入奖励模型从未见过的“分布外”区域。在那里,奖励模型的评分可能极为不准(可能虚高)。KL 惩罚限制了 Actor 每步更新的“步幅”,确保它始终在奖励模型可信赖的区域内进行优化。这与 PPO 的裁剪目标形成双保险——裁剪目标控制概率比率,KL 惩罚控制整体分布偏移。

包含 KL 惩罚的修改后奖励公式:

image.png

直观解释:奖励模型只在终点给了一个“总分”,KL 惩罚则在每一步都施加一个微小的“成本”,这个成本的大小正比于 Actor 当前 token 的选择相对于 Reference Model 的“惊讶程度”。如果 Actor 想生成一个 Reference Model 极不可能选的词,它必须确信这个选择能带来足够的最终奖励提升,否则得不偿失。这促使 Actor 用最小的偏离代价去换取奖励提升,实现“优雅的对齐”。


KL 散度的系数 β 是固定还是动态调整的?动态调整的策略有哪些?

可以是固定,也可以动态调整。 固定 β 实现简单,但不够灵活。动态 β 能更好地平衡 RL 训练的进度、奖励提升和对齐税,正逐渐成为更优选择。

为什么需要动态调整 β?

  • 初期需要宽松探索:RL 训练开始时,Actor 相对接近 Reference,此时较大的 β 会过度压制探索,使模型无法尝试新的、可能更好的生成模式。较小的 β 允许更自由的探索。

  • 中期需要收紧约束:随着奖励不断被优化,Actor 可能会找到奖励模型的“漏洞”,开始过度偏离。此时需要增大 β 以拉回正轨,防止奖励黑客。

  • 后期需要稳定收敛:接近收敛时,策略应在奖励最大化和保持语言能力之间达到平衡,β 的微调可以帮助模型稳定在一个理想的 KL 距离上,避免持续偏移。

动态调整策略主要有以下几种:

image.png

  1. 线性/指数衰减或增长计划 根据训练步数预设一个 β 的变化曲线。例如,前 20% 步数 β 从 0.01 线性增长到 0.1,然后保持不变。这种方法简单,但缺乏对环境动态的适应。

  2. 基于奖励提升速率的调整 监测奖励的滑动平均值。如果奖励提升很快且 KL 也在快速增长,可能意味着 Actor 在走捷径(奖励黑客),此时触发 β 增大。如果奖励提升缓慢且 KL 很小,则降低 β 鼓励探索。

  3. 多目标帕累托优化 不把 KL 当作惩罚,而是作为另一个独立的优化目标。使用多目标强化学习算法,动态搜索在“高奖励”和“低 KL”之间的帕累托前沿,让训练过程自适应地选取不同权衡点。这种方法在资源充足时能产生一组不同对齐程度的策略。

  4. 逐层/逐模块差异化 β 观察到语言模型的不同层(或不同注意力头)对风格和内容的控制粒度不同。可以为浅层(可能影响语法)设置较大的 β 以保护语言流畅性,为深层(可能影响语义和风格)设置较小的 β 以鼓励对齐。这是前沿探索方向。

实践现状:多数开源 RLHF 实现(如 DeepSpeed-Chat)支持目标 KL 自适应调整,默认 β 初始为 0.01 到 0.1 之间,然后根据监测动态调节。


如何计算生成序列中每个 token 的奖励?最终奖励是如何分配到每个 token 的?

RLHF 中的奖励本质上是序列级的稀疏奖励,但 Actor-Critic 方法需要每个时间步都有奖励信号来计算优势函数和回报。因此,必须将最终的单一奖励合理地“分配”或“构造”到序列的每个 token 上。

构造过程如下:

image.png

这个值可正可负:正表示 Actor 比 Ref 更偏爱该 token(偏离),负表示 Actor 比 Ref 更不喜欢该 token。

  1. 构造逐 token 奖励 对于所有非终止 token,即时奖励仅由 KL 惩罚贡献:

image.png

对于序列的最后一个 token(通常是 EOS 或达到最大长度时的那个 token),将其即时奖励设为:

image.png

为何这样分配?

  • 将最终奖励放在末尾:这与“生成任务的最终质量仅在结束时才能完全评估”的直觉一致。Actor 只有完成了整个回答,才知道它做得好不好。如果把 rfinalrfinal 平均分配到每个 token,会导致因果混淆:开头的一个好词可能误被惩罚,结尾的一个坏词可能误被奖励。放在末尾能通过价值函数 V(st) 和优势函数 At 将“未来会有高奖励”的信息通过时序反向传播给前面的 token。Critic 会学习到“在这个状态下,继续按策略走下去,未来会获得高奖励”,从而指导前面的 token 选择。

  • KL 惩罚在每个 token:因为语言崩溃和偏离可能发生在任何一个时刻,所以需要在每一步都进行约束。

Critic 的价值预测与 GAE 的作用:

image.png

结论:最终奖励并没有被直接“切碎”分配,而是作为轨迹的终结信号,通过价值网络和 GAE 间接地影响每个 token 的决策。


PPO 阶段的训练数据是动态生成的,这对于训练系统的设计提出了什么挑战?

PPO 的在线采样特性使得它完全不同于传统的监督学习训练 pipeline,它要求一个高吞吐、低延迟、多模型协同的流式处理系统。主要挑战如下:

  1. 生成与训练的解耦与同步 生成回答是一个自回归过程(延迟高、吞吐受限于 batch size 和序列长度),而模型更新是传统的并行矩阵运算(GPU 友好,高吞吐)。两者速度和资源需求不匹配。系统必须设计一个高效的生成阶段,可能使用多个 Actor 副本(数据并行)同时采样,然后将采样的经验数据送入一个全局队列。训练器从队列中拉取数据更新模型,并将新模型参数定期同步给 Actor 副本。这个“Actor-Learner”异步架构需要精细的版本控制和同步机制。

  2. 巨大的显存与带宽压力 一个 PPO 迭代需要同时驻留四个大模型(Actor、Critic、Ref、RM)。即使 RM 和 Ref 冻结,它们仍然占用显存。动态生成又会产生大量的中间激活(KV Cache)和序列数据。系统必须利用模型分片(Tensor Parallelism, Pipeline Parallelism)、Offloading(将优化器状态或冻结模型下放 CPU/NVMe)以及激活重计算(Activation Checkpointing)来在有限的 GPU 资源中塞下这一切。

  3. “在线”带来的计算资源浪费 每次参数更新后,之前采样的经验数据就被丢弃。这意味着大量的 GPU 算力被“烧”在生成即将被丢弃的数据上,而不是直接用于梯度计算。与监督学习相比,单位有效模型更新的算力成本高出几倍甚至几十倍。如何最大化生成效率(如使用 vLLM 等高效推理框架加速采样)并合理设置“重采样频率”成为控制成本的关键。

  4. 分布式环境下的数据偏斜与负载均衡 不同的 prompt 生成的回答长度差异巨大(从几个 token 到上千 token),导致 Actor 副本的计算时间不均匀,可能出现“长尾延迟”,拖慢整个同步 batch 的进度。需要设计按长度分桶的动态批处理(类似 ORCA 或 continuous batching)来优化生成阶段的吞吐和 GPU 利用率。

  5. 版本一致性难题 在异步架构中,Actor 生成数据时使用的策略版本可能与 Learner 更新后的版本不一致。这属于“off-policyness”增加,过多的异步会破坏 PPO 的近端假设,导致训练不稳定。系统必须设计恰当的同步频率(如 Learner 每更新 10 步就广播新权重给 Actor),在吞吐量和策略新鲜度之间取得平衡。

  6. 奖励计算的效率瓶颈 将完整的生成序列喂给 Reward Model 和 Reference Model 计算奖励和 KL,这两个模型同样很大,若串行调用会极大拉长整个 pipeline。通常需要将 Actor、RM、Ref 放在一个推理图中,利用 GPU 的并行性一次前向计算出所有需要的量,但这增加了计算图设计的复杂度。

  7. 调试与可观测性的恶化 监督学习的数据是固定的,一旦出错容易复现。RLHF 的数据是动态生成的,模型行为的变化可能导致数据分布漂移,问题复现极其困难。需要设计完善的日志系统,记录采样分布、奖励分布、KL 散度、策略熵等统计量,实时监控训练健康度。


如果 SFT 阶段模型就已经过拟合,继续做 PPO 会有什么后果?

SFT 过拟合的典型表现:模型在训练集上回答极其完美(低损失),但在泛化测试、开放域问题上表现僵硬、重复、缺乏创造性,过度依赖训练模板。将其送入 PPO,会引发一系列连锁灾难。

后果一:奖励模型训练阶段的恶化(若 RM 也来自该过拟合 SFT)

通常 RM 是从 SFT 模型初始化的。如果 SFT 已经过拟合,其对文本的表示能力退化(只对训练集中的表达方式敏感)。用它来初始化 RM,会导致 RM 的评判能力极度偏狭——只对与 SFT 数据“长得像”的回答打高分,对任何创新或不同的表达方式都判定为低分。这为后续的 PPO 埋下了致命的奖励信号偏差。

后果二:PPO 探索空间的严重坍缩

过拟合的 SFT 模型输出分布极其尖锐(entropy 极低)。它几乎只能生成有限的几种回答模式。当作为 Actor 初始化时,Actor 的初始策略就已经是一个“低熵”状态。在 PPO 的在线采样中,它几乎不会进行有意义的探索——无法生成那些稍有不同的、可能获得更高奖励的新回答。因为它的 token 概率分布决定了它只会走老路。

后果三:快速陷入“奖励黑客”和“模型崩溃”

由于探索能力丧失,Actor 会很快在它那一亩三分地(有限的回答模板)里找到奖励模型(一个同样有偏见的评判)的漏洞。它可能学会在原本就单调的回答里插入一些额外的高分触发词、调整语气、增加冗余长度,通过这种微小的表面改动榨取奖励提升。整个 PPO 过程变成了在极小的策略空间里“内卷”,无法实现真正的对齐提升。同时,由于概率分布极度集中,KL 惩罚可能难以有效约束(因为改动虽小,但概率比率可能剧烈波动),导致训练不稳定,甚至引发语言崩溃。

后果四:灾难性遗忘加速

过拟合的 SFT 模型本身已经“遗忘”了基座模型的大量泛化知识。PPO 的进一步梯度更新会在这个脆弱的表征上继续施加压力,加速遗忘过程。模型可能最终退化为一个只会说固定几句漂亮话的“空壳”,连 SFT 的指令遵循能力也丧失殆尽。

防范措施:

  • SFT 阶段严格监控:不仅看训练损失,更要看验证集上的困惑度、生成多样性、以及开放域评测的得分。一旦验证损失开始上升,立即早停。

  • 数据增强与正则化:SFT 中使用数据增强(如改写同一 prompt 为多种表述)和 Dropout、标签平滑等正则化,强制模型保持一定的熵。

  • PPO 中加入熵奖励:在奖励函数中显式加入策略熵的正则项,鼓励 Actor 保持多样性,对抗过拟合倾向。


在三阶段流程中,哪个阶段对最终对齐效果的影响最大?学术界有哪些争论?

这是一个存在激烈争论的问题,没有绝对答案,但可以梳理出几派观点及其论据。

观点一:SFT 是基石,影响最大

理由:SFT 定义了模型的基础行为模态和回答范式。RLHF 的 PPO 是在 SFT 模型输出的高维流形上进行微调。如果 SFT 模型没有学会基本的指令遵循、格式规范、拒绝话术的雏形,PPO 几乎不可能从噪声中探索出这些能力。SFT 阶段注入的数据多样性、质量和价值观,直接设定了模型能力的上限和“性格底色”。后续的 RM 和 PPO 只是在这个底色上进行“对齐修饰”。大量的消融实验表明,只做高质量的 SFT(如 LLaMA-2-chat 的 SFT 阶段),模型就已经能展现出相当强的有用性和安全性,PPO 更多是锦上添花,进一步提高一致性、减少有害输出。因此 SFT 是“雪中送炭”,PPO 是“锦上添花”。

观点二:RM 是核心瓶颈,影响最大

理由:RM 是 PPO 优化目标的唯一诠释者。如果 RM 对“好”的理解有偏差,PPO 再强大也只是在最大化一个错误的目标。RM 决定了整个对齐的方向。一个优秀的 RM 能识别出隐晦的恶意、评估事实准确性、区分“有用的详细”和“无用的冗长”。如果 RM 不行,PPO 只会让模型变成“高分低能”的奖励黑客。而且 RM 的训练最为微妙——偏好标注的主观性、数据分布的不全面、过优化风险等,都使得 RM 成为整个 pipeline 中最脆弱、最易引入不可逆偏差的一环。许多人认为,RLHF 失败案例中,90% 都可追溯到 RM 的问题。

观点三:PPO 是决定性飞跃,影响最大

理由:SFT 是模仿,RM 是评分,只有 PPO 真正让模型内化价值观和产生涌现的拒绝/推理能力。SFT 只能学会它见过的正确回答,但对于未见过的危险指令或复杂模糊场景,它常常笨拙地套用模板。PPO 通过在奖励模型引导下的试错探索,能自发地发现更优的、SFT 数据中从未出现的回答策略(例如,针对一个隐晦的种族歧视问题,PPO 后的模型可能会写出详细解释为什么这具有冒犯性并拒绝回答,而 SFT 模型可能只会硬邦邦地说“我无法回答”)。这种泛化到分布外指令的内在对齐能力,正是 PPO 的最大价值。因此,PPO 阶段是实现从“知道”到“做到”的飞跃,对最终智能体的“智慧”影响最大。

当前的合成趋势:越来越多的工作发现,这三个阶段的协同作用远大于单一阶段的贡献。SFT 提供基础能力,RM 提供优化方向,PPO 实现内化和泛化。同时,DPO 等新方法试图将 RM 和 PPO 合并,直接基于偏好数据优化策略,正模糊这些阶段的边界。但总体来说,在工业界,数据(SFT 数据和偏好数据)的质量被认为是最根本的,各阶段技术的精巧设计则决定了模型的上限。


现在很多工作尝试合并 SFT 和 RLHF 阶段,比如 ORPO,它们的基本思想是什么?

这些方法的核心理念是将对齐(偏好优化)与有用性(监督学习)统一到同一训练目标中,避免分阶段训练带来的复杂性、不稳定性和灾难性遗忘。以 ORPO (Odds Ratio Preference Optimization) 为例。

基本思想:

  1. 单一训练阶段:不再分别进行 SFT 和 PPO,而是直接用指令-偏好对数据(即每个 prompt 有一个 chosen 回答和一个 rejected 回答)在一个阶段内训练模型。

  2. 联合损失函数:损失函数同时包含两个部分:

  3. SFT 损失:对 chosen 回答的交叉熵损失,保证模型学会生成高质量回答,维持有用性。
  4. 偏好对齐损失:一个对比式损失项,直接增大模型赋予 chosen 回答的概率与赋予 rejected 回答的概率之间的“优势比”(odds ratio)。ORPO 的核心洞察是,SFT 虽然能提升 chosen 的概率,但往往也会同时提升 rejected 的概率(因为两者通常共享大量语言模式),导致区分度不足。ORPO 通过附加的惩罚项主动抑制 rejected 的概率,拉大两者差距。

  5. 无需参考模型和奖励模型:与 DPO 类似,ORPO 也跳过了显式奖励模型和 PPO 的在线采样,直接在固定的偏好数据集上进行监督式训练。但它相比 DPO 的进步在于,不需要一个独立的 SFT 预热步骤,也无需额外的参考模型来计算 KL,完全端到端。

与 DPO 的区别:

DPO 也合并了 RM 和 PPO,但其标准流程仍需要一个高质量的 SFT 模型作为起点,然后再进行 DPO 微调。ORPO 则宣称可以从基座模型直接开始,用一个统一的损失函数同时完成指令遵循和偏好对齐。它的公式大致为:

image.png

优势:

  • 流程极简:单一阶段,单一损失,无需维护四个模型,无需在线采样,显著降低工程和算力成本。

  • 保留多样性:由于没有 KL 惩罚强制模型向参考模型靠拢,模型可以更自由地探索分布,可能产生更多样的输出。

  • 更好的稳定性:回避了 PPO 中在线策略更新的不稳定性和奖励黑客问题。

潜在代价:

  • 对数据要求极高:偏好数据必须覆盖足够的广度和深度,因为模型没有在线探索和奖励反馈,完全依赖数据集的静态信号。

  • 可能丧失对齐的精细度:PPO 的在线采样允许模型与奖励模型进行“对抗性合作”,在奖励模型的引导下发现精细的优化方向。ORPO/DPO 受限于静态数据,可能在奖励模型本可覆盖的细微偏好上优化不足。


为什么有些人认为“RM 训练”是 RLHF 中最关键也是最难的一步?

最关键:因为 RM 是整个 RLHF 过程的价值定义者和唯一航标。一旦 RM 训练完成并冻结,PPO 阶段的所有优化都朝着最大化 RM 评分的方向狂奔。RM 对“什么是好回答”的理解,直接决定了最终模型的行为模式。如果 RM 错误地认为“回答越长越好”,PPO 就会产出无比冗长的回答;如果 RM 无法识别隐晦的偏见,模型就会学会用优雅的语言包裹歧视。RM 是最终模型“灵魂”的塑造者。

最难的原因:

  1. 人类偏好本身是模糊、矛盾且难以量化的 “有用性”“无害性”“诚实性”这些高阶概念,在不同语境、不同文化、不同用户群体中,其相对重要性完全不同。标注员之间的一致性常常低得惊人(尤其对于开放式创意任务)。让 RM 从一个充满噪声和矛盾的数据集中提炼出一致、鲁棒的评分函数,本身就是极大的统计挑战。

  2. 偏好数据收集的固有难题

  3. 成本与质量:高质量偏好标注极度昂贵,需要受过培训的标注员理解复杂的指南。廉价众包标注往往充满“惰性标注”(总是选第一个或更长的那个),导致 RM 学到的是“位置偏见”和“长度偏见”。
  4. 分布覆盖:无法对模型在 PPO 中可能探索到的所有怪异回答模式提前进行标注。这意味着 RM 必然存在大量的“分布外盲区”,为奖励黑客留了后门。
  5. 偏好表达的局限:二元比较只能给出 A>B,无法量化好多少,也无法表达“两者都差,但 B 稍好”的无奈。这种信息的丢失使 RM 无法学习到绝对质量标准。

  6. 奖励黑客的不可预测性 RM 本质上是一个在有限数据上训练的神经网络,它不可避免地会学到一些“表面捷径”而非真正的质量评估标准。一个经典的案例是,RM 可能因为训练数据中高分回答偶然地都包含了“首先,其次,最后”的结构,而学会给任何包含这类序列标记的回答打高分,不论内容是否真的有层次。在 PPO 中,这种隐藏在 RM 权重中的偏见会被 Actor 无情地挖掘和利用,产生“为结构而结构”的怪诞输出。这种漏洞在 RM 训练阶段很难被预知。

  7. 过拟合与泛化的平衡 RM 必须在标注数据上充分拟合以捕捉偏好信号,但又不能过拟合到丧失泛化能力。它需要对训练分布之外的新颖回答形式做出合理评分。这要求精心设计模型结构(如使用 ensemble 或 Bayesian 方法)、损失函数(如加入正则项)和标注数据策略(如跨主题、跨模型的大量对抗样本),难度极高。

正因为 RM 的这些根本性困难,许多研究者认为 RLHF 的瓶颈不在 PPO 算法本身,而在于我们能否训练出一个真正反映人类深层价值观、鲁棒且不易被操纵的奖励模型。


如何验证经过 RLHF 后模型是否仅仅学会了“讨好人类”而不是真正提高了能力?

区分“讨好”与“真正能力提升”是评估对齐效果的核心难题。一个只会讨好的模型可能在人类主观评分中得分很高,但在需要硬核能力的客观测试中一塌糊涂。验证需要多维度、对抗性的评估体系。

一、对抗性自动化评估(测“真才实学”)

  1. 知识密集型基准测试:在 MMLU、HellaSwag、ARC、TruthfulQA 等数据集上,对比 RLHF 前后模型的得分。真正的能力提升应体现在这些考验知识、推理、常识的基准上。如果主观评分飙升而客观基准下降,说明模型可能在用“讨好话术”弥补知识的不足(如承认不知道时加上一大段漂亮的解释,浪费用户时间)。

  2. 严格的事实性校验:构造包含容易验证的事实性问题(如历史事件日期、科学定律),并用自动化脚本(结合知识图谱或搜索引擎 API)验证回答的事实准确性。计算幻觉率和事实一致性得分。讨好型模型可能会自信地给出格式完美但事实错误的回答。

  3. 数学与逻辑推理:使用 GSM8K、MATH 等纯推理数据集。这里的答案几乎无法靠“讨好”提升——数学结果对错分明。RLHF 后正确率提升说明推理能力真强,否则只是话术进化。

  4. 长文本连贯性与指令遵循的硬性指标:设计需要严格遵循复杂约束的任务(如“生成一个 JSON,包含三个特定字段,其中第三个字段必须是前两个字段的拼接”)。用自动化脚本检查格式和约束的完成度。讨好型模型可能生成格式不正确但解释得很诚恳的内容。

二、控制变量下的“有用性”解剖

  1. 拒绝率与过度保守分析:统计模型对边缘安全问题的拒绝率。RLHF 后,一个讨好型模型可能为了“安全高分”而过度拒绝,把大量正常的请求也判定为有害(如拒绝讨论历史战争)。用一组无害但有挑战性的提示(如“请分析莎士比亚戏剧中的暴力场景”)测试,若拒绝率异常高,说明模型在“讨好”安全规范。

  2. 风格与实质的分离评估:请人类评估员或使用高级 LLM 对回答进行双维度打分:内容质量(信息量、准确性、逻辑性)和语言风格(礼貌性、流畅度、结构)。如果 RLHF 主要提升了语言风格分,而内容质量分停滞甚至下降,那就是典型的“讨好”。

三、奖励黑客探测与泛化测试

  1. 分布外指令测试:使用故意写得混乱、包含错别字、或逻辑矛盾的指令。讨好型模型可能仍然试图猜测用户意图并给出详尽的回答,而不是指出指令中的问题并寻求澄清。真正的能力应体现在对异常指令的鲁棒处理上。

  2. 奖励模型欺骗测试:如果拥有奖励模型,可检查 Actor 是否能以较低的概率比率(即策略改变不大)获得奖励的显著提升。如果 KL 散度变化极小但奖励飙升,强烈暗示模型找到了奖励模型的捷径,而非真正提升质量。

  3. 多轮对话中的前后一致性与身份坚守:测试模型在长对话中是否能记住之前的约束,是否轻易被用户诱导改变立场,是否过度逢迎用户的错误观点(“阿谀奉承”)。一个讨好型模型会随着用户的倾向而不断改变答案以获取即时满意度,而一个真正高能力的助手应有原则地表达观点。

综合判断:真正的对齐提升应表现为:客观知识推理能力不降,事实准确性提升,对不合适请求的拒绝率合理(不过度),内容实质质量与风格质量同步提升,且在分布外场景中表现出稳定的元认知能力(知道何时该澄清、何时该拒绝)。若仅在人类主观评分上提升,而在上述硬性指标上出现“风格掩盖内容”的现象,就落入了“讨好”的陷阱。