价值型控制想比较每个动作的 Q。但四足机器人一次输出十几个连续量,不能把所有组合都枚举一遍。另一个思路是直接学习可微策略:让带来较好结果的动作更容易出现,让较差的动作更少出现。
这一章依次解释四个桥梁:回报如何变成梯度,critic 为何能帮 actor,GAE 怎样组合证据,PPO 为什么限制局部更新的获益。 代码中的张量细节留给站内已有的 PPO 训练闭环长文。
一、策略梯度:不对环境求导,也能调整动作分布
对有限回合,取目标
Jγ(θ)=Eτ∼πθ[t=0∑T−1γtrt].
轨迹概率由初始状态、每步策略概率与环境转移概率相乘得到。假设环境和初始分布不依赖 θ,利用 ∇p=p∇logp,轨迹对数概率的参数梯度就只剩策略各步的项。再利用“当前动作不改变已经发生的奖励”,得到回报到达形式:
∇θJγ=E[t=0∑T−1γt∇θlogπθ(at∣st)Gt],Gt=k=0∑T−t−1γkrt+k.
这里保留了 γt:它来自所定义的折扣目标。当 γ=1 且回合有限时可以省略;其它资料也可能把权重放进折扣状态访问分布。实际 PPO 常对 rollout 样本均匀优化 surrogate,不能把这些不同的采样权重不加说明地当成同一个精确等式。
直觉上,∇logπ 给出“怎样增加本次动作的对数概率”的方向,回报决定朝这个方向推多大。它不要求直接对接触动力学、碰撞或仿真器求导;但仍需采样环境来得到奖励证据。有限样本的噪声也没有因此消失。
二、baseline 与 advantage:好是相对于什么
如果每条轨迹的回报都很大,直接用 Gt 会让梯度波动大。减去只依赖当前状态、与当前动作无关的 baseline b(st),不会改变策略梯度的期望:
Ea∼π[∇θlogπθ(a∣s)b(s)]=b(s)∇θa∑πθ(a∣s)=0.
连续动作时把求和换成积分,在相应正则条件下结论相同。取 b(s)=Vπ(s),可以把权重理解成“这个动作比当前状态的平均选择好多少”。01 中的理想优势为
Aπ(s,a)=Qπ(s,a)−Vπ(s).
在两步任务里,forward 的即时奖励为 −1,但优势为 +0.8,因此应增加它的选择倾向。baseline 不改变期望的证明,并不表示任何近似 critic、任何 bootstrapped advantage 都无偏。
三、Actor–Critic:一个负责选择,一个负责估值
actor 用 θ 表示 πθ,critic 用 ϕ 表示 Vϕ 或 Qϕ。一种常见 on-policy 实现是:
- 用旧策略与环境交互,保存动作、奖励、旧 log-prob 和旧 value;
- 从这一批轨迹构造 A^t 与 critic 的训练目标 R^t;
- actor 根据优势更新策略,critic 根据目标拟合价值;
- 再采新数据,重复闭环。
critic 常见损失为 LV=E[(Vϕ(st)−R^t)2]。actor 的简单梯度代理损失可写成 −logπθ(at∣st)A^t,优化器做最小化。这里表示常见的均匀样本代理;若要严格对应第 1 节的折扣目标与逐回合求和,应保留 γt 权重或采用相应的折扣状态访问采样。actor 更新时把估计优势作为固定权重,停止其梯度(detach);critic 的监督目标也要按算法固定。 否则不再是前述 baseline 推导描述的更新。
在部分可观测机器人任务里,actor 可能接收 ot,critic 在训练时接收额外状态信息。不要把同一字母 s 在代码里自动等同于完全相同的输入张量,见输入输出维度笔记。
四、GAE:把多步 TD 残差组合成优势估计
先固定本轮采样时的旧价值估计 Vold:
δt=rt+γbtVold(st+1final)−Vold(st),
A^t=δt+γλctA^t+1.
这就是有限片段常用的反向递推。在连续无边界的片段上展开:A^t=δt+γλδt+1+(γλ)2δt+2+⋯。越远的 TD 证据,权重衰减越多。
这里有两个不同的 mask:
| 转移类型 |
bt:能否 bootstrap |
ct:能否继续优势递推 |
| 普通步 |
1 |
1 |
| 真正终止 |
0 |
0 |
| 外部时间截断并 reset |
1 |
0 |
bt 可以定义为 1−1[terminated];ct 为 1−1[terminated∨truncated]。后者禁止把 reset 后的新回合串进前一回合。
若只是 buffer 收满,有限片段递推从 A^T=0 开始,但最后一步的 δT−1 仍要使用 Vold(sT) bootstrap。把片段外的优势续项置零,不等于把末状态价值置零。 时间上限属于任务本身时,其语义又是真正终止,详见 02。
两步手算:每个数字从哪里来
仍取 s0−1s14terminal,γ=0.9。本轮旧估计为 Vold(s0)=1.5,Vold(s1)=3,终止价值为 0:
δ0=−1+0.9×3−1.5=0.2,δ1=4−3=1.
取 λ=0.8,从末尾向前算:
A^1=1,A^0=0.2+0.9×0.8×1=0.92.
对应的一种常见 critic 目标是 R^t=A^t+Vold(st),因此 R^0=2.42,R^1=4。这里的 A^ 由不完美 critic 和单条样本估计,与 01 中用真实模型算出的 Aπ 不是同一组数。
- λ=0:A^0=0.2,目标为 1.7,即一步 TD;
- λ=1:A^0=1.1,目标为 2.6,即这条完整终止轨迹的 MC 回报。
后一个结果可直接看到“望远镜消去”:
δ0+γδ1=(r0+γV1−V0)+γ(r1−V1)=r0+γr1−V0.
但如果轨迹只是被截断,λ=1 仍保留末端 γT−tVold(sT),不能一概称为纯 MC。λ 小通常更依赖 critic,λ 大通常使用更长真实奖励序列;这是偏差与方差的权衡,不是任意任务下严格单调的保证。
五、PPO:保留学习方向,限制继续推大的激励
用旧策略采集一批数据后,想做几轮更新来提高利用率。但策略变了,同一个动作的概率也变了。定义同一状态、同一采样动作的新旧概率(连续时为密度)之比:
ρt(θ)=πold(at∣st)πθ(at∣st)=exp(logπθ−logπold).
PPO-Clip 最大化
Lclip(θ)=Et[min(ρtA^t,clip(ρt,1−ϵ,1+ϵ)A^t)].
代码中常最小化其负值。取 ϵ=0.2,必须分优势正负两种方向看:
| 优势 A^ |
ratio ρ |
未裁剪项 |
裁剪项 |
取 min 后 |
| +2 |
1.3 |
2.6 |
2.4 |
2.4:好动作概率增太多后不再增加这项收益 |
| −2 |
0.7 |
−1.4 |
−1.6 |
−1.6:坏动作概率降太多后不再增加这项收益 |
| +2 |
0.7 |
1.4 |
1.6 |
1.4:朝错误方向仍受惩罚 |
| −2 |
1.3 |
−2.6 |
−2.4 |
−2.6:朝错误方向仍受惩罚 |
不是两个方向越界后都变成平台。 也不是强迫所有 ratio 落在 [0.8,1.2];共享网络参数仍会同时改变多个状态/动作。PPO clipping 不是动作限幅,不是 KL 硬约束,也不保证每次真实性能都提高。
通常还联合 value loss 与 entropy bonus;例如最大化策略代理目标和熵,对应最小化 −Lclip+cVLV−cHH。各库系数、归约和日志符号不同,先核对实现。熵是分布分散程度的信号,不能单独证明机器人执行了有用探索。
PPO 通常称为 on-policy:用最近策略的数据短期做多个 epoch,之后重新采样。ratio 只比较同一采样状态下的动作分布,不自动修正任意陈旧数据的状态访问分布,因此不能据此无限重放旧经验。
六、连续动作:Gaussian 的 std 与物理 action scale
一种常见策略是对角高斯:
at=μθ(ot)+σθ(ot)⊙εt,εt∼N(0,I).
σ>0 是标准差,方差是 σ2;若训练的是 log-std,则用 σ=exp(log_std)。均值与标准差可以来自网络,也可以有独立参数,具体以实现为准。
对 D 维独立条件高斯,联合 log-prob 是各维之和:
logπ(a∣o)=i=1∑D[−2σi2(ai−μi)2−logσi−21log(2π)].
PPO 通常比较整组动作的联合密度,而不是给每个关节分别计算一个独立环境决策的 ratio。连续密度也不是“恰好发生这个动作的百分比”。
机器人接口还可能有
qdes=qnominal+kaa.
这里 ka 是动作到物理关节角的尺度,与策略 σ 不同。若 ka=0.5 rad、归一化 σ=0.2,在没有其它变换的该维接口上,关节目标噪声标准差是 0.1 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 代码与交互实验中都有对应的实现位置。
参考与继续阅读