跳转到内容

策略梯度定理与 REINFORCE

策略梯度定理给出 ∇J=E[∇log⁡π(a∣s) Qπ(s,a)]\nabla J = \mathbb{E}[\nabla \log \pi(a|s) \, Q^\pi(s,a)]。本章推导该定理、REINFORCE 算法、基线(baseline)为何不引入偏差却降低方差,以及因果性(reward-to-go)的作用。

策略方法直接参数化策略 πθ(a∣s)\pi_\theta(a \mid s),目标最大化期望回报 J(θ)=Eτ∼πθ[G(τ)]J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta}[G(\tau)]。困难在于:JJ 是对轨迹分布的期望,而轨迹分布依赖 θ\theta(动作采样自 πθ\pi_\theta),梯度似乎需要知道"采样概率如何随参数变化"——对环境转移 PP 求导是不可能的(环境未知且不可微)。

对数导数技巧(log-derivative trick)解决了这个问题:

∇θ πθ(a∣s)=πθ(a∣s) ∇θlog⁡πθ(a∣s),\nabla_\theta\, \pi_\theta(a \mid s) = \pi_\theta(a \mid s)\, \nabla_\theta \log \pi_\theta(a \mid s),

即"对分布求导"可以变成"乘以对数概率的导数"。对整条轨迹反复使用,所有只含环境转移的项都被消去:

∇θJ(θ)=Eτ∼πθ[ ∑t∇θlog⁡πθ(at∣st) ⋅ Gt],\nabla_\theta J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta}\Big[\, \sum_{t} \nabla_\theta \log \pi_\theta(a_t \mid s_t)\, \cdot\, G_t \Big],

其中 GtG_t(reward-to-go)是从 tt 时刻起的累积回报。这个定理不需要知道环境的可微模型——只需要能采样轨迹、能对 log⁡π\log \pi 求导。直觉:∇θlog⁡π(at∣st)\nabla_\theta \log \pi(a_t \mid s_t) 指向"提高该动作概率"的方向;回报为正的轨迹上,这个方向被加强,回报为负则被抑制。

策略梯度定理的最直接实现就是 REINFORCE(Williams, 1992):

for episode in range(N):
tau = collect_episode(pi_theta) # 采样完整轨迹
G = 0
for t in reversed(range(len(tau))): # 从后往前算 reward-to-go
G = tau[t].r + gamma * G
theta += alpha * G * grad_log_pi(tau[t].s, tau[t].a)

它是 on-policy 的(数据必须来自当前策略)、 Monte Carlo 的(用完整回报)、无偏的(目标就是真实梯度)。缺点是方差极大:GtG_t 累积了整条轨迹的所有随机性,梯度估计噪声大,学习率只能很小,样本效率低。

对回报减去一个只依赖状态的函数 b(s)b(s),梯度期望不变:

E[ ∇θlog⁡πθ(a∣s) b(s) ]=b(s) ∇θ∑aπθ(a∣s)=b(s) ∇θ1=0.\mathbb{E}\big[\, \nabla_\theta \log \pi_\theta(a \mid s)\, b(s) \,\big] = b(s)\, \nabla_\theta \sum_a \pi_\theta(a \mid s) = b(s)\, \nabla_\theta 1 = 0.

因为 ∑aπ(a∣s)=1\sum_a \pi(a \mid s) = 1,对 θ\theta 的导数恒为零。所以:

∇θJ=E[ ∇θlog⁡πθ(a∣s) ( Gt−b(st) ) ]\nabla_\theta J = \mathbb{E}\big[\, \nabla_\theta \log \pi_\theta(a \mid s)\, \big(\, G_t - b(s_t) \,\big) \,\big]

仍然无偏,但方差显著降低。最优基线是 E[∥∇log⁡π∥2G]\mathbb{E}[\lVert \nabla \log \pi \rVert^2 G] 形式的加权平均,实践中用价值函数 V(s)V(s) 或其估计——这正是 Actor-Critic 的动机(→ 下一章)。

同理,tt 时刻的动作不能影响 tt 之前的奖励,所以把"整条轨迹的回报"换成"从 tt 起的回报"(reward-to-go)也不引入偏差:

E[ ∇θlog⁡πθ(at∣st) ∑k<trk+1 ]=0.\mathbb{E}\big[\, \nabla_\theta \log \pi_\theta(a_t \mid s_t)\, \sum_{k < t} r_{k+1} \,\big] = 0.

减去过去的奖励又消掉一大块方差。综合两者,实用的梯度估计是"reward-to-go 减去基线"——这正是优势函数 AπA^\pi 的 Monte Carlo 估计。

REINFORCE 是策略方法族的起点:加基线与 critic 得到 Actor-Critic,加信任域得到 TRPO/PPO,加最大熵得到 SAC(→ TRPO 与 PPO)。贯穿这一族方法的核心敌人始终是方差。

  • 对数导数技巧把对分布的导数变成期望
  • 基线可以是任意只依赖状态的函数
  • 方差是策略梯度的核心敌人