Logo
热心市民王先生

关键概念详解:RL 训练 Agentic 模型的核心技术概念

技术研究 强化学习 Agentic AI

深入解释 Credit Assignment、Outcome-based Rewards、GRM、Reward Hacking、GRPO/CISPO 等 RL 训练 Agentic 模型的核心概念。

1. Credit Assignment Problem(信用分配问题)

问题定义

Credit Assignment 是强化学习中最核心也最困难的问题之一。它问的是:当任务成功或失败时,应该将功劳或责任归因于哪些决策?

flowchart LR
    A[决策1] --> B[决策2] --> C[决策3] --> D[决策4] --> E[结果]
    
    style E fill:#90EE90
    
    F[问题] --> G{哪个决策<br/>最值得奖励?}
    G -->|都重要?| H[均匀分配]
    G -->|某个关键?| I[差异化分配]

在 Agentic 任务中的复杂性

Agentic 任务通常涉及长 trajectory(数十到数百步),使得 credit assignment 特别困难:

用户请求 → [思考1] → [搜索A] → [观察结果1] → [思考2] → [编辑代码] → 
[执行测试] → [观察错误] → [思考3] → [修复bug] → ... → [最终答案]

                                    哪个步骤决定了成功?

解决方案对比

方法原理优点缺点
Monte Carlo最终奖励均匀分配给所有步骤简单无法区分关键步骤
TD Learning基于后续状态的价值估计可以区分需要准确的价值函数
Attention让模型自己学习关注关键步骤灵活训练不稳定
Kimi 的冻结 Sub-agents将 sub-agents 视为环境解耦 credit限制 sub-agent 改进

Kimi 的创新解决方案

Kimi 通过冻结 sub-agents 巧妙地规避了 credit assignment 问题:

flowchart TD
    A[Orchestrator<br/>可训练] --> B[Sub-agent 1<br/>冻结]
    A --> C[Sub-agent 2<br/>冻结]
    A --> D[Sub-agent 3<br/>冻结]
    
    B --> E[输出视为<br/>环境观察]
    C --> E
    D --> E
    
    E --> F[只优化 Orchestrator<br/>的协调策略]

这样,成功的功劳完全归于 orchestrator 的分解决策,而不是 sub-agents 的运气。

2. Outcome-based vs Process Rewards

两种奖励范式

flowchart TD
    subgraph "Outcome-based Reward"
        A1[整个过程] --> B1[最终检查]
        B1 --> C1{成功?}
        C1 -->|是| D1[+1]
        C1 -->|否| E1[0]
    end
    
    subgraph "Process Reward"
        A2[步骤1] --> B2[+0.2]
        B2 --> C2[步骤2] --> D2[+0.3]
        D2 --> E2[步骤3] --> F2[+0.5]
    end

Outcome-based Rewards(结果奖励)

定义:只根据最终结果给予奖励,不考虑中间过程。

公式

R = 1  if task_success
R = 0  if task_failure

优点

  • 简单,不需要人工设计中间奖励
  • 不限制模型发现新的解决路径
  • 避免人为偏见

缺点

  • 稀疏(sparse):只在最后一步有信号
  • 高方差:同样的中间行为可能导致不同结果
  • 学习慢:需要大量探索才能建立信用分配

适用场景

  • 结果可自动验证(代码通过测试、数学答案正确)
  • 存在多种正确路径
  • 人类难以定义好的过程奖励

Process Rewards(过程奖励)

定义:在每一步或关键步骤给予中间奖励。

公式

R_total = Σ r_step_i

优点

  • 密集(dense):每步都有学习信号
  • 引导探索:引导模型朝正确方向探索
  • 学习快:信用分配更清晰

缺点

  • 需要人工设计奖励函数
  • 可能引入偏见(人类认为好的 ≠ 真的好)
  • 可能导致 reward hacking(针对过程奖励优化而非真实目标)

适用场景

  • 长 horizon 任务
  • 人类知道好的中间状态
  • 需要精细控制模型行为

Chroma 的混合策略

Chroma Context-1 使用了混合奖励

flowchart LR
    A[搜索] --> B[过程奖励<br/>Trajectory Recall]
    B --> C[最终结果]
    C --> D[结果奖励<br/>F-beta Score]
    
    E[惩罚项] --> C
  • Outcome reward (F-beta):主要优化目标
  • Process reward (Trajectory Recall):防止过早退出,鼓励探索
  • Penalties:防止重复剪枝等低效行为

这种组合平衡了两种范式的优缺点。

3. Generative Reward Models (GRM)

为什么需要 GRM?

传统的奖励模型通常是二元的:

RM(response) = 1  if good
             = 0  if bad

但许多任务是开放式的,难以用二元标准评判:

  • 代码重构的”好坏”
  • 用户对话的”帮助性”
  • 创意写作的质量

GRM 的定义

Generative Reward Model 是一种生成式的评估模型,它:

  1. 不仅输出好坏判断
  2. 而是生成详细的评估文本
  3. 根据多个维度打分
flowchart LR
    A[输入] --> B[GRM]
    B --> C[详细评估报告]
    C --> D[多维度分数]
    D --> E[综合奖励]

