Tensorflow 我可以使用DQN和示例在不与环境交互的情况下培训代理吗?

Tensorflow 我可以使用DQN和示例在不与环境交互的情况下培训代理吗?,tensorflow,deep-learning,reinforcement-learning,dqn,Tensorflow,Deep Learning,Reinforcement Learning,Dqn,我想使用DQN和示例来训练一个RL代理,而不需要与环境交互。 据我所知,DQN是一种非策略算法,因此它似乎是可能的。(我说得对吗?) 然而,到目前为止我还没有训练好。具体来说,每个状态的argmax值都是相同的。(在最优策略中应该有所不同。) 我的环境如下: 状态:4个状态(A,B,C,D) 动作:3个动作(停留,向上,向下) 奖励和过渡: B是终端状态。 (括号中的表达式表示(状态、行动、奖励、下一状态)。) 当您停留在A中时,您将在A中并获得0(A,停留在,0,A) 当您在A中Up时,您

我想使用DQN和示例来训练一个RL代理,而不需要与环境交互。 据我所知,DQN是一种非策略算法,因此它似乎是可能的。(我说得对吗?) 然而,到目前为止我还没有训练好。具体来说,每个状态的argmax值都是相同的。(在最优策略中应该有所不同。)

我的环境如下:

  • 状态:4个状态(
    A
    B
    C
    D
  • 动作:3个动作(
    停留
    向上
    向下
  • 奖励和过渡:
    B
    是终端状态。 (括号中的表达式表示(状态、行动、奖励、下一状态)。)
    • 当您
      停留在
      A
      中时,您将在
      A
      中并获得0(
      A
      停留在
      ,0,
      A
    • 当您在
      A
      Up
      时,您将在
      B
      中获得0.33(
      A
      Up
      ,0.33,
      B
    • 当您在
      A
      Down
      时,您将在
      A
      中获得0(
      A
      Down
      ,0,
      A
    • 当您在
      B
      中停留
      时,您将在
      B
      中获得0.33(
      B
      停留
      ,0.33,
      B
    • 当您在
      B
      Up
      时,您将在
      C
      中获得0.25(
      B
      Up
      ,0.25,
      C
    • 当您在
      B
      Down
      时,您将在
      A
      中获得0(
      B
      Down
      ,0,
      A
    • 当您在
      C
      中停留
      时,您将在
      C
      中获得0.25(
      C
      Stay
      ,0.25,
      C
    • 当您在
      C
      Up
      时,您将在
      D
      中获得0.2(
      C
      Up
      ,0.2,
      D
    • 当您在
      C
      Down
      时,您将在
      B
      中获得0.33(
      C
      Down
      ,0.33,
      B
    • 当您在
      D
      Stay
      时,您将在
      D
      中获得0.2(
      D
      Stay
      ,0.2,
      D
    • 当您在
      D
      Up
      时,您将在
      D
      中获得0.2(
      D
      Up
      ,0.2,
      D
    • 当您在
      D
      Down
      时,您将在
      C
      中获得0.25(
      D
      Down
      ,0.25,
      C
我的训练方式:

  • 我把上面的每个样本都放在缓冲存储器中
  • 然后我用DQN训练。(与环境无交互作用)
杂项

  • 神经网络
    • 两层(输入和输出层。它们之间没有隐藏层)
  • 优化器:亚当
  • 超参数
    • 学习率:0.001
    • 批量大小:介于2和12之间
代码截图

结果

  • 该列是操作。(0:
    停留
    ,1:
    向上
    ,2:
    向下
  • 这一行是国家。(有些不同,有些相同)
  • 每个状态的argmax为1,这不是最佳策略
  • 即使我更多地运行循环,结果也不会改变

对不起,我不能发表评论,所以这里是我的建议:

  • 尝试添加另一个密集层并增加隐藏节点,以更好地泛化
  • 您的系统是确定性的,并且您几乎没有机会(因此很少有样本来提供重播内存),因此为了让您的系统学习,可以有趣地大量增加历元的数量(尝试使用200)
  • 可能有助于增加辍学,原因与上述相同,但将其作为补充步骤
  • 洗牌并通过网络多次传递重放内存
  • 对于一项不太复杂的任务来说,你的学习率似乎很低
我只想让你知道,如果你有一个关于RL主题的理论问题,这是最好的提问网站。不确定这是不是一个理论问题。谢谢你让我知道,@nbro:D这个问题不是理论问题。谢谢你的评论!!!不过我已经解决了我的问题。