深度教堂

  • 榜单数据10-16 17:00
  • 论文数据10-16 13:30
  • 周报10-17 11:22

PPO / SAC 与稳定性:从 surrogate 到诊断闭环

未发布阅读约 9 分钟人工撰写已核查

扩展作业

本报告迁移自原课程材料,经 AI 事实核查未发现存疑项,未逐页人工审核;结论与证据请以页面列出的原始文件为准。

实验目标

本作业不调用 Gym 算法封装:本地实现 CartPole 方程、连续点质量控制环境、PPO 与 SAC,并在 Mac CPU 上完成 8 组主实验配置(每组 3 个种子,共 24 个 run)及一个 100k-step 长预算演示。

实验设置

环境两个环境都在作业目录内原创实现,避免第三方环境版本/API 差异。CartPole 使用经典质量、杆长、20ms Euler 方程;PointControl 有速度衰减与动作限幅。后者是快速机制验证,不代表 MuJoCo 复杂接触控制。
随机种子0、1、2
关键配置default-config.json

本报告迁移自 CS285 课程材料 [1]。

本作业不调用 Gym 算法封装:本地实现 CartPole 方程、连续点质量控制环境、PPO 与 SAC,并在 Mac CPU 上完成 8 组主实验配置(每组 3 个种子,共 24 个 run)及一个 100k-step 长预算演示。重点不是“跑出一个分数”,而是把 KL、clip fraction、entropy、Q/value loss 和梯度范数放回稳定性解释链。

项目入口

汇总数据 · 关键配置 · 演示清单 · 方法对照视频

1. 摘要与证据口径

主要结果

PPO 12k-step 的 clip 扫描最终回报为:ε=.05 46.42±8.35、.2 68.18±18.63、.4 68.90±3.91(mean±seed SD);GAE λ=.8 得到 74.08,优于 .95 的 68.18 和 1.0 的 57.17。SAC 固定 α=.2 为 166.86±5.62,自动温度为 154.00±21.08——自动温度在此预算下反而更差,是保留的负结果。

证据等级与复现契约

  • 【B:受控小型实验】 每个主条件 seeds={0,1,2};误差条是跨 seed 样本 SD;JSON 同时给出对 seed 均值做 10,000 次 bootstrap 的 95% CI。n=3 时 CI 只能作描述,不能当高功效显著性检验。
  • 平台:Python 3.13.5、PyTorch 2.9.0、CPU、OMP=1;PPO/SAC 各 12,000 environment steps。24 个 run 的训练合计约 3 分钟;首次导入与 H.264 渲染另有固定开销。
  • 公开证据:本站保存的汇总数据、关键配置、汇总图与视频;正文只引用这些已发布材料。
  • 100k-step 长预算演示与主比较分开:公开清单记录 last=263.35、best rolling return=396.8,仍未达到持续 500-step 的 solved 标准;它只展示较长平衡行为,不参与 12k 公平比较。

图 1:主实验汇总。柱/点为 3 seeds;曲线展示训练过程。

HW6 results

2. 环境与问题

环境状态 / 动作奖励与 horizon用途
Local CartPole(x,x˙,θ,θ˙)(x,\dot x,\theta,\dot\theta) / 左右二选一存活每步 +1,最多 500PPO、clip/GAE 稳定性
PointControl(x,v,g)(x,v,g) / a∈[−1,1]a\in[-1,1]−∣g−x∣−.02a2-\vert g-x\vert -.02a^2,到目标邻域 +2;100 步SAC 连续控制与温度

两个环境都在作业目录内原创实现,避免第三方环境版本/API 差异。CartPole 使用经典质量、杆长、20ms Euler 方程;PointControl 有速度衰减与动作限幅。后者是快速机制验证,不代表 MuJoCo 复杂接触控制。

3. PPO:目标、GAE 与实现

旧策略概率固定在采样时的 old_log_prob;更新阶段只改变新策略。比率 rt(θ)=πθ(at∣st)/πold(at∣st)r_t(\theta)=\pi_\theta(a_t|s_t)/\pi_{\rm old}(a_t|s_t),clipped surrogate 为

Lclip(θ)=Et[min⁡(rtA^t,clip⁡(rt,1−ϵ,1+ϵ)A^t)](HW6.1)L^{clip}(\theta)=\mathbb E_t[\min(r_t\hat A_t,\operatorname{clip}(r_t,1-\epsilon,1+\epsilon)\hat A_t)]\tag{HW6.1}

GAE 用 TD residual δt=rt+γV(st+1)−V(st)\delta_t=r_t+\gamma V(s_{t+1})-V(s_t):

