ponggam神经网络参数的选择

2024-04-20 00:25:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我在实现一个深度神经网络到乒乓球游戏时遇到了一些问题,因为我的网络总是发散的,不管我改变了哪些参数。 我做了一个乒乓球游戏,实现了一个基于theano/lasagne的deep-q学习算法,该算法基于googledeepmind的著名自然论文。在

我想要的:
我想输入连续4帧的球的x和y位置以及球拍的y位置,而不是向网络提供像素数据。所以我总共有12个输入。
我只想奖励一轮中的命中、输球和胜利。
在这种配置下,网络无法聚合,我的代理无法玩游戏。相反,桨叶直接划到顶部或底部,或重复相同的模式。所以我想我试着让探员更容易些,并添加一些信息。在

我做了什么:
状态:

  • 球的x位置(-1到1)
  • 球的y位置(-1到1)
  • 球的归一化x速度
  • 球的归一化y速度
  • 桨叶的y位置(-1到1)

在连续4帧的情况下,我总共输入了20帧。在

奖励:

  • +10如果球拍击中球
  • +100如果特工赢了这一轮
  • -如果探员输了一局
  • -球的预测末端位置(y位置)与当前桨叶y位置之间的距离为5到0
  • +20如果球的预测终点位置在当前的击球范围内(击球是可预见的)
  • -5如果球在球拍后面(不再可能击球)

在这种配置下,网络仍然是分散的。我试着研究学习率(0.1到0.00001)、隐藏层的节点(5到500)、隐藏层的数量(1到4)、批量累加器(求和或平均值)、更新规则(rmsprop或Deepminds rmsprop)。
所有这些都没有产生令人满意的解决办法。损失平均值的图形大部分看起来像this。 您可以下载我当前版本的实现here
如有任何提示,我将不胜感激:)
Koanashi公司


Tags: 网络算法游戏参数神经网络theano速度平均值
1条回答
网友
1楼 · 发布于 2024-04-20 00:25:18

现在重复我从评论中提出的建议作为答案,以便以后其他人更容易看到这个页面(因为我不能百分之百确定这是解决方案,所以先作为评论发布):

减少奖励的幅度,使其位于(或至少接近)[0.0,1.0]或[-1.0,1.0]区间,有助于网络更快地收敛。在

以这种方式改变奖励值(简单地将它们除以一个数,使它们位于一个较小的间隔内)并不会改变网络在理论上所能学到的东西。通过在整个网络中寻找更大的权重,网络也可以简单地学习相同的概念并获得更大的回报。在

然而,学习如此大的权重通常需要花费更多的时间。主要原因是权重通常被初始化为接近0的随机值,因此通过训练将这些值更改为大值需要花费大量时间。因为权重被初始化为较小的值(通常),而且它们离最优权重值非常远,这也意味着在到达最优权重值的过程中存在局部(而不是全局)最小值的风险会增加,而这可能会陷入困境。在

当报酬值较低时,最佳权重值的大小也可能较低。这意味着初始化为小随机值的权重更可能接近其最佳值。这将导致训练时间缩短(非正式地说,旅行的“距离”变短),并且降低了陷入局部极小值的风险。在

相关问题 更多 >