
以上是代理在gym环境LunarLanderContinuous-v2上运行时每100集的平均得分。橙色和蓝色线条是代理将过渡顺序馈送到策略梯度算法(例如,ppo)时的结果,而红线是代理在将收集的过渡馈送到算法之前对收集的过渡进行打乱时的结果。我不明白为什么简单地对数据进行混洗会产生如此大的不同。据我所知,神经网络假设输入数据是IID,因此DQN等算法会对数据(或重放缓冲区中的随机样本)进行混洗,以打破相关性。但在这里,数据混洗似乎会让事情变得更糟,为什么会发生这种情况?
这是我的项目https://github.com/xlnwel/Distributed-Model-Free-RL/tree/master/dppo。
每个工作者对过渡进行采样,直到收集到一定量的过渡,然后计算梯度,将梯度发送给学习器以更新权重,然后重复上述过程。对应于混洗数据的代码在worker.py中的行143到行150。
发布于 2019-02-11 04:16:37
我想说的区别是在策略(策略梯度)和非策略方法(例如DQN)之间的区别。您不能对收集的数据进行混洗,因为在拟合每一集之后,策略本身会发生变化。当您收集新样本时,它们采用的是新策略。然而,在DQN的情况下,您可以更新给定状态-动作对的Q值函数,从而您仍然可以一起使用随机样本并更新它们。
https://stackoverflow.com/questions/54614574
复制相似问题