政策梯度:为什么混洗数据会导致性能下降?

时间:2019-02-10 08:09:57

标签: python neural-network reinforcement-learning

enter image description here

以上是代理在gym环境LunarLanderContinuous-v2上运行时,每100集的平均得分。橙线和蓝线是代理向策略梯度算法(例如,ppo)按顺序提供过渡时的结果,而红线是代理在将收集的过渡提供给算法之前对它们进行混洗的结果。我不明白为什么简单地改组数据会带来如此大的变化。据我所知,神经网络假定输入数据为IID,因此DQN之类的算法会重新整理数据(或重播缓冲区中的随机样本)以破坏相关性。但是,在这里混排数据似乎会使情况变得更糟,为什么会发生这种情况?

这是我的项目https://github.com/xlnwel/Distributed-Model-Free-RL/tree/master/dppo

每个工作人员对过渡进行采样,直到收集到一定数量的过渡为止,然后计算梯度,将梯度发送给学习者以更新权重,然后重复上述过程。与改组数据相对应的代码在worker.py中的第143行到第150行。

1 个答案:

答案 0 :(得分:0)

我想说的是,在启用政策(策略梯度)和关闭政策方法(例如DQN)之间存在差异。您无法混洗收集的数据,因为在拟合每个情节之后,策略本身会更改。当您收集新样本时,它们将采用新政策。而对于DQN,您可以更新给定状态操作对的q值函数,从而仍可以一起使用随机样本并进行更新。