我出于个人的好奇心而想要学习,一直在玩神经网络。到目前为止,它取得了成功。我已经从头开始编写了一个代码,用于训练的反向传播,并训练它来玩tic-tac-toe(输出3x3矩阵,在正在播放的空位中具有最高值)。除了旨在允许多个隐藏图层之外,它基于this example。
训练数据是一个随机生成的游戏中期情况,为了监督学习,我手工编写了一个算法,用于对可能的动作进行排序,以作为“正确”的答案。经过几千次的训练后,它可以很好地完成最佳动作并且可以很好地打出整场比赛(有利于在中心打开,而在完美的比赛中你可以选择角球,但无论如何)。
无论如何,这一切都很好,但是对于训练来说,它需要我创建一个特定的算法来为任何给定的游戏排序每个动作,这很容易导致tic-tac-toe非常简单,但这不是不太实际。我的下一个里程碑,就是能够在赢或输游戏的基础上训练它。然而,这需要它记住一系列动作,然后不仅仅通过神经元反向传播训练,而是在游戏结束后进行一系列动作。我只是不知道从哪里开始,即使指向正确的方向也会有所帮助。