搬运一下我在知乎上的回答 。我个人认为 PPO 的主要创新点是梯度裁剪,是一种保守策略梯度方法。
先说说 PPO 怎么来的。普通的策略梯度方法有一个问题,就是学习率没法很好的确定,从理论上来说,在训练后期,学习率要足够小才能保证收敛。所以,我们经常会遇到这种情况,智能体训练得好好的,突然效果就不行了。从另一个角度来说,也可以理解为策略的参数空间与策略空间不一致,导致策略的参数只变了一点但是策略的行为却改变了很多 (其实还是策略的参数变得太多了,只是从欧式距离上看参数变得不多)。因此,PPO 通过限制新旧策略的重要性采样比,来限制策略的改进,让算法训练得很稳。本质上来说, PPO 是一种保守策略梯度方法。
关于重要性采样。PPO 中重要性采样的主要目的是用于评估新旧策略的差别有多大,重要性采样比很大或者很小就限制新策略,不能让新策略走太远了。PPO 依然是一个(看成) on- policy 的方法。在 Open AI spinning up 的 PPO 的实现中,策略更新完 buffer 就直接清空了。而在其他一些 RL 库的实现中,为了提高样本利用率,在更新策略时会多次用到之前策略所采集的数据,但这个之前的策略与当前策略必须比较相近,否则重要性采样比超出了 clip 的范围,梯度直接变成 0 了。
关于GAE。GAE只是一种估计优势函数的形式,跟是不是 PPO 方法没什么关系。这东西好用,所以大家都用 GAE 去估计优势函数。
关于AC。把对 GAE 的估计网络看成 Critic,把策略网络看成 Actor,那么利用 GAE 去估计优势函数的 PPO 可以看成是一种 AC 框架。事实上,大部分 DRL 方法都可以看成 AC 框架下的方法。
以上是我的个人理解,如有错误,欢迎指正。