用游戏来实验是更好理解人工智能的方法。近年来,AI已经在诸多游戏实验中取得了令人瞩目的成就。
围棋、象棋……此类游戏都具有完美信息属性。德州扑克则不然,德扑围绕每手随机拿到两张个人牌的玩家们进行演变,涉及玩法策略和更深层次的技能,完全以人为本。每手牌都要进行4轮下注,每一轮,荷官都会展示新的公共牌,和玩家手里的牌组合在一起;玩家可以在任何一轮选择弃牌或加注……德扑玩法的重点是玩家如何下注、何时下注。“下注”可以用来误导对手接下来的行为,复杂多变的玩法让牌桌上的局势时刻变幻莫测。最后一轮下注后,玩家亮牌,以便查看谁的分数最高。
目前,AI在德扑方面的探究主要基于博弈论,无论对手选择哪个策略,AI系统都旨在搜寻一个能保证自己不产生损失的策略。
以前扑克游戏的算法一般都试图提前制定出策略,通过计算大规模的「决策树」而找到游戏可能展开的不同方式及其所有解决方案。但是这种算法所寻找到的展开可能性数量是十分巨大的,要将这 10的160 次方可能性进行映射是不可能的。所以研究者都试图找到“使用更少的可能性来解决问题”的方法。
使用神经网络锻炼“直觉”的DeepStack
DeepStack是AI 扑克届的另一个明星AI。DeepStack 是一种新型通用算法,可用于一大类非完整信息的序列博弈。DeepStack是由阿尔伯塔大学的计算机科学家主持开发的, 参与项目的还有捷克查尔斯大学和布拉格捷克理工大学的专家们。
DeepStack 和 Libratus 都找到了在牌局对弈中,实时计算解决方案的方法。事实上,DeepStack击败职业德扑选手的时间更早于 Libratus 。
DeepStack的技术方法非常有趣,DeepStack 会在游戏的每一个节点重新计算一小段可能性的子树,而不是提前算出整个决策树。游戏的每个状态(翻牌前,翻牌等)都使用了单独的神经网络,这意味着每个游戏状态都需要完全不同的视角。最重要的是,DeepStack通过生成子树来表示所有可能的反事实值,从而构建了非常明确的神经网络目标值。一场扑克的信息可以分为“私有”和“公开”,放在桌子中间的5张公开牌形成一种动态的“公开状态”。游戏中的公开状态的可能序列构成一个公开树(Public tree),其中每一个公开状态都有一个相关的公开子树(Public subtree)。
换句话说,AI制定了下一轮牌区的每个可能结果,并且随着时间的推移,对特定情况下的具体行动决策会更加快速明确。
DeepStack的神经网络是通过数千万手随机生成的牌训练而成的。其中包括随机公共牌、随机手牌和随机的底池等。这些随机的部分共包含七个完全链接的隐藏层级。这使得 DeepStack 在游戏中获得一种在某个给定点掌握获胜可能性的“直觉”,从而 DeepStack 可以在相对较短的时间内(大概5秒)进行更少可能性的计算,并作出实时决策。
比如有时玩家采取“诈唬”(Bluffing),对手有时手里并没有大牌,但还是作出全额下注志在必得的行为,计算机这时要根据对方过去的博弈表现,来判断对手有大牌的概率。
职业牌手正在拥抱AI
对于一部分职业玩家来说,他们已经开始使用AI来提升和训练自己的比赛水平。
在DeepStack的评估阶段,研究人员与国际扑克联合会合作,招募了来自17个国家的33名职业选手参与了44852场比赛。DeepStack的平均赢率为492 mbb/g,DeepStack在获胜优势上非常明显。一般人类玩家到50 mbb/g就被认为拥有较大优势,750mbb/g 则是对手每局都弃牌的赢率。
Pratibha Arya 是一名印度女职业玩家,拥有计算机科学的硕士学位。她从2015年开始对德扑产生极大的兴趣。在结束硕士学习以后,她拒绝了跨国公司的聘用,将职业牌手作为自己的第一选项。在“Deepstack”的公开测试阶段,Arya就曾在曼谷举行的亚洲国家挑战赛中与Deepstack对战。
Pratibha Arya 每天花费9~12个小时用于德扑的训练与学习。时隔三年,她已取得很大的进步与成就,多次代表印度参与大型德扑比赛。Arya 这样的新兴职业牌手,相信德扑需要大量的研究和学习,德扑不是单纯的机会游戏。玩家需要具备强大的战略技能,并且需要通过不断的练习和学习来掌握游戏内涵。
显然在德扑的训练中,AI能成为极佳的帮手。尽管目前扑克AI只能完成一对一的比赛,但是这对于牌手来说,扑克AI是一个了解自我漏洞的好工具,掌握更多的策略、了解自己为什么会被淘汰出局,这是职业牌手们积极拥抱扑克AI的充足理由。
本文编译、转载于网络公开来源。并不代表AIPoker的官方观点。
编译来源:
https://opendatascience.com/ai-defeat-texas-holdem-poker/