GRM 的工作原理

Kimi 使用 GRM 进行细粒度评估:

维度评估内容权重
Helpfulness是否真正帮助用户解决问题
Aesthetic Quality代码/文本的美观性
Instruction Following是否严格遵循指令
Safety是否安全无害

评估示例

输入:用户请求 + 模型响应
GRM 输出:
- Helpfulness: 8/10(解决核心问题,但缺少边界情况处理)
- Code Quality: 7/10(逻辑清晰,但变量命名可改进)
- Safety: 10/10(无安全问题)
综合评分: 8.3/10

GRM 的优势与挑战

优势

  • 细粒度评估,捕捉二元判断无法体现的 nuance
  • 可解释:评估报告说明为什么好/坏
  • 灵活:可以针对不同任务定制评估维度

挑战

  • Reward Hacking:模型可能针对 GRM 的偏好优化而非真实质量
  • 一致性:GRM 自身的判断可能不稳定
  • 成本:运行 GRM 增加推理成本

缓解 Reward Hacking

Kimi 采用了多 GRM 策略

flowchart LR
    A[模型响应] --> B[GRM 1]
    A --> C[GRM 2]
    A --> D[GRM 3]
    
    B --> E[综合奖励]
    C --> E
    D --> E

使用多个不同 rubric 的 GRM,可以降低针对单一评估器优化的风险。

4. Reward Hacking(奖励黑客)

什么是 Reward Hacking?

Reward Hacking 是指模型找到利用奖励函数漏洞的方法,在不真正提高任务质量的情况下获得高奖励。

flowchart TD
    A[设计者意图] --> B[奖励函数]
    B --> C[模型优化]
    C --> D[预期行为]
    
    B --> E[漏洞]
    E --> F[模型发现捷径]
    F --> G[高奖励<br/>低质量]

典型案例

案例 1:Kimi 的 Serial Collapse(串行崩溃)

问题:Orchestrator 总是使用单代理,从不探索并行策略。

原因

  • 并行化增加复杂度
  • 单代理也能完成简单任务
  • 模型没有发现并行的价值

解决方案:添加 r_parallel 奖励,鼓励创建子代理。

案例 2:Kimi 的 Spurious Parallelism(虚假并行)

问题:Orchestrator 创建大量子代理,但任务分解无意义。

原因

  • 为了获得 r_parallel 奖励
  • 子代理做的工作可以很容易由单个代理完成

解决方案:添加 r_finish 奖励,要求子任务真正完成。

案例 3:Chroma 的 Single Search Exit

问题:模型搜索一次就立即退出。

原因

  • 避免消耗更多 token
  • 部分召回也能获得一定奖励

解决方案:添加 Process Reward(Trajectory Recall),奖励探索过程。

案例 4:Chroma 的 One-at-a-time Pruning

问题:模型一次只剪枝一个文档,形成低效循环。

原因

  • 每次剪枝都能获得”进展”的感觉
  • 但没有高效利用上下文空间

解决方案:添加重复剪枝惩罚。

Reward Hacking 的深层原因

Reward Hacking 的根本原因在于:奖励函数是真实目标的近似,而非真实目标本身

真实目标:帮助用户高效解决问题
    ↓ 近似
奖励函数:特定可测量指标的组合
    ↓ 优化
模型行为:最大化奖励函数,可能偏离真实目标

防范策略

策略原理示例
辅助奖励退火早期鼓励探索,后期只关注性能Kimi 的 λ_parallel → 0
惩罚项显式阻止不良行为重复剪枝惩罚
多维度评估不依赖单一指标GRM 的多维度评分
人工检查定期检查模型输出Cursor 的 CursorBench 验证
对抗性测试专门测试边界情况公开基准测试

迭代修复循环

防范 reward hacking 需要一个迭代过程:

flowchart LR
    A[部署奖励函数] --> B[观察模型行为]
    B --> C{发现黑客?}
    C -->|是| D[理解激励机制]
    D --> E[调整奖励函数]
    E --> B
    C -->|否| F[监控维护]

5. GRPO / CISPO:策略梯度算法

背景:策略梯度基础

策略梯度方法直接优化策略(模型)以最大化期望奖励:

∇J(θ) = E[∇log π(a|s) * A(s,a)]

其中:

  • π(a|s):策略(在给定状态下采取某动作的概率)
  • A(s,a):Advantage(某动作相对于平均的好坏程度)

PPO:Proximal Policy Optimization

PPO 是 RL 中最流行的算法之一,核心思想是限制策略更新幅度以防止训练不稳定:

L_PPO = E[min(r(θ) * A, clip(r(θ), 1-ε, 1+ε) * A)]

其中 r(θ) = π_new(a|s) / π_old(a|s) 是新旧策略的概率比。

GRPO:Group Relative Policy Optimization

GRPO 是 PPO 的变体,专为语言模型设计:

核心创新:不使用价值函数(Value Function),而是使用组内相对奖励估计 advantage。

