跳到主要内容
SecondHome

从零推 REINFORCE:环境不可微,梯度从哪来

14 分钟进阶5aL9 p.9-13 ↗p.18-24 ↗录像 ↗支撑材料 3 篇

SFT 教得起示范,教不起只有结果对错的任务。L9 p.18 一句「你怎么对单元测试求导?」把直接求导的路堵死:奖励来自采样与环境,两处都不可微。本篇从零推通答案:先把 agent 任务形式化成 agent–环境循环、轨迹与轨迹概率(p.9-13,含文本生成 / Web agent / Number Search 三实例与 0.50 的期望账),四步推出策略梯度 ∇J = E[R·∇log p](p.18-20),看环境项如何从 log 里整个掉落(p.21),最后落在题眼:工程上不过是对标准 SFT 计算做一次掩码与一次再加权(p.22-23);R∈{0,1} 时退化为只学成功轨迹的 ReST(p.24),Search-R1 用同一张 mask 在多轮搜索上拿到 7B 平均 +41%,PPO 则是这条裸 REINFORCE 的稳定化后裔。

第 4 讲的 SFT 把示范抄进权重,前提是有示范可抄。可 agent 任务最常到手的监督,是末尾才揭晓的一个分数:单元测试过没过、任务成没成。

slides 把困局问得直白:「你怎么对单元测试求导?」(L9 p.18)本篇从零把答案推出来:REINFORCE(Williams 1992)的策略梯度(policy gradient)。推导一路落到代码层,终点就是第三节题眼的那行 loss。

一、先把任务写成公式:循环、轨迹、概率质量

形式化从 L9 p.9 最简单的一个圈开始:每个时刻 t,策略(policy,就是 LLM)给出动作 a_t,环境接过去,吐回下一个观测 o_{t+1} 与奖励 r_{t+1}。同一个圈,套得住 L9 p.9-13 三种长得毫不相像的任务:

任务观测 o动作 a奖励 r
文本生成目前为止的 tokens下一个 tokenjudge 打分
Web agent页面与交互历史click / type / scroll完成子任务数
Number Searchhigher / lower / correct猜一个数猜中 1,否则 0

L9 p.10 的一个设定决定后面所有公式:策略只条件于历史 h_t=(o_0,a_0,…,o_t),看不见环境的隐藏状态。Number Search 里藏的那个数,模型永远只能从 higher/lower 的回答里推断。

L9 p.11 用轨迹(trajectory)把整段交互记账:τ=(o_0,a_0,r_1,o_1,…),总回报 R (τ)=Σ r_t。Number Search 只在结尾付那 1 分,中间一路是 0。奖励稀疏,agent 任务的常态。

L9 p.12 把轨迹当成带概率的事件:每一步要么来自策略 πθ(a_t|h_t),要么来自环境 P (o_{t+1},r_{t+1}|h_t,a_t,x)。连乘起来,就是轨迹概率 p_θ(τ|x)。

两项地位悬殊。策略项每一步都算得出来;环境项 P 写不出来,好在能采样。目标在 L9 p.13 落定:

J(θ)=Eτ∼pθ[R(τ)]J(\theta) = \mathbb{E}_{\tau \sim p_\theta}\left[R(\tau)\right]

slides 用四条轨迹把期望算成实数:概率 0.30 / 0.20 / 0.25 / 0.25,奖励 1 / 1 / 0 / 0,乘加得 J=0.50。训练的全部含义也就一句话:把概率质量从低奖励轨迹搬向高奖励轨迹,不动奖励、不动环境,只动 θ 控制的那一半概率。

二、四步推导:绕开环境,把梯度装进 log 里

想训练就得对 J 求梯度,而 J=Σ_τ p_θ(τ) R (τ) 两头都够不着(L9 p.18):R 要靠采样,环境动力学 P 未知。对单元测试求导,此路不通。出路在换求导对象,L9 p.19 四步走完:

  1. 对 J 求梯度:∇θJ = Σ_τ ∇θp_θ(τ)・R (τ)。奖励与环境都不含 θ,梯度只落在概率项上;
  2. 承认只有 p_θ(τ) 依赖 θ;
  3. 同乘同除 p_θ(τ),式子值不变、形状大变;
  4. 用恒等式 ∇p/p = ∇log p 收拢,回到期望形态:

