【问题标题】:What does the EpisodeParameterMemory of keras-rl do?keras-rl 的 EpisodeParameterMemory 是做什么的?
【发布时间】:2017-11-06 15:43:39
【问题描述】:

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

行是什么

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

做吗? limit 是什么,window_length 是什么?增加一个/两个参数有什么影响?

【问题讨论】:

    标签: reinforcement-learning keras-rl


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 相关论文是什么?
    • 哈哈哈,让我们看看我是否有时间提出/一些文档拉取请求;-)
    【解决方案2】:

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

    我在网上找到了这个描述(https://pytorch.org/tutorials/intermediate/reinforcement_q_learning.html#replay-memory):

    我们将使用体验回放 用于训练我们的 DQN 的内存。它存储代理的转换 观察,允许我们稍后重用这些数据。通过从中采样 随机地,构建批次的转换是去相关的。它 已经表明,这极大地稳定和改善了 DQN 训练过程。

    基本上,您会观察并保存所有状态转换,以便稍后在它们上训练您的网络(而不必一直从环境中进行观察)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-21
      • 1970-01-01
      • 2019-12-09
      • 1970-01-01
      • 2021-03-15
      • 2020-08-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多