我正在设计一个机器人在多达十名玩家的桌子上玩德州扑克,该设计包括一些前馈神经网络(FFNN)。这些神经网每个都有8到12个输入,2到6个输出,以及1或2个隐藏层,所以我必须优化几百个权重。我通过反向传播进行训练的主要问题是获得足够的训练数据。我在业余时间玩扑克,但还不足以自己收集数据。我已经考虑从扑克网站上购买几百万手,但如果我这样做,我认为我的钱包不会对我很满意......所以,我决定通过设计遗传算法来解决这个问题。我已经看到了使用遗传算法训练使用超级马里奥和俄罗斯方块进行游戏训练的FFNN的例子,但从来没有像扑克这样的游戏,所以我想知道这是否是一种训练我的机器人的可行方法。
/>
首先,让我提供一些背景信息(如果您不熟悉扑克,这可能会让您感到困惑)。我有一个系统,允许机器人将对手放在特定范围的手上,以便相应地做出明智的决定,但它完全依赖于来自三个不同神经网络的准确输出:
NN_1)这决定了对手a)打出他手牌的实际价值的可能性,b)虚张声势,或者c)有可能在以后变得更强的一手牌。
NN_2)这假设对手正在玩他手的实际值并输出可能的力量。它代表来自第一个神经网络的选项(a)
NN_3)这与NN_2完全相同,但假设对手是虚张声势,代表选项(b)。
然后我有一个不使用FFNN的选项(c)的算法。然后根据NN_1的输出组合(a),(b)和(c)的输出以更新我的对手的范围。
每当机器人面临决定时(即应该弃牌,打电话还是加注?),它会根据对手的手牌范围以及他们可能的反应来计算哪个是最有利可图的。不同的下注大小。这是第四个也是最后一个神经网络进入的地方。它根据每个玩家独有的属性和桌子的状态来获取输入,并输出对手折叠,召唤或提升的可能性。
机器人也会有一个侵略的价值(有多大可能是筹码而不是通话)及其开放范围(在翻牌前交易)。这四个神经网络和两个值将在我的遗传算法中定义每一代机器人。
这是我的培训计划:
我将使用10个 n 初始机器人模拟多个大型锦标赛,每个机器人都有随机值。对于前几打比赛,他们将全部放在10桌上。他们将一直玩,直到剩下一个机器人或他们玩,比如1000手。如果他们达到那个手限制,剩余的机器人将立即全押,直到剩下一个。每个表格完成后,最准确的FFNN将被放置在获胜的机器人中,该机器人将进入下一轮(即使包含最佳FFNN的机器人不是获胜者)。获胜的机器人将保留其攻击性和开放范围值。比赛结束时只剩下100个机器人,这些机器人的随机变化将产生下一场比赛的球员。我假设前几场比赛将完全混乱,所以我不想在早期过多地缩小我的选择范围。
如果通过一些奇迹,机器人实际上开发了一个有利可图的,或者至少有些连贯的策略(我将定期检查),我将开始减少机器人之间的变化量。玩扑克的任何人都可以告诉你,不同类型的玩家都有不同的策略。我想确保在整个过程中我有足够的空间来制定不同的策略。然后我可以开发某种“超级机器人”,如果一个人失败,可以在这些不同的策略之间切换。
那么,这种方法有什么明显的问题吗?如果是这样,你会如何建议修理它们?您对加快这一过程或增加成功机会有什么建议吗?我只是想确保我不会浪费数百小时注定失败的事情。此外,如果此网站不是提出此问题的正确位置,请在标记之前将我推荐给其他网站。我真的很感激。谢谢大家!
答案 0 :(得分:0)
对于扑克机器人来说,很难使用ANN。考虑专家系统更好。您可以使用赔率计算器对手部强度进行数值评估,然后使用该专家系统进行资金管理(风险管理)。人工神经网络在其他问题上很好。