keras-rl的EpisodeParameterMemory有什么作用?

时间:2017-11-06 15:43:40

标签: reinforcement-learning keras-rl

我找到了keras-rl/examples/cem_cartpole.py示例,我想了解,但我找不到文档。

该行

memory = EpisodeParameterMemory(limit=1000, window_length=1)

做什么?什么是limit,什么是window_length?增加其中一个/两个参数的效果是什么?

2 个答案:

答案 0 :(得分:0)

EpisodeParameterMemory是一个用于CEM的特殊类。实质上,它存储了用于整个剧集的策略网络的参数(因此名称)。

关于您的问题:limit参数只是指定内存可容纳的条目数。超过此限制后,较旧的条目将被更新的条目替换。

第二个参数未在此特定类型的内存中使用(CEM在Keras-RL中有点像边缘情况,并且大多数是作为简单基线)。但是,通常情况下,window_length参数控制连接多少个观察值以形成"状态"。如果环境不是完全可观察的,则可能需要这样做(将其视为将POMDP转换为MDP,或至少近似)。 Atari上的DQN使用这个,因为单帧显然不足以推断出具有FF网络的球的速度。

一般来说,我建议阅读相关论文(同样,CEM有点例外)。然后应该相对清楚每个参数的含义。我同意Keras-RL迫切需要文档但不幸的是我现在没有时间研究它。当然,欢迎提供改善情况的贡献;)。

答案 1 :(得分:0)

聚会晚了一点,但我觉得答案并没有真正回答问题。

我在线(https://pytorch.org/tutorials/intermediate/reinforcement_q_learning.html#replay-memory)找到了此描述:

  

我们将使用体验重播   训练我们的DQN的记忆。它存储代理程序的过渡   观察,使我们以后可以重用此数据。通过采样   随机地,建立批处理的转换是去相关的。它   已经表明,这可以极大地稳定和改善DQN   培训程序。

基本上,您可以观察并保存所有状态转换,以便以后可以在其上训练网络(而不必始终从环境中进行观察)。