当地时间 1 月 11 日,在宾夕法尼亚州匹兹堡的 Rivers 赌场,由卡耐基梅隆大学(CMU)开发的名为 Libratus 的人工智能系统将与人类顶级职业德州扑克玩家进行 20 万美元的比赛。然而 CMU 并不是唯一一个在研究如何让人工智能学习玩扑克牌的地方,近日,加拿大阿尔伯塔大学、捷克布拉格查理大学和捷克理工大学的研究者联合发表了一篇论文,表示其人工智能已经在无限制扑克(No-Limit Poker)游戏上达到了专家级的水平。点击阅读原文可下载该论文。
摘要
近些年来,人工智能领域出现了很多突破,其中游戏往往被用作重要的里程碑。过去实现那些成功的游戏的一个常见的特征是它们都涉及到玩家之间的信息对称,即所有的玩家都获取了相同的信息。然而和游戏相比,这种完美信息(perfect information)的性质在真实世界问题中却少见得多。扑克是一个典型的不完美信息(imperfect information)游戏,而且其一直以来都是人工智能领域内的一个难题。在这篇论文中,我们介绍了 DeepStack,这是一种用于扑克这样的不完美信息环境的新算法。它结合了回归推理来处理信息不对称性,还结合了分解(decomposition)来将计算集中到相关的决策上,以及一种形式的关于任意牌的直觉——该直觉可以使用深度学习进行自我玩牌而自动学习到。在一项涉及到数十位参与者和 44000 手扑克的研究中,DeepStack 成为了世界上第一个在一对一无限制德州扑克(heads-up no-limit Texas hold'em)上击败了职业扑克玩家的计算机程序。此外,我们还表明:和已经被人亲睐了十多年的抽象范式(abstraction paradigm)相比,这种方法能够极大地减少最糟糕情况的 exploitability 值。
DeepStack
DeepStack 是一种可用于一个很大类别的序列不完美信息博弈(sequential imperfect information games)的通用算法。为了明晰这个算法,我们将会在 HUNL 游戏中描述其运算。一个扑克游戏的状态可以被分成玩家的私有信息(两张牌面朝下的手牌)和公共状态(包括牌面朝上的牌和玩家采取的下注动作序列)。游戏中的公开状态的可能序列构成一个公开树(public tree),其中每一个公开状态都有一个相关的公开子树(public subtree)。
图 1:HUNL 中公开树的一部分。红色和天蓝色的边表示玩家动作。绿色边表示公开的公共牌。带有筹码的叶节点表示游戏结束,其中,如果一个玩家根据之前的动作和玩家手牌的联合分布而弃牌或做出决定,那么收益就可能是固定的。
图 2:DeepStack 架构概览(见 a)。对于每一个公开状态,DeepStack 都要重新计算它需要的动作,这会用到一个深度有限的向前预测——其中子树值(subtree value)会通过一个训练好的深度神经网络 Neural net(见 b)来计算,该深度神经网络 Neural net 是比赛前通过随机生成的扑克情境(见 c)来训练的。图 2 是由专业图形设计师设计,和图 3 的风格类似。
图 3:深度反事实价值网络(Deep counterfactual value networks)。该网络的输入包括底池大小、公共牌、手牌范围(player ranges),这些首先会被处理成 bucket ranges。来自这 7 层全连接隐藏层的输出还要经过后处理(post-processed),从而保证该值(values)满足零和约束(zero-sum constraint),然后这些值又会回过来被映射为 hand counterfactual values。
©本文由机器之心编译,转载请联系本公众号获得授权。
✄------------------------------------------------
加入机器之心(全职记者/实习生):[email protected]
投稿或寻求报道:[email protected]
广告&商务合作:[email protected]