∇θJ(θ)=Eτ∼pθ[R(τ)⋅∇θlog⁡pθ(τ∣x)]\nabla_\theta J(\theta) = \mathbb{E}_{\tau \sim p_\theta}\left[R(\tau)\cdot\nabla_\theta \log p_\theta(\tau \mid x)\right]

期望算不了,就采一条算一条。L9 p.20 的做法是蒙特卡洛(Monte Carlo)估计:∇θJ ≈ R (τ)・Σ_t ∇θ log πθ(a_t|h_t),τ 采自当前策略。

直觉值钱:R (τ) 是整条轨迹共享的权重。奖励高,这条轨迹上每个动作的概率都抬;奖励低,都压。环境从头到尾没被求导,只是被反复采样。

L9 p.21 还有一处漂亮的化简:p_θ(τ|x) 里那个写不出来的环境项 P,对 θ 是常数。log 把连乘变连加后,它的梯度恒为 0,整个掉出公式:

∇θlog⁡pθ(τ∣x)=∑t∇θlog⁡πθ(at∣ht)\nabla_\theta \log p_\theta(\tau \mid x) = \sum_t \nabla_\theta \log \pi_\theta(a_t \mid h_t)

不可微的环境,就这样从梯度里彻底消失,只剩模型自己做出的每一步选择。每个动作再按 token 拆开(a_t = u_{t,1},…,u_{t,m_t}),公式就到了能落码的形状。

完整的推导与记号,RL Fundamentals 讲义是权威底本。

log-derivative trick:一行代数,换一个世界

∇p = p・∇log p 本身只是恒等式。妙处在乘回期望后,求导对象从环境的输出偷换成策略自己的 log 概率。环境不可微的问题,代数把它消掉了,没有解决它。

三、题眼:一次掩码,一次再加权

落到代码,L9 p.22 先把多轮轨迹用聊天模板(chat template)串成一条 token 序列:<|im_start|>user … assistant guess(8) … tool higher …。接下来这行 loss,就是整篇的题眼:

LPG(θ)=−R(τ)⋅∑t: mt=1log⁡πθ ⁣(ut∣u<t)\mathcal{L}_{PG}(\theta) = -R(\tau)\cdot\sum_{t:\,m_t=1} \log \pi_\theta\!\left(u_t \mid u_{<t}\right)

把它与 SFT 的 −Σ_{t:m_t=1} log πθ(u_t|u_<t) 并排看。同一格 next-token 交叉熵,同一种掩码(loss mask)语义:m_t=1 只标策略采样的 token,含收尾的 end-of-turn;prompt 与观测上下文一律 m_t=0。唯一的差别,是头上乘了一个全轨迹共享的标量 R (τ)。

所以 slides 才把话挑明:「对标准 SFT 计算做掩码与再加权」(L9 p.22)。

user: (藏数任务说明)—— m=0:prompt,非策略产出assistant: guess (8) —— m=1:动作 token 逐个进 log π,end-of-turn 一并计入tool: higher —— m=0:观测只作条件上下文,不进损失assistant: guess (23) —— m=1:第二段动作 span 进 log πtool: correct —— m=0Observation: 猜中,R (τ)=1—— 整条轨迹共享这一个标量:L_PG = −1 ×(两段 assistant span 的 log π 之和)

同一格交叉熵,mask 内才计;每 token 权重恒为 1—— 因为示范是给定的好轨迹,条条等价。

同一格交叉熵、同一张 mask;整条轨迹乘同一个 R (τ)——R>0 抬概率,R<0 压概率,R=0 白跑一趟。

L9 p.23 把训练循环排成四拍:

这套裸式有两个天然的去向。

