玩Tic Tac Toe的神经网络不会学习

时间:2016-03-24 23:08:32

标签: neural-network tic-tac-toe backpropagation

我有一个神经网络玩tic-tac-toe。 (我知道还有其他更好的方法,但我想了解NN) 所以NN对抗随机AI。首先,它应该学会做出允许的动作,即。不选择已被占用的领域。

然而,它并没有走得太远。 当NN选择非法移动时,我优化权重,使得到另一个随机选择(合法)字段的距离最小化。 (有一个输出的值应该在1到9之间)。

我的问题是:在改变权重时,以前优化的结果现在也发生了变化。所以我有这种过度拟合:每次我反向传播以优化某一特定情况的权重时,对其他所有情况的决定都会变得更糟![/ p>

我知道我应该有9个输出神经元而不是1个,并且可能不应该使用随机场作为目标,因为我认为这可能会搞砸了。我开始改变这一点。

但问题仍然存在。明显。如何在不忘记其他情况的情况下改善一种情况下的决策? 我想出的一个解决方案就是记住"每场比赛都在所有比赛中同时进行和优化。

然而,一段时间后,这对计算变得非常苛刻。此外,它似乎进入了所有可能的董事会情况的完全控制的方向。对于Tic Tac Toe来说这可能是有可能的,但是如果我转到另一个游戏,说Go,这就变得不可行了。

我的错误在哪里?我如何解决这个问题呢?或者我在哪里可以阅读它?非常感谢!

1 个答案:

答案 0 :(得分:0)

要有效地解决这个问题,你应该考虑强化学习方法,而不是你现在正在做的事情。你要做的是学习扮演Tic Tac Toe的经纪人的行为。当他赢得比赛时,代理人获得高额奖励,当他输掉比赛时获得高额罚款,当他执行非法移动时获得更高的罚款。我的猜测是,即使使用非常简单的神经网络,使用Q-learning和神经网络等方法也能很好地工作。关于这个主题的一篇有用的论文可能是:https://www.cs.toronto.edu/~vmnih/docs/dqn.pdf,或者早期关于TD-Gammon的论文(我想你可以使用关键词TD-Gammon,Q-learning,......轻松找到关于这个主题的教程)。 / p>

顺便说一下,为什么你的模型可能不起作用的一个更实际的答案是你似乎使用一个单位来表示分类输出:如果你想表示1到N之间的整数,你应该使用N输出神经元代表它,其值介于0和1之间,并选择具有最高值的神经元作为答案。使用值介于1和9之间的单个神经元会在输出之间产生无意义的不对称,例如,当预期值为3时,您的网络输出9比2更高的错误。这显然不应该是案例:所有错误答案都同样错误。

希望这有帮助,

最佳