16 KiB
title, draft, tags
| title | draft | tags | |||||
|---|---|---|---|---|---|---|---|
| Verifier 与过程监督:从结果奖励到步骤级信用分配 | false |
|
Verifier 与过程监督:从结果奖励到步骤级信用分配
一、结果监督的局限性
1.1 标准 RLHF 的结果监督
在传统 RLHF 中,奖励信号只在完整响应生成后提供:
r(x, y) = r(x, y_T) \tag{1.1}
其中 y_T 是完整序列的最终结果。
问题:对于长序列推理任务(如数学证明),这种稀疏的奖励信号会导致:
- 信用分配困难:模型不知道具体哪一步错了
- 误差累积:早期错误会导致最终答案错误
- 训练效率低:每个完整序列只能更新一次
1.2 长推理链的错误模式
示例:多步数学推理
问题:小明有 23 美元,每本书 7 美元,他买了 3 本书,还剩多少?
推理过程(错误):
Step 1: 3 × 7 = 21 ✓
Step 2: 23 - 21 = 3 ✗ (应该是 23 + 21 = 44,但这里减法错了)
Step 3: 44 - 3 = 41 ✗ (基于错误中间结果)
最终答案:41
正确答案:23 - 21 = 2
问题分析:
- 结果奖励只知道最终答案是错的
- 不知道是 Step 2 的减法错了,还是 Step 3 用了错误结果
- 无法针对性地学习"如何正确做减法"
1.3 信用分配问题的形式化
定义(信用分配):
设推理序列为 $y_{1:T}$,每个步骤 t 的真实标签为 $c_t \in {+1, -1}$(正确/错误)。
全局最终奖励 R 是所有步骤局部正确性的聚合:
R = \sum_{t=1}^T \mathbb{1}_{c_t = +1} \tag{1.2}
其中 \mathbb{1}_{c_t = +1} 是指示函数,步骤正确为 1,错误为 0。
结果监督的问题:只观察到 $R$,不知道每个 $c_t$。
过程监督的目标:每个 step 都有局部奖励 $r_t$,可以直接学习:
\hat{c}_t = f_\phi(\text{step}_t) \tag{1.3}
二、Training Verifiers to Solve Math Word Problems
2.1 方法概述
核心思想(Polu et al., 2023):
不是让模型直接生成答案,而是先生成多个候选解,然后用 Verifier 从中选择最好的那个。
两阶段框架:
- Generator:生成
N个候选解 - Verifier:评估每个候选解的质量,选择最佳
前置条件:Generator 默认基于 CoT 预训练大模型,普通底座无法产出结构化分步推理,该前置训练条件是框架有效性的基础。
2.2 Generator 的数学模型
Generator 是一个标准的语言模型,给定问题 x 生成解答 $y$:
y \sim \pi_\theta(\cdot | x) \tag{2.1}
生成策略:
使用多候选采样(Multi-candidate Sampling)提高候选解的多样性:
- 采样
M个解答 - 用 Verifier 评估每个候选并排序
- 选择分数最高的候选
区分:
- 多候选采样:单纯生成多条结果,保留所有候选供Verifier筛选
- 拒绝采样:设定硬性规则过滤不合格样本,二者机制不同
2.3 Verifier 的数学模型
定义(Verifier):
Verifier 是一个二分类模型 $V_\phi$,评估解答 y 对于问题 x 的正确性:
V_\phi(x, y) \in [0, 1] \tag{2.2}
其中 1 表示正确,0 表示错误。
数学形式:
V_\phi(x, y) = \sigma\left( w_\phi^\top \cdot \text{Encoder}(x, y) \right) \tag{2.3}
其中 \sigma 是 sigmoid 函数。
2.4 Verifier 的训练
训练数据:
每个训练样本包含 (x, y, \text{label}) 三元组,其中 \text{label} \in \{0, 1\} 是正确性标签。
损失函数:
使用二元交叉熵损失:
\mathcal{L}_V(\phi) = -\mathbb{E}_{(x,y,\text{label}) \sim \mathcal{D}} \left[ \text{label} \cdot \log V_\phi(x,y) + (1-\text{label}) \cdot \log(1-V_\phi(x,y)) \right] \tag{2.4}
标签获取:
在数学问题场景中,标签通过以下方式获得:
- 最终答案比对:将
y的答案与标准答案比较 - 形式化验证:使用符号数学引擎验证推理步骤
2.5 测试时推理
Algorithm: Generator + Verifier
输入:问题 $x$,候选数量 N
过程:
1. 生成 N 个候选解答:
{y_i}_{i=1}^N ~ π_θ(·|x)
2. 用 Verifier 评估每个候选:
score_i = V_φ(x, y_i)
3. 选择分数最高的候选:
y* = argmax_i score_i
数学表示:
y^* = \arg\max_{y_i} V_\phi(x, y_i) \tag{2.5}
2.6 实验结果分析
主要发现:
在 GSM8K 数据集上:
- 单独 Generator:46.9% 准确率
- Generator + Verifier:54.1% 准确率
- 提升:+7.2%
分析:
Generator + Verifier 的提升来自于:
- 纠错能力:Verifier 可以识别 Generator 的错误
- 多样性:多个候选提供了更多选择
- 选择性:不是盲目相信第一个答案
三、Let's Verify Step by Step
3.1 核心思想
Let's Verify Step by Step(Lightman et al., 2023)的核心发现:
过程监督(Process Supervision) 在长推理链任务上显著优于结果监督(Outcome Supervision)。
三类奖励模型严格定义:
- RM(奖励模型):通用奖励模型,泛化描述
- ORM(结果奖励模型):仅评判整条推理最终对错,传统RLHF所用
- PRM(过程奖励模型):逐步骤评判正误,本文核心
3.2 Outcome Supervision vs Process Supervision
定义(Outcome Supervision):
只在完整序列结束时提供奖励:
r_{\text{ORM}}(x, y_T) = \mathbb{1}_{\text{answer}(y_T) = \text{correct}} \tag{3.1}
只告诉模型"最终答案对不对",不告诉"哪一步对"。
定义(Process Supervision):
在每个中间推理步骤结束后提供奖励:
r_{\text{PRM}}(x, y_{1:t}) = \text{PRM}(x, y_{1:t}) \quad \forall t \in \{1, \ldots, T\} \tag{3.2}
其中 \text{PRM} 是过程奖励模型。
3.3 Process Reward Model(PRM)的数学形式
定义(PRM):
\text{PRM}_\phi(x, y_{1:t}) \in \mathbb{R} \tag{3.3}
衡量在给定问题 x 和推理历史 y_{1:t} 的情况下,第 t 步推理是否正确。
输出空间:
- $r > 0$:步骤正确,愿意继续
- $r = 0$:步骤中性
- $r < 0$:步骤错误,应该停止或回溯
PRM 两大核心应用场景:
- 离线筛选:对已生成推理链打分筛选(本文主讲)
- 在线 RL 微调:直接用 PRM 步骤级奖励做强化学习,替代稀疏 ORM 奖励,是当前长推理对齐主流方案
训练注意事项:长推理中正确步骤远多于错误步骤,训练时需做负样本过采样,缓解类别不平衡。小参数量模型难以学好细粒度步骤评判,PRM 同样具备大模型涌现特性,小模型效果极差。
训练目标:
\mathcal{L}_{\text{PRM}} = -\sum_{(x, y_{1:T}, \text{step\_labels})} \sum_{t=1}^T \log \sigma\left( \text{PRM}_\phi(x, y_{1:t}) \cdot l_t \right) \tag{3.4}
其中 l_t \in \{+1, -1\} 是第 t 步的标签(+1=正确,-1=错误),\sigma 是 sigmoid 函数。这是标准的步骤级成对损失函数。
3.4 PRM 的训练数据标注
标注策略:
- 自动标注:使用符号数学引擎验证每个步骤
- 人工标注:让人类标注者评判每个步骤
示例:
问题:计算 23 × 17
Step 1: 23 × 17 = 23 × (20 - 3)
标签:+1(这一步正确,把17分解)
Step 2: 23 × 20 = 460
标签:+1(正确)
Step 3: 23 × (-3) = -69
标签:+1(正确,虽然是负数)
Step 4: 460 - (-69) = 391
标签:-1(错误!460 - (-69) = 460 + 69 = 529)
3.5 过程监督的优势
优势 1:精确信用分配
每个步骤的错误都可以被单独识别和惩罚:
r(x, y_{1:T}) = \sum_{t=1}^T r_t \cdot \mathbb{1}_{r_t < 0} \tag{3.5}
优势 2:训练信号更丰富
每个步骤都提供学习信号,而不仅仅是最后一个 token。
优势 3:可解释性更强
可以精确指出哪一步出了问题。
3.6 过程监督 vs 结果监督的实验对比
实验配置:
| 设置 | 描述 |
|---|---|
| 模型 | GPT-4 (2023-12) |
| 数据集 | MATH(竞赛数学题) |
| Outcome 监督 | 只在最终答案打分 |
| Process 监督 | 每步都用 PRM 打分 |
结果:
| 方法 | MATH 准确率 | 提升 |
|---|---|---|
| Outcome Supervision | 57.1% | - |
| Process Supervision | 70.4% | +13.3% |
| 对抗性测试 | ||
| Outcome Supervision | 48.8% | - |
| Process Supervision | 62.5% | +13.7% |
关键发现:在对抗性测试集(故意设置陷阱的问题)上,过程监督的优势更加明显。
对抗性任务优势底层原理:对抗陷阱题中,结果监督只能看最终答案,无法识别隐蔽中间步骤错误;过程监督逐步骤校验,从根源规避逻辑陷阱,有效阻断错误传导。
四、PRM 的训练与使用
4.1 PRM 的训练流程
Algorithm: Process Reward Model Training
输入:
- 问题集合
\mathcal{X} - 推理步骤集合
\{(x, y_{1:T})\}
步骤 1:步骤级标注
for each (x, y_{1:T}):
for each step t:
label_t = verify_step(x, y_{1:t})
步骤 2:PRM 训练
for each epoch:
for each (x, y_{1:T}, labels):
for each t:
pred_t = PRM(x, y_{1:t})
loss_t = -log σ(pred_t · label_t)
sum losses and backprop
4.2 PRM 的测试时使用
Algorithm: PRM-guided Decoding
输入:问题 $x$,生成长度限制 L
过程:
for each step t = 1 to L:
# 采样下一步
next_token ~ π_θ(·| x, y_{1:t})
# 用 PRM 评估
r_t = PRM(x, y_{1:t} + next_token)
# 如果步骤错误,停止或回溯
if r_t < threshold:
break
# 否则继续
y_{1:t+1} = [y_{1:t}, next_token]
解码引导阈值实战取值:通用数学推理场景,步骤评分阈值设为 0,低于 0 直接回溯终止,是行业通用配置。
4.3 PRM 与 Rollout 的结合
问题:PRM 本身是基于给定前缀评估的,但推理链还没结束时,无法知道后续步骤。
解决方案:Monte Carlo Rollout
PRM 仅依靠当前前缀无法预判后续走向,Rollout 通过随机续写多条路径,预估当前步骤的长期收益,解决单步评估短视问题。
从当前状态采样多条可能的继续推理路径:
y_{t+1:T}^{(m)} \sim \pi_\theta(\cdot | x, y_{1:t}) \quad m = 1, \ldots, M \tag{4.1}
然后评估:
\hat{r}_t = \frac{1}{M} \sum_{m=1}^M \text{PRM}(x, y_{1:t} + y_{t+1:T}^{(m)}) \tag{4.2}
Rollout 机制使得 PRM 可以评估"如果继续往下走,最终会不会是对的",而非只看当前一步的局部最优。
五、Verifiers 的实际应用
5.1 Generator-Verifier 的协作模式
模式 1:生成后验证(Post-hoc Verification)
- Generator 生成
N个候选 - Verifier 评估每个候选
- 返回分数最高的
算力需求:较低,适合离线数据提纯场景。
模式 2:生成中验证(Guided Generation)
- 每生成一步,用 Verifier 检查
- 如果 Verifier 认为错误,回溯或重试
- 比模式 1 更高效
算力需求:较高,推理时实时纠错,适合在线引导场景。
工业最优组合:当前工业落地主流范式是 CoT 生成推理链 + PRM 逐步校验,二者强绑定——CoT 提供结构化分步推理,PRM 对每步打分筛选,二者互补实现最优效果。
5.2 训练中的数据效率
定理(数据效率提升):
设每个问题有 K 个步骤,过程监督提供的训练信号是结果监督的 K 倍。
数学表示:
- 结果监督:每个问题提供 1 个标签
- 过程监督:每个问题提供
K个标签
标签效率提升:过程监督提供 K 倍于结果监督的训练信号(每个问题 K 个标签 vs 1 个标签)。
5.3 挑战与解决方案
挑战 1:步骤边界定义
如何定义一个"步骤"?
解决方案:
- 使用自然语言分割(如句号)
- 使用特定格式标记(如 "Step 1:", "Step 2:")
- 使用代码块边界
- 工业主流:统一结构化推理格式,强制模型固定分步写法(如
Step 1: ... \nStep 2: ...),大幅降低步骤分割难度
挑战 2:步骤标注成本
让人类标注每个步骤成本高。
解决方案:
- 使用自动标注(对于数学,有明确对错)
- 使用 LLM 辅助标注
- 使用 bootstrapping(自己生成数据自己标)
- 自动标注核心依赖:数学场景步骤自动验证依赖 SymPy、Mathematica 等符号计算引擎,可全自动校验代数/等式推导正确性,是大规模构建 PRM 数据集的核心。
挑战 3:Verifiers 的泛化
Verifier 可能在特定类型的问题上表现好,其他类型上表现差。
解决方案:
- 分领域训练多个 Verifier
- 使用领域自适应
- 集成多个 Verifier
Verifier 能力边界:验证器无法修正模型底层知识错误,仅能筛选、引导正确逻辑,不能弥补预训练知识缺陷。
六、过程监督的理论分析
6.1 信用分配的数学形式化
设置:
设完整推理序列为 $y_{1:T}$,最终奖励为 $R(y_{1:T})$。
结果监督的梯度:
自回归模型通过链式法则反向传播梯度,结果监督的奖励信号仅在序列末端提供,导致信用分配稀疏——模型无法判断具体哪一步出错,只能将错误归因于整个序列。梯度方向主要受最终 loss 影响,但传播路径覆盖全部时序参数,而非只走最后一步。
过程监督的梯度:
每个步骤都提供局部奖励信号,梯度可以直接流经每个出错的步骤,实现精确信用分配。
6.2 方差分析
核心结论:过程监督方差更小,而非更大。
原因分析:结果监督单样本仅 1 个稀疏奖励信号,梯度估计噪声极大;过程监督每个步骤都提供监督信号,多步密集信号大幅降低梯度估计方差。
设每个步骤的信用为 $c_t \in {0, 1}$(0=错误,1=正确):
- 结果监督:每次更新只依赖 1 个奖励信号,梯度估计方差约为
\text{Var}(R) - 过程监督:每次更新依赖
T个步骤信号,梯度估计方差约为 $\frac{\text{Var}(R)}{T}$(假设各步骤信号独立)
直观理解:投掷 1 次硬币的不确定性远高于投掷 10 次取平均的不确定性。
6.3 最优步数问题
问题:是否步数越多越好?
分析:
设问题的最优推理步数为 $T^*$,我们有:
- 步数过少:无法完成推理
- 步数过多:引入不必要的噪声
最优步数选择:
\hat{T} = \arg\min_T \mathbb{E}[\text{Error}(T)] + \lambda \cdot C(T) \tag{6.6}
其中 \text{Error}(T) 是步数为 T 时的错误率,C(T) 是计算成本。
七、数学公式速查
7.1 Verifier 公式
Verifier 输出:
V_\phi(x, y) = \sigma(w_\phi^\top \cdot \text{Encoder}(x, y)) \in [0, 1] \tag{7.1}
Binary Cross-Entropy 损失:
\mathcal{L}_V = -\mathbb{E}[\text{label} \cdot \log V + (1-\text{label}) \cdot \log(1-V)] \tag{7.2}
7.2 PRM 公式
过程奖励:
\text{PRM}_\phi(x, y_{1:t}) \in \mathbb{R} \tag{7.3}
PRM 训练损失:
\mathcal{L}_{\text{PRM}} = -\sum_t \log \sigma(\text{PRM}_\phi(x, y_{1:t}) \cdot l_t) \tag{7.4}
7.3 对比公式
ORM 结果奖励模型:仅评判整条推理最终对错
r_{\text{ORM}}(x, y_T) = \mathbb{1}_{\text{answer}(y_T) = \text{correct}} \tag{7.5}
PRM 过程奖励模型:逐步骤评判正误
r_{\text{PRM}}(x, y_{1:t}) = \text{PRM}(x, y_{1:t}) \quad \forall t \tag{7.6}
八、总结
核心洞察:
- 结果监督的局限:只在序列结束时提供信号,无法精确信用分配
- 过程监督的优势:每步提供信号,可以精确定位错误
- Verifiers 的作用:不仅验证最终答案,还能指导生成过程
方法演进:
结果监督(RLHF)
↓
生成 + 验证(Verifier)
↓
步骤级过程监督(PRM)
实际应用中的选择:
| 场景 | 推荐方法 |
|---|---|
| 数学/代码验证 | PRM + 形式化验证 |
| 开放域推理 | Generator + Verifier 投票 |
| 低成本场景 | Outcome Supervision + 更多采样 |
延伸阅读:
- Polu et al., "Training Verifiers to Solve Math Word Problems" (2023)
- Lightman et al., "Let's Verify Step by Step" (ICML 2023)
- Uesato et al., "Solving Math Word Problems with Process-Based Feedback" (2022)
- Cobbe et al., "Training Verifiers to Solve Math Word Problems" (2021)