← 上级: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=1 时 next_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 | # obs shape: (n_envs, obs_dim) per step |
五、与 Replay 对比
| Rollout | Replay | |
|---|---|---|
| 策略 | 当前 | 历史混合 |
| 容量 | 固定 $T$ | 大 ring |
| 复用 | 更新后丢弃 | 反复 sample |
六、小结
- Rollout = 短轨迹 + GAE + 一次性消费。
- 下一篇:资格迹