返回专辑
·Johan·5 分钟阅读

策略梯度:REINFORCE 与方差

直接优化 \(\mathbb{E}[G_t \nabla \log \pi_\theta]\);完整轨迹 return 方差随 horizon 爆炸,baseline 和 critic 是刚需。

策略梯度:REINFORCE 与方差

1. CartPole 手写 REINFORCE,LR 稍大就崩

策略梯度定理:

REINFORCE 用 Monte Carlo return 乘 log prob,无偏但 方差随 horizon 爆炸——整局 episode 采样完再更新,batch=1 时 loss 噪声巨大,LR 稍大梯度就 NaN。Horizon 越长, 方差越大,同样 learning rate 在 CartPole 能训、在 long-horizon robotics 直接炸。上次 robotics reach 手写 REINFORCE 无 baseline,gradient norm 间歇 >1000;加 learned baseline 后同 LR 能收敛——这不是实现 bug,是算法特性,减方差是 long-horizon 能训的必要条件。

2. Baseline 为什么不改变期望梯度

代替 常用 learned ——数学上 与 action 无关时,期望梯度不变,但更新方差大幅下降。优势 ;GAE 是 step-wise 扩展,PPO 的核心组件之一。我加一个小 MLP baseline 后,同样 LR CartPole 就能训稳——手写 REINFORCE 是理解 PPO 为什么需要 value network 的最短路径。

Control variates、copied baseline network、GAE 都是 variance reduction 链条。REINFORCE 用 per-episode return 时 credit assignment 模糊:早期坏动作和晚期好动作混在一起,梯度信号被稀释。

3. 连续动作与 log prob 细节

连续动作设 ,log prob 对 都可导。Log std 可学习;std 塌缩到 0 等于停止探索——设 log_std_min 下界。多 dim continuous:log prob sum over action dims,mean 还是 sum 要和 paper 一致,抄错维度聚合是常见 bug。

Tanh-squashed Gaussian(SAC 用的)和直接 Gaussian 公式不同,抄代码要抄对版本。Entropy 项符号别反——entropy bonus 是加在 loss 里鼓励探索,符号反了等于惩罚探索。

4. 从 REINFORCE 到 PPO

PPO 在 policy gradient 上加 GAE 和 clip:GAE 减 variance 且改善 credit assignment;clip 限制单次更新幅度,控制 effective step size——方差大时尤其需要。CartPole 上 REINFORCE + moving average baseline 应比纯 REINFORCE 稳,是 PG 实现的 sanity check。PPO/SAC 都建立在策略梯度上——理解 REINFORCE 的方差,才理解 baseline 和 clip 为什么存在。

5. Batch 构造与 pad mask

多条 episode 拼 batch 时不同长度要 pad 或按 episode 边界算 loss;mask 掉 pad 步,否则 gradient 被垃圾步污染。On-policy 数据只用一次却更新太多 epoch——PPO 里用 clip 缓解;纯 REINFORCE 没有 clip,epoch 过多直接 destabilize。Episode 间 return 尺度差几个数量级,未 normalize advantage 时更新偏向高 return episode。

6. 常见失败与 debug

Return 未减 baseline,loss 噪声巨大。Policy gradient 实验必 log gradient norm;长期 或 NaN 先 clip 或降 LR,再加层。小 batch 先看 gradient norm,再调 LR——方差问题用 LR 硬压是治标。Std 塌缩诊断:log std 曲线是否贴 log_std_min

7. 案例:无 baseline 的 long-horizon 训不动

Robotics reach 任务手写 REINFORCE,horizon 200 step,gradient norm 间歇性 ,NaN 频繁。加 learned baseline 后 norm 稳定在 量级,同 LR 能收敛——根因是 variance,不是 task 不可学。换 PPO(内置 GAE+baseline)同 task 开箱能跑,印证 variance reduction 是 long-horizon 必要条件。

8. 验收

  • CartPole:REINFORCE + baseline 应比纯 REINFORCE 稳。
  • Log policy_loss 方差、gradient norm。
  • 连续动作检查 log prob 维数聚合与 squashing 公式。
  • Batch pad mask 正确。
  • Entropy 与 log_std 下界:std 塌缩诊断。

9. 与 PPO clip 的关系

PPO clip 限制单次 policy update 幅度——本质是 policy gradient 方差大时的稳定器。理解 REINFORCE 方差,才理解为何需要 baseline、GAE、clip 三层。CartPole 手写 REINFORCE + learned baseline 是进 SB3 前的 sanity check;跳过则调 PPO 像黑盒拧旋钮。Long-horizon robotics 无 baseline 几乎必炸——gradient norm 间歇 、NaN 频繁是典型症状。连续动作 log prob:tanh-squashed(SAC)与 direct Gaussian 公式不同;多 dim sum over dims。Batch pad 步必须 mask,否则 gradient 污染。Policy gradient 实验 log gradient norm,长期 >100 先 clip 或降 LR,再加层。

10. 录包与 sanity check

CartPole REINFORCE + learned baseline 是进 SB3 前的 sanity check;long-horizon 无 baseline 几乎必 NaN。录包 gradient norm 间歇 >100 时先查 baseline 与 advantage normalize,再调 LR。连续动作:tanh-squashed log prob 与 direct Gaussian 不同;多 dim sum over dims。Batch pad 步 mask 掉,否则 gradient 污染。PPO clip 是方差大时的稳定器——理解 REINFORCE 方差才理解 clip。手写 REINFORCE 一轮再开 SB3,比直接调 clip 少踩坑。Episode 间 return 尺度差几个数量级时 normalize advantage;on-policy 数据只用一次却更新太多 epoch 会 destabilize,PPO clip 缓解此问题。Std 塌缩到 0 等于停止探索,log_std 下界是连续 PG 的标配配置。GAE 与 clip 是 PPO 建立在 PG 上的 variance reduction 层——跳过 REINFORCE 理解直接调 clip,像在黑盒上拧旋钮。CartPole baseline 实验是 PG 实现 sanity check,进 long-horizon 前必做。Mask pad 步、normalize advantage、log gradient norm——PG 三板斧;PPO clip 限制 effective step size,理解方差才理解 clip 存在理由。

11. 收束

策略梯度方差随 horizon 爆炸,baseline 是 long-horizon 必要条件而非优化。CartPole REINFORCE 加 baseline 是进 SB3 前的 sanity check;理解 REINFORCE 才理解 PPO 的 GAE 与 clip。连续动作 log prob 公式(tanh-squashed vs Gaussian)、pad mask、gradient norm 三板斧——PG 实现 review 必查项。Entropy bonus 符号别反;on-policy 数据重复更新太多 epoch 会 destabilize,PPO clip 缓解。Credit assignment 在 per-episode return 里模糊,step-wise reward 加 baseline 更清晰。

相关

也可以看看

← 全部文章

johan's blog