【发布时间】:2017-01-15 05:19:44
【问题描述】:
我在为 Pong 游戏实现深度神经网络时遇到了一些问题,因为无论我更改哪些参数,我的网络总是发散的。 我参加了一个 Pong-Game 并实现了一个基于 theano/lasagne 的深度 Q 学习算法,该算法基于 Google 的 Deepmind 著名的自然论文。
我想要什么:
我不想为网络提供像素数据,而是输入球的 x 和 y 位置以及 4 个连续帧的桨的 y 位置。所以我总共有 12 个输入。
我只想奖励一局的打、输、赢。
使用此配置,网络没有收敛,我的代理无法玩游戏。相反,桨直接驶向顶部或底部或重复相同的模式。所以我想我试着让代理更容易一些,并添加一些信息。
我做了什么:
状态:
- 球的 x 位置(-1 到 1)
- 球的 y 位置(-1 到 1)
- 球的标准化 x 速度
- 球的归一化 y 速度
- 桨叶的 y 位置(-1 到 1)
连续 4 帧我得到的总输入为 20。
奖励:
- +10 如果 Paddle 击中球
- +100 如果代理赢了这一轮
- -100 如果代理输掉这一轮
- -5 到 0 表示球的预测结束位置(y 位置)与球拍的当前 y 位置之间的距离
- +20,如果球的预测结束位置在桨的当前范围内(击球是可预见的)
- -5 如果球位于球拍后面(不再可能击球)
使用此配置,网络仍然存在分歧。我试着玩弄学习率(0.1 到 0.00001)、隐藏层的节点(5 到 500)、隐藏层的数量(1 到 4)、批量累加器(总和或平均值)、更新规则(rmsprop 或 Deepminds rmsprop)。
所有这些都没有导致令人满意的解决方案。损失平均值的图表大多类似于this。
你可以下载我当前版本的实现here
我将非常感谢任何提示:)
小梨
【问题讨论】:
-
由于我没有足够的声望点来发布两个以上的链接,我想在这里提供它们:Pong-Game; Theano/Lasagne implementation; Nature paper; Another loss plot;
-
您是否尝试过使用较低的奖励值?如果可能的话,我建议尝试根据您当前使用的奖励的最小和最大可能值,将所有奖励标准化为 [0.0, 1.0] 或 [-1.0, 1.0]。如果很难确定那些最小值和最大值,它至少仍然有助于使一切接近 0(也许将您现在使用的所有奖励除以 100?)。这可能有助于网络更快地收敛。
-
谢谢,我还没有,但我会知道然后报告。
-
哇!而已! @DennisSoemers 非常感谢你!网络收敛,合适的玩家学会打乒乓球。我现在将尝试调整游戏,以获得我想要的条件。非常好!!! :)
标签: python machine-learning artificial-intelligence deep-learning theano