-2

我读了这个

如何让 AI 从零开始学习玩游戏?举个小例子,假设 AI 去玩二十一点,打折所有的分牌,牌组中的牌等等,AI 要么打要么站,它不知道自己做了什么,直到它开始失去游戏,它应该知道打得太多会输,站得太早也是如此。我读到这叫做强化学习。但我不知道如何实现它,使用什么模块等等......

我应该从哪里开始?

我的最终目标是创造一种用户和人工智能玩的游戏,不是互相对抗,而是自己对抗游戏机制[不是合作],并且都学习玩它。游戏每隔一段时间就会发生变化,新的机制会出现,让游戏对玩家和 AI 来说都更难。人工智能既可以通过玩游戏来学习,也可以通过观察玩家输赢来学习。我不想让计算机学得太快,我想让两者都在同一个“地面”上……也许最后一个关卡是玩家可以对抗 AI。我是去正确的地方还是应该尝试其他方法?

编辑:我认为这太宽泛了。所以我搜索了一些关于 ML 和 AI 的信息,我发现了一些可能有帮助的模块,scikit-learn、PyBrain、neurolab 和RLToolkit。前两个我并没有真正理解如何开始它,对于像我这样的新手,neurolab 我还没有尝试过,因为我没有真正理解什么是人工神经网络,所以文档非常不清楚[ ANN] 以及它如何帮助我,最后一个更具体到强化学习没有任何文档。

4

1 回答 1

4

虽然这不是一个完整的答案,但基本原则是:

在结果不可预测的情况下,当前状态 + 可能的移动 = 结果。因此,对于游戏的任何给定状态(在具有一定数量/组合的牌的情况下,可能与其他具有许多未知牌的牌组合,或自上次洗牌以来已经看到的某些牌),有一个您可以做的可能动作的数量(击打、站立)。然后,您将尝试其中任何一种,并记录这是否会给您带来好或坏(或介于两者之间)的结果。下次您看到相同的当前状态时,您会看到迄今为止哪个可能的举动给了您最好的统计结果(随机性百分比)。

出在哪里

如果您有多个动作,并且直到最后都没有得到实际结果,那么您将跟踪到目前为止的所有(状态+尝试过的动作);一旦你得到一个结果,你就会把它应用到一路上的每一步。

完成此操作后,您可以让它玩大量游戏,并且它应该会变得更好。

诀窍通常是弄清楚什么构成了“状态”。可能的状态越多,在人工智能变得好之前必须玩的游戏越多,你的数据库就会越大。在二十一点中,您的状态可能只是牌数的总和(这给了您 20 个状态),或者它可能包括其中有多少是 A(我猜,这可能给您大约 40 个状态) ; 它可能包括其他玩家有多少张牌;它可能包括你手中的确切值,但不包括花色(如果你有 4 个 A,你知道没有其他人有 A),或者可能包括(对于二十一点毫无意义)订购一副牌。

在某些情况下,“状态”可能更抽象。例如,在国际象棋的情况下,有许多可能的“状态”来学习它们,我们必须抽象。我不知道这通常用于什么;也许什么在攻击什么,什么在防守什么,有多少棋子覆盖了多少个方格,哪些棋子被什么防御了等等;或者

您可能还想考虑什么是“好”和“坏”的结果。您可能会认为,对于二十一点,赢是好的,输是坏的,仅此而已。但是,除了失败之外,还有一些事情需要避免:做出无效的举动。在二十一点的例子中,假设你的 AI 不知道规则,如果你有任何手牌而不是对子,分牌是比(可能)输球更糟糕的事情。如果您将此视为“损失”,它最终会得到提示并停止这样做。

于 2014-05-08T01:53:14.387 回答