主题
字号
PART III · 强化学习速成
CHAPTER 16 ≈ 50 MIN READ

顺着后果爬坡——策略梯度与 REINFORCE

前两章备齐了语言:策略是要找的对象,价值是评估的工具。这一章正面进攻核心问题——怎么直接改进策略。你将见到全卷最重要的一个数学工具(策略梯度定理),并且会发现它与你最熟悉的东西——交叉熵损失——有一个近得出奇的亲缘关系。这一章的思路走完,RLHF 和 GRPO 的数学骨架就已经在你手里了;剩下两章只是给它加固。

3.1 目标很清楚,求导有障碍

策略路线的设定:把策略写成带参数的函数 $\pi_\theta(a|s)$——对语言模型,$\theta$ 就是那几百亿权重,$\pi_\theta$ 就是模型对下一 token 的概率分布。目标在第一章末尾就立好了,现在写成式子:

$$ J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta}\big[\, G(\tau)\,\big] $$

**按当前策略跑出轨迹 $\tau$,期望回报越大越好。**深度学习的本能反应:求梯度 $\nabla_\theta J$,梯度上升,完事。但这里有一道你此前没遇过的障碍,值得停下来看清楚——它是 RL 与监督学习在数学上分野的确切位置。

监督学习里,$\theta$ 只出现在损失函数内部(预测值里),数据分布与 $\theta$ 无关,链式法则一路畅通。而 $J(\theta)$ 里,$\theta$ 藏在期望的分布底下:改变参数,改变的是"哪些轨迹会被走出来"。轨迹是采样出来的——掷骰子选动作——而"掷骰子"这个操作没有导数。你没法问"回报对参数的导数",因为从参数到回报之间隔着一层随机采样。这就是所谓不可微的障碍:我们要对"运气的分布"求导。

3.2 对数导数戏法:把不可微变成可微

解决它的工具漂亮得值得慢放。把期望展开成对轨迹概率的积分/求和,$J(\theta) = \sum_\tau P_\theta(\tau)\, G(\tau)$,对 $\theta$ 求导落在 $P_\theta$ 上,然后用一个初等恒等式(就是 $(\log f)' = f'/f$ 移项):

$$ \nabla_\theta P_\theta = P_\theta \cdot \nabla_\theta \log P_\theta $$

代回去,$\nabla J = \sum_\tau P_\theta(\tau)\, G(\tau)\, \nabla_\theta \log P_\theta(\tau)$——注意 $P_\theta(\tau)$ 又完整地回到了式子里,这意味着整个式子重新变回了一个期望

$$ \nabla_\theta J = \mathbb{E}_{\tau \sim \pi_\theta}\big[\, G(\tau)\, \nabla_\theta \log P_\theta(\tau)\,\big] $$

这一步的妙处必须点透:期望可以用采样近似。跑一批轨迹,对每条算出括号里的量,平均——就是梯度的无偏估计。"对运气求导"被转化成了"跑起来、看结果、按结果加权"。再把 $\log P_\theta(\tau)$ 拆开(轨迹概率 = 各步动作概率与环境转移概率之积,取对数变求和,而环境转移不含 $\theta$、求导时直接消失——环境不需要可微,这是本方法最宝贵的性质),得到最终形态,策略梯度定理

$$ \nabla_\theta J = \mathbb{E}\Big[\, \sum_{t}\, G_t \cdot \nabla_\theta \log \pi_\theta(a_t \mid s_t)\,\Big] $$

现在用人话读这个式子,它其实在说一件极其符合直觉的事。$\nabla_\theta \log \pi_\theta(a_t|s_t)$ 是"往哪个方向调参数,能让当时那个动作的概率变大";前面乘着回报 $G_t$ 当权重。所以整个更新就是:**回报高的轨迹,把它沿途做过的动作概率统统调大;回报差的(若 $G$ 为负),统统调小。**做得好的经历,让它更容易再次发生——桑代克的效果律,此刻有了梯度形式。

给你的专属彩蛋:它就是加权的交叉熵

盯着 $-G_t \log \pi_\theta(a_t|s_t)$ 看三秒——这不就是你在第二卷见过无数次的交叉熵损失,只是每个样本前面多了一个权重 $G$?预训练/监督微调是"把数据里的下一个 token 概率调大,人人权重为 1";策略梯度是"把自己生成的 token 概率按成果加权调整,好的正权重、差的负权重"。一句话总结这层亲缘:**监督学习是无条件模仿数据,策略梯度是按后果有选择地模仿自己。**记住这个视角,第四卷里 SFT 与 RL 的关系、以及各种"拒绝采样微调"技巧,在它面前都会一眼透明。

3.3 REINFORCE:第一个能跑的算法

