Skip to content

Agentic RL ​

标签
AI/infra/训练方法
字数
3996 字
阅读时间
16 分钟

前面几篇讲的都是怎么用一个训练好的模型。这一篇讲模型是怎么被训成智能体的——把 LLM 当成一个可学习的策略,放进顺序决策循环里去优化。

它和 提示工程、Agent Loop 的分界很清楚:那两层是在推理期想办法,这一层是在训练期改参数。

先看 LLM 训练的完整流程 ​

一个模型的诞生分两大阶段:预训练(Pretraining) 和 后训练(Post-training)。

预训练:学语言规律和世界知识 ​

用数 TB 级文本做自监督学习,最常见的任务是因果语言建模(下一个词预测):

Lpretrain=−∑t=1Tlog⁡P(xt∣x1,x2,…,xt−1;θ)

最小化负对数似然,就是最大化预测正确词的概率。学会的东西分四层:语法规则(什么样的词序合法)、语义知识(词与词的关系)、世界知识(事实性信息)、基础推理能力。

特点:数据量巨大、计算成本极高、训练信号完全从文本本身自动构造。

后训练:把「预测下一个词」变成「对话助手」 ​

预训练完的模型只是个「预测下一个词」的模型——它不知道如何遵循指令、生成有帮助无害诚实的回答、拒绝不当请求。后训练分三步:

步骤目标数据损失函数
SFT(监督微调)学会遵循指令和对话格式(prompt, completion) 对LSFT=−∑i=1Nlog⁡P(yi∣xi;θ)
RM(奖励建模)学会人类偏好偏好对比数据(chosen / rejected)LRM=−E[log⁡σ(rϕ(x,yw)−rϕ(x,yl))]
RL 微调用奖励模型优化生成质量——JPPO=E[rϕ(x,y)]−β⋅DKL(πθ|πref)

奖励模型的损失函数值得看一眼:它不预测绝对分数,只要求给更好的回答打更高的分——用的是两个分数之差过 sigmoid。这是「成对比较比绝对打分更可靠」在训练侧的体现(同一结论在 LLM Evaluation 里作为评测原则出现过)。

RL 阶段的目标函数里那个 KL 项是核心约束:rϕ 是奖励模型的评分,DKL(πθ∥πref) 防止模型偏离参考策略(通常是 SFT 模型)太远。含义一句话——最大化奖励,同时不要偏离原始模型太远。

为什么必须有这个约束:奖励模型只是人类偏好的近似,没有任何约束地最大化它的分数,模型会找到「奖励模型打高分但人并不满意」的区域——这就是奖励欺骗(reward hacking)。

RLHF 与 RLAIF ​

偏好数据来自成本
RLHF人工标注高昂
RLAIF一个能力足够强的 LLM(如 GPT-4)评分排序大幅降低,效果接近甚至超过 RLHF

RLAIF 的流程:SFT 模型生成多个候选 → 用强模型评分排序 → 用 AI 的评分训奖励模型 → 用奖励模型做强化学习。

PBRFT 与 Agentic RL 的分界 ​

传统后训练可以叫 PBRFT(Preference-Based Reinforcement Fine-Tuning),它只关注单轮对话的质量——给定一个问题、生成一个回答、按回答质量给分。

这对多步推理、工具使用、长期规划力不从心。差别用 MDP 五元组逐项对照最清楚:

MDP 组件PBRFTAgentic RL
状态 Ss0=prompt,T=1 单步,状态不变st=(prompt,o1,…,ot),T≫1,状态随行动演化
行动 A只有文本生成,a=y∼πθ(y|s0)at∈{attext,attool}——思考与工具调用都在行动空间里
转移 P无状态转移st+1∼P(st+1|st,at),例如调完搜索工具后状态里包含搜索结果
奖励 R只有单步奖励 r(s0,y),任务结束时给RAgentic=∑t=0Tγtr(st,at),可给中间部分奖励
目标 JE[r(s0,y)]Eτ∼πθ[∑tγtr(st,at)],τ 是完整轨迹

行动空间那一行最值得记:它正是 ReAct 那篇里那个 A∪L 的强化学习版本——「产生一条 Thought」也是一种行动。区别在于 ReAct 是提示出来的,这里是被训练出来的。

一个具体例子 ​

任务:「分析这个 GitHub 仓库的代码质量」。

步骤行动奖励
1调用 GitHub API 获取仓库信息+0.1
2读取主要代码文件+0.1
3分析代码质量+0.2
4生成分析报告+0.6
——累积1.0

对比 PBRFT:同样是这个请求,模型一次性生成完整回答,按回答质量打一个分。中间过程没有任何信号——做没做那四步、顺序对不对,奖励函数看不见。

