DeepStack是一个人工智能计算机程序,旨在玩双人扑克,特别是单挑无限注德州扑克。它是第一个在此游戏中击败人类职业选手的计算机程序。该程序由来自查理大学、捷克理工大学和阿尔伯塔大学的国际团队开发。
背景
扑克是学术界的一个关键基准游戏,已有大量研究致力于寻找针对最坏情况对手的最优策略。虽然人类职业选手在大型完美信息游戏中早已被击败,例如国际象棋,但非完美信息游戏需要更复杂的递归推理。此前流行的主要方法依赖于通过抽象来简化游戏。然而,非完美信息游戏中的抽象往往导致高度可利用的策略。相反,DeepStack使用了多种算法创新,例如使用神经网络和持续求解。
算法
该程序的核心是使用神经网络来确定特定牌组合的价值。这些网络仅在一小部分游戏状态上进行训练,并用于泛化到训练中未见过的情境。程序使用带有神经网络的搜索和持续求解,以确保每一步找到的策略与先前步骤中使用的策略一致。搜索过程使用反事实遗憾最小化在展望树中迭代更新策略,而神经网络用于叶节点评估。叶节点评估通过将超过一定深度的计算替换为快速近似估计,避免了对整个游戏剩余部分的推理。
2016年与职业选手的比赛
在2016年12月完成的一项研究中,DeepStack通过进行44,000手扑克击败了11名职业扑克选手。在所有进行的游戏中,DeepStack每100手赢得49个大盲注(总是弃牌每100手只会输75个大盲注),超过零的四个标准差,使其成为第一个在单挑无限注德州扑克中击败职业扑克选手的计算机程序。这一结果是人工智能研究中的一个重要里程碑,证明了AI能够处理非完美信息游戏的复杂性。
竞争方法
与DeepStack同时,来自卡内基梅隆大学研究小组的一种竞争方法被发表,称为Libratus。2017年1月11日至31日,Libratus在一场锦标赛中与四名顶级人类扑克选手对决。该算法也发表在《科学》杂志上。Libratus不使用神经网络进行叶节点评估。专家认为,使用神经网络进行学习(如DeepStack所做)更为通用,并且确实在后续推广到其他非完美信息游戏的著作中得到了使用。这一区别凸显了DeepStack方法在机器学习领域中的更广泛适用性。
扑克社区的反馈
爱尔兰职业扑克选手Dara O'Kearney完成了456手牌,声称DeepStack的玩法风格类似于一些人类选手基于博弈论所采用的风格。该程序的成功被视为深度学习技术在战略决策中潜力的验证,并激发了将类似方法应用于其他领域的进一步兴趣。
参见
- 计算机扑克选手
- Cepheus(扑克机器人)
- Libratus
- Pluribus(扑克机器人)