想象你是一位顶尖私立学校的校长,手下有一批天赋异禀但做题思路天马行空的学生。你的目标,是让他们在“国际数学奥林匹克竞赛”中拿金牌。 你首先采用RLHF(基于人类反馈的强化学习)作为“素质教育”——你花钱请了一批资深阅卷老师,让他们坐在学生旁边,观察学生的每一步推导,然后在“推理过程是否有条理、是否清晰、是否像一个聪明人”这个维度上打分。这种方式很好,但有一个致命问题:请老师太贵了,而且每个老师的口味还不一样。 于是,你引入了一套RLVR(基于验证器的强化学习)机制——就像建立了一个标准化的“自动判卷机房”。每当学生给出答案,机器立刻对照标准答案进行校验。对了就奖励一块“代币”,错了就罚他没收。这个自动判卷机器不知疲倦、标准统一,唯一的缺点是:它只关心最终的答案对不对,完全不关心学生的思考过程是否优雅。 现在,作为校长,你的大智慧在于把两种教育模式结合起来:先请真人老师帮学生建立良好的“解题品味”(RLHF阶段),再把他扔进自动判卷机房进行海量刷题(RLVR阶段)。前者保证了学生不会变成一个“只会猜答案的赌徒”,后者保证了学生能通过大量练习,真正掌握通往正确结果的推理路径。这就是 o1、o3 等推理模型的训练秘密。
对 AI 从业者而言,理解 RLHF 与 RLVR 的衔接,意味着你掌握了下一代推理模型训练的核心方法论,这将直接决定你能否跟上 OpenAI o1 系列的技术演进,并在推理能力优化这一前沿领域占据一席之地。
可视化演示
展示RLHF三阶段对齐训练与RLVR验证器奖励训练流程,交互切换查看两种方法及其结合训练的核心指标。
本节配有交互动效(进入视口后自动加载,约 3KB)。
RLHF三阶段对齐训练流程 SFT监督微调让模型学会遵循指令格式 RM奖励模型学习人类偏好排序信号 r(x,y)=w·φ(x,y) PPO利用RM奖励优化策略使输出更符合人类偏好
双轨制总览
想象你管理的这所学校,有两套截然不同的考核体系。RLHF 就好比“综合素质评价”——由资深教师(人类标注者)从整体上判断“这个学生的解题风格像不像一个成熟的竞赛选手”,涵盖条理性、逻辑性、创造性等方方面面。而 RLVR 则是“标准化考试机器”——一个自动判卷系统,它不看过程,只看最终答案与标准答案是否一致。两者的评判维度不同、反馈频率不同、成本更是天差地别。作为校长,你的核心智慧在于:先用贵而准的“素质教育”塑造品格,再用廉而多的“题海战术”强化能力。
从技术视角看,这两种范式对应着强化学习中两种不同的奖励信号来源。RLHF 的奖励来自一个学习人类偏好的奖励模型(Reward Model),它能给出连续的、细粒度的分数;而 RLVR 的奖励来自一个验证器(Verifier),它给出的是客观的、可核验的离散信号(通常是对/错)。o1、o3 等前沿推理模型正是站在两者的交汇处,先用 RLHF 完成“人类风格对齐”,再用 RLVR 大幅度提升“推理准确率”。
在实际工程中,这两者并非简单的二选一,而是存在清晰的流水线式衔接关系。
回到学校管理的比喻:RLHF 阶段确定学生“做什么像什么”,RLVR 阶段确定学生“做什么成什么”。一个高水平的推理模型,既需要前者的“风骨”,也需要后者的“实战能力”。如果跳过 RLHF 直接使用 RLVR,模型虽然正确率可能很高,但输出格式和推理风格会变得机械、不自然;如果只使用 RLHF 而不进入 RLVR,模型则缺乏足够的推理深度,难以解决真正复杂的数学和代码问题。
- SFT 模型先通过模仿学习让模型学会“像个聪明人一样说话、思考”的初始格式。这个过程好比新生入学先学习校规校纪。
- RLHF 对齐在 SFT 基础上,用人类偏好数据训练奖励模型,再用 PPO 优化策略,使模型输出“人类更喜欢”的答案。这如同请名师指点解题风格。
- RLVR 强化将对齐后的模型丢进“自动判卷机房”,用验证器给出的确定性奖励信号驱动 PPO 继续优化。这类似用大量标准化试题高强度训练。
偏好对齐阶段
回到我们的学校。在“素质教育”阶段(RLHF),你需要聘请一个由资深教师组成的“评审团”(奖励模型)。这些教师并不直接给学生打分,而是做两两比较:同一道题,学生 A 的解答和学生 B 的解答放在一起,教师只需要回答“你更喜欢哪一个?”。收集成千上万个这样的偏好对之后,我们用数学方法拟合出一个“口味函数”——这就是奖励模型(RM)。RM 学会了人类的偏好后,就能对任意一个回答给出量化分数了。
奖励模型的训练,本质上是在解决一个排序问题。给定同一个问题 $x$,模型生成了两个答案 $y_A$ 和 $y_B$,人类标注者给出偏好标签 $y_A \succ y_B$。我们的目标是学习一个打分函数 $r_\phi(x, y)$,使得“更受偏好的答案得分更高”。常用的数学工具是 Bradley-Terry 模型,它通过 logistic 函数将分数差转化为偏好概率:
有了训练好的奖励模型 $r_\phi$,我们就可以用强化学习(通常是 PPO 算法)来优化策略模型 $\pi_\theta$。此时,策略模型的“答题总分”由 RM 给出,而 PPO 算法的职责是:不断调整模型的参数,使得模型输出的答案在 RM 上获得越来越高的分数。
值得注意的是,RLHF 的优化方式决定了它擅长捕捉“人类整体偏好”——流畅度、安全性、风格一致性等。这正是 o1 系列模型保持“人味儿”的关键一招。但 RLHF 的奖励模型有一个无法回避的短板:它无法验证事实性正确性。人类偏好“流畅漂亮的错误答案”的情况屡见不鲜。这就需要我们的“自动判卷机房”——RLVR 出场了。
- 得分差计算两个答案在奖励模型下的分数之差,这是决定偏好概率的核心量。好比两位教师打分后相减的差值。
- Sigmoid 映射将实数域的分差 $\Delta$ 压缩到 0 到 1 之间的概率值。分差为正且越大,结果越接近 1;分差为负,结果趋于 0。这就把“差多少分”转化成了“更喜欢的胜率”。
- 最大似然估计在全部偏好对上最大化真实偏好的对数概率,等价于最小化以下负对数似然损失:
验证器信号设计
现在,我们来到这篇文章的重头戏——RLVR 的奖励信号设计。想象你的“自动判卷机房”里有三种不同的判卷方式,每一种都对应一种奖励信号:
第一种是格式奖励(Format Reward)。它检查学生的答案是否遵循了规定的格式要求——比如“每题必须包含 <thought> 标签和 <answer> 标签”、“代码必须能通过语法检查”。这类信号最容易实现,就像检查考卷的卷面是否整洁、姓名是否填写,答案的“长相”正确就能得分。在 o1 系列中,格式奖励确保了模型输出具备完整的推理链结构。
第二种是结果奖励(Outcome Reward)。由验证器对照标准答案,检查最终结果是否正确。对于数学题,就是判断 $x = 5$ 是否得 5 分;对于代码题,就是判断生成的代码能否通过测试用例。这类信号客观、确定、信息量大,是 RLVR 的核心推动力。但它有一个潜在问题:稀疏性。一道难题的推理链有 20 步,如果只有最后一步能确定对错,中间 19 步的“好坏”信号就被平均化了,模型的更新效率会大打折扣。
第三种是过程奖励(Process Reward)。它尝试对推理链中的中间步骤进行逐步判断,而不是只等最终答案。这就像竞赛教练在训练中逐行批改学生的推导过程,指出“这里跳步了”或“这一步因式分解有误”。过程奖励能提供更密集的监督信号,但其难点在于如何自动构造每个中间步骤的标签——这通常需要额外的推理模型或手工规则来定义。
回到学校的比喻,一个好的奖励信号设计,就是一套科学的“计分规则”。如果只按结果计分(纯 RLVR),学生会变成“疯狂刷题、最终答案对就行、过程潦草”的应试机器;如果只按过程计分(纯过程奖励),学生可能“每个步骤都有模有样,但最终答错”——这在竞赛中是拿不到分的。o1 系列的精明之处在于:用格式奖励约束输出结构,用结果奖励保证最终正确率,再用过程奖励作为辅助补充,三者共同构成一个立体的判卷体系。
- 格式分$\lambda_{\text{fmt}}$ 控制格式奖励的权重,通常设为一个固定值(如 0.1),确保模型优先保证输出格式规范。
- 结果分$\lambda_{\text{out}}$ 控制结果奖励的权重。这是 RLVR 训练的主信号,通常取 1.0。对于可验证的数学题与代码题,结果分只有两个取值:答对得 +1,答错得 -1 或 0。
- 过程分$\lambda_{\text{proc}}$ 控制过程奖励的权重,通常处于探索阶段,用于那些难以从结果信号中获得梯度的问题。每个中间步骤的正确概率可以由一个专门的 PRM(Process Reward Model)来估计。
两阶段衔接策略
作为校长,你面临一个实际的排课问题:素质教育(RLHF)和题海战术(RLVR)应该按什么顺序、什么比例安排? 一个常见的方案是:第一学期做 SFT 冷启动(新生入学的入学教育),第二学期做 RLHF(名师指点解题风格),第三学期再做 RLVR(海量刷题)。这里的核心逻辑是:RLVR 的有效性依赖于模型已经具备一定的出题模板、推理格式和语言组织能力。一个完全没有经过 SFT 和监督训练的模型,直接扔进 RLVR,只会产生大量毫无意义的乱码文本——这就像你让一个幼儿园小朋友直接去做高考数学模拟卷,他连“解”字都写不对,更别提做出正确答案了。
具体到 o1 的技术报告中,这一流程被描述为:首先使用高质量的思维链数据做 SFT(冷启动),让模型学会“在 <thought> 中逐步推理”的格式;然后用 RLHF 做偏好对齐,让模型的推理风格符合人类对“清晰、有条理”的期待;最后进入 RLVR 阶段,用大规模可验证问题(数学、代码)驱动模型自行探索推理路径。值得注意的是,RLVR 阶段不再依赖人类标注的偏好对,而是依靠验证器自动生成的奖励信号,因此可以以极低的边际成本进行海量采样。
一个关键的技术挑战是分布偏移(Distribution Shift):当 RLVR 更新策略后,模型的输出分布可能逐渐偏离 RLHF 阶段“校准”过的人类偏好分布,导致模型“越优化越不像人”。这就像学生在刷题过程中逐渐摸索出一套“专攻机器判卷”的狡黠技巧——格式标准、答案正确,但推理过程的风格和逻辑连贯性却大不如前。为了应对这一问题,o1 团队采用了 渐进式过渡:在 RLVR 阶段初期,KL 惩罚系数设置得较大,限制策略偏离参考模型(即 RLHF 后的模型)的速度;随着训练推进再逐步放松。
在两阶段的衔接中,有一个经验法则是:RLHF 阶段产出的模型,其“风格锚点”越牢固,RLVR 阶段可以容忍的探索空间就越大。这就像一位学生如果已经形成了稳定的、优秀的学习习惯(RLHF 风格锚点),你给他布置大量高难度的练习题(RLVR 探索),他不太容易“学坏”;反之,如果学生的基本学习习惯还没养成,直接高强度刷题,很可能会走火入魔。
- 奖励期望第一项是验证器奖励的期望值。模型通过采样输出 $y$,计算验证器评分,再反传梯度更新策略。采样越多,估计越准确。
- KL 散度约束第二项是 KL 散度惩罚。它衡量当前策略 $\pi_\theta$ 与参考策略 $\pi_{\text{ref}}$(RLHF 阶段产出的模型)之间的分布距离,防止策略更新幅度过大、彻底“忘本”。
训练数据构造
好的训练数据,就是好的“题库”。在 RLVR 阶段,我们要为“自动判卷机房”准备高质量的可验证问题集——每个问题都必须有确定的标准答案,否则验证器无法工作。这听起来简单,实际上约束极大:开放性问题(如“写一篇关于人工智能的随笔”)无法进入 RLVR 训练集,因为没有客观标准判断写得好不好。因此,o1 系列在 RLVR 阶段主要使用数学题、编程题、逻辑推理题等“有唯一确定答案”的领域数据。
构建训练数据时,一个核心的流程是采样与筛选。首先从问题池中抽样一个批次问题 $x$,让当前策略模型并行采样多个候选答案 $y \sim \pi_\theta(\cdot|x)$;然后交给验证器进行判断。如果我们只保留“验证器判定为正确”的样本,并丢弃所有错误样本,这种策略称为拒绝采样(Rejection Sampling)。它虽然简单粗暴,但能有效提升训练数据的质量密度。
另一个视角是数据配比。不同领域的难度曲线不同:数学题存在明显的难度梯度,适合做多轮课程式学习;代码题依赖编译器和单元测试,更加客观;逻辑推理题则介于两者之间。在 RLVR 训练中,通常需要控制不同领域数据的比例,避免模型在某类问题上过拟合而同质化。此外,还需要引入课程学习(Curriculum Learning)的思想:前期用简单问题让模型建立正确率基线,后期逐步引入高难度问题,推动模型探索更复杂的推理路径。
回到校长视角:拒绝采样就是“只把做对的题收集起来,画进教科书”。这个“教科书”并不追求覆盖所有犯错案例,而是集中展示“什么是好的解答”。模型在下一轮训练中,就从这些“优质例题”中模仿、强化,逐步形成稳定的正确解题路径。值得注意的是,这种数据构造方式天然具有自增强性——模型越强,采样出的正确样本越多,教科书的质量越高,下一轮强化效果越好,形成正反馈循环。
- 问题集$x_i$ 来自高质量的问题池,覆盖数学、代码、逻辑推理等多个领域。每个问题必须满足“存在客观标准答案”这个前提条件。
- 采样答案$y_i$ 由当前策略模型 $\pi_\theta$ 采样生成,通常对每个问题采样数十个候选答案,以保证足够的覆盖率。
- 验证器筛选$r_i$ 是验证器给出的二元标签。只有 $r_i = 1$ 的样本进入最终训练集。这个过程本质上是一个经验回放缓冲区(Replay Buffer),用历史最优样本来学习,有助于训练稳定性。
稳定性控制术
带过学生的老师都有体会:如果一个学生的基础不稳定,你给他上再多的难题,他也可能在某次考试中崩盘。同样地,RLVR 训练的“崩盘”形式是策略坍塌(Policy Collapse)——模型在某次更新后,开始大规模输出重复、无意义的推理文本,或者只选择性地回答简单问题、回避难题。为了避免这种情况,研究者总结了一套“稳定性控制术”,包括三个关键武器。
第一个武器是 KL 散度约束(我们在第二节已经介绍过)。它将策略锚定在 RLHF 产出的参考模型附近,防止优化过程中策略飞得太远、失去人类偏好的“底色”。第二个武器是熵正则化(Entropy Regularization)。它鼓励策略模型保持一定的随机性,不要过早地“锁死”在某一种解题模式上——就像老师要求学生不要死记硬背单一解题套路,而要保持灵活的思路。强化学习中的熵正则项通常是在目标函数中加入期望熵的惩罚:
第三个武器是经验回放(Experience Replay)。在经典的 PPO 算法中,每一轮迭代采用一批新的采样数据更新策略,一轮更新后这批数据就被丢弃了。但在 RLVR 场景下,验证器正反馈非常稀疏(大量采样都是错的),直接丢弃数据非常浪费。经验回放将过去若干轮采样得到的(问题、答案、验证结果)放入一个缓冲区,训练时从缓冲区中混合采样,从而平抑单轮采样的高方差:
回到学校管理的比喻,稳定性控制术就像是学校的“心理健康辅导体系”——KL 散度约束是“校规底线”,防止学生行为出轨;熵正则化是“兴趣培养课程”,鼓励学生保持多样化的思维方式;经验回放是“错题本制度”,让学生在复习中巩固记忆,而不是在单一考试中一锤定音。三者结合,保证了学生在长期高强度的冲刺训练中,既不会“学傻了”,也不会“学偏了”,更不会“学到崩溃”。
- 滑动窗口只保留最近 $K$ 轮的数据,$K$ 通常取 3-5。$K$ 太大会使缓冲区样本过于陈旧,与当前策略分布不匹配;$K$ 太小则失去了“平滑”的效果。
- 混合采样从缓冲区中均匀随机采样一个 batch 进行策略更新。这打破了单轮数据之间的时间关联性,降低了梯度估计的方差。
AI 应用场景
场景 1:数学解题模型的自动化训练
阶段:RLVR 训练与数据回注
解决的问题:传统数学推理模型的训练依赖人工标注的思维链数据,成本高昂且标注一致性差。手工标注一道复杂竞赛题的完整推理链可能需要 10-20 分钟,且不同标注者的解法思路差异巨大,导致模型学会“平均风格”而非“最优策略”。RLVR 无需人工标注推理链,仅需问题有标准答案,验证器自动评分,从而将训练成本降低 1-2 个数量级。
具体案例:某教育科技公司要开发一个“AI 数学竞赛教练”。他们先使用数千道历史竞赛题(含标准答案)构建可验证问题集;然后用 RLHF 对齐后的基座模型对题目进行大规模采样(每题 64 次),用验证器判断最终答案对错;收集正确样本后作为正反馈数据,使用 PPO 进行 RLVR 强化训练。经过 3 轮迭代,模型在 AIME 竞赛题上的准确率从 32% 提升到 71%。
场景 2:代码生成模型的单元测试驱动强化
阶段:RLVR 验证器设计
解决的问题:代码生成模型的传统评估方式依赖人工审查或 BLEU 分数,两者都与“代码是否能正确运行”脱节。RLVR 将单元测试通过与否作为验证器信号:给定自然语言编程任务描述,模型生成代码,验证器运行预设的测试用例,全部通过得正奖励,任何失败则得负奖励。这让模型的优化目标与真实工程需求完全对齐。
具体案例:一家 AI 编程助手的开发团队构建了一个包含 10 万道编程题目的训练集,每道题配有一组隐藏单元测试。他们先用 RLHF 让模型学会“代码风格清晰、注释规范”,再进入 RLVR 阶段,用单元测试结果作为奖励信号进行 PPO 训练。最终,模型在 HumanEval 基准上的 pass@1 从 48% 提升至 82%,同时保持了代码可读性。
场景 3:科研发现中的可验证假设推理
阶段:过程奖励与结果奖励组合
解决的问题:在科学发现场景(如药物分子设计、材料发现)中,模型需要推理出可验证的假设。RLHF 只能保证假设在“语言层面”合理,但无法判断其科学正确性。RLVR 允许我们将实验室进行的物理、化学验证视为“验证器”——模拟或实验验证的结果就是奖励信号。
具体案例:某生物制药团队使用 RLHF+RLVR 训练一个“分子设计推理模型”。模型在推理链中先提出候选分子结构,然后 RLVR 验证器通过分子动力学模拟预测其结合能。模拟结果优于阈值则给出正奖励,反之负奖励。结合两个阶段的训练,模型提出候选分子的验证通过率从 21% 提升至 45%,显著减少了需要湿实验验证的候选数量。
Python 演示
import randomimport math # ---------------------------# 简化版 RLHF + RLVR 训练循环# 演示:先人类偏好对齐,再用验证器强化# --------------------------- class DummyPolicy: """玩具版策略模型,用词表概率分布模拟。""" def __init__(self, vocab_size=10): self.vocab_size = vocab_size self.logits = [0.0] * vocab_size # 均匀初始化 def sample(self): """按 softmax 概率采样一个 token。""" probs = self._softmax(self.logits) r = random.random() acc = 0.0 for i, p in enumerate(probs): acc += p if r <= acc: return i return self.vocab_size - 1 def log_prob(self, token): probs = self._softmax(self.logits) return math.log(probs[token] + 1e-9) def _softmax(self, xs): m = max(xs) exps = [math.exp(x - m) for x in xs] s = sum(exps) return [e / s for e in exps] class RewardModel: """玩具版奖励模型:模拟人类偏好打分。""" def __init__(self, preferred_token=5): self.preferred_token = preferred_token def score(self, token): return 1.0 if token == self.preferred_token else 0.1 class Verifier: """玩具版验证器:0-9 中偶数为正确,奇数为错误。""" def check(self, token): return 1.0 if token % 2 == 0 else 0.0 def generate_answer(policy, length=8): """用策略模型生成一个回答(一串 token 序号)。""" return [policy.sample() for _ in range(length)] def rlhf_train(policy, reward_model, steps=200, lr=0.1): """RLHF 阶段:用奖励模型分数做梯度上升。""" for _ in range(steps): token = policy.sample() score = reward_model.score(token) grad = score * (1 - policy.log_prob(token)) # 简易梯度上升:拉高高分数 token 的概率 policy.logits[token] += lr * grad norm = math.sqrt(sum(v * v for v in policy.logits)) policy.logits = [v / norm * 2.0 for v in policy.logits] def rlvr_train(policy, verifier, steps=200, lr=0.1, kl_ref=None): """RLVR 阶段:用验证器信号 + KL 约束做优化。""" kl_weight = 0.5 for _ in range(steps): answer = generate_answer(policy, length=4) final_token = answer[-1] reward = verifier.check(final_token) # KL 惩罚:与参考初始策略保持距离 # 这里简化:用当前策略的熵作为 KL 近似 entropy = -sum(p * math.log(p + 1e-9) for p in policy._softmax(policy.logits)) total_reward = reward + kl_weight * entropy grad = total_reward * (1 - policy.log_prob(final_token)) policy.logits[final_token] += lr * grad def main(): random.seed(42) policy = DummyPolicy(vocab_size=10) # 阶段 1:RLHF rm = RewardModel(preferred_token=5) rlhf_train(policy, rm, steps=150) print("RLHF 后采样 5 次:", [generate_answer(policy, 4) for _ in range(5)]) # 阶段 2:RLVR verifier = Verifier() rlvr_train(policy, verifier, steps=150) print("RLVR 后采样 5 次:", [generate_answer(policy, 4) for _ in range(5)]) # 验证最终策略的行为偏向 final_counts = {i: 0 for i in range(10)} for _ in range(500): final_counts[generate_answer(policy, 4)[-1]] += 1 print("最终 token 分布(期望偏向偶数):", final_counts) if __name__ == "__main__": main()
policy.logits用简单向量存储策略参数,模拟大模型的参数空间reward_model.score(token)模拟人类偏好评分,偏好 token 5 给高分,其余给低分verifier.check(token)模拟验证器,偶数为“正确”(得 1.0),奇数为“错误”(得 0.0)rlhf_train(...)RLHF 训练循环:根据奖励模型的分数调整策略 logitsrlvr_train(...)RLVR 训练循环:引入熵正则项作为 KL 惩罚的简化近似generate_answer(policy, 4)模拟模型生成一条长度为 4 的“回答”
常见误区
误区“既然 RLVR 的验证器信号又便宜又客观,那 RLHF 还有存在的必要吗?直接用 RLVR 训练不就行了?”
正解RLVR 只能优化“可验证”的任务(数学、代码等),无法处理人类偏好中的主观维度——写作风格、安全性、有用性、对话的自然度。没有 RLHF 的“风格锚定”,RLVR 会像一位只刷题不读书的学生,虽然正确率拔尖,但推理过程机械、可读性差,在某些开放场景下甚至会出现“高分但有害”的输出。两者是“品格教育”与“应试训练”的关系,缺一不可。
为何常见:因为 RLVR 的效果直观可量化(准确率大幅提升),而 RLHF 的提升相对隐性(风格、自然度),初学者容易低估 RLHF 的价值。
误区“RLVR 中的验证器不就是检查一下输出有没有包含 `<thought>` 标签吗?这个很简单。”
正解格式奖励只是验证器信号中最浅层的一种。真正的核心是结果验证——判断最终答案在客观标准下是否正确(数学答案是否匹配、代码是否能通过单元测试)。没有结果验证,模型只会学会“看似在思考、实则乱编”的模式。o1 系列中格式奖励扮演的是“脚手架”角色,真正的强化信号来自结果验证器。
为何常见:由于公开的 technical report 中对格式奖励(<thought> 标签)的强调较多,初学者被这些工程细节吸引,忽略了大局。
误区“为了防止模型偏离 RLHF 阶段的风格,我应该把 KL 散度惩罚系数设置得很大,这样模型一定不会跑偏。”
正解KL 散度约束是把“双刃剑”。系数过大会导致模型几乎无法偏离参考策略,RLVR 的奖励信号无法有效传播,模型学不到新的推理模式;系数过小则策略漂移过快。正确的做法是动态调节:训练初期 $\beta_{\text{KL}}$ 较大以维持稳定,后期逐步减小以释放模型的探索能力——就像教练在比赛前收紧管理,比赛时放手让学生发挥。
为何常见:KL 散度是初学者最早接触的稳定性手段,容易产生“越大越安全”的直觉,而忽略了训练目标的本质是“在约束下最大化奖励”。
误区“只要不断投喂更多带标准答案的问题,模型的推理能力就会一直提升。”
正解RLVR 的效果瓶颈往往不在问题的数量,而在于问题的难度分布与多样性。如果题库里的题都是简单题,模型很快就能达到 95% 正确率,继续训练只是浪费算力;如果都是超难题,模型正确率可能长期为 0,奖励信号极度稀疏,策略几乎无法更新。实践中的做法是采用课程学习:从简单题入手稳定策略,再逐级递增难度,确保每个阶段都有有效的梯度信号。
为何常见:直觉上“更多数据 = 更好模型”在其他 ML 场景经常成立,但在强化学习场景中忽略了奖励信号密度这个关键变量。
误区“结果奖励太稀疏了,过程奖励给每一步都打分,肯定比结果奖励更高效。”
正解过程奖励看似“信息量更大”,实际上它的有效性高度依赖于如何构造中间步骤标签。如果使用手工规则标注中间步骤,误差可能较大;如果使用自动过程奖励模型(PRM),PRM 自身的错误会造成噪声放大——在长推理链中,错误会逐层累积。而结果奖励虽然稀疏,但信号是无偏的。实践中往往采用两者的混合方案,而以结果奖励为主干。
为何常见:直觉上“反馈越频繁越好”,忽视了反馈的可靠性问题。稀疏但准确的信号,经常优于密集但含噪的信号。
面试题
Q1. RLHF 阶段训练奖励模型时,最常用的人类偏好建模方法是?
- A.基于 Bradley-Terry 模型的成对排序← 正确答案
- B.基于均方误差的回归打分
- C.基于交叉熵的多分类预测
- D.基于聚类分析的标签分组
答案:A。RLHF 的奖励模型训练核心是从“二选一偏好”中学习打分函数。Bradley-Terry 模型通过 logistic 函数将两个候选答案的得分差映射为偏好概率,再通过最大似然估计拟合,这是最标准的做法。回归打分需要绝对分值标签(现实难以获取),多分类预测与“偏好对”的标注形态不一致,聚类分析更是与排序学习无关。
Q2. 在 RLHF 与 RLVR 的衔接流程中,“SFT 冷启动”的主要目的是?
- A.让模型学会基础的推理输出格式与语言组织← 正确答案
- B.用大规模无标注数据预训练语言模型
- C.训练一个能识别标准答案的验证器
- D.用人类偏好数据微调奖励模型
答案:A。SFT 冷启动是 RLVR 前的必要热身,让模型先学会“用自然语言写出结构化的推理过程”(如 <thought> 标签格式),从而保证后续 RLVR 的奖励信号有可附属的载体。无标注预训练属于基座模型阶段;训练验证器不在 SFT 阶段;偏好数据微调奖励模型属于 RLHF 内部环节。
Q3. 下列哪种奖励信号在 RLVR 中最不可靠?
- A.格式奖励——检查输出是否包含必需的推理标记
- B.结果奖励——用标准答案精确匹配
- C.过程奖励——用自动 PRM 逐步打分← 正确答案
- D.代码奖励——用单元测试结果代替人工评分
答案:C。过程奖励依赖自动 PRM 对中间步骤的评判,而 PRM 自身的训练数据往往不足或带噪,在长链推理中“误差逐层累积”问题显著。相比之下,格式奖励规则确定、结果奖励客观无偏、代码奖励由运行结果刚性判定,它们都满足“信号可核验”的要求。过程奖励的“软性打分”在可靠性上天然处于劣势。
Q4. RLVR 训练中,用于保障训练稳定性的方法包括哪些?
- A.在目标函数中加入 KL 散度惩罚项← 正确答案
- B.引入熵正则化鼓励策略多样性← 正确答案
- C.使用经验回放缓冲区平抑采样方差← 正确答案
- D.增大学习率加速收敛
答案:ABC。KL 散度约束防止策略过度偏离参考模型;熵正则化鼓励探索、避免策略坍塌;经验回放利用历史数据降低单轮采样的高方差。增大学习率通常只会加剧训练不稳定性,甚至导致奖励函数在 reward hacking 上进一步外推,因此 D 不是稳定性措施。
Q5. 在推理模型的训练流程中,RLHF 与 RLVR 的正确顺序是?
- A.先 RLVR,后 RLHF
- B.先 RLHF,后 RLVR← 正确答案
- C.两者并行同时训练
- D.顺序可以任意调整
答案:B。RLHF 为 RLVR 提供高质量的“风格锚点”(参考策略),使模型在后续 RLVR 的探索过程中保持语言表达的自然性和人类偏好。如果先 RLVR 后 RLHF,模型在无约束的情况下可能朝向“高验证器分数但低人类偏好”的方向走偏,且最终的 KL 约束将锚定在一个偏的模型上,纠错成本极高。两者并行会让目标函数互相干扰。
Q6. 在 RLHF 的 Bradley-Terry 模型中,$p(y_A \succ y_B)$ 的计算公式所基于的核心假设是?
- A.人类总是客观理性地选择正确答案
- B.两个答案的得分差服从逻辑斯蒂分布← 正确答案
- C.偏好概率只取决于格式长度与文本流畅度
- D.奖励模型的输出是满足高斯分布的连续值
答案:B。Bradley-Terry 模型假设两个选项的效用值(reward score)之差经 sigmoid 函数映射后得到偏好概率,这等价于假设“效用之差服从逻辑斯蒂分布”。人类标注并非总是客观理性(选项 A 错),偏好概率的核心是“相对分差”而非格式与流畅度(C 错),奖励模型的输出也不需要高斯假设(D 错)。
Q7. 下列哪些问题类型适合作为 RLVR 训练数据?
- A.数学证明题,有严格的标准答案← 正确答案
- B.编程任务,可通过单元测试自动验证← 正确答案
- C.文案写作题,按人类主观偏好打分
- D.逻辑谜题,有确定答案← 正确答案
答案:ABD。RLVR 的核心前提是“存在客观、可自动验证的奖惩信号”。数学证明有标准答案、编程有测试用例、逻辑谜题有确定解,三者均满足要求。文案写作的主观性极强,无法用验证器自动判定优劣——这正是需要留给 RLHF 的范畴。
Q8. 在 RLVR 的目标函数中,KL 散度项 $\beta_{\text{KL}} \cdot D_{\text{KL}}(\pi_\theta \| \pi_{\text{ref}})$ 的直观含义是什么?
- A.鼓励模型远离参考策略
- B.对模型偏离参考策略的行为施加惩罚← 正确答案
- C.约束模型输出的最大长度
- D.调整验证器的判断阈值
答案:B。KL 散度量化了当前策略分布与参考策略(RLHF 产出的模型)之间的偏移程度,乘上系数 $\beta_{\text{KL}}$ 后作为惩罚项,模型偏离越远,惩罚越大,从而抑制策略漂移。它不是鼓励远离(A 反了),与输出长度(C)和验证器阈值(D)没有关系。
Q9. 以下关于“拒绝采样”在 RLVR 中的作用的说法,正确的有哪些?
- A.能有效提升训练集中正样本的比例← 正确答案
- B.是替代 PPO 的一种独立的策略优化算法
- C.引入了“只保留正确样本”的筛选机制← 正确答案
- D.可以消除验证器本身的系统性偏置
答案:AC。拒绝采样从大量采样的候选答案中只保留验证器判定正确的样本,从而提高了训练集中“优质正反馈样本”的密度(A、C)。它只是数据预处理手段,不是策略优化算法(B 错)。如果验证器本身存在系统性偏置(如偏好某类格式),拒绝采样只会放大了这种偏置(D 错)。
Q10. 在 RLVR 中使用经验回放缓冲区,最主要的好处是?
- A.减少 GPU 显存占用
- B.降低单轮样本之间的时间相关性导致的梯度方差← 正确答案
- C.增加模型的参数量以提升表达能力
- D.替代 KL 散度约束的作用
答案:B。强化学习训练中相邻轮次采样的时间相关性较强,直接用于策略更新会导致梯度高方差与训练振荡。经验回放从历史样本缓冲区中混合采样,打破了时间先后关联,使更新更稳定。它不会减少显存(A 反而增加),不改变模型参数数量(C),也不承担约束偏离的作用(D)。