我有一个前馈神经网络,他的目标是学习如何玩游戏(例如,连接4)。我想通过与自己玩游戏来训练我的神经网络。
我的问题是,我不知道如何训练我的神经网络。如果我有另一个好的算法可以确定给定板的最佳移动,那么在我看来,这会更容易,但是我不想使用这种方式。
因此,我不知道一个举动是否是一个好举动,我只知道哪个玩家赢了(神经网络同时赢得了两个玩家,但我知道是第一个还是第二个玩家赢了),而且这些举动也发挥了作用在比赛中。
此刻,我在Go中编写了一个程序来初始化神经网络,可以检查连接4板是否获胜,根据该板计算神经网络的输出,然后可以与神经网络进行对抗,或者让它与自己抗衡。对我来说,我只需要一个在比赛结束时训练我的神经网络的功能?我做了什么:https : //github.com/Julien2313/connectFour
要将神经网络(或实际上是任何有监督的学习方法)用于自主游戏,您需要确定算法可以学习的数值或分类值。
一种可能的解决方案是将游戏状态映射到动作。另一个方法是将游戏状态映射为得分。但是在某些游戏中,可能无法学习这些内容(Connect 4没有分数),或者可能无法轻松获得数据。在这种情况下,不能(或至少不应)使用监督学习算法。
存在另一个称为“强化学习”的机器学习框架,该框架可以非常优雅地处理此问题。您可以训练算法来选择整个游戏中的移动(或动作),而不是提供带有标记数据的神经网络,如果算法(代理)获胜,则仅提供1;如果代理丢失,则提供-1。
Q-Learning是此框架中最受欢迎的算法(尽管可能不是最好的)。实际上,将Q学习与深度神经网络相结合来玩具有挑战性的游戏是很常见的。这与Google的Deepmind(包括David Silver)在Go上击败Lee Sedol的设置大致相同。
我建议对Richard Sutton的《强化学习:简介》进行研究,以了解更多有关该主题的知识,但是对于更快的学习体验,Wikipedia的Q学习文章可能就足够了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句