跳转到内容

PPO 与 Actor-Critic 方法

在完成任务定义后,训练算法需要将交互数据转化为网络参数的更新。本篇介绍四足运动训练中常用的 PPO-Clip 与 Actor-Critic 结构,重点说明各个计算量的意义及其联系。示例继续采用十二关节的位置偏移动作,不绑定 legged_gym 或 mjlab 的具体实现。

前置内容为强化学习的交互与训练机制奖励函数与回合机制。完整的策略梯度推导可在理论进阶中选读。

Actor 根据策略输入 oto_t 定义动作分布 πθ(atot)\pi_\theta(a_t\mid o_t);Critic 根据输入 xtx_t 估计当前策略下的未来折扣回报 Vϕ(xt)V_\phi(x_t)θ\thetaϕ\phi 分别表示两者参数。

这里单独使用 xtx_t,是因为价值网络的输入可以与策略不同。例如 Actor 使用本体观测和历史,Critic 还可以接收仿真线速度等训练期信息。若两者输入相同,则可令 xt=otx_t=o_t。对于部分可观测任务,价值预测的质量仍取决于输入包含的信息。

模块学习对象训练中的作用常规部署中的作用
Actor条件动作分布产生探索动作,优化运动行为根据输入产生动作
Critic未来折扣回报构造优势与价值学习目标通常不参与控制推理

Critic 不提供“正确关节角”标签,而是提供相对当前策略预期的评价。若 Actor 依赖估计模块、历史缓存或归一化统计,部署时也必须保留这些依赖,不能仅按网络名称决定导出范围。

十二维动作可以使用对角高斯分布建模:

atN ⁣(μθ(ot),diag(σ2))a_t\sim\mathcal N\!\left(\mu_\theta(o_t),\operatorname{diag}(\sigma^2)\right)

网络给出均值 μθ\mu_\theta,标准差 σ\sigma 可以是可学习参数,也可以由网络产生。训练时从分布采样,评估时常采用均值动作;采用哪种方式应写入评估协议。

需要区分用于概率计算的采样动作与送入物理环境的处理后动作。若先采样 ata_t,再由环境执行裁剪、缩放和 PD 控制,则 PPO 应保存并对同一个采样动作计算新旧对数概率。不能用未经变换的高斯密度直接评价裁剪后的值,冒充原采样动作的概率。使用可逆动作变换时,还需按该分布实现处理变换后的密度。

探索标准差属于策略分布,动作缩放属于物理接口。两者都会影响实际动作变化,但修改其中一个不能替代对另一个的检查。

3. 时序差分误差与广义优势估计

Section titled “3. 时序差分误差与广义优势估计”

优势用于衡量某次动作的结果相对价值预期的改善程度。广义优势估计(GAE)通过组合多个时间步的时序差分误差构造更新信号,参数 λ\lambda 调节对较远误差的权重。

为明确边界,记 btb_t 为价值自举掩码,mtm_t 为优势递推掩码:

δt=rt+γbtVϕold(xt+1end)Vϕold(xt)\delta_t=r_t+\gamma b_t V_{\phi_{old}}(x_{t+1}^{end})-V_{\phi_{old}}(x_t) A^t=δt+γλmtA^t+1\hat A_t=\delta_t+\gamma\lambda m_t\hat A_{t+1}

xt+1endx_{t+1}^{end} 表示本次转移到达的输入,发生自动重置时应与新回合初始输入区分。上式描述一种显式掩码处理方式,实际框架也可能先修正超时奖励再执行递推。

转移位置btb_tmtm_t处理含义
同一回合内,后续样本已收集11续接价值与后续优势
任务终止00不续接终止后的价值或优势
持续任务的外部时限截断并重置10使用回合末价值,但不跨入新回合递推
采样段末端,回合尚未结束10使用末端价值,结束本段有限长度递推

若有限时长本身属于任务终止,应按任务语义处理,不能统一归为外部截断。

例如在非终止转移中,取 rt=0.2r_t=0.2γ=0.99\gamma=0.99、当前价值 2.0、下一价值 2.1,则 δt=0.279\delta_t=0.279。若同一步是任务终止,自举项被去除,误差为 1.8-1.8。这说明回合边界的错误会直接改变学习信号。

较大的 λ\lambda 保留更多远期误差信息,但估计可能更易受轨迹波动影响;较小的 λ\lambda 更依赖局部价值估计。它与折扣因子、采样长度和价值预测质量共同作用。

对于采样时保存的同一个动作,定义新旧策略的概率密度比:

ρt(θ)=exp ⁣(logπθ(atot)logπθold(atot))\rho_t(\theta)=\exp\!\left(\log\pi_\theta(a_t\mid o_t)-\log\pi_{\theta_{old}}(a_t\mid o_t)\right)

PPO-Clip 最大化以下经验目标:

Lclip(θ)=Et[min(ρtA^t,clip(ρt,1ϵ,1+ϵ)A^t)]L^{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]

旧策略对数概率和优势在这一轮更新中作为固定数据。裁剪限制目标中继续推动概率比变化的收益,并非直接约束网络参数或动作。该目标与交替采样、批量更新的形式来自 PPO 原论文

ϵ=0.2\epsilon=0.2 为手算示例:当 A^t=1\hat A_t=1ρt=1.4\rho_t=1.4 时,该样本贡献为 1.2;当 A^t=1\hat A_t=-1ρt=0.6\rho_t=0.6 时,贡献为 min(0.6,0.8)=0.8\min(-0.6,-0.8)=-0.8。正负优势都需要考虑,不能只把概率比截到区间后乘优势来替代完整目标。

裁剪不保证所有样本的概率比都位于区间内,也不保证每次更新后实际任务表现单调提高。实现中可以进一步监测 KL 散度,并采用提前停止或学习率调整,具体机制见 PPO 算法说明

一种价值回归目标是 R^t=A^t+Vϕold(xt)\hat R_t=\hat A_t+V_{\phi_{old}}(x_t),并最小化:

LV=Et[(Vϕ(xt)R^t)2]L_V=\mathbb E_t\left[(V_\phi(x_t)-\hat R_t)^2\right]

这里的 A^t\hat A_t 指构造回报用的原始优势。若 Actor 更新时对优势进行标准化,不能把标准化后的优势直接代入该回报目标。价值裁剪等变体需按实现单独说明。

以梯度下降的符号约定,可以写出示意总损失:

L=Lclip+cVLVcHH(πθ)L=-L^{clip}+c_VL_V-c_H\mathcal H(\pi_\theta)

熵项鼓励保留动作分布的随机性;权重过大也可能妨碍稳定动作形成。Actor 与 Critic 可以使用独立优化器,上式只用于说明目标方向,不规定代码组织方式。

训练中应同时查看 KL、价值损失、策略标准差、奖励分项与机器人行为。低价值损失可能只是奖励尺度很小;较低熵也不等于策略已掌握全部指令。动作持续饱和时,还应检查动作接口和探索分布,而不能只调整 PPO 裁剪范围。

  1. 用本篇数值复核非终止与任务终止两种 TD 误差。
  2. 令优势分别为 1 和 -1,计算概率比为 0.6、1.0、1.4 时的裁剪目标,解释更新方向。
  3. 对一份轨迹标记终止、截断与采样段末端,分别填写两个掩码。
  4. 列出 Actor 推理所需的数据和模块,说明 Critic 的特权输入是否需要随策略部署。