我可以使用DQN和样本在不与环境交互的情况下训练代理吗



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

我的环境如下:

  • 状态:4个状态(ABCD(
  • 动作: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之间变化

代码屏幕截图

  • 主循环
  • 培训代码
  • 模型构建

结果

  • 结果屏幕截图
  • 列就是动作。(0:Stay,1:Up,2:Down(
  • 行是状态。(有些不同,有些相同(
  • 每个状态的argmax都是1,这不是最佳策略
  • 即使我运行了更多的循环,结果也没有改变

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

  • 尝试添加另一个密集层并增加隐藏节点以更好地泛化
  • 你的系统是确定性的,你的可能性很小(因此给回放内存提供的样本也很少(,所以为了让你的系统学习,可以有趣地大量增加划时代的数量(尽量使用200(
  • 出于与上述相同的原因,添加Dropout可能会有所帮助,但将其作为补充步骤
  • 通过网络对回放内存进行多次无序播放和传递
  • 对于一项不太复杂的任务来说,你的学习率似乎很低

相关内容

  • 没有找到相关文章

最新更新