PPO Debug

问题

PPO不收敛 , 准确说是当我使用全batch一个epoch时收敛 , 但多个epoch时必定不收敛 , 收敛与不收敛见下图(横坐标是小时 , 实验环境是BreakoutDeterministic-v4)

全batch 1epcoh

多epoch

原因

在我每个agent到达horizen时或done时就发送之前的horizen个数据

问题就出在这里 , 因为当你done时发送的前horizen个数据有可能已经涉及了多个版本的theta

用图解释的话如下

解决

修改代码 , 当agent done的时候继续执行 , 直到达到horizen为止

修正后的效果如下 , 深红色和淡蓝色是RMSprop , 紫红色是Adam

感想

这个错误实在是太隐蔽了 , 而且即使这样居然也能达到30分