我有一个前馈神经网络,他的目标是学习如何玩游戏(例如,连接4)。我想通过与自己玩游戏来训练我的神经网络。
我的问题是,我不知道如何训练我的神经网络。如果我有另一个好的算法确定给定电路板的最佳移动,那么在我看来,它会更容易,但我不想这样使用。
所以,我不知道移动是否是一个好动作,我只知道哪个玩家获胜(神经网络玩两个玩家,但我知道它是第一个还是第二个获胜者),以及比赛中的动作。
目前,我在Go中编写了一个初始化神经网络的程序,可以检查连接4的板是否胜出,根据电路板计算神经网络的输出,你可以对抗神经网络网络,或者让它与自己对抗。对我来说,我只需要一个在游戏结束时训练我的神经网络的功能? 我做了什么:https://github.com/Julien2313/connectFour
答案 0 :(得分:3)
要使用神经网络(或实际上任何监督学习方法)进行自主游戏,您需要确定算法可以学习的数值或分类值。
一个可能的解决方案是将游戏状态映射到操作。另一种方法是将游戏状态映射到得分。但在某些游戏中,这些可能无法学习(Connect 4没有得分),或者数据可能无法获得。在这种情况下,有监督的学习算法不能(或者至少不应该)使用。
另一个机器学习框架称为强化学习,可以非常优雅地处理这个问题。您可以训练算法在整个游戏中选择移动(或动作),而不是在算法(代理人)获胜时提供1,如果代理人丢失则提供-1,而不是为神经网络提供标记数据。
此框架中最流行的算法(尽管可能不是最好的)是Q-Learning。实际上,将Q-Learning与深度神经网络结合起来以发挥难以置信的挑战性游戏是很常见的。这与Google的Deepmind大致相同,包括David Silver曾经在Go上击败Lee Sedol。
我建议对Richard Sutton的Reinforcement Learning: An Introduction进行一项研究,以便更多地了解这个主题,但是为了更快的学习体验,维基百科的Q学习文章可能就足够了。