Neural network 如何训练安玩纸牌游戏?
我想教安玩,但我被困在如何实际执行训练 一位朋友建议将其用于实际ANN的实现,但我从未使用过它,因此我倾向于自定义实现 我已经编好了规则,我可以让电脑玩游戏,每回合随机选择合法的牌 现在,我不知道将什么作为输入发送给ANN,以及如何提取输出(减少每圈的卡片数量,因此我不能让每个输出神经元成为一张可能的卡片),以及如何进行教学以及何时进行教学 我的猜测是将ANN作为输入:Neural network 如何训练安玩纸牌游戏?,neural-network,Neural Network,我想教安玩,但我被困在如何实际执行训练 一位朋友建议将其用于实际ANN的实现,但我从未使用过它,因此我倾向于自定义实现 我已经编好了规则,我可以让电脑玩游戏,每回合随机选择合法的牌 现在,我不知道将什么作为输入发送给ANN,以及如何提取输出(减少每圈的卡片数量,因此我不能让每个输出神经元成为一张可能的卡片),以及如何进行教学以及何时进行教学 我的猜测是将ANN作为输入: 以前玩过的牌,带有哪个玩家玩过哪张牌的元数据 本回合桌上的卡片也具有相同的元数据 安手中的牌 然后让输出是13个神经元(每
- 以前玩过的牌,带有哪个玩家玩过哪张牌的元数据
- 本回合桌上的卡片也具有相同的元数据
- 安手中的牌
我目前用Swift编程,但它只有200行,我还懂一些其他语言,所以我可以翻译它。首先,你需要为训练ANN创建一些好的学习数据集。如果你的预算允许的话,你可以请一些纸牌专业人士与你分享足够多的他们如何打牌的比赛。另一种生成数据的方法可能是一些玩扑克牌的机器人。然后,您需要考虑如何将比赛数据集表示为神经网络。另外,我建议你不要用卡片的值(0.2,0.3,0.4,…,0.10,0.11(杰克)来表示卡片,而要将它们作为独立的输入。还要寻找可用于这类任务的弹性神经网络。注意,神经网络可能不是最好的选择。在答案的最后,我将首先回答你的问题 现在,我不知道将什么作为输入发送给ANN,以及如何提取输出(减少每圈的卡片数量,因此我不能让每个输出神经元成为一张可能的卡片),以及如何进行教学以及何时进行教学 ANN需要标记的输入数据。这意味着一对
(X,y)
,其中X
可以是与您的问题相关的任何(结构化)数据,y
是您希望ANN为X学习的正确答案的列表
例如,想想你在学校如何学习数学。老师会在黑板上做几个练习,你会把它们写下来。这是你的训练数据
然后,老师会邀请你到黑板前自己做一个。你一开始可能做得不太好,但他/她会指引你正确的方向。这是培训部分
然后,你将不得不自己解决问题,希望已经学会如何解决
问题是,即使是这个简单的例子对ANN来说也太复杂了。ANN通常会接受实数并输出一个或多个实数。因此,它实际上比一个学习ax+b=0
类型方程的小学生要愚蠢得多
对于你的特定问题,很难看出它是如何符合这种格式的。总的来说,它不是这样的:你不能向ANN展示一个游戏并让它学习动作,这太复杂了。你需要向ANN展示一些你有正确数字标签的东西,并且你希望ANN学习基本模式n
要做到这一点,你应该将你的问题分解成子问题。例如,输入当前玩家的牌,并期望输出正确的移动
以前玩过的牌,带有哪个玩家玩过哪张牌的元数据
ANN应该只关心当前的玩家。我不会使用元数据或任何其他识别玩家的信息
给它一个历史记录可能会变得复杂。你可能需要递归神经网络来实现这一点
本回合桌上的卡片也具有相同的元数据
是的,但是再一次,我不会使用元数据
安手中的牌
也很好
确保您有尽可能多的输入单位作为您想要输入的卡的最大数量(手上的卡和表上的卡的总数量为可能的卡的2倍)。这将是一个二进制向量,其中i
th位置为true,如果与该位置对应的卡存在于手上/表上
然后对移动做同样的操作:你将有m
二进制输出单位,如果ANN认为你应该移动i
,那么i
th将为真,其中总共有m
个可能的移动(如果m
取决于游戏的阶段,选择最大值)
你的训练数据也必须采用这种格式。为简单起见,假设在总共5张牌中,最多可以有2张牌在手,2张在桌上,我们可以从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)
我也不知道什么时候教它(在每次回合之后或每场比赛之后),因为拥有所有的点球卡是有益的,但拥有除了一张点球卡以外的所有点球卡是不好的
你应该以我描述的格式收集大量标记的训练数据,进行训练,然后使用它。你需要数千甚至上万场比赛才能看到良好的表现。在每回合或每场比赛后教授它不太可能取得好成绩
这将导致非常大的神经网络。你可以尝试的另一件事是预测谁将在给定的当前游戏配置中获胜。这将非常重要