强化学习理论 03:从策略梯度到 Actor–Critic、GAE 与 PPO

价值型控制想比较每个动作的 QQ。但四足机器人一次输出十几个连续量,不能把所有组合都枚举一遍。另一个思路是直接学习可微策略:让带来较好结果的动作更容易出现,让较差的动作更少出现。

这一章依次解释四个桥梁:回报如何变成梯度,critic 为何能帮 actor,GAE 怎样组合证据,PPO 为什么限制局部更新的获益。 代码中的张量细节留给站内已有的 PPO 训练闭环长文。

一、策略梯度:不对环境求导,也能调整动作分布

对有限回合,取目标

Jγ(θ)=Eτ∼πθ[∑t=0T−1γtrt].J_\gamma(\theta)=\mathbb E_{\tau\sim\pi_\theta} \left[\sum_{t=0}^{T-1}\gamma^t r_t\right].

轨迹概率由初始状态、每步策略概率与环境转移概率相乘得到。假设环境和初始分布不依赖 θ\theta,利用 ∇p=p∇log⁡p\nabla p=p\nabla\log p,轨迹对数概率的参数梯度就只剩策略各步的项。再利用“当前动作不改变已经发生的奖励”,得到回报到达形式:

∇θJγ=E[∑t=0T−1γt∇θlog⁡πθ(at∣st)Gt],Gt=∑k=0T−t−1γkrt+k.\nabla_\theta J_\gamma= \mathbb E\left[\sum_{t=0}^{T-1}\gamma^t \nabla_\theta\log\pi_\theta(a_t\mid s_t)G_t\right], \qquad G_t=\sum_{k=0}^{T-t-1}\gamma^k r_{t+k}.

这里保留了 γt\gamma^t:它来自所定义的折扣目标。当 γ=1\gamma=1 且回合有限时可以省略;其它资料也可能把权重放进折扣状态访问分布。实际 PPO 常对 rollout 样本均匀优化 surrogate,不能把这些不同的采样权重不加说明地当成同一个精确等式。

直觉上,∇log⁡π\nabla\log\pi 给出“怎样增加本次动作的对数概率”的方向,回报决定朝这个方向推多大。它不要求直接对接触动力学、碰撞或仿真器求导;但仍需采样环境来得到奖励证据。有限样本的噪声也没有因此消失。

二、baseline 与 advantage:好是相对于什么

如果每条轨迹的回报都很大,直接用 GtG_t 会让梯度波动大。减去只依赖当前状态、与当前动作无关的 baseline b(st)b(s_t),不会改变策略梯度的期望:

Ea∼π[∇θlog⁡πθ(a∣s)b(s)]=b(s)∇θ∑aπθ(a∣s)=0.\mathbb E_{a\sim\pi}[\nabla_\theta\log\pi_\theta(a\mid s)b(s)] =b(s)\nabla_\theta\sum_a\pi_\theta(a\mid s)=0.

连续动作时把求和换成积分,在相应正则条件下结论相同。取 b(s)=Vπ(s)b(s)=V^\pi(s),可以把权重理解成“这个动作比当前状态的平均选择好多少”。01 中的理想优势为

Aπ(s,a)=Qπ(s,a)−Vπ(s).A^\pi(s,a)=Q^\pi(s,a)-V^\pi(s).

在两步任务里,forward 的即时奖励为 −1-1,但优势为 +0.8+0.8,因此应增加它的选择倾向。baseline 不改变期望的证明,并不表示任何近似 critic、任何 bootstrapped advantage 都无偏。

三、Actor–Critic:一个负责选择,一个负责估值

actor 用 θ\theta 表示 πθ\pi_\theta,critic 用 ϕ\phi 表示 VϕV_\phi 或 QϕQ_\phi。一种常见 on-policy 实现是:

  1. 用旧策略与环境交互,保存动作、奖励、旧 log-prob 和旧 value;
  2. 从这一批轨迹构造 A^t\hat A_t 与 critic 的训练目标 R^t\hat R_t;
  3. actor 根据优势更新策略,critic 根据目标拟合价值;
  4. 再采新数据,重复闭环。

critic 常见损失为 LV=E[(Vϕ(st)−R^t)2]L_V=\mathbb E[(V_\phi(s_t)-\hat R_t)^2]。actor 的简单梯度代理损失可写成 −log⁡πθ(at∣st)A^t-\log\pi_\theta(a_t\mid s_t)\hat A_t,优化器做最小化。这里表示常见的均匀样本代理;若要严格对应第 1 节的折扣目标与逐回合求和,应保留 γt\gamma^t 权重或采用相应的折扣状态访问采样。actor 更新时把估计优势作为固定权重,停止其梯度(detach);critic 的监督目标也要按算法固定。 否则不再是前述 baseline 推导描述的更新。

