我正在编写一个多层感知器神经网络来玩双人纸牌游戏。我想知道是否有更好的方法来优化权重,而不是测试具有随机重生权重的神经网络。
这是我实施神经网络的方式。
有一个警告。我希望神经网络找到最佳策略,所以我无法在单个转弯时进行训练。相反,我必须让它发挥,直到它获胜或失败,并且大约50转。 我想知道在这种情况下训练的最佳方法是什么,其中一个人不知道每个回合的正确响应,但只知道在多次NN评估之后问题是否得到了正确解决,即它赢得了比赛。 / p>
目前,我只想到了一种简单的进化方法,其中一组随机生成的NN多次相互竞争,并且一些最成功的NN仍然用于下一轮,其中NN是没有通过被其他随机的替换。我看到的问题是,在这种方法中,权重需要很长时间才能开始收敛。但由于胜利的比例是许多权重的函数(我预计需要几百个才能正确地模拟问题),这对NN输出有非常非线性的影响,我不知道我是怎么做的。可以使用函数最小化技术。
有没有人知道这个权重优化问题是否会更适合蒙特卡罗技术以外的任何其他问题?
答案 0 :(得分:1)
我认为这取决于您的纸牌游戏。一般来说,我认为你的陈述是错误的:
有一个警告。我希望神经网络找到最佳策略,所以我无法在单个转弯时进行训练。
应该有可能找到一种方法来训练你的网络单独转弯。例如,如果两个玩家可以在每个回合中进行相同的精确移动,则可以根据获胜者在每个回合中所做的操作来训练失败者网络。不可否认,对于大多数纸牌游戏而言可能并非如此,其中给定回合的动作组通常由每个玩家持有的牌决定。
如果您正在玩扑克游戏,请查看this。我们的想法是根据您认为足够好学习的玩家的历史来训练您的网络。例如,如果您有关于您最喜欢的(扑克)玩家游戏的大量数据,您可以训练神经网络来了解他们的动作。然后,在新游戏的每个回合中,做神经网络告诉你做的事情,因为它之前的训练和你在那个回合中可用的数据:你拿着什么牌,牌桌上有什么牌,什么牌你知道你的对手要等等。
你也可以考虑reinforcement learning,它可以使用神经网络,但是基于不同的想法。这可能有助于您处理“无法轮流训练”问题,而无需培训数据。