2017-04-17 138 views
1

我正在使用Keras进行深q学习的实验,并且我想要教授代理来执行任务。深q学习不收敛

在我的问题

我wan't教的试剂,以避免撞击物体在它的路径,通过改变它的速度(加速或减速)

所述试剂水平移动和对象以避免在垂直方向移动的,我不要他学会改变速度以避免击中它们。 我基于我对这个代码:Keras-FlappyBird

我试图3个不同模型(我不使用卷积网络)

  1. 模型与S形的激活函数10密隐藏层,用400输出节点

  2. 模型与Leaky ReLU激活功能

  3. ReLu活化函数10密隐藏层模型10密隐藏层,具有400个输出节点

我向网络提供我网络中所有对象的坐标和速度。

并训练它100万帧,但依然看不到任何结果 这里是我的Q值积为3种型号,

模型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值都相同并没有改善作为来回奖励......请帮助我什么,我我做错了..

回答

0

我对你的环境有点困惑。我假设你的问题不是飞扬的鸟,而你正试图将来自飞鸟的代码移植到你自己的环境中。所以即使我不了解你的环境或你的代码,我仍然认为有足够的回答一些潜在的问题来让你走上正确的道路。

首先,您提到了您尝试过的三种模型。当然,选择正确的函数逼近对于广义强化学习非常重要,但是有更多的超参数可能对解决您的问题非常重要。例如,伽玛,学习率,探索和探索衰减率,某些情况下的回放记忆长度,培训的批量大小等。如果您的Q值在您认为实际上应该改变的状态下未发生变化,则潜在客户我相信对模型1和模型2的研究正在进行有限的探索。在代码示例中,epsilon从.1开始,也许在那里尝试不同的值。此外,这也需要调整探索速率的衰减率。如果你的q值在剧集中剧增,我也会看看学习率(尽管在代码示例中它看起来很小)。在同一张纸条上,gamma可能非常重要。如果它太小,你的学习者会是近视的。

你还提到你有400个输出节点。你的环境有400个动作吗?大动作空间也带来了自己的一系列挑战。如果你的确有400个动作https://arxiv.org/pdf/1512.07679.pdf,那么这是一个很好的白皮书。如果你没有400个动作,你的网络结构就有问题。您应该将每个输出节点视为选择哪个动作的概率。例如,在您发布的代码示例中,他们有两个操作并使用relu。

获得深度q学习的参数是非常困难的,特别是当你考虑训练速度有多慢时。

+0

非常感谢您的回答,1:400节点我的意思是在隐藏节点中,在输出节点中我只有3个。 2:是的,你是对的,我正在为自己的环境移植代码。 3:解释我的环境;我基本上试图训练一个网络,以避免与移动目标相撞,我将目标的位置作为输入,输出是3个可能的动作 –

+0

,我认为你是正确的,我试图改变epsilon的参数和伽玛,我看到一些改善,但仍然不是我所希望的结果 –

+0

我也会看看其他参数,包括学习率。如果您的环境没有终端状态,那么您可能需要考虑最低探索速率为.1或类似的东西,以便它不断探索新的状态,找到一个最佳的解决方案。 –