其一是 L9 p.24 的退化视角:R∈{0,1} 时,策略梯度就是只对成功轨迹做 SFT,这就是 ReST 的做法;差别在 ReST 走批式更新:先聚合成数据集再训练。RL 的极限情形,恰好是你已经会的东西。

其二是稳定化。L9 p.20 的蒙特卡洛估计要求 τ 采自当前策略,一条轨迹用一次就得重采,步子迈大还不稳。PPO(Schulman et al. 2017)把目标改写成对概率比做 clip,换来 minibatch 复用,是这条裸 REINFORCE 的稳定化后裔。

实证锚点来自 Search-R1(Jin et al. 2025,COLM 2025,UIUC):把同一张 mask 用到多轮搜索,检索返回的 token 全部掩掉,只训模型自己生成的 token。7B 模型较 RAG 基线平均提升 41%。

上一讲问 loss mask 的三个问题,角色头?stop token?think 块?在 RL 这边原样适用,只是答案换了一层含义:mask 划定的不再是抄谁,而是谁的功劳。

与本讲的连接

本篇下钻伴读第一节「把 RL 老三样翻译成 LLM 语」里策略梯度定理的来历与去处。页码对位:

  • 形式化在 L9 p.9-13:循环、轨迹、轨迹概率与那笔 0.50 的期望账
  • 四步推导在 p.18-20,环境项掉落的化简在 p.21
  • 掩码与再加权的落码在 p.22-23,ReST 退化视角在 p.24

伴读里带 advantage 与基线的成品公式,是这套裸式的下一层稳定化,第二节 PPO/GRPO 的谱系从那里展开。三张资料卡各就各位:m5-rlhf-book 把 REINFORCE 放回 RLHF 全景,m5-ppo 是稳定化后裔的原典,m5-search-r1 承接上文 Search-R1 的实证。

跨讲看,上一讲「loss mask 的细节:模型到底在学哪些 token」把 mask 语义问到底,本篇补上乘在头上的 R (τ),SFT 与 RL 在代码层只隔这一行。5b 的 Deep Research 线上,Search-R1 就是打通 5a 与 5b 的那座桥。

下次打开任一 RL 训练代码,先找两样东西:mask 数组在哪定、R (τ) 标量在哪乘。两行找到,再问一句同构的问题:这条轨迹的功劳,记给了哪些 token?

本节论文与规范

本节资料

  • 经典·高引(2017)。对概率比做 clip 换来可多次 minibatch 复用样本的稳定策略梯度更新,LLM-RL 一切变体的默认底座;局限是需要与策略同量级的 critic。全文只有 actor、critic 两个网络和一段截断目标函数,没有花活,却定下了「重要性采样比 + 信赖域近似」的技术路线。读 GRPO 之前先读它,L9 的每一条公式都能回溯到这里。

  • RLHF Book 课程入门

    免费在线书+代码+视频课(2024–2026,Manning 纸质版 2026-07):从 RL 记号、奖励建模、PPO/GRPO 到正则化与评测的全栈后训练教材,中译本社区维护。推导密度接近课程讲义而非博客,每章配代码与习题。公式吃不透时系统补课,比零散读博客省一半时间。

  • 2025(COLM 2025)。多轮搜索交互中用结果奖励训出「何时搜、搜什么」:检索 token 掩码+只训生成 token,7B 较 RAG 基线平均 +41%。模型自己决定发起检索的时机与 query,检索返回内容不进策略梯度,奖励只在最终答案结算。打通 5a(RL 损失设计)与 5b(检索智能体)的桥。

AI 生成 · 仅供参考,与课程方无关。选中正文里的任何一段也能直接问我(解释一下 / 举个例子)。

本详解以 CMU 11-768 AI Agents (Fall 2026) 课程大纲为参考框架独立撰写,AI 辅助起草、人工抽审。 涉及的官方课件、论文与课程材料版权归原所有方,讲义为站内镜像、其余外链原文出处; 观点与文字(除标注引用外)为作者原创。