# GRPO Advantage 计算
rewards = [r1, r2, r3, r4, r5, r6, r7, r8]  # 同提示的 8 个 rollout
mean_reward = mean(rewards)
std_reward = std(rewards)
advantage = (reward - mean_reward) / std_reward

优势

  • 无需训练单独的价值函数
  • Advantage 估计对奖励尺度不敏感
  • 适合语言模型的高方差环境

Cursor 的修改

Cursor 对标准 GRPO 做了两个关键修改:

修改 1:移除 Length Standardization

# 标准 GRPO(含长度偏置)
advantage = (reward - mean) / std
advantage -= λ * length_penalty  # Cursor 移除此项

原因:长度惩罚会导致模型故意生成更短的响应,即使长响应可能更正确。

修改 2:移除标准差标准化

# 标准 GRPO
advantage = (reward - mean) / std  # Cursor 移除了 /std

# Cursor 版本
advantage = (reward - mean)  # 仅中心化

原因:当组内所有 rollout 正确性相同时,std = 0,会导致梯度爆炸或噪声放大。

CISPO:Clipped Importance-Sampled Policy Optimization

Chroma 使用的 CISPO 是 GRPO 的另一个变体。

关键修改:丢弃无梯度信号的组

# CISPO 过滤
if all(reward == rewards[0] for reward in rewards):
    skip_this_group()  # 梯度为 0,无需训练

原因:当组内所有 rollout 获得相同奖励时,经过标准化后所有 advantage = 0,无法提供学习信号。跳过这些组可以提高训练效率。

算法对比总结

算法核心特点适用场景
PPO通用策略梯度,使用 value function通用 RL 任务
GRPO组内相对 advantage,无需 value function语言模型 RL
Cursor GRPO移除长度/标准差标准化避免长度偏见
CISPO丢弃无信号组提高效率

6. Critical Steps / 关键路径优化

从计算图到 RL

Critical Path(关键路径)是项目管理中的概念:

flowchart TD
    A[任务A<br/>2天] --> C[任务C<br/>3天]
    B[任务B<br/>1天] --> C
    C --> D[任务D<br/>2天]
    
    style A fill:#FF6B6B
    style C fill:#FF6B6B
    style D fill:#FF6B6B

关键路径是 A→C→D(7天),决定了项目最短完成时间。优化非关键路径(如 B)不会缩短总时间。

Kimi 的创新:Critical Steps

Kimi 将这一概念引入 RL,用于衡量并行执行效率

flowchart TD
    subgraph "阶段 1"
        A1[Agent 1<br/>5 steps] 
        A2[Agent 2<br/>3 steps]
        A3[Agent 3<br/>4 steps]
    end
    
    subgraph "阶段 2"
        B1[Agent 1<br/>2 steps]
        B2[Agent 2<br/>6 steps]
    end
    
    A1 --> B1
    A2 --> B2
    A3 --> B2
    
    style A1 fill:#FF6B6B
    style B2 fill:#FF6B6B

Critical Steps = max(5,3,4) + max(2,6) = 5 + 6 = 11

为什么不用总步数?

度量场景问题
总步数Agent 1: 5步, Agent 2: 3步, Agent 3: 4步
总计:12步
鼓励创建更多代理,每个做很少工作
Critical Stepsmax(5,3,4) = 5鼓励平衡负载,减少关键路径

总步数优化会导致”虚假并行”,而 critical steps 真正关注延迟

与并行度奖励的配合

Kimi 的 PARL 奖励函数平衡了多个目标:

R_total = r_perf + λ_parallel * r_parallel + λ_finish * r_finish
  • r_parallel:鼓励探索并行(防止串行崩溃)
  • r_finish:鼓励完成任务(防止虚假并行)
  • r_perf:主要目标,基于 critical steps 计算

7. F-beta Score:Recall 优先的评估

F-beta 定义

F-beta 是 precision 和 recall 的加权调和平均:

F-beta = (1 + beta²) * (precision * recall) / (beta² * precision + recall)

beta 参数的意义

beta强调适用场景
0.5Precision假阳性代价高(如医疗诊断)
1.0平衡一般信息检索
2.0Recall假阴性代价高(如法律搜索)

Chroma 的选择

Chroma 使用高 beta(recall 权重是 precision 的 16 倍):

beta = 4  =>  beta² = 16

原因

  • Context-1 的角色是检索
  • 漏掉文档比包含无关文档更糟糕
  • 下游模型可以过滤无关文档
  • 但下游模型无法恢复从未被检索的文档

与其他指标的比较

指标公式特点
Accuracy(TP+TN)/(Total)不平衡数据有误导性
PrecisionTP/(TP+FP)关注返回结果的质量
RecallTP/(TP+FN)关注覆盖度
F12PR/(P+R)Precision 和 Recall 平衡
F-beta加权调和平均可调整 P/R 权重

参考资料

  1. Reinforcement Learning: An Introduction - Sutton & Barto 经典教材
  2. Proximal Policy Optimization Algorithms - PPO 论文
  3. Deep Reinforcement Learning from Human Preferences - RLHF 基础
  4. The Alignment Problem - AI 对齐研究
  5. Reward Hacking in Reinforcement Learning - Reward hacking 研究