Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python AI学习的最佳/最简单模块?_Python_Machine Learning_Reinforcement Learning - Fatal编程技术网

Python AI学习的最佳/最简单模块?

Python AI学习的最佳/最简单模块?,python,machine-learning,reinforcement-learning,Python,Machine Learning,Reinforcement Learning,我读 如何让AI从零开始学习玩游戏?举个小例子,让我们假设AI玩21点,打折所有的分割,牌组中的牌等等,AI可以打或站,它不知道它做什么,直到它开始输掉比赛,它应该知道打得太多会让你输,站得太早也会输。我读过这篇文章,叫做强化学习。但我不知道如何实现它,使用什么模块等等 我应该从哪里开始 我的最终目标是创造一种游戏,让用户和人工智能玩,而不是一个对抗另一个,而是两个对抗自己的游戏机制[不是合作],并且都学习玩它。游戏每隔一段时间就会改变一次,新的机制会出现,使玩家和人工智能的游戏变得更加困难。人

我读

如何让AI从零开始学习玩游戏?举个小例子,让我们假设AI玩21点,打折所有的分割,牌组中的牌等等,AI可以打或站,它不知道它做什么,直到它开始输掉比赛,它应该知道打得太多会让你输,站得太早也会输。我读过这篇文章,叫做强化学习。但我不知道如何实现它,使用什么模块等等

我应该从哪里开始

我的最终目标是创造一种游戏,让用户和人工智能玩,而不是一个对抗另一个,而是两个对抗自己的游戏机制[不是合作],并且都学习玩它。游戏每隔一段时间就会改变一次,新的机制会出现,使玩家和人工智能的游戏变得更加困难。人工智能既可以通过玩游戏来学习,也可以通过观看玩家输赢来学习。我不想让电脑学习得太快,我想让两者都在同一个“场地”……也许最后一个关卡是玩家可以与AI对抗。我是去对地方了还是应该尝试其他方法


编辑:我觉得这太宽泛了。所以我搜索了一下ML和AI,找到了一些可能有用的模块,scikit learn,PyBrain,neurolab,还有。前两个我没有真正理解如何开始,文档对于像我这样的新手来说非常不清楚,neurolab我还没有尝试过,因为我没有真正理解什么是人工神经网络[ANN],它如何帮助我,最后一个,强化学习没有任何文档。虽然这不是一个完整的答案,但基本原则是:

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

你的车出在哪里

如果你有多个动作,直到最后你才得到一个实际的结果,你会记录到目前为止的所有动作(状态+尝试的动作);一旦你得到一个结果,你就把它应用到每一步

一旦这样做了,你就可以让它玩大量的游戏,而且它应该会越来越好

通常,诀窍是找出什么构成“国家”。可能的状态越多,在AI变得好之前需要玩的游戏就越多,你的数据库也就越大。在21点游戏中,你可能有一个状态,它只是卡的数量之和(这给了你20个状态),或者它可能包括其中有多少是a(这给了你,我猜,也许,大约40个状态);它可能包括其他玩家有多少张牌;它可能包括你手里有哪些值,但不包括那套牌(如果你有4张a,你知道没有其他人有a),或者可能包括(对21点来说毫无意义)一套牌的顺序

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


你可能还想考虑什么构成“好”和“坏”的结果。你可能会认为,对于21点来说,赢是好的,输是坏的,这就是一切。然而,除了失败之外,还有一些事情需要避免:做出一个无效的举动。在21点的例子中,假设你的AI不知道规则,如果你有一只手而不是一对手,那么分开比失去(可能)更糟糕。如果你认为这是一个“损失”,它最终会得到提示并停止这样做

我不想这么说,但我认为这个问题太广泛了,无法有效解决StackOverflow。这根本不是一个答案,但你可能会发现“从头开始”这个短语比“从零开始”更常用-也许这会帮助你找到更多的资源。