【问题标题】:Understanding Neural Network Basics on small Game example了解小游戏示例中的神经网络基础知识
【发布时间】:2017-06-28 17:19:41
【问题描述】:

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

游戏规则简单:

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

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

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

现在我的问题是:

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

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

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

【问题讨论】:

    标签: neural-network artificial-intelligence game-ai


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我不能真正选择它作为正确答案,但我认为我的问题没有正确答案,所以..但非常感谢您的解释以及您提出的想法!我会多考虑一下我的问题,然后我可能会换一个更简单的:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-07
    • 1970-01-01
    • 2017-07-25
    • 1970-01-01
    • 2020-09-29
    • 1970-01-01
    相关资源
    最近更新 更多