543 lines
16 KiB
Markdown
543 lines
16 KiB
Markdown
---
|
||
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) |