策略梯度
策略梯度根据奖励调整动作概率,最大化期望回报。REINFORCE 用一个采样回合的回报增强或削弱其中动作。单次更新即使计算正确,也可能降低成功率:本课第一回合从 25% 降到 24.6%。
走了右、左之后失败,只得到终点判决,无法据此知道哪一转有错。REINFORCE 把回报分给两次决策,可能连有用的第一步也惩罚。没有逐状态正确动作标签时,策略的可微概率提供了学习入口。
概率、回报与方向
策略把状态映射到动作分布。在 s 选择右的概率为 p = π(R|s),左为 1−p,按分布采样;每次都取最大概率则是另一种规则。
环境有两次决策:起点 s0 向左到 sL、向右到 sR,再选左或右后结束。仅 R → R 到目标得 +1,其余得到失败奖励,默认 −1;第一步奖励始终零。
每状态有独立参数 θ:
p = 1 / (1 + exp(−θ))
θ 为零时各半,增大偏右,减小偏左;也等价于 logits [0,θ] 的二动作 softmax。三个状态不共享权重。
回报 G_t 是从当前决策往后的奖励和。本课不折扣且只有终点奖励,所以两步回报相同;长任务或中间奖励下不一定相同。
把右编码为 a = 1,左为 a = 0:
∂ log π(a|s) / ∂θ = a − p
这先给出提高所采样动作概率的方向。p = 0.5 时,L 为 −0.5、R 为 +0.5,此时尚未更新。再按回报加权,做梯度上升:
g = G_t × (a − p)
θ ← θ + ηg
对这里的独立状态参数与正学习率,正回报增加采样动作概率,负回报减小,零回报无贡献。两动作和始终为一,增加右必然减少左。
整个回合策略不变,梯度使用产生该动作时保存的概率。显示先写末状态,再写根状态;因参数独立,等价于一次应用整个回合梯度向量。共享网络不能直接推广这种逐坐标解释。
离散动作为何可学习
不需要对“采样了一次左转”或环境奖励本身求导。策略给每个动作可微概率,log-derivative 恒等式将期望回报梯度改写成含对数概率的期望,一个回合提供其样本,见 Spinning Up 推导。
读者能看完整地图,但更新器只收到采样动作、概率、回报,不知道“应选右”的标签,也不用精确成功概率的导数训练。
逐步演示
默认学习率 0.5、失败奖励 −1、初始参数 [0,0,0]、四回合、固定随机种子。初始成功率 0.5×0.5 = 25%。
回合 1:失败惩罚了有用动作
第一次随机数约 0.254283 < 0.5,根选 R;第二次 0.541644 > 0.5,sR 选 L,路径 RL 失败,回报 −1。
先看第二步 L,a 为零,原对数梯度 −0.5 想增加 L,但负回报将其反转:
g_sR = −1 × (0 − 0.5) = +0.5
θ_sR = 0 + 0.5×0.5 = 0.25
sR 右概率升至 56.2%,采样过的左降至 43.8%。再对第一步 R 使用同一回报:
g_s0 = −1 × (1 − 0.5) = −0.5
θ_s0 = 0 + 0.5×(−0.5) = −0.25
根的右概率降至 43.8%,虽然右是成功必经步骤。新成功概率为 0.4378235 × 0.5621765 ≈ 24.6%,低于 25%。失败路径概率降低了,唯一成功路径的概率也降低了。
回合 2:增强成功
接下来随机数约 0.000823、0.407636,都落在当前右动作区间,得到 RR、回报 +1。
根与 sR 梯度分别约 0.5621765、0.4378235。更新后根右概率约 50.8%、sR 右约 61.5%,成功概率 31.2%。后两回合都采样 LL、回报 −1,访问状态的左概率被削弱。
| 回合 | 路径 | 回报 | 更新后目标概率 |
|---|---|---|---|
| 初始 | — | — | 25.0% |
| 1 | RL | −1 | 24.6% |
| 2 | RR | +1 | 31.2% |
| 3 | LL | −1 | 35.1% |
| 4 | LL | −1 | 39.3% |
这些是策略精确评估后的舍入值,不是已成功回合的比例。四次只成功一次,而最终策略在新回合约有 39.3% 成功率。四回合不证明收敛。
如何检查更大的任务
本图可把两概率相乘,真实大环境通常需冻结策略,在多个新回合评估。单个训练回报不够,旧回合还可能属于旧策略。
不更新时要区分缺少信号与禁用更新。“No reward for a miss”让 G = 0、梯度为零;“Freeze the policy”保留梯度但令 η = 0。概率条看起来相同,算式能定位停止环节。
复杂度
S 状态的表格二动作策略、每回合 T 次决策,采样与累加策略梯度时间 O(T),反向累加 reward-to-go 也为 O(T),参数及保存回合用 O(S+T) 空间。神经策略还需前反向成本;播放器为跳转保存策略快照,另行计数。
边界情况
- 零回报:失败奖励改零,第一 RL 仍失败但无梯度;默认 η = 0.5 时,第二 RR 得 +1 仍学习,后两次失败不再改变策略。当前没信号不等于以后不能发现成功。
- 零学习率:回报和梯度仍算,参数不变,概率保持各半。
- 未访问状态:没有贡献,默认前两回合不改
sL;共享神经参数可能同时改变未访问状态的输出。 - 大学习率:对固定样本按比例放大 logit 更新(梯度非零时才变大),后续抽样也可能因此改变,控制范围不构成通用稳定界限。
- 稀疏反馈:失败零回报且无基线时,失败轨迹没有梯度,长任务可能需大量探索才遇到奖励。
常见错误
- 把回报当各动作的对错标签。第一回合根 R 必需,却受到惩罚。
- 期待每次更新都提高性能。样本梯度带噪,默认首轮就是反例。
- 用梯度符号直接判断采样动作概率。正 θ 梯度偏右,若采样的是负回报 L,正梯度恰好降低 L。
- 用下降却忘负号。最大化回报做上升;最小化优化器可用负的回报加权 log 概率,漏负号会反转目标。
- 无限重复旧回合。REINFORCE 的估计依赖当前策略采样,反复优化旧数据不等同新在策略样本。
- 跨奖励设置直接比回报。失败 −1 与 0 的尺度、偏移不同,这里都偏好 RR,比较成功概率更适合这个对照。
从 REINFORCE 到基线
与动作无关的基线将权重换成 G_t − b(s_t)。满足标准策略梯度条件时不改变期望梯度,合适基线可降方差。此时正负表示高于或低于基线,原始正回报不再单独决定方向。
常用学得状态价值作基线,actor-critic 再加入价值估计并常用 bootstrap,见 VPG 说明。本课是零基线 REINFORCE。相关内容:梯度下降、Softmax 与交叉熵、反向传播。
模型范围
两步表格任务、终点奖励、无折扣、每回合一次更新、各状态独立 logit。没有价值网络、共享神经参数、批处理、熵正则或长时域。精确成功概率仅供诊断,绝不用于训练策略。