Skip to content

E.2.4 轨迹概率、Baseline 与 GAE

前置知识E.2.1 概率基础E.2.2 状态价值——你需要知道条件概率、期望和方差。


前面分别学了策略概率 π(as)\pi(a\mid s) 和环境转移概率 p(ss,a)p(s'\mid s,a)。这两个概率是分散的——一个管策略怎么选动作,一个管环境怎么给下一状态。但 RL 里真正发生的是一整条轨迹:从一个状态出发,策略选动作,环境给新状态,如此往复。策略梯度的目标是"在所有可能轨迹上优化平均回报",但如果不知道一条轨迹发生的概率,就没法对它们加权求平均——所以我们需要知道这条轨迹发生的概率是多少。

一条轨迹由状态和动作交替组成:

τ=(s0,a0,s1,a1,s2).\tau=(s_0,a_0,s_1,a_1,s_2).

这条轨迹发生的概率由三类东西相乘得到:

  1. 初始状态出现的概率 p(s0)p(s_0)
  2. 每一步策略选择动作的概率 π(atst)\pi(a_t\mid s_t)
  3. 每一步环境转移的概率 p(st+1st,at)p(s_{t+1}\mid s_t,a_t)

所以:

p(τπ)=p(s0)t=0T1π(atst)p(st+1st,at).p(\tau\mid\pi)=p(s_0)\prod_{t=0}^{T-1}\pi(a_t\mid s_t)p(s_{t+1}\mid s_t,a_t).

看一个两步数字例子:

数值
初始状态概率 p(s0)p(s_0)0.60.6
第一步动作概率 π(a0s0)\pi(a_0\mid s_0)0.50.5
第一步转移概率 p(s1s0,a0)p(s_1\mid s_0,a_0)0.80.8
第二步动作概率 π(a1s1)\pi(a_1\mid s_1)0.250.25
第二步转移概率 p(s2s1,a1)p(s_2\mid s_1,a_1)0.40.4

那么这条轨迹的概率是:

0.6×0.5×0.8×0.25×0.4=0.024.0.6\times0.5\times0.8\times0.25\times0.4=0.024.

为什么轨迹概率这么重要?因为策略梯度的目标函数就是”在所有可能轨迹上求平均”:

J(θ)=Eτpθ(τ)[G(τ)]=τpθ(τ)G(τ).J(\theta)=\mathbb{E}_{\tau\sim p_\theta(\tau)}[G(\tau)]=\sum_{\tau}p_\theta(\tau)G(\tau).

每条轨迹的回报 G(τ)G(\tau) 按它在当前策略下出现的概率加权。后面推导策略梯度定理时,这个展开是出发点。


Baseline 为什么不改变期望

策略梯度用回报 GtG_t 来衡量一个动作的好坏。但回报的绝对值可能很大也可能很小——某次拿到回报 100100,另一次拿到 5-5。直接用这些数字去更新参数,梯度估计的方差会非常大,训练会很剧烈地波动。一个自然的想法是:不问”这次拿了多少分”,而是问”这次比平均水平好多少”——把回报 GtG_t 换成 Gtb(st)G_t-b(s_t)。这里的 b(st)b(s_t) 就是 baseline,通常取该状态的平均价值 V(st)V(s_t)。直觉上这样更稳定,但有一个必须回答的问题:减去一个东西之后,梯度方向还正确吗?会不会把本该加强的好动作反而削弱了?这就是下面要证明的:减去 baseline 不改变梯度的期望,只改变方差

关键是下面这个项为零:

Eaπ(s)[θlogπθ(as)b(s)]=0.\mathbb{E}_{a\sim\pi(\cdot\mid s)} \left[\nabla_\theta\log\pi_\theta(a\mid s)b(s)\right]=0.

先把与动作无关的 b(s)b(s) 提出来:

b(s)aπθ(as)θlogπθ(as).b(s)\sum_a\pi_\theta(a\mid s)\nabla_\theta\log\pi_\theta(a\mid s).

利用对数导数技巧:

θlogπθ(as)=θπθ(as)πθ(as).\nabla_\theta\log\pi_\theta(a\mid s) =\frac{\nabla_\theta\pi_\theta(a\mid s)}{\pi_\theta(a\mid s)}.

代入后:

b(s)aπθ(as)θπθ(as)πθ(as)=b(s)aθπθ(as).b(s)\sum_a\pi_\theta(a\mid s) \frac{\nabla_\theta\pi_\theta(a\mid s)}{\pi_\theta(a\mid s)} =b(s)\sum_a\nabla_\theta\pi_\theta(a\mid s).

把梯度移到求和外面:

b(s)θaπθ(as).b(s)\nabla_\theta\sum_a\pi_\theta(a\mid s).

而动作概率之和永远等于 11

aπθ(as)=1.\sum_a\pi_\theta(a\mid s)=1.

所以:

b(s)θ1=0.b(s)\nabla_\theta 1=0.

这说明减去 baseline 不改变梯度的期望,只改变方差。于是策略梯度可以写成:

θJ(θ)=Eπ[θlogπθ(atst)(Gtb(st))].\nabla_\theta J(\theta) =\mathbb{E}_\pi\left[ \nabla_\theta\log\pi_\theta(a_t\mid s_t) (G_t-b(s_t)) \right].

b(st)=Vπ(st)b(s_t)=V^\pi(s_t) 时,括号里的项就是优势估计:

Aπ(st,at)=GtVπ(st).A^\pi(s_t,a_t)=G_t-V^\pi(s_t).


从 TD error 到 GAE

有了 baseline 的理论保证之后,一个实际问题是:Gtb(st)G_t - b(s_t) 里的 GtG_t 到底怎么算?蒙特卡洛用整条轨迹的回报来估计——偏差小但方差大(一条轨迹可能跑很长,随机性累积很多步)。时序差分(TD)只用一步的"奖励 + 下一状态估计"来更新——方差小但偏差大(只看一步,信息不够)。GAE(Generalized Advantage Estimation)的引入就是为了在这两个极端之间找一个折中:既不过度依赖单步(偏差大),也不过度依赖整条轨迹(方差大)。

先看 TD error——它是 GAE 的基本积木。TD error 衡量的是"实际看到的一步"和"当前估计"之间的差距:

δt=rt+γV(st+1)V(st).\delta_t=r_t+\gamma V(s_{t+1})-V(s_t).

先用数字看它。假设:

rt=2,γ=0.9,V(st+1)=5,V(st)=6.r_t=2,\qquad \gamma=0.9,\qquad V(s_{t+1})=5,\qquad V(s_t)=6.

那么:

δt=2+0.9×56=0.5.\delta_t=2+0.9\times5-6=0.5.

这表示:这一步实际看到的“奖励 + 下一状态价值”比当前估计高 0.50.5,所以当前状态价值可能低估了。

一步 TD error 方差低,但可能偏差大;完整蒙特卡洛回报偏差低,但方差大。GAE 用一串 TD error 做加权平均:

A^tGAE(γ,λ)=k=0Tt1(γλ)kδt+k.\hat{A}_t^{GAE(\gamma,\lambda)} =\sum_{k=0}^{T-t-1}(\gamma\lambda)^k\delta_{t+k}.

如果 λ=0\lambda=0,只保留第一项:

A^t=δt.\hat{A}_t=\delta_t.

如果 λ\lambda 接近 11,后面很多步的 TD error 都会参与,结果更接近蒙特卡洛优势。于是 λ\lambda 成了一个“偏差-方差旋钮”:

λ\lambda更像什么特点
00一步 TD方差低,偏差较高
11蒙特卡洛偏差低,方差较高
0.950.95折中PPO 中常用

PPO 裁剪目标里的概率思想

到目前为止,我们已经知道:轨迹概率描述"一条轨迹有多可能发生",baseline 降低方差但不改变期望,GAE 在 TD 和 MC 之间折中。这些工具最终都汇聚到了 PPO 这个算法里。PPO 要解决的核心问题是:如何利用旧策略采集的数据来更新新策略,同时确保新策略不会一步偏离太远? 前面的重要性采样提供了"复用旧数据"的方法,但概率比可能变得很大导致方差爆炸;GAE 提供了稳定的优势估计。PPO 的裁剪机制在此基础上再加一层保险:直接把概率比限制在一个安全范围内。

PPO 的核心目标是:

LCLIP(θ)=E[min(rt(θ)A^t,clip(rt(θ),1ϵ,1+ϵ)A^t)],L^{CLIP}(\theta) = \mathbb{E}\left[ \min\left( r_t(\theta)\hat{A}_t,\, \mathrm{clip}(r_t(\theta),1-\epsilon,1+\epsilon)\hat{A}_t \right) \right],

其中:

rt(θ)=πθ(atst)πθold(atst).r_t(\theta)= \frac{\pi_\theta(a_t\mid s_t)} {\pi_{\theta_{old}}(a_t\mid s_t)}.

这个概率比就是前面讲的重要性采样权重。旧策略收集了样本,现在要评估新策略,所以用”新策略概率 / 旧策略概率”来修正。

看一个数字例子。旧策略下某动作概率是 0.20.2,新策略下变成 0.30.3

rt=0.30.2=1.5.r_t=\frac{0.3}{0.2}=1.5.

如果优势 A^t=4\hat{A}_t=4,未裁剪项是:

rtA^t=1.5×4=6.r_t\hat{A}_t=1.5\times4=6.

ϵ=0.2\epsilon=0.2,允许范围是 [0.8,1.2][0.8,1.2],裁剪后:

clip(1.5,0.8,1.2)×4=4.8.\mathrm{clip}(1.5,0.8,1.2)\times4=4.8.

取两者较小值:

min(6,4.8)=4.8.\min(6,4.8)=4.8.

所以 PPO 的公式虽然看起来复杂,其实结合了三层意思:

  1. 用概率比做异策略修正。
  2. 用优势函数决定动作该加强还是削弱。
  3. 用裁剪限制策略变化幅度。

小结

本篇把分散的概率工具组装成了策略梯度和 PPO 所需的完整概率框架:

工具解决什么问题数学核心
轨迹概率一整条轨迹发生的概率是多少策略概率与环境转移概率的连乘
Baseline梯度估计方差太大,训练不稳定减 baseline 不改变期望,只降低方差
GAEMC 方差大、TD 偏差大,需要折中多步 TD error 的指数衰减加权和
PPO 裁剪重要性采样权重过大导致更新不稳定用裁剪限制概率比在安全范围内

轨迹概率让我们能对"所有可能的未来"加权求平均;baseline 解决了"两个策略平均回报相同但训练稳定性可能不同"的方差问题;GAE 在偏差和方差之间找到一个可调节的平衡点;PPO 把重要性采样、优势估计和裁剪组合成一个稳定的目标函数。这些工具层层递进,最终汇聚成现代 RL 最常用的策略优化算法。

下一篇E.2.5 贝尔曼期望方程与动作价值 —— 把价值函数展开成贝尔曼方程,引入动作价值和优势函数。

Built for reusable bilingual course delivery