第15回 策略梯度——REINFORCE 与基线

剑不问招先问心,心若有向步自勤。
不学一招定乾坤,且学顺势改其身。

上回我们走的是“估值派”:DQN 先估 QQ,再挑前途最高的动作。
可江湖里还有一大门派,路子完全相反——
不先估值,先学出招。

这一回讲“策略梯度”,尤其是最朴素的一式:REINFORCE。
它的目标也不绕弯:

让我做出更可能拿高分的动作。

但它又有一个出了名的毛病:更新抖、方差大。
于是江湖又送它一件“压惊法宝”:基线(baseline)。

本回就把这两样讲透:
REINFORCE 的骨法是什么,基线为什么能稳住它。


一、什么叫“直接学策略”:把“怎么选”写成参数

在第13回我们说策略是 π(as)\pi(a\mid s):在局面 ss 下选动作 aa 的概率。
策略梯度的核心就是:

  1. 用参数 θ\theta 表示一份策略 πθ\pi_\theta
  2. 跑几局,拿到回报
  3. θ\theta 往“回报更大”的方向推一点

你可以把它当作:

不是写一张“价值表”,而是直接改“出招概率”。

这在语言模型身上会更直观:
语言模型本来就输出“下一个 token 的概率分布”,天然就是一份策略。


二、REINFORCE 的一句心法:好结果就加强当时的选择

REINFORCE 可以用一句江湖话概括:

这回赚了钱,就把当时做的选择变得更可能;
这回亏了钱,就把当时做的选择变得更不可能。

它听起来像“凭感觉”,但背后有严格的概率论技巧(对数导数技巧)。
本书不做证明,你只需记住更新形状:

θθ+αGθlogπθ(as)\theta \leftarrow \theta + \alpha \, G \, \nabla_\theta \log \pi_\theta(a\mid s)
  • GG 是这一次(或从此刻起)的回报
  • θlogπθ(as)\nabla_\theta \log \pi_\theta(a\mid s) 是“把我刚才选的这个动作变得更可能”的方向

如果 GG 大,推得就大;如果 GG 小甚至为负,就推回去。

这就是 REINFORCE 名字的意思:用回报去“强化”当时的出招。

REINFORCE 的经典来源是 1992 年的工作。1


三、它为什么抖:回报像骰子,梯度也跟着摇

REINFORCE 的难处在于:
回报 GG 常常是随机的、噪声很大。

你可能做了同样的动作:

  • 这回运气好,拿了高分
  • 下回运气差,拿了低分

于是更新方向会“忽左忽右”,训练就像醉汉走路。

这件事在大模型对齐里也常出现:
同一句回答,不同标注者偏好不同;
同一套规则奖励,不同题型难度差异大;
噪声一大,策略就容易被带偏。

所以要引入基线:不是改变方向,而是减少摇摆。


四、基线(Baseline):扣掉“该有的平均数”,只学那一点“超常发挥”

基线最经典的形式是把 GG 换成 GbG-b

θθ+α(Gb)θlogπθ(as)\theta \leftarrow \theta + \alpha \, (G-b)\, \nabla_\theta \log \pi_\theta(a\mid s)

这里 bb 可以是一个常数,也可以依赖状态 b(s)b(s)
你把它理解为“把成绩换成超额收益”:

  • 平均水平 bb 之上:超额为正,强化这次选择
  • 平均水平 bb 之下:超额为负,削弱这次选择

最关键的性质是:

只要基线不依赖动作 aa,它不改变期望方向,却能降低方差。

所以基线像是“压惊符”:
不改你要去的方向,只让你走得更稳。

b(s)b(s) 取成 Vπ(s)V^\pi(s)(状态价值)时,Gb(s)G-b(s) 就变成了优势(advantage)。
这就是后来 Actor‑Critic、PPO(第16回)的桥梁:
一个人负责出招(actor),一个人负责评估平均水平(critic)。


五、极简代码:两臂老虎机上的 REINFORCE(带基线,可跑)

我们用最小世界练手:两臂老虎机。

  • 臂0:中奖概率 0.2
  • 臂1:中奖概率 0.8

