我找到了keras-rl/examples/cem_cartpole.py示例,我想了解,但我没有找到文档。
线是做什么的
memory = EpisodeParameterMemory(limit=1000, window_length=1)
做?什么是limit
,什么是window_length
?增加一个/两个参数有什么影响?
我找到了keras-rl/examples/cem_cartpole.py示例,我想了解,但我没有找到文档。
线是做什么的
memory = EpisodeParameterMemory(limit=1000, window_length=1)
做?什么是limit
,什么是window_length
?增加一个/两个参数有什么影响?
EpisodeParameterMemory
是用于 CEM 的特殊类。本质上,它存储用于整个剧集的策略网络的参数(因此得名)。
关于您的问题:该limit
参数仅指定内存可以容纳多少个条目。超过此限制后,较旧的条目将被较新的条目替换。
在这种特定类型的内存中不使用第二个参数(CEM 在 Keras-RL 中有点像边缘情况,主要作为简单的基线)。然而,通常情况下,该window_length
参数控制连接多少个观察值以形成一个“状态”。如果环境不是完全可观察的(将其视为将 POMDP 转换为 MDP,或至少近似地),这可能是必要的。Atari 上的 DQN 使用了这一点,因为例如,单帧显然不足以推断带有 FF 网络的球的速度。
一般来说,我建议阅读相关论文(同样,CEM 有点例外)。然后应该变得相对清楚每个参数的含义。我同意 Keras-RL 迫切需要文档,但不幸的是,我现在没有时间处理它。当然,我们总是欢迎为改善这种情况做出贡献;)。
聚会有点晚了,但我觉得答案并没有真正回答问题。
我在网上找到了这个描述(https://pytorch.org/tutorials/intermediate/reinforcement_q_learning.html#replay-memory):
我们将使用经验回放记忆来训练我们的 DQN。它存储代理观察到的转换,允许我们稍后重用这些数据。通过随机抽样,构建批次的转换是去相关的。已经表明,这极大地稳定和改进了 DQN 训练过程。
基本上,您观察并保存所有状态转换,以便以后可以在它们上训练您的网络(而不必一直从环境中进行观察)。