A^tGAE(γ,λ)=∑l≥0(γλ)lδt+l,A^←A^−μσ+10−8(HW6.2)\hat A_t^{GAE(\gamma,\lambda)}=\sum_{l\ge0}(\gamma\lambda)^l\delta_{t+l},\quad \hat A\leftarrow{\hat A-\mu\over\sigma+10^{-8}}\tag{HW6.2}

总 loss 是 −Lclip+0.5LV−0.01H-L^{clip}+0.5L_V-0.01\mathcal H。实现每 1024 步采样,8 epochs 全批更新,global grad norm clip=0.5,并记录 policy/value loss、entropy、approx-KL、clip fraction、grad norm。

(此处的实现代码或复现命令不在本站发布。)

4. SAC:双 Q、target 与温度

y=r+γ(1−d)[min⁡i=1,2Qϕˉi(s′,a′)−αlog⁡πθ(a′∣s′)](HW6.3)y=r+\gamma(1-d)\left[\min_{i=1,2}Q_{\bar\phi_i}(s',a')-\alpha\log\pi_\theta(a'|s')\right]\tag{HW6.3} Jπ=E[αlog⁡πθ(a∣s)−min⁡iQϕi(s,a)],J(α)=E[−log⁡α(log⁡π+Htarget)](HW6.4)J_\pi=\mathbb E[\alpha\log\pi_\theta(a|s)-\min_iQ_{\phi_i}(s,a)],\quad J(\alpha)=\mathbb E[-\log\alpha(\log\pi+\mathcal H_{target})]\tag{HW6.4}

actor 是 tanh-squashed Gaussian,使用 reparameterization;log-prob 含 log⁡(1−tanh⁡2u)\log(1-\tanh^2u) Jacobian 修正。两个独立 Q 用同一 Bellman target;target Q 以 τ=.01 Polyak 更新。自动温度的 target entropy=-1;固定组 α=.2。诊断记录 Q/actor/alpha loss、entropy、α 与两类梯度范数。

5. 实验设置与真实命令

(此处的实现代码或复现命令不在本站发布。)

项PPOSAC
预算12k steps;长预算演示 100k12k steps;前 500 随机
网络actor/value 各 64×64 tanhactor/Q 各 64×64 tanh
优化器Adam 3e-4Adam 3e-4,batch 128
扫描ε={.05,.2,.4};λ={.8,.95,1}fixed α=.2 vs auto α
公平对照共同协议唯一变化demo 选择
PPO clip .05/.2/.4同 CartPole、12k steps、seeds 0/1/2、λ=.95clip ε三个 arm 均固定 seed 1,不按回报挑选
SAC fixed/auto α同 PointControl、12k steps、seeds 0/1/2、replay/batchtemperature 更新两个 arm 均固定 seed 1
PPO 长预算能力演示同实现,seed 11100k 额外预算展示较长平衡行为但未达到 solved 标准,不进入 12k 排名

禁止跨分支排名

PPO 与 SAC 使用不同状态、动作与 reward 尺度,只在各自任务内部比较。PPO 成功标准为 500-step horizon 内持续平衡,SAC 成功是接近目标并获得高 episode return;二者数字不可横比。

测试真实执行:4/4 passed,覆盖环境确定性、PPO ratio clipping、SAC 动作/log-prob 形状与 soft target update。

6. 实验 A:clip ε 与“非硬 trust region”

εfinal return mean±SDbootstrap 95% CIΔ vs .05证据
.0546.42±8.35[37.05, 53.10]—B;更新保守
.2068.18±18.63[50.60, 87.70]+21.76B;seed 方差最大
.4068.90±3.91[64.40, 71.40]+22.48B;本预算最稳定

为什么 clip 不是硬 trust region

目标只截断“能继续改善 surrogate 的样本贡献”,并不限制整个策略分布的 KL;同一 batch 多 epoch、共享参数和未被截断方向仍可移动概率。日志中 ε=.2 的 seed1 最终 approx-KL=0.00291,而 seed2 仅 0.00034;ε 并不映射到一个固定 KL 半径。TRPO 的约束优化才显式要求平均 KL≤δ。

7. 实验 B:GAE 的 bias–variance

λ3-seed final returns均值
.8070.25 / 81.00 / 71.0074.08
.9550.60 / 66.25 / 87.7068.18
1.0047.35 / 61.65 / 62.5057.17

短预算和终止频繁的 CartPole 中,λ=.8 的 bootstrap bias 换来了较低方差,结果最好;λ=1 接近 Monte-Carlo,长轨迹噪声直接进入 actor。该结论依赖 horizon、value capacity 与训练预算,不应写成“λ 越小越好”。

8. 实验 C:SAC 自动温度 vs 固定 α

条件final return mean±SD95% bootstrap CIΔ vs fixedfinal α / 证据
固定 α=.2166.86±5.62[161.73,172.87]—.200;B
自动温度154.00±21.08[133.79,175.84]−12.86.088/.134/.120;B,负结果

