RL-05-05-结构-Rollout-Buffer

← 上级:RL-05.专属数据结构 · 实现:RL-04-05-PPO实现

Rollout Buffer当前策略下连续 $T$ 步数据,供 PPO/A2C 一批更新后清空。


一、字段

字段 shape 说明
obs $(T, *obs_shape)$ 观测
actions $(T,)$ 动作
log_probs $(T,)$ $\log \pi(a
rewards $(T,)$ 奖励
dones $(T,)$ 终止
values $(T,)$ $V(s)$
advantages $(T,)$ GAE 后
returns $(T,)$ $A+V$

二、GAE 反向扫描

RL-04-05-PPO实现compute_gae

episode 边界:done=1next_non_terminal=0,截断 GAE 传播。


三、On-Policy 生命周期

1
collect T steps → compute_gae → ppo_update (K epochs) → buffer.clear()

禁止用旧策略数据做第二次 update(除非 IMPALA 等 Off-Policy 变体)。


四、向量化 env

$T = n_steps \times n_envs$:每个 env 并行推进一步,按时间展平为 $(T,)$。

1
2
3
4
# obs shape: (n_envs, obs_dim) per step
for step in range(n_steps):
actions = policy(obs_batch)
obs_batch, rew, term, trunc, _ = vec_env.step(actions)

五、与 Replay 对比

Rollout Replay
策略 当前 历史混合
容量 固定 $T$ 大 ring
复用 更新后丢弃 反复 sample

六、小结

  • Rollout = 短轨迹 + GAE + 一次性消费
  • 下一篇:资格迹
-------------本文结束感谢您的阅读-------------