深度学习不会收敛

时间:2017-04-17 12:11:56

标签: tensorflow deep-learning keras keras-layer q-learning

我正在使用Keras尝试深度学习,我想教一个代理来执行任务。

在我的问题中,我不会教导代理人通过改变它的速度(加速或减速)来避免撞击其中的物体

代理人正在水平移动,要避免的物体垂直移动,我不想让他学会改变它的速度以避免撞击它们。 我的代码基于:Keras-FlappyBird

我尝试了3种不同的模型(我不使用卷积网络)

  1. 具有Sigmoid激活功能的10密集隐藏层模型,具有400个输出节点

  2. 带有Leaky ReLU激活函数的密集隐藏层的模型

  3. 带有ReLu激活函数的10密集隐藏层的模型,具有400个输出节点
  4. 我将网络中所有对象的坐标和速度提供给网络。

    并训练了100万帧,但仍然看不到任何结果 这是我的3个模型的q值图,

    模型1:q值 enter image description here 模型2:q值

    enter image description here  模型3:q值

    enter image description here 模型3:q值缩放

    enter image description here

    正如你所看到的那样,q值并没有像奖励一样得到改善......请帮助我,我做错了什么..

1 个答案:

答案 0 :(得分:1)

我对你的环境感到有点困惑。我假设你的问题不是脆弱的鸟,你试图将代码从flappy bird移植到你自己的环境中。因此,即使我不了解您的环境或代码,我仍然认为有足够的能力来回答一些潜在的问题,以帮助您走上正轨。

首先,您提到了您尝试过的三种型号。当然,选择正确的函数逼近对于广义强化学习非常重要,但是有更多的超参数对解决你的问题很重要。例如,有伽玛,学习率,探索和探索衰减率,在某些情况下的重放记忆长度,训练的批量大小等。在您认为实际上应该改变的状态下,您的Q值不会发生变化,导致我相信对于第一和第二模型正在进行有限的探索。在代码示例中,epsilon从.1开始,可能尝试不同的值,最多为1.此外,还需要弄乱探索率的衰减率。如果你的q值在剧集中大幅提升,我也会考虑学习率(虽然在代码示例中,它看起来很小)。同样,伽玛可能非常重要。如果它太小,你的学习者将是近视。

您还提到您有400个输出节点。您的环境有400个动作吗?大型动作空间也有各自的挑战。这是一篇很好的白皮书,看看你确实有400次行动https://arxiv.org/pdf/1512.07679.pdf。如果您没有400个操作,则网络结构出现问题。您应该将每个输出节点视为选择操作的概率。例如,在您发布的代码示例中,它们有两个操作并使用relu。

获取深度q学习权限的参数非常困难,尤其是当您考虑到训练速度有多慢时。

相关问题