【问题标题】:Can I train an agent without interactions with environment using DQN and samples?我可以使用 DQN 和样本在不与环境交互的情况下训练代理吗?
【发布时间】:2021-02-16 04:14:35
【问题描述】:

我想使用 DQN 和样本训练一个不与环境交互的 RL 代理。 据我了解,DQN 是一种离策略算法,因此它似乎是可能的。 (我对吗?) 但是,到目前为止我还没有训练。具体来说,每个状态的 argmax 的值是相同的。 (在最优策略中应该是不同的。)

我的环境如下:

  • 状态:4 个状态(A,B,C,D
  • 动作:3 个动作(StayUpDown
  • 奖励与过渡: B 是终端状态。 (括号中的表达式表示(状态、动作、奖励、下一个状态)。)
    • 当您在AStay 时,您将在A 中并得到0(AStay、0、A
    • 当您在AUp 时,您将在B 中并获得0.33(AUp、0.33、B
    • 当您在ADown 时,您将在A 中并得到0(ADown、0、A
    • 当您在BStay 时,您将在B 中并获得0.33(BStay、0.33、B
    • 当您在BUp 时,您将在C 中并获得0.25(BUp、0.25、C
    • 当您在BDown 时,您将在A 中并得到0(BDown、0、A
    • 当您在CStay 时,您将在C 中并获得0.25(CStay、0.25、C
    • 当您在CUp 时,您将在D 中并获得0.2(CUp、0.2、D
    • 当您在CDown 时,您将在B 中并获得0.33(CDown、0.33、B
    • 当您在DStay 时,您将在D 中并获得0.2(DStay、0.2、D
    • 当您在DUp 时,您将在D 中并获得0.2(DUp、0.2、D
    • 当您在 DDown 时,您将在 C 中并获得 0.25(DDown、0.25、C

我的训练方式:

  • 我将上面的每个样本都放在了缓冲存储器中。
  • 然后我使用 DQN 进行训练。 (不与环境互动)

杂项

  • 神经网络
    • 两层(输入层和输出层。它们之间没有隐藏层)
  • 优化器:Adam
  • 超参数
    • 学习率:0.001
    • 批量大小:在 2 到 12 之间变化

代码截图

结果

  • Result screenshot
  • 该列是操作。 (0:Stay,1:Up,2:Down
  • 行是状态。 (有些不同,有些相同)。
  • 每个状态的 argmax 为 1,这不是最优策略。
  • 即使我运行了更多循环,结果也没有改变。

【问题讨论】:

  • 我只想告诉你,如果你有关于 RL 主题的理论问题,Artificial Intelligence SE 是最好的提问网站。不确定这是否是一个理论问题。
  • 谢谢你让我知道,@nbro :D 这个问题不是理论上的问题。

标签: tensorflow deep-learning reinforcement-learning dqn


【解决方案1】:

抱歉,我不能做 cmets,所以我的建议是:

  • 尝试添加另一个密集层并增加隐藏节点以更好地泛化;
  • 您的系统是确定性的,并且您几乎没有可能性(因此很少有样本可以提供给回放内存),因此为了让您的系统学习,增加很多 epoch 的数量(尝试使用 200)可能会很有趣;
  • 出于与上述相同的原因,添加 Dropout 可能会有所帮助,但将其作为补充步骤;
  • 通过网络多次混洗和传递回放内存;
  • 对于不太复杂的任务,您的学习率似乎非常小;

【讨论】:

  • 感谢您的评论!!!不过我已经解决了我的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-11
  • 1970-01-01
  • 1970-01-01
  • 2021-08-11
  • 2015-07-19
相关资源
最近更新 更多