我找到了keras-rl/examples/cem_cartpole.py示例,我想了解,但我找不到文档。
该行
memory = EpisodeParameterMemory(limit=1000, window_length=1)
做什么?什么是limit
,什么是window_length
?增加其中一个/两个参数的效果是什么?
答案 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 培训程序。
基本上,您可以观察并保存所有状态转换,以便以后可以在其上训练网络(而不必始终从环境中进行观察)。