自动 α 学到了更低温度,但 seed0 回报只有 133.79,拉高方差。解释是:简单单峰任务并不需要长期高熵,固定 .2 恰好给出足够探索;自动温度还多一个非平稳控制回路,12k 步未必收敛。不能据此否定 automatic entropy tuning,它在跨任务减少手调成本的价值没有被这个 toy task 测到。

9. 稳定性诊断面板怎么读

  • return 与 loss 分开: policy loss 的绝对值不是 performance;value/Q loss 突增先查 target 尺度与终止 mask。
  • KL + clip fraction: KL 持续抬升且 clip fraction 高,说明同一 batch 更新过猛;两者都接近 0 且 return 不动,更新可能过弱。
  • entropy: PPO 过早塌缩会停止探索;SAC entropy 与 α 必须联读,α 下降是对 target entropy 的反馈,不等于训练失败。
  • grad norm: 这里记录裁剪前 global norm;它能定位爆炸,却不能替代参数更新量或 optimizer state。

公开 PNG 只展示主比较;本页不引用未发布的诊断面板。

10. 方法对照 Demo:同 seed 行为差异

图 0:PPO clip 行为对照:三个视频均使用 seed 1;画面只用于展示可见行为,不用于核对 checkpoint、精确回报或成功率,数值比较以公开汇总数据和图 1 为准。

视频:ppo_clip0.05_seed1.mp4 视频:ppo_clip0.2_seed1.mp4 视频:ppo_clip0.4_seed1.mp4

图 0:SAC fixed α=.2(左)vs auto α(右)的行为对照:两个视频均使用 seed 1;画面只用于展示可见行为,三种子数值比较以公开汇总数据和图 1 为准。

视频:sac_fixed_seed1.mp4 视频:sac_auto_seed1.mp4

图 0:PPO 100k-step 长预算能力演示。视频展示较长平衡行为;公开清单记录 best rolling return=396.8、last=263.35,未达到持续 500-step 的 solved 标准,也不进入 12k clip 公平排名。

视频:ppo_cartpole_solved_seed11.mp4

11. 方法演进与适用边界

TRPO→PPO: TRPO 用二阶近似与 KL constraint 换可靠单调改进近似;PPO 用一阶 clipped surrogate 换实现简单和吞吐,但失去硬约束。在线、on-policy、动作维度中等且能并行采样时 PPO 是稳健基线,数据昂贵时样本复用弱。

MaxEnt RL→SAC: 最大熵目标把“高回报且多样”写入 Bellman backup;SAC 结合 off-policy replay、双 Q、stochastic actor 与 temperature。连续控制、数据复用重要时 SAC 合适;离散超大动作、强 model bias 或离线 distribution shift 需要别的设计。

12. 负结果、限制与反思

  • 主 PPO 12k 与 100k-step 长预算演示均未达到持续 500-step 的 solved 标准;长预算演示只展示较长平衡行为,不把其数字混入消融。
  • automatic α 没赢固定 α,且 CI 高度重叠;报告保留而非隐藏。
  • n=3 足以暴露 seed 方差,不足以支持细小差异的显著性结论;bootstrap 不能凭空增加独立样本。
  • CartPole 与 1-D PointControl 没有高维接触、延迟或部分可观测性;结论等级是“实现正确 + toy mechanism evidence”。
  • 下一步应固定 wall-clock 扩到 10 seeds,并加入 target-KL early stop、observation normalization 与 Pendulum/MuJoCo 交叉环境。

Claim–Evidence 对照

结论状态证据升级条件
在 12k-step、三种子 PPO clip 扫描中,clip ε=0.4 的最终回报均值高于 ε=0.05,且种子间标准差更小。已验证数据 ↗图片 ↗配置 ↗—
在 12k-step、三种子 PPO GAE 扫描中,λ=0.8 的最终回报均值高于 λ=0.95 与 λ=1.0。已验证数据 ↗配置 ↗—
在 12k-step、三种子 PointControl 实验中,固定 α=0.2 的 SAC 最终回报均值高于自动温度组。已验证数据 ↗图片 ↗配置 ↗—
PPO 与 SAC 的方法对照视频采用固定 seed 的对应实验轨迹,适合作为行为示例而非成功率估计。已验证视频 ↗视频 ↗视频 ↗视频 ↗视频 ↗数据 ↗—
现有 12k-step PPO 主实验没有达到 500-step solved 标准;额外 100k-step 演示仅用于展示能力,不参与短预算排名。已验证数据 ↗视频 ↗数据 ↗—

证据文件

10 个文件

参考来源

  1. [1]CS 285: Deep Reinforcement Learning(UC Berkeley)(在新窗口打开)UC Berkeley · 访问于 2026-10-17↩