我看了this
如何让AI学会从零玩游戏?一个小例子,让我们说人工智能去玩二十一点,打折所有分裂,卡片等等,人工智能可以击中或站立,它不知道它做什么直到当然它开始失去了比赛,它应该知道击球太多会让你输球,所以站得太早。我读到这个叫做强化学习。但我不知道如何实现它,使用什么模块等......
我应该从哪里开始?
我的最终目标是创造一种用户和人工智能游戏的游戏,而不是一对一游戏,而是自己对抗游戏机制[不合作],并且都学会玩它。游戏每隔一段时间就会发生变化,新的机制会让游戏玩家和AI变得更加困难。 AI会通过玩游戏来学习,也可以通过观察玩家赢得输赢来学习。我不想让电脑学得太快,我想让两者都在同一个地面上......也许最终的水平就是玩家可以玩AI了。我去正确的地方还是应该尝试其他方法?
编辑:我认为那太宽泛了。所以我搜索一下ML和AI,我找到了一些可能有用的模块,scikit-learn,PyBrain,neurolab以及RLToolkit。前两个我真的不明白如何开始它,对于像我这样的新手来说,文件是非常不清楚的,我还没有尝试过神经胶囊,因为我还没有真正明白什么是一个人工神经网络[ANN]以及它如何帮助我,最后一个,更具体的强化学习没有任何文档。答案 0 :(得分:4)
虽然这不是一个完整的答案,但基本原则是:
如果结果不可预测,当前状态+可能的移动=结果。因此,对于任何给定的状态(在具有一定数量/组合的牌,可能与其他具有许多未知牌的牌组合,或者自上次洗牌以来已经看过某些牌)的情况下,存在你可以做多少次动作(击中,站立)。然后你会尝试任何一个,并记录是否会给你一个好的或坏的(或介于两者之间)结果。下次当你看到相同的当前状态时,你会看到到目前为止哪种可能的移动给你带来了最好的统计结果(随机性百分比)。
out out
如果您有多个动作,并且直到最后都没有得到实际结果,那么到目前为止您将跟踪所有(状态+尝试移动);一旦得到结果,就将其应用于整个过程中的每一步。
一旦完成,您就可以玩大量的游戏,并且随着游戏的进行它会变得更好。
通常,诀窍是找出构成“国家”的内容。有更多可能的状态,在AI变好之前必须播放的游戏越多,数据库就越大。在二十一点中,你可能只有卡片数量的总和(它给你20个状态)的状态,或者它可能包括其中有多少是aces(我猜,这可能是大约40个州) ;它可能包括其他玩家拥有多少张牌;它可能包括你手中的确切值,但不包括套装(如果你有4个ace,你知道没有其他人有王牌),或者可能包括(无意义地为二十一点)一套牌的订单。
在某些情况下,“状态”可能更抽象。例如,在国际象棋的情况下,有许多可能的“状态”来学习它们,我们必须抽象。我不知道通常用于什么;也许是什么在攻击什么和什么在捍卫什么,有多少方块被多少块覆盖,哪些块被什么等所捍卫;或
您可能还想考虑什么构成“好”和“坏”结果。你可能会认为,对于二十一点来说,一场胜利是好事,一场失利就是坏事,这就是它的全部。然而,有一些事情要避免而不是失败:做出无效的举动。在二十一点的例子中,假设你的AI不知道规则,如果你有任何一只手而不是一对,则分裂是比(可能)失败更糟糕的事情。如果你将其视为“损失”,它最终会获得提示并停止这样做。