gpt4 book ai didi

neural-network - 如何训练 ANN 玩纸牌游戏?

转载 作者:行者123 更新时间:2023-12-04 04:26:34 25 4
gpt4 key购买 nike

我想教一个ANN玩Hearts ,但我被困在如何实际进行培训上。

friend 建议用weka用于实际 ANN 的实现,但我从未使用过它,所以我倾向于自定义实现。

我已经编写了规则,我可以让计算机玩游戏,每回合随机选择合法的牌。

现在我不知道将什么作为输入发送到 ANN 以及如何提取输出(每回合减少卡片数量,所以我不能让每个输出神经元成为可能的卡片)以及如何教它以及何时教它进行教学。

我的猜测是将 ANN 作为输入:

  • 之前打过的牌,以及哪个玩家打过哪张牌的元数据
  • 本回合 table 上的卡片,也具有相同的元数据
  • ANN手中的牌

  • 然后让输出为 13 个神经元(每个玩家的最大牌数),其中我取了仍然在 ANN 手中的最活跃的牌。

    我也不知道什么时候教它(每回合后或每场比赛后),因为拥有所有罚牌是有益的,但只有一张罚牌就不好了。

    任何和所有的帮助表示赞赏。我真的不知道还能把这个问题放在哪里。

    我目前用 Swift 编写了它,但它只有 200 行,而且我知道其他几种语言,所以我可以翻译它。

    最佳答案

    请注意,神经网络可能不是此处使用的最佳选择。更多关于答案的最后,我会先回答你的问题。

    Now I am at a loss of what to send to the ANN as input and how to extract output (decreasing amount of cards each turn, so I can't let each output neuron be a possible card) and how to teach it and when to perform teaching.



    ANN 需要 标记 输入数据。这意味着一对 (X, y)哪里 X可以是与您的问题相关的任何(结构化)数据和 y您希望 ANN 为 X 学习的正确答案列表 .

    例如,想想你将如何在学校学习数学。老师会在黑板上做几个练习,你会写下来。这是您的 训练数据 .

    然后,老师会邀请你到黑板上自己做一个。一开始你可能做得不好,但他/她会引导你走向正确的方向。这是 培训部分 .

    然后,你将不得不自己解决问题,希望已经学会了如何。

    问题是,即使是这个微不足道的例子对于 ANN 来说也太复杂了。 ANN 通常接收实数值并输出一个或多个实数值。所以它实际上比学习 ax + b = 0 的小学生要笨得多。类型方程。

    对于您的特定问题,很难看出它如何适合这种格式。总的来说,它没有:你不能向 ANN 展示游戏并让它学习 Action ,这太复杂了。您需要向它展示一些与您相关的正确数字标签的东西,并且您希望 ANN 学习潜在的模式。

    为此,您应该将问题分解为子问题。例如,输入当前玩家的牌并期望输出正确的移动。

    The cards that have been played previously, with metadata of which player has played which card



    ANN 应该只关心当前的玩家。我不会使用元数据或任何其他信息来识别玩家。

    给它一个历史可能会变得复杂。为此,您可能需要循环神经网络。

    The cards on the table for this turn, also with the same metadata



    是的,但同样,我不会使用元数据。

    The cards in the ANN's hand



    也很好。

    确保您的输入单元与您要输入的卡的最大数量一样多(2 x 总共可能的卡,用于手上的卡和 table 上的卡)。这将是一个二进制向量,其中 i如果对应于该位置的牌在手上/ table 上存在,则第 th 个位置为真。

    然后对移动执行相同的操作:您将获得 m二进制输出单位,其中 i如果 ANN 认为您应该移动,则为真 i ,哪里有 m总共可能的移动(如果 m 取决于游戏中的阶段,则选择最大值)。

    您的训练数据也必须采用这种格式。为简单起见,假设在总共 5 张牌中最多可以有 2 张手牌和 2 张牌在 table 上,我们可以从 2 步中进行选择(例如弃牌和全押)。那么一个可能的训练实例是:
    Xi = 1 0 0 1 0 0 0 0 1 1 (meaning cards 1 and 4 in hand, cards 4 and 5 on table) 
    yi = 0 1 (meaning you should go all in in this case)

    I also don't really know when to teach it (after each turn or after each game), as it is beneficial to have all the penalty cards, but bad to have all but one penalty card.



    您应该按照我描述的格式收集大量标记的训练数据,对其进行训练,然后使用它。您将需要数千甚至数万场比赛才能看到良好的表现。在每个回合或游戏之后教它不太可能做得好。

    这将导致非常大的神经网络。您可能会尝试的另一件事是在给定当前游戏配置的情况下预测谁将获胜。这将大大减少输出单元的数量,使学习更容易。例如,给定当前 table 上和手中的牌,当前玩家获胜的概率是多少?有了足够的训练数据,神经网络就可以尝试学习这些概率。

    有明显的缺点:需要大的训练数据集。没有关于游戏到目前为止如何发展的内存(除非您使用更先进的网络)。

    对于此类游戏,我建议您阅读有关强化学习或特定游戏的专用算法的内容。例如,教 ANN 下棋不会有太多运气,而且我怀疑您会教它玩纸牌游戏。

    关于neural-network - 如何训练 ANN 玩纸牌游戏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31844298/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com