如何训练神经网络玩2048游戏?

jirinovo

我想训练神经网络玩2048游戏。我知道对于诸如2048之类的状态游戏,NN并不是一个不错的选择,但是我想实现,NN将像有经验的人一样玩游戏,即仅在三个方向上移动磁贴。

但我无法弄清楚如何自训练NN,因为我们不知道有效的输出。通常,例如在回归中,您知道正确的输出,并且可以计算损失(例如,均方误差)并更新权重。但在2048年有效输出基本上是未知的(当然你可以计算你可以移动各个方向,例如,与最高相差方向的比分score_after_move - previous_score将是我们有效的输出,但我认为这是没有办法的办法,以自我学习NN )。那么可以为2048游戏定义损失函数吗?最好的是与众不同。

下一个问题是何时更新权重:在每个动作之后或更确切地说在一个完整的游戏(游戏结束)之后?

如果是很重要的:我的NN拓扑结构将是现在简单:

2D matrix of gaming board -> 2D matrix of input neurons -> 2D fully-connected hidden layer -> 1D 4-neuron layer

因此,每个图块将输入到第一层中的相应神经元(2D全连接层是否有特殊名称?)。来自最后一层的预期输出是长度为4的向量,例如[1、0、0、0]将为“向上”移动方向。

现在我已经实现了2048场比赛无头类(在Python / NumPy的),因为使用视觉输入很慢,也更多的工作要做。

PS也许我错误地想着NN学习这个游戏(或游戏一般)。随时给我一个更好的办法,我会理解。谢谢 :)

编辑:强化学习似乎是这样。以下是一些有用的链接:

揭开深度强化学习的神秘面纱

行动价值方法和n型武装匪徒问题

Q-学习Keras

Keras的深度强化学习

jirinovo

所以https://github.com/matthiasplappert/keras-rl似乎是最好的办法。您只能落实OpenAI健身环境API定义的一些方法。这些都是step()reset()方法:https://github.com/matthiasplappert/keras-rl/blob/master/rl/core.py#L330

欲了解更多信息有来自一个答案keras-rl开发商:https://github.com/matthiasplappert/keras-rl/issues/38

当我2048游戏AI项目将完成,我将链接发送给源在这里(如果我不会忘记这样做:))

编辑:这里是承诺链接到源,完全忘记了它:/ https://github.com/gorgitko/MI-MVI_2016

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章