在部分可观测机器人任务里,actor 可能接收 oto_t,critic 在训练时接收额外状态信息。不要把同一字母 ss 在代码里自动等同于完全相同的输入张量,见输入输出维度笔记。

四、GAE:把多步 TD 残差组合成优势估计

先固定本轮采样时的旧价值估计 VoldV_{\rm old}:

δt=rt+γbtVold(st+1final)−Vold(st),\delta_t=r_t+\gamma b_tV_{\rm old}(s_{t+1}^{\rm final})-V_{\rm old}(s_t),

A^t=δt+γλctA^t+1.\hat A_t=\delta_t+\gamma\lambda c_t\hat A_{t+1}.

这就是有限片段常用的反向递推。在连续无边界的片段上展开:A^t=δt+γλδt+1+(γλ)2δt+2+⋯\hat A_t=\delta_t+\gamma\lambda\delta_{t+1}+(\gamma\lambda)^2\delta_{t+2}+\cdots。越远的 TD 证据,权重衰减越多。

这里有两个不同的 mask:

转移类型 btb_t:能否 bootstrap ctc_t:能否继续优势递推
普通步 1 1
真正终止 0 0
外部时间截断并 reset 1 0

btb_t 可以定义为 1−1[terminated]1-\mathbf1[\mathrm{terminated}];ctc_t 为 1−1[terminated∨truncated]1-\mathbf1[\mathrm{terminated}\lor\mathrm{truncated}]。后者禁止把 reset 后的新回合串进前一回合。

若只是 buffer 收满,有限片段递推从 A^T=0\hat A_T=0 开始,但最后一步的 δT−1\delta_{T-1} 仍要使用 Vold(sT)V_{\rm old}(s_T) bootstrap。把片段外的优势续项置零,不等于把末状态价值置零。 时间上限属于任务本身时,其语义又是真正终止,详见 02。

两步手算:每个数字从哪里来

仍取 s0→−1s1→4terminals_0\xrightarrow{-1}s_1\xrightarrow{4}\mathrm{terminal},γ=0.9\gamma=0.9。本轮旧估计为 Vold(s0)=1.5,Vold(s1)=3V_{\rm old}(s_0)=1.5,V_{\rm old}(s_1)=3,终止价值为 0:

δ0=−1+0.9×3−1.5=0.2,δ1=4−3=1.\delta_0=-1+0.9\times3-1.5=0.2,\qquad\delta_1=4-3=1.

取 λ=0.8\lambda=0.8,从末尾向前算:

A^1=1,A^0=0.2+0.9×0.8×1=0.92.\hat A_1=1,\qquad\hat A_0=0.2+0.9\times0.8\times1=0.92.

对应的一种常见 critic 目标是 R^t=A^t+Vold(st)\hat R_t=\hat A_t+V_{\rm old}(s_t),因此 R^0=2.42,R^1=4\hat R_0=2.42,\hat R_1=4。这里的 A^\hat A 由不完美 critic 和单条样本估计,与 01 中用真实模型算出的 AπA^\pi 不是同一组数。

  • λ=0\lambda=0:A^0=0.2\hat A_0=0.2,目标为 1.7,即一步 TD;
  • λ=1\lambda=1:A^0=1.1\hat A_0=1.1,目标为 2.6,即这条完整终止轨迹的 MC 回报。

后一个结果可直接看到“望远镜消去”:

δ0+γδ1=(r0+γV1−V0)+γ(r1−V1)=r0+γr1−V0.\delta_0+\gamma\delta_1 =(r_0+\gamma V_1-V_0)+\gamma(r_1-V_1) =r_0+\gamma r_1-V_0.

但如果轨迹只是被截断,λ=1\lambda=1 仍保留末端 γT−tVold(sT)\gamma^{T-t}V_{\rm old}(s_T),不能一概称为纯 MC。λ\lambda 小通常更依赖 critic,λ\lambda 大通常使用更长真实奖励序列;这是偏差与方差的权衡,不是任意任务下严格单调的保证。

五、PPO:保留学习方向,限制继续推大的激励

用旧策略采集一批数据后,想做几轮更新来提高利用率。但策略变了,同一个动作的概率也变了。定义同一状态、同一采样动作的新旧概率(连续时为密度)之比:

ρt(θ)=πθ(at∣st)πold(at∣st)=exp⁡(log⁡πθ−log⁡πold).\rho_t(\theta)=\frac{\pi_\theta(a_t\mid s_t)}{\pi_{\rm old}(a_t\mid s_t)} =\exp(\log\pi_\theta-\log\pi_{\rm old}).

