【问题标题】:Neural Network playing Tic Tac Toe doesn't learn神经网络玩井字游戏不学习
【发布时间】:2016-03-24 23:08:32
【问题描述】:

我有一个神经网络在玩井字游戏。 (我知道还有其他更好的方法,但我想了解 NN) 因此,NN 与随机 AI 对抗。首先,它应该学会做出允许的动作,即。不选择已被占用的字段。

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

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

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

不过,问题似乎仍然存在。明显地。我怎样才能在一种情况下改进决策而不忘记所有其他情况? 我想出的一个解决方案是“记住”每个玩过的游戏并同时优化所有玩过的游戏。

但是,一段时间后,这对计算的要求就很高了。此外,它似乎朝着全面列举所有可能的董事会情况的方向发展。这对于井字游戏来说可能是可行的,但如果我转向另一款游戏,比如围棋,这将变得不可行。

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

【问题讨论】:

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


    【解决方案1】:

    为了有效地解决这个问题,您应该考虑强化学习方法,而不是您目前正在做的事情。您要做的是学习玩井字游戏的代理的行为。代理人在赢得比赛时获得高额奖励,在输掉比赛时获得高额罚分,在执行非法操作时获得更高的罚分。我的猜测是,即使使用非常简单的神经网络,使用神经网络的 Q-learning 等方法也能完美运行。关于该主题的一篇有用的论文可能是:https://www.cs.toronto.edu/~vmnih/docs/dqn.pdf,或者早期关于 TD-Gammon 的论文(我认为您可以使用关键字 TD-Gammon、Q-learning...轻松找到有关该主题的教程)。

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

    希望这会有所帮助,

    最好的

    【讨论】:

    • 感谢您的回答。
    • 我认为即使一个输出并不理想,NN 也应该能够学会不要总是选择相同的字段,不是吗?无论如何,我已按照您的建议切换到分类。但后来我发现了其他问题。我使用了一个来自 Matlab 的优化函数,它的梯度总是接近于零,因为初始权重设置为零。所以它从未开始优化。因此,我在 NN 中包含了偏差。现在它仍然不能很好地学习,但我正在努力并取得进展。我将阅读有关 Q-learning 的内容。最好的问候,丹尼尔
    猜你喜欢
    • 2017-04-15
    • 2017-06-07
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    • 2019-03-15
    • 2011-08-17
    • 2020-10-29
    • 2010-10-20
    相关资源
    最近更新 更多