微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决我可以使用DQN和示例在不与环境交互的情况下训练代理吗?

我想在不使用DQN和示例与环境交互的情况下训练RL代理。 以我的理解,DQN是一种脱离策略的算法,因此似乎可行。 (我对吗?) 但是,到目前为止,我还没有训练。具体而言,每个状态的argmax值都相同。 (最佳政策应该有所不同。)

我的环境如下:

  • 状态:4个状态(ABCD
  • 动作:3个动作(StayUpDown
  • 奖励和过渡: B是终端状态。 (括号中的表示是(状态,动作,奖励,下一个状态)。)
    • 当您在StayA时,您将进入A并得到0(AStay,0,A
    • 当您在UpA时,您将进入B,并获得0.33(AUp,0.33,B
    • 当您在DownA时,您将进入A并得到0(ADown,0,A
    • 当您在StayB时,您将进入B,并获得0.33(BStay,0.33,B
    • 当您在UpB时,您将进入C,并获得0.25(BUp,0.25,C
    • 当您在DownB时,您将进入A并得到0(BDown,0,A
    • 当您在StayC时,您将进入C,并获得0.25(CStay,0.25,C
    • 当您在UpC时,您将进入D并获得0.2(CUp,0.2,D
    • 当您在DownC时,您将进入B,并获得0.33(CDown,0.33,B
    • 当您在StayD时,您将进入D并获得0.2(DStay,0.2,D
    • 当您在UpD时,您将进入D并获得0.2(DUp,0.2,D
    • 当您在DownD时,您将进入C,并获得0.25(DDown,0.25,C

我的培训方式:

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

其他

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

代码屏幕截图

结果

  • Result screenshot
  • 该列是操作。 (0:Stay,1:Up,2:Down
  • 该行是状态。 (其中有些是不同的,有些是相同的。)
  • 每个状态的argmax为1,这不是最佳策略。
  • 即使我再运行一次循环,结果也不会改变。

解决方法

对不起,但是我无法发表评论,因此在这里提出建议:

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。