PPO-Clip 最大化

Lclip(θ)=Et[min⁡(ρtA^t,clip⁡(ρt,1−ϵ,1+ϵ)A^t)].L^{\rm clip}(\theta)=\mathbb E_t\left[ \min\left(\rho_t\hat A_t, \operatorname{clip}(\rho_t,1-\epsilon,1+\epsilon)\hat A_t\right)\right].

代码中常最小化其负值。取 ϵ=0.2\epsilon=0.2,必须分优势正负两种方向看:

优势 A^\hat A ratio ρ\rho 未裁剪项 裁剪项 取 min 后
+2+2 1.31.3 2.62.6 2.42.4 2.42.4:好动作概率增太多后不再增加这项收益
−2-2 0.70.7 −1.4-1.4 −1.6-1.6 −1.6-1.6:坏动作概率降太多后不再增加这项收益
+2+2 0.70.7 1.41.4 1.61.6 1.41.4:朝错误方向仍受惩罚
−2-2 1.31.3 −2.6-2.6 −2.4-2.4 −2.6-2.6:朝错误方向仍受惩罚

不是两个方向越界后都变成平台。 也不是强迫所有 ratio 落在 [0.8,1.2][0.8,1.2];共享网络参数仍会同时改变多个状态/动作。PPO clipping 不是动作限幅,不是 KL 硬约束,也不保证每次真实性能都提高。

通常还联合 value loss 与 entropy bonus;例如最大化策略代理目标和熵,对应最小化 −Lclip+cVLV−cHH-L^{\rm clip}+c_VL_V-c_H\mathcal H。各库系数、归约和日志符号不同,先核对实现。熵是分布分散程度的信号,不能单独证明机器人执行了有用探索。

PPO 通常称为 on-policy:用最近策略的数据短期做多个 epoch,之后重新采样。ratio 只比较同一采样状态下的动作分布,不自动修正任意陈旧数据的状态访问分布,因此不能据此无限重放旧经验。

六、连续动作:Gaussian 的 std 与物理 action scale

一种常见策略是对角高斯:

at=μθ(ot)+σθ(ot)⊙εt,εt∼N(0,I).a_t=\mu_\theta(o_t)+\sigma_\theta(o_t)\odot\varepsilon_t, \qquad\varepsilon_t\sim\mathcal N(0,I).

σ>0\sigma>0 是标准差,方差是 σ2\sigma^2;若训练的是 log-std,则用 σ=exp⁡(log_std)\sigma=\exp(\mathrm{log\_std})。均值与标准差可以来自网络,也可以有独立参数,具体以实现为准。

对 DD 维独立条件高斯,联合 log-prob 是各维之和:

log⁡π(a∣o)=∑i=1D[−(ai−μi)22σi2−log⁡σi−12log⁡(2π)].\log\pi(a\mid o)=\sum_{i=1}^D \left[-\frac{(a_i-\mu_i)^2}{2\sigma_i^2}-\log\sigma_i-\frac12\log(2\pi)\right].

PPO 通常比较整组动作的联合密度,而不是给每个关节分别计算一个独立环境决策的 ratio。连续密度也不是“恰好发生这个动作的百分比”。

机器人接口还可能有

qdes=qnominal+kaa.q_{\rm des}=q_{\rm nominal}+k_a a.

这里 kak_a 是动作到物理关节角的尺度,与策略 σ\sigma 不同。若 ka=0.5 radk_a=0.5\ \mathrm{rad}、归一化 σ=0.2\sigma=0.2,在没有其它变换的该维接口上,关节目标噪声标准差是 0.1 rad0.1\ \mathrm{rad}。

更新时必须保存采样时用于 log-prob 的动作,用新旧策略评价同一个变量。固定可逆仿射变换的 Jacobian 在 ratio 中抵消;经过 tanh 的分布要处理变量变换;硬 clip 不可逆,不能随意拿 clip 后的值当作原始 Gaussian 样本重算。更详细的 std、entropy、动作饱和与曲线判读见训练曲线诊断。

七、与训练代码的对应

rollout storage 保存采样时的动作、old log-prob、old value 与边界信息;GAE 从后向前递推,并区分 bootstrap 与跨回合传播。actor 使用固定的优势估计,critic 使用按算法构造的目标。KL、clip fraction、固定评估回报与物理约束指标共同解释更新后的效果。这些符号在已有 PPO 代码与交互实验中都有对应的实现位置。

参考与继续阅读

知识共享许可协议