我在Python中有一个简单的简单游戏实现。
游戏规则很简单:
现在我想使用神经网络构建AI
有一个init-Function,一个chooseMove-Function(这里你可以看到上次玩过的敌人卡)和一个gameOver-Function(这里你可以看到游戏的结果)
现在我的问题是:
- >我该如何处理?我是否为不同的动作构建不同的网络(1.移动,2。移动......)或者为所有动作构建一个网络?我将什么定义为输入和输出?如何告诉网络什么是胜利?什么是亏损?
我是否已经为网络做过一些思考? (例如,当你赢得这一轮时,你的牌和敌人牌之间的差异非常小,但如果你松开那一轮,那么差异应该非常大)
我知道这些都是非常基本的问题,也许这表明我对NN的理解并不是很好,但我认为这可以帮助我理解NN的基础知识。
答案 0 :(得分:1)
神经网络可用于分类,其中一些用于回归。如果您想试验NN,则需要以符合上述说明的格式提出问题。此外,NN通常使用固定长度向量作为输入,因此处理游戏的不同轮次将是一个问题。实际上你的简单游戏对于NN来说非常复杂。如果您愿意继续,则需要:
上面的每一点都是复杂的主题,可以写出几百个关于每个主题的页面。
如果你想要一些简单的话,我可以提出另一种选择:编写一个决定扑克玩家应该在开始时弃牌还是加入游戏的NN更接近于典型的NN问题。您的输入是2张牌和扑克桌(6或10)的大小,以保持简单。预计NN将作为输出作出是 - 否决定。这是具有少量参数的分类问题。您需要获得应该记录人类游戏的训练数据。基本逻辑是检查玩家的起手牌是什么,并检查玩家在该游戏中赢得多少钱,该游戏定义了在开始时是否弃牌或加入游戏的预期决定。您可以为此选择RBF网络。定义学习算法并显示训练数据将训练您的NN。您可以选择随机游走作为您的第一种训练方法。训练结束后,你的NN应该能够决定你是否应该用一只手进行比赛。阿尔伯塔大学提供扑克数据库,可用于创建培训数据:
http://poker.cs.ualberta.ca/irc_poker_database.html