把上面的数学直接落成算法,就是 1992 年的 REINFORCE(Williams),策略梯度家族的始祖。循环三步:——用当前策略采样一批完整轨迹;——对每条轨迹算回报 $G$(蒙特卡洛式,走完才算,上一章的老朋友);——按 $G \cdot \nabla \log \pi$ 更新参数。概念上无懈可击,实践上却几乎不可用,病根一个词:方差

病情有两条,都值得看清,因为后面所有改进都是对症下药。

其一,功劳分配一锅炖。权重 $G$ 是整条轨迹的总回报——赢了一盘棋,这盘里每一步(包括那几步臭棋)的概率都被调大;解出一道题,推理过程里那段绕了远路的弯路也一起被强化。信号在"轨迹"粒度上是对的(平均而言,好轨迹里好动作占多数),在"动作"粒度上是一锅炖——第一章的功劳分配问题,REINFORCE 只交了份粗糙的答卷。

其二,权重的绝对尺度是噪声。设想奖励设计得所有回报都是正数(比如考试得分 60~100):那么所有被采样到的动作概率都会被调大,只是幅度不同——"差生也被表扬,只是表扬得少一点"。学习方向靠"幅度差"体现,被采样的随机性一搅就淹没了。同一策略跑两批数据,梯度估计可能天差地别;用小批量训练,曲线抖得没法看。方差大到实用性崩塌,这正是策略梯度在提出后多年里不温不火的原因。

3.4 Baseline:把「比平均好多少」当信号

解药是一个四两拨千斤的观察:给权重减去一个只依赖状态的量 $b(s)$,梯度的期望值一丝不变

$$ \nabla_\theta J = \mathbb{E}\Big[\, \sum_t\, \big(G_t - b(s_t)\big)\, \nabla_\theta \log \pi_\theta(a_t|s_t)\,\Big] $$

为什么减了不变?直觉版证明:$b(s)$ 对所有动作一视同仁——它给每个动作的概率梯度都乘同一个数,而"把所有动作的概率同时调大同一比例"是做不到的(概率和恒为 1),这部分推力在期望里自相抵消。所以 $b$ 不改变方向的期望,却可以大幅削减方差——只要它选得好,能把权重里"与动作选择无关的公共部分"扣掉。

什么样的 $b$ 最好?答案你已经认识了:这个状态的平常水平——$V(s)$。于是权重变成 $G_t - V(s_t)$,即"这次的实际成果,比这个局面的平均预期好多少"。这个量的正式名字终于登场:优势(advantage):

$$ A(s, a) = Q(s, a) - V(s) $$

($G_t$ 是 $Q(s_t,a_t)$ 的单样本估计,所以 $G_t - V(s_t)$ 就是 advantage 的估计。)用 advantage 当权重,学习信号的语义焕然一新:不再是"成果好就表扬",而是"超出预期才表扬,不及预期就批评"——考 85 分,在平均 95 的学霸局里是负信号,在平均 60 的困难局里是强正信号。信号被"居中"了:正负各半、幅度反映真实的超额贡献,方差断崖式下降。而且它顺手改善了功劳分配:如果能对轨迹里每一步分别估计 advantage(上一章的 TD 误差 $\delta$ 正是现成的单步估计——那座桥在此接通),臭棋就能在赢棋里被单独识别出来挨批评。

请给这个思想留一个专门的记忆位置,它可能是全卷"性价比"最高的一个:减去基线,不偏,但大幅降噪。第四卷你会看到,2024 年之后最重要的后训练算法 GRPO,其核心创新用一句话就能说完——对同一道题采样一组回答,用组内平均分当 baseline——你现在已经完全有能力理解这句话为什么成立、为什么聪明。

3.5 收尾盘点:信号有了,稳定还没有

盘点一下走到哪了。我们有了一台概念上完整的机器:参数化策略 + 策略梯度定理给方向 + advantage 给低噪声的权重。它已经"是"RLHF 的数学骨架——真的,第四卷的 PPO 目标函数里,你会原样认出 $A \cdot \nabla \log \pi$ 这对组合。

但这台机器直接上路还会翻车,剩两个没解决的毛病,留给下一章。**其一,数据是一次性的。**策略梯度是 on-policy 的:梯度公式里的期望必须在"当前策略自己的轨迹"上取——参数一更新,旧轨迹就是"别人"走的了,理论上作废。每批昂贵的采样只能用一次更新就扔,样本效率低得心疼(对语言模型,"采样"意味着生成成千上万条完整回答——那是真金白银的推理算力)。**其二,步子没有护栏。**梯度只给方向不管步长,而策略是概率分布,一步调猛了,分布整体劣化 → 采出的轨迹全变差 → 学习信号跟着崩——一个监督学习里不存在的死亡螺旋(数据是自己挣的,记得吗:策略坏了,数据跟着坏)。

一次性的数据、没有护栏的步子——把这两个问题一起解决的,就是那个你在所有后训练论文里都会遇到的名字:PPO。下一章,先合体(Actor-Critic),再上保险(信任域)。


本章要点