--- title: Verifier 与过程监督:从结果奖励到步骤级信用分配 draft: false tags: - Verifier - Process-Supervision - Outcome-Supervision - 信用分配 - 大语言模型 --- # Verifier 与过程监督:从结果奖励到步骤级信用分配 --- ## 一、结果监督的局限性 ### 1.1 标准 RLHF 的结果监督 在传统 RLHF 中,奖励信号只在**完整响应生成后**提供: $$r(x, y) = r(x, y_T) \tag{1.1}$$ 其中 $y_T$ 是完整序列的最终结果。 **问题**:对于长序列推理任务(如数学证明),这种稀疏的奖励信号会导致: 1. **信用分配困难**:模型不知道具体哪一步错了 2. **误差累积**:早期错误会导致最终答案错误 3. **训练效率低**:每个完整序列只能更新一次 ### 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** 从中选择最好的那个。 **两阶段框架**: 1. **Generator**:生成 $N$ 个候选解 2. **Verifier**:评估每个候选解的质量,选择最佳 **前置条件**:Generator 默认基于 CoT 预训练大模型,普通底座无法产出结构化分步推理,该前置训练条件是框架有效性的基础。 ### 2.2 Generator 的数学模型 **Generator** 是一个标准的语言模型,给定问题 $x$ 生成解答 $y$: $$y \sim \pi_\theta(\cdot | x) \tag{2.1}$$ **生成策略**: 使用多候选采样(Multi-candidate Sampling)提高候选解的多样性: 1. 采样 $M$ 个解答 2. 用 Verifier 评估每个候选并排序 3. 选择分数最高的候选 **区分**: - **多候选采样**:单纯生成多条结果,保留所有候选供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}$$ **标签获取**: 在数学问题场景中,标签通过以下方式获得: 1. **最终答案比对**:将 $y$ 的答案与标准答案比较 2. **形式化验证**:使用符号数学引擎验证推理步骤 ### 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 的提升来自于: 1. **纠错能力**:Verifier 可以识别 Generator 的错误 2. **多样性**:多个候选提供了更多选择 3. **选择性**:不是盲目相信第一个答案 --- ## 三、Let's Verify Step by Step ### 3.1 核心思想 **Let's Verify Step by Step**(Lightman et al., 2023)的核心发现: > **过程监督(Process Supervision)** 在长推理链任务上显著优于**结果监督(Outcome Supervision)**。 **三类奖励模型严格定义**: 1. **RM(奖励模型)**:通用奖励模型,泛化描述 2. **ORM(结果奖励模型)**:仅评判整条推理最终对错,传统RLHF所用 3. **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 两大核心应用场景**: 1. **离线筛选**:对已生成推理链打分筛选(本文主讲) 2. **在线 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 的训练数据标注 **标注策略**: 1. **自动标注**:使用符号数学引擎验证每个步骤 2. **人工标注**:让人类标注者评判每个步骤 **示例**: ``` 问题:计算 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)** 1. Generator 生成 $N$ 个候选 2. Verifier 评估每个候选 3. 返回分数最高的 **算力需求**:较低,适合离线数据提纯场景。 **模式 2:生成中验证(Guided Generation)** 1. 每生成一步,用 Verifier 检查 2. 如果 Verifier 认为错误,回溯或重试 3. 比模式 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:步骤标注成本** 让人类标注每个步骤成本高。 **解决方案**: 1. 使用自动标注(对于数学,有明确对错) 2. 使用 LLM 辅助标注 3. 使用 bootstrapping(自己生成数据自己标) 4. **自动标注核心依赖**:数学场景步骤自动验证**依赖 SymPy、Mathematica 等符号计算引擎**,可全自动校验代数/等式推导正确性,是大规模构建 PRM 数据集的核心。 **挑战 3:Verifiers 的泛化** Verifier 可能在特定类型的问题上表现好,其他类型上表现差。 **解决方案**: 1. 分领域训练多个 Verifier 2. 使用领域自适应 3. 集成多个 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}$$ --- ## 八、总结 **核心洞察**: 1. **结果监督的局限**:只在序列结束时提供信号,无法精确信用分配 2. **过程监督的优势**:每步提供信号,可以精确定位错误 3. **Verifiers 的作用**:不仅验证最终答案,还能指导生成过程 **方法演进**: ``` 结果监督(RLHF) ↓ 生成 + 验证(Verifier) ↓ 步骤级过程监督(PRM) ``` **实际应用中的选择**: | 场景 | 推荐方法 | |------|---------| | 数学/代码验证 | PRM + 形式化验证 | | 开放域推理 | Generator + Verifier 投票 | | 低成本场景 | Outcome Supervision + 更多采样 | --- **延伸阅读**: 1. Polu et al., "Training Verifiers to Solve Math Word Problems" (2023) 2. Lightman et al., "Let's Verify Step by Step" (ICML 2023) 3. Uesato et al., "Solving Math Word Problems with Process-Based Feedback" (2022) 4. Cobbe et al., "Training Verifiers to Solve Math Word Problems" (2021)