# PPO：同一批数据训练多个 epoch 时，裁剪做了什么

> 来源：https://dqn.cn/tools/ppo-epochs ｜ 作者：DQN.CN 编辑部 ｜ 发布：2026-11-01 ｜ 更新：2026-11-01 ｜ 许可：CC BY-NC-SA 4.0（文字）/ MIT（代码）

> （此处为交互工具，请在网页中使用：https://dqn.cn/tools/ppo-epochs）

## 为什么要裁剪

同一批数据用的是旧策略 $\pi_{\text{old}}$ 采的，用重要性权重 $r = \pi_\theta / \pi_{\text{old}}$ 修正后，代理目标 $\mathbb{E}[r \hat A]$ 只在 $\pi_\theta$ 离 $\pi_{\text{old}}$ 不远时才可靠。不加约束、在同一批数据上反复优化，策略会冲向“这批数据里碰巧优势为正”的动作，KL 迅速变大，甚至变成确定性策略，再也采不到其他动作。

PPO-Clip 的目标 $\min(r\hat A, \text{clip}(r, 1-\epsilon, 1+\epsilon)\hat A)$ 让超出范围的样本梯度为 0，每轮更新的幅度被自动限制。

## 可以试试

- epoch = 1：两条曲线完全重合（第一步时 r = 1，裁剪不起作用）。
- epoch 拖到 80：不裁剪的 J 先升后降，“收敛到错误动作”的次数大幅增加。
- ε 调到 0.5：PPO 每轮走得更远，学得更快，但也更接近不裁剪的行为。

## 相关教程

- [PPO](https://dqn.cn/advanced/ppo)
- [全部交互工具](https://dqn.cn/tools/)