策略用一个参数 θ\theta 表示:

  • p(a=1)=σ(θ)p(a=1)=\sigma(\theta)
  • p(a=0)=1σ(θ)p(a=0)=1-\sigma(\theta)

更新用 REINFORCE,并用移动平均当基线。

import math
import random


def sigmoid(x):
    return 1.0 / (1.0 + math.exp(-x))


def sample_action(p1, rnd):
    return 1 if rnd.random() < p1 else 0


def reward(a, rnd):
    p = 0.8 if a == 1 else 0.2
    return 1.0 if rnd.random() < p else 0.0


def grad_logp(theta, a):
    p1 = sigmoid(theta)
    if a == 1:
        return 1.0 - p1
    return -p1


if __name__ == "__main__":
    rnd = random.Random(0)
    theta = 0.0
    lr = 0.05
    baseline = 0.0
    beta = 0.9

    for t in range(1, 2001):
        p1 = sigmoid(theta)
        a = sample_action(p1, rnd)
        r = reward(a, rnd)
        baseline = beta * baseline + (1.0 - beta) * r
        adv = r - baseline
        theta = theta + lr * adv * grad_logp(theta, a)

        if t % 200 == 0:
            print("step", t, "p(a=1)", round(sigmoid(theta), 3), "baseline", round(baseline, 3))

你会看到 p(a=1)p(a=1) 逐渐逼近 1:
也就是越来越偏向中奖概率 0.8 的那台机器。

这段代码的重点不在“性能”,而在于你能亲手摸到两件事:

  • REINFORCE 的更新只依赖“这次拿了多少分”
  • 基线把分数改成“超额”,让更新更稳

六、把基线放进 2024–2026 的语境:偏好学习也需要“稳住”

当奖励来自人类偏好或偏好模型时,噪声往往更大:
同样的回答,有时只是表述风格不同,就能让偏好翻转。

所以 2024 的偏好强化学习研究会反复讨论“如何用更少反馈、更稳地学到偏好”。
例如有工作讨论用“对齐经验估计”提高偏好强化学习的反馈效率,本质上也是在让训练信号更可靠、更省。2

你此刻不必掌握它的细节,只要记住一条连续的主线:
从 REINFORCE 的基线,到 Actor‑Critic 的价值估计,再到 PPO 的稳定更新,都是在解决同一个问题:让‘用奖励改策略’这件事别抖。


七、小结:本回学会“直接改出招”,下回学“稳健改出招”

本回你要把三句话记牢:

  1. 策略梯度直接学 πθ\pi_\theta:不先估 QQ,先改出招概率
  2. REINFORCE 用回报强化选择:GlogπG \nabla \log \pi
  3. 基线不改方向但降方差:用 GbG-b 学“超额收益”,更新更稳

下一回(第16回)PPO 要登场:
它仍是“改策略”,但会用一套更稳的约束,让你在大规模训练里不至于一步走偏、满盘皆输。

欲知后事如何,且听下回分解。


幻觉核查

  • REINFORCE 经典来源核对:Williams 1992 的论文题名与出版信息可在 Springer 页面核验。1
  • 偏好强化学习条目核对:arXiv:2405.18688 可核验标题、作者与提交时间。2
  • 本回关于“基线不依赖动作则不改变期望方向”的表述为强化学习标准结论,本书不在此回展开证明,只给直觉与使用方式。

逻辑审计

  • 与第14回对齐:第14回“先估值再选”,本回切换到“先学策略再出招”,形成两派对照。
  • 与第16回衔接:本回引入基线与优势,正是 Actor‑Critic/PPO 的核心语言。
  • 难度控制:公式只保留最必要的形状,并用“超额收益”解释基线,不引入超纲证明。

引用与溯源

Footnotes

  1. Williams, R. J. Simple statistical gradient-following algorithms for connectionist reinforcement learning Machine Learning 8, 229–256 (1992) https://link.springer.com/article/10.1007/BF00992696 2

  2. Bai, F., et al. Efficient Preference-based Reinforcement Learning via Aligned Experience Estimation arXiv:2405.18688(2024-05)https://arxiv.org/abs/2405.18688 2