-3

我在 Python 中有一个简单游戏的简单实现。

游戏规则很简单:

  • 2 玩家互相对战
  • 每个玩家有 10 张牌
  • 每轮玩家同时出牌
  • 打出更高牌的玩家赢得该回合
  • 当没有牌时,获胜回合数最多的玩家获胜

现在我想用神经网络构建一个人工智能

有一个init-Function,一个chooseMove-Function(这里可以看到敌人最后打卡)和一个gameOver-Function(这里可以看到游戏结果)

现在我的问题是:

-> 我该如何处理?我是为不同的动作构建不同的网络(1. 移动,2. 移动,....)还是为所有事情构建不同的网络?我将什么定义为输入和输出,我如何告诉网络什么是赢,什么是损失?

我是否已经为网络做了一些思考?(例如,当你赢得回合时,你的牌和敌人牌之间的差异很小,但如果你输掉回合,差异应该很大)

我知道这些都是非常基本的问题,也许这表明我对 NN 的理解不是很好,但我认为这可能有助于我理解 NN 的基础知识。

4

1 回答 1

1

神经网络可用于分类,其中一些可用于回归。如果您想尝试使用 NN,您需要以符合上述描述的格式提出问题。此外,NN 通常使用固定长度的向量作为输入,因此处理游戏的不同轮次将是一个问题。实际上,对于 NN,您的简单游戏非常复杂。如果您更愿意继续,您需要:

  1. 将问题定义为分类或选择方式。例如,程序需要从给定的手牌中选择出哪张牌。
  2. 将您的数据标准化为固定长度的向量。
  3. 获取训练数据,例如数据库格式的游戏记录
  4. 创建你的神经网络
  5. 使用重新编码的游戏训练你的神经网络

上面的每一点都是复杂的主题,每一个都可以写几百页。

如果你想要一些简单的东西,我可以提出另一种选择:编写一个决定扑克玩家是否应该在开始时弃牌或加入游戏的神经网络更接近于典型的神经网络问题。您的输入是 2 张牌和扑克桌的大小(6 或 10)以保持简单。NN 预计将做出是或否的决定作为输出。这是一个参数数量较少的分类问题。您需要获取训练数据,这些数据应该是人类玩游戏的记录。基本逻辑是检查玩家的起手牌是什么,并检查玩家在该游戏中赢了多少钱,这定义了在开始时是否弃牌或加入游戏的预期决定。您可以为此选择 RBF 网络。定义学习算法并展示训练数据将训练你的神经网络。您可以选择随机游走作为您的第一种训练方法。训练后,你的神经网络应该能够决定你是否应该用给定的手玩。阿尔伯塔大学提供了一个扑克数据库,可用于创建训练数据:
http://poker.cs.ualberta.ca/irc_poker_database.html

于 2017-02-10T15:38:47.743 回答