PBRFT 是单步,Agentic RL 是完整轨迹:

  PBRFT:T = 1

    prompt ──▶ 模型生成一个回答 ──▶ 打分 r(s₀, y)
                      (中间过程没有任何信号)

  Agentic RL:T ≫ 1

    s₀        a₀          s₁        a₁          s₂        a₂         s₃
    prompt ──▶ 调 API ──▶ 含结果 ──▶ 读文件 ──▶ 含内容 ──▶ 写报告 ──▶ 完成
     │           │                    │                    │
     └── r₀ ─────┘  r₁ ───────────────┘  r₂ ───────────────┘
         +0.1        +0.1                +0.2               +0.6

                        累积奖励 = Σ γᵗ r(sₜ, aₜ) = 1.0

  ⇒ 行动空间里有两类行动:文本(思考)与工具调用
     —— 这正是 ReAct 那个 A ∪ L 的强化学习版本
  ⇒ 状态随行动演化:调完搜索工具后,状态里就包含搜索结果

思维方式的转变 ​

PBRFT 思维Agentic RL 思维
关注让模型生成更好的单个回答让智能体完成复杂任务
优化目标回答质量任务完成度
对象语言表达行动策略
决策单步多步规划

「愿意执行看似绕路的中间步骤」是这套训练最反直觉的产物——纯 SFT 学不到这个,因为训练数据里没有「先绕路再成功」的示范;它只能从累积奖励的反馈里学出来。

Agentic RL 想赋予的六种能力 ​

能力为什么提示/Prompt 或 SFT 不够
推理CoT 提示依赖少样本示例、泛化有限;SFT 只能模仿训练数据里的推理模式。RL 靠试错发现训练数据中没有的推理路径,并学会何时该深想、何时该快答
工具使用学会何时需要工具、选哪个、怎么组合多个工具
记忆静态检索(如 RAG)无法针对任务优化;RL 让智能体学会记忆管理策略——哪些值得记、何时更新、何时删过时信息
规划CoT 是线性思考无法回溯,提示模板难以适应新情况;RL 学动态规划并权衡短期与长期收益
自我改进回顾自身输出、纠正错误、优化策略——识别错误、分析失败原因、调整策略
感知多模态理解、使用视觉工具、视觉规划

「SFT 只能模仿训练数据里的推理模式」这句是关键:SFT 的目标函数是最大化 P(yi|xi)——它优化的是「复现给定输出」,不是「找到正确答案」。训练数据里没有的解法,它学不出来。RL 换成了奖励信号,只需要判断结果好不好,不需要示范怎么做——这是它能突破示范数据上限的原因。

一个具体的训练目标对比(推理任务):

  • 奖励:r(q,c,a)=1 if a=a∗ else 0(只判对错,不管推理链长什么样)
  • 目标:maxθEq,(c,a)∼πθ[r(q,c,a)]

注意奖励里没有 c——推理链不在奖励函数里。模型是「为答对而学会推理」,不是「被教着怎么推理」。

奖励函数设计 ​

奖励函数是强化学习的核心,它定义了什么是「好的行为」。

设计准则(好的一面 / 坏的一面):

好的奖励函数糟糕的奖励函数
清楚地定义什么是成功只在任务结束时给奖励,中间步骤无反馈
提供梯度信号存在奖励欺骗——智能体找到「作弊」方式拿高分
不会产生过大方差多个目标相互矛盾
容易调整和组合方差过大,训练不收敛

「存在奖励欺骗」是最需要盯的一条——它和上面的 KL 约束是同一个问题的两种表现:奖励是代理指标,只要能被优化,就会被「优化到偏离本意」。

三种内置奖励函数 ​

(1)准确率奖励——最基础,只关心答案对不对:

