跳转到正文

6.3 策略梯度改进

上一节在 CartPole 上跑了一遍 REINFORCE,看到了高方差的直接后果:训练曲线抖动剧烈,策略被运气牵着走。本节回答一个关键问题:能不能在不改变梯度方向的前提下,降低 的方差?

答案是肯定的。策略梯度定理有一个重要性质:梯度估计中可以减去一个不依赖于动作的基线。

基线不改变期望

回顾策略梯度定理:

现在把 换成 ,其中 是一个只依赖状态、不依赖动作的函数:

为什么这不改变期望?因为基线项的贡献为零:

最后一步用到了一个关键恒等式:对数概率梯度的期望为零。直觉上, 衡量的是"怎么调参数能增加某个动作的概率",把所有动作的这个量按概率加权平均,增减刚好抵消。

证明:

概率分布的归一化条件:。两边对 求梯度:

利用 ,把 替换成

左边恰好就是

所以基线不改变梯度的期望方向。但它的实际效果是改变梯度的方差

基线降低方差的直觉

减掉基线后,更新信号从"这趟跑了多少分"变成"这趟比预期好了多少"。

考虑 CartPole 中的一个例子。假设当前策略已经比较好了,从状态 出发平均能坚持 100 步():

情况无基线时更新方向有基线时更新方向
运气好,坚持了 150 步150+50强烈强化适度强化
运气一般,坚持了 100 步1000中等强化不更新
运气差,坚持了 50 步50-50轻微强化降低概率

没有基线时,三种情况都给出正的 ,策略都会被强化——即使"运气差"的那次其实表现不如平均水平。有基线后,"运气一般"的情况不产生更新,"运气差"的情况被正确地惩罚。

基线做的事情是给每个状态建立一个"及格线":超过及格线的强化,低于及格线的抑制。这个及格线不是固定的——不同的状态有不同的 ,因为不同状态的"正常表现"本来就不一样。

最好的基线是

基线可以是任何不依赖动作的函数。最简单的选择是常数(比如所有 episode 的平均回报)。常数基线在无状态赌博机中就有用,但它无法区分不同状态。

更好的选择是状态相关的基线 。理论分析表明,当 时,方差缩减效果接近最优 [1]。直觉上, 恰好回答了"从这个状态出发,按当前策略做,平均能拿多少分"——用它做基线,更新信号变成了"实际表现比平均好了多少"。

这个量叫做优势(Advantage):

在 REINFORCE 中, 的蒙特卡洛估计,所以优势的估计形式为:

  • :这个动作比当前状态下的平均水平好,应该增加概率
  • :这个动作比平均水平差,应该降低概率
  • :表现和预期差不多,不产生强更新

优势函数的意义

优势函数 是策略梯度方法中最重要的概念之一。它回答的不是"这个动作有多好",而是"这个动作比平均水平好了多少"。这个"相对好坏"的信号,比 的"绝对回报"信号稳定得多。

后续章节会反复用到优势函数:

  • 第 6 章 Actor-Critic:用 Critic 网络直接估计 ,实现每步更新(不必等 episode 结束)
  • 第 5 章 PPO:用 GAE(Generalized Advantage Estimation)在偏差和方差之间取折中
  • 第 7 章 RLHF:奖励模型给出的信号本质上也是一种优势估计

加入价值网络

实际操作中, 由一个额外的神经网络(价值网络)来估计:

python
# 价值网络学习 V(s)
values = value_net(states_t)
value_loss = nn.MSELoss()(values, returns_t)  # 用 G_t 作为训练目标

# 用优势更新策略
with torch.no_grad():
    values_pred = value_net(states_t)
advantages = returns_t - values_pred  # Â_t = G_t - V(s_t)
policy_loss = -(log_probs * advantages).mean()

价值网络的训练目标是让 尽量接近 ——也就是说,它在学习"从这个状态出发,平均能拿多少分"。策略网络不再直接使用 ,而是使用优势

这就是 REINFORCE with Value Baseline。它仍然是 REINFORCE(必须等 episode 结束,用蒙特卡洛回报更新),但更新信号从 变成了

下一节在 CartPole 上对比 vanilla REINFORCE 和 REINFORCE + Value Baseline:动手:CartPole 对比实验



参考文献
  1. Greensmith, E., Bartlett, P. L., & Baxter, J. (2004). Variance reduction techniques for gradient estimates in reinforcement learning. Journal of Machine Learning Research, 5, 1471-1530. ↩︎

现代强化学习实战课程