第 6 章 策略梯度与演员-评论家¶
值函数方法先学"每个动作值多少",再从价值里读出动作;连续动作下这个读出步骤没有闭式解。另一条路把策略本身参数化,直接对"期望回报"求梯度——不需要枚举动作,也不需要环境可微。策略梯度是这条路的地基,演员-评论家与 PPO 是它在工程上的落地形态。
1. 目标函数与策略梯度定理¶
参数化策略 \(\pi_\theta(a\mid s)\) 定义一个目标:
其中 \(\tau=(s_0,a_0,r_0,\dots)\) 是一条轨迹,\(p_\theta(\tau)=\rho_0(s_0)\prod_t\pi_\theta(a_t\mid s_t)P(s_{t+1}\mid s_t,a_t)\) 是它的概率。对 \(\theta\) 求导时,只有策略项含 \(\theta\),转移与初始分布都消掉了:
这条式子就是策略梯度定理。它的实用价值有两条:梯度只用到采样到的动作与回报,不需要知道转移概率;也不需要环境对动作可微,所以物理仿真、真机这类黑箱都能用。
工程上再进一步:\(G_t\) 只累加 \(t\) 之后的回报,而不是整条轨迹的总回报。期望不变,方差显著下降——这就是"因果性"带来的收益,因为 \(t\) 之前发生的事与该步动作的贡献无关。
2. 方差缩减与优势¶
策略梯度的方差大,源头是回报本身的随机性。减方差的第一步是减基线:把 \(G_t\) 换成 \(G_t-b(s_t)\),其中 \(b\) 不依赖动作。由于
减去它不改变期望,却能把回报的公共部分抵消。基线取状态价值 \(V(s)\) 时,剩下的就是优势 \(A=Q-V\)。
第二步是广义优势估计(generalized advantage estimation, GAE)。它用 TD 残差 \(\delta_t=r_t+\gamma V_\phi(s_{t+1})-V_\phi(s_t)\) 做指数加权:
\(\lambda=0\) 时退化为单步 TD 误差(低方差、高偏差),\(\lambda=1\) 时退化为蒙特卡洛回报(高方差、无偏)。\(\lambda\) 是这两端之间的折中旋钮,机器人控制常用 0.95 附近。
坑:截断回合的 GAE 自举
回合因时间上限被截断时,\(\delta_t\) 的最后一步仍应包含 \(\gamma V_\phi(s_{T})\);只有真终止才把该项置零。把两者混为一谈,会在回合末尾引入系统性偏差。
3. 演员-评论家¶
策略梯度只需要一个可用的 \(G_t\) 或优势估计,价值函数正好提供它。把两者放进同一个循环:演员 \(\pi_\theta\) 给动作,评论家 \(V_\phi\) 估价值,用 TD 误差或 GAE 当优势,演员按策略梯度更新、评论家按回归误差更新。这就是演员-评论家(actor-critic)。
flowchart LR
env["环境"] -->|"s_t"| actor["演员 π_θ"]
actor -->|"a_t"| env
env -->|"r_t, s_{t+1}"| critic["评论家 V_φ"]
actor -->|"log π(a_t|s_t)"| pg["策略损失<br/>-Â_t log π"]
critic -->|"δ_t"| gae["GAE 优势"]
gae --> pg
critic --> vl["价值损失<br/>(V_φ(s_t) - 回报)²"]
pg --> upd["更新 θ"]
vl --> updv["更新 φ"]
两个网络的输入与尺度不同,机器人任务通常分开建:演员吃观测输出动作均值,评论家吃观测输出标量。共享主干能省参数、让表征共享,但两条损失的量级不同,容易一边压倒另一边;分开建更省心,代价是显存与计算翻倍。
评论家只承担"给演员一个低方差的指导信号",它的精度不必完美。这也解释了为什么演员-评论家允许评论家有偏:偏差由演员的持续采样慢慢纠正,方差却是每步都要承受的。
4. PPO 的裁剪目标¶
策略梯度的步长很难定:步长小则慢,步长大则策略跳变、采样分布随之剧变,训练崩掉。信赖域方法(TRPO)用 KL 散度约束新旧策略的距离,但要在二阶信息上求解约束优化,实现复杂。
近端策略优化(proximal policy optimization, PPO)用一阶目标近似这个约束。记新旧策略的概率比为
裁剪后的替代目标是
裁剪的作用是:优势为正时,比值涨过 \(1+\epsilon\) 就不再给额外收益;优势为负时,比值跌破 \(1-\epsilon\) 也不再给额外惩罚。策略因此不会在单批数据上走太远。
同一批数据可以被复用多轮(num_learning_epochs),这是 PPO 样本效率高于朴素策略梯度的主要原因;但复用越多,\(r_t\) 偏离 1 越远,裁剪开始生效,收益递减。实践中的两个配套手段是价值损失裁剪(把价值更新也限制在旧值附近)与熵奖励(保持探索、防止策略过早确定性化)。
import torch
def ppo_loss(obs, act, logp_old, adv, v_old, ret, policy, value, clip=0.2):
dist = policy(obs)
logp = dist.log_prob(act).sum(-1) # 多维动作取各维之和
ratio = (logp - logp_old).exp() # π_θ / π_old
pg = -torch.min(ratio * adv,
ratio.clamp(1 - clip, 1 + clip) * adv).mean()
v = value(obs).squeeze(-1)
v_clip = v_old + (v - v_old).clamp(-clip, clip) # 价值也裁到旧值附近
vl = torch.max((v - ret) ** 2, (v_clip - ret) ** 2).mean()
entropy = dist.entropy().sum(-1).mean()
return pg + 0.5 * vl - 0.01 * entropy # 熵项鼓励探索
裁剪是"软约束":它不保证 KL 不超限,只让超限后没有梯度收益。要硬约束,可在每轮更新后检查近似 KL,超过阈值就提前结束该批的复用。
5. 连续动作的高斯策略¶
连续控制的标准策略是各维独立的高斯:
对数概率为
标准差有两种参数化:作为与状态无关的可学习向量(每个动作维一个 log_std),或由网络随状态输出。前者参数少、训练稳,是多数实现的默认;后者能表达"某些状态下更确定",但更容易塌缩。标准差塌缩到很小会让探索消失,通常用下限或熵奖励约束。
动作常被限制在 \([-1,1]\)。做法是让网络输出无界的 \(u\),再取 \(a=\tanh(u)\);此时概率密度要乘上变换的雅可比:
漏掉这一项,梯度会系统性偏向边界附近的动作。部署时还要按关节限位再裁剪一次,且训练阶段就应模拟同样的裁剪。
6. 并行采样与工程要点¶
PPO 是同策略方法,样本采完即弃,因此吞吐靠并行环境堆出来:\(N\) 个环境各走 \(T\) 步,一批就是 \(N\times T\) 个转移。这与仿真侧的向量化环境直接对接,换算关系与预算见 isaac-note 第 4 章「物理管线与向量化仿真」。
配置项与 isaac-note 第 5 章「RL 训练流水线」的 RSL-RL 字段一一对应:
| 概念 | RSL-RL 字段 | 作用 |
|---|---|---|
| 每环境采样步数 | num_steps_per_env |
一批的总步数 = 环境数 × 该值 |
| 复用轮数 | num_learning_epochs |
同一批数据过几遍 |
| 小批量切分 | num_mini_batches |
每轮的梯度步数 |
| 裁剪系数 | clip_param |
即 \(\epsilon\),常取 0.1–0.2 |
| 熵系数 | ent_coef |
控制探索强度 |
| 折扣与 GAE | gamma / lam |
视野与偏差-方差折中 |
| 学习率 | learning_rate |
可固定,也可按目标 KL 自适应 |
工程上还有四项固定动作:按批归一化优势(去掉尺度影响)、对观测做运行均值方差标准化、对梯度做范数裁剪、学习率随训练进度衰减。这四项不改算法,但决定了同一套超参能否在不同任务上复用。
判据:先对齐评估口径,再调超参
调 PPO 之前先固定随机种子、评估环境数量与成功判据。评估口径一变,学习曲线之间的比较就失去意义(口径见第 10 章「训练工程、评测与迁移」)。
7. 要点¶
- 策略梯度定理把期望回报的梯度写成 \(\nabla\log\pi\cdot G\) 的期望;不需要转移已知,也不需要环境可微。
- 减基线不改变期望,只降方差;优势 \(A=Q-V\) 与 GAE 的 \(\lambda\) 是偏差-方差的两个旋钮。
- 演员给动作、评论家给价值,TD 误差或 GAE 当优势;评论家可以有偏,因为它只是指导信号。
- PPO 用概率比裁剪近似信赖域,一阶实现;同批数据多轮复用是它样本效率的主要来源。
- 连续动作用高斯策略,\(\tanh\) 变换必须带对数概率修正;标准差塌缩会让探索消失。
- 吞吐靠并行环境,超参对齐 RSL-RL 字段;优势归一化、观测标准化、梯度裁剪、学习率衰减是四项固定动作。
- 调参前先固定评估口径,否则曲线之间不可比。
参考文献与延伸阅读¶
- Williams, R. J. Simple Statistical Gradient-Following Algorithms for Connectionist Reinforcement Learning. Machine Learning, 1992. DOI
- Schulman, J., Moritz, P., Levine, S., Jordan, M., & Abbeel, P. High-Dimensional Continuous Control Using Generalized Advantage Estimation. ICLR, 2016. arXiv
- Schulman, J., Wolski, F., Dhariwal, P., Radford, A., & Klimov, O. Proximal Policy Optimization Algorithms. arXiv:1707.06347, 2017. arXiv
- Schulman, J., Levine, S., Abbeel, P., Jordan, M., & Moritz, P. Trust Region Policy Optimization. ICML, 2015. arXiv
- Mnih, V., Badia, A. P., Mirza, M., et al. Asynchronous Methods for Deep Reinforcement Learning. ICML, 2016. arXiv