racc(a,a∗)={1a=a∗0otherwise

实现上的细节比公式多。首先要提取最终答案:查找 Final Answer: 后的数字、#### 标记后的数字,或用正则取最后一个数字。然后比较时要处理等价性:

  • 数值精度:72.0 和 72 应视为相同
  • 单位转换:1000 和 1k
  • 格式差异:72 和 seventy-two

**这三条是奖励函数里最容易出错的地方。** 一个把 `72.0` 判成错的比较逻辑,会让模型在学习「答案要写成整数」而不是「把题算对」——**它训出的是格式遵从,不是推理能力**。

局限:奖励稀疏——只有完全正确才有奖励,无法区分「接近正确」和「完全错误」,训练初期缺乏有效反馈。

(2)长度惩罚——鼓励简洁:

rlength(a,a∗,l)=racc(a,a∗)−α⋅max(0,l−ltarget)

关键设计:只在答案正确时才施加惩罚。 否则模型会为了减少惩罚而生成错误的短答案——这是「多目标相互矛盾」的一个具体防护。

算例:目标 200 字符、实际 500 字符、α=0.001 → 1−0.001×300=0.7。

(3)步骤奖励——鼓励清晰推理:

rstep(a,a∗,s)=racc(a,a∗)+β⋅s

三种的取舍:准确率奖励稀疏但无误导;长度惩罚和步骤奖励提供了更密的信号,但都引入了「什么算好」的额外假设——而任何额外假设都可能被优化到偏离本意。

SFT 与 LoRA ​

SFT 的目标函数与预训练同形(仍是最大化正确输出的概率),但数据不同:

预训练SFT
数据量数 TB小得多
标注不需要(自监督)需要人工构造 (prompt, completion)
学到什么通用语言能力任务格式与基本能力
见效速度慢、贵快

LoRA(Low-Rank Adaptation) 是参数高效微调方案:原模型权重不动,在权重矩阵旁挂一对低秩矩阵,只训练这一小部分。这样显存需求大幅下降,让单卡微调大模型成为可能。

PPO → GRPO ​

PPO 是最经典的 RL 算法,通过裁剪限制策略更新幅度来保证稳定:

JPPO(θ)=E[min(πθ(a|s)πold(a|s)A(s,a), clip(πθ(a|s)πold(a|s),1−ϵ,1+ϵ)A(s,a))]

其中优势函数需要 Value Model 来估计:

A(s,a)=Q(s,a)−V(s)=r(s,a)+γV(s′)−V(s)

PPO 在 LLM 训练里的三个问题 ​

问题说明
需要 Value Model增加训练复杂度与显存占用
要同时维护四个模型Policy / Reference / Value / Reward —— 工程实现复杂
训练不稳定容易出现奖励崩塌或策略退化

GRPO 的做法:用组内均值代替价值模型 ​

JGRPO(θ)=E[πθ(a|s)πref(a|s)⋅(r(s,a)−r¯group)]−β⋅DKL(πθ∥πref)

核心替换:用 r(s,a)−r¯group(组内相对奖励)代替优势函数 A(s,a)。

这一个替换同时解决三件事:不需要 Value Model;组内相对化减少了奖励方差;流程简化为只需 Policy Model 和 Reference Model。

为什么「减组内均值」能当优势用:同一道题采样一组回答,组内均值就是「这道题的平均发挥水平」。一个回答比组内平均好多少,就是它的相对优势——这和对同一状态做多次采样、用经验均值代替 V(s) 是同一个思路,只是省掉了单独训练一个价值网络。

代价:它要求同一输入必须采样一组(group),所以采样成本比 PPO 高;而且推理任务的奖励设计要能比较组内相对好坏——纯二值奖励下,如果一组全对或全错,相对奖励全为 0,没有梯度。

PPO 与 GRPO 在「需要哪些模型」上的差别:

  PPO:优势函数要单独训一个价值网络

    ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
    │ Policy   │ │Reference │ │ Value    │ │ Reward   │   四个模型同时维护
    └──────────┘ └──────────┘ └────┬─────┘ └──────────┘
                                   │
                A(s, a) = r(s, a) + γV(s′) − V(s)     ← 要估 V,就得先训它

  GRPO:用「组内相对奖励」代替优势

    ┌──────────┐ ┌──────────┐
    │ Policy   │ │Reference │                          只维护两个模型
    └──────────┘ └──────────┘
          │
     同一道题采样一组回答 ──▶ 组内均值 r̄_group
          │
     A ≈ r(s, a) − r̄_group      ← 组内均值就是「这道题的平均发挥水平」

  ⇒ 一个替换同时解决三件事:不需要 Value Model、组内相对化降低奖励方差、
     流程简化为两个模型
  ⇒ 代价:同一输入必须采样一组(采样成本更高);一组全对或全错时
     相对奖励全为 0,没有梯度

评估与错误分析 ​

训练之后要能说清「学到了什么、还差在哪」。三个层次:

层次看什么
评估指标准确率这类任务指标,配合训练曲线(奖励、KL、长度)
错误分析把失败样本分型——是推理错、格式错、还是答案提取失败
改进方向按错误分布决定:补数据、调奖励权重、还是加训练步数

「答案提取失败」这一类要单独分出来——它属于评估实现问题(前面那三条等价性处理),不属于模型能力问题。把它混进「答错」里,会误判模型能力,然后去加训练量解决一个根本不存在的问题。

相关 ​

  • ReAct —— 行动空间 A∪L 在提示层的版本,这一篇是它被训练出来的版本
  • Agent Loop —— 训练出来的是这个循环里的策略
  • 06-缩放法则 —— 训练期的另一条轴(这一篇讲的是「怎么训」,那篇讲「训多大」)
  • LLM Evaluation 与反馈闭环 —— 评测侧的对应方法
  • Prompt Engineering —— CoT 与 Self-Consistency 是提示层对同一批能力的替代方案

参考 ​

  • 《Hello-Agents》第十一章
  • Schulman, J., et al. Proximal Policy Optimization Algorithms. arXiv:1707.06347, 2017.
  • DeepSeekMath 提出的 Group Relative Policy Optimization
  • Christiano, P., et al. Deep Reinforcement Learning from Human Preferences. NeurIPS 2017.
  • Hu, E., et al. LoRA: Low-Rank Adaptation of Large Language Models. ICLR 2022.

贡献者 ​

文件历史 ​