人工智能当前,棋牌游戏留给人类的堡垒不多了

AlgorithmDog 2017-07-03

     最近半年在写一个棋牌游戏的规则环境:RoomAI (https://github.com/roomai/RoomAI),目的是为方便自己和他人在棋牌游戏 AI 方面进行一些探索和研究。在 RoomAI 中,玩家获得游戏环境给出的信息,当前玩家程序选择合适的动作,游戏环境根据该动作推进游戏逻辑;重复上述过程,直到分出胜负;整个过程如下所示。

      在开发过程中,查看了一些棋牌游戏相关的资料,在这里分享给大家。

      

1. 棋牌游戏



      之前为了写一个棋牌相关的专利,去查棋牌游戏的定义,发现搜狗百科“棋牌游戏是棋类游戏和牌类游戏的统称”。这和没说有什么区别,囧。但这也说明,棋类游戏和牌类游戏是不同的,它们有其鲜明的特点。棋类游戏是明牌,专业说法是完全信息游戏。典型的棋类游戏有中国象棋、国际象棋和围棋等。牌类游戏是暗牌,专业说法是非完全信息游戏。典型的牌类游戏有斗地主、七鬼五二三、桥牌和德州扑克等。

      另外,棋类游戏的游戏形式比较简单,一般是两位选手一对一对决。牌类游戏的游戏形式多种多样,不仅可以两位选手一对一对决,还可以多位选手博弈,甚至允许或者要求某些选手组成同盟。比如,斗地主有三位选手,两位农民对战一位地主。

      

2. 棋牌游戏和人工智能



      信息是否完全决定一款游戏是棋类游戏还是牌类游戏,也决定了其 AI 算法。

2.1. 基于搜索的棋类游戏 AI

      棋类游戏的典型代表是国际象棋和围棋,它们分别由 DeepBlue[1] 和 AlphaGo[3] 解决。DeepBlue 建立在极大极小值搜索 (max-min search) 基础上。极大极小值搜索在当前局面下展开游戏的树状结构,当前玩家节点选择价值最大的分支(极大), 对手节点选择价值最小的分支(极小), 其流程如下所示。

因为国际象棋复杂度很高,极大极小值搜索不可能搜索到叶子节点(这段关于极大极小搜索的描述参考 [2])。DeepBlue 解决方案是限制搜索深度,超过搜索深度的节点用精心挑选的评估函数计算其价值。DeepBlue 的搜索深度为 12 步棋,而一名人类象棋专家大约搜索10步棋。

      AlphaGo 建立在蒙特卡洛树搜索 (Monte Carlo Tree Search, MCTS) 基础上。 MCTS 的搜索结构是树状结构,如下所示。  

树中每一个节点 s 代表了一个围棋盘面,并带有两个数字。一个是访问次数N(s),另一个质量度Q(s),质量度Q(s)表示这个节点下 AlphaGo 的优势程度。当对手落了一子,AlphaGo 迅速读入当前盘面,将之当作搜索的根节点,展开搜索。MCTS 搜索的流程如下图所示,一共分为四个步骤:

1. 选择
从根节点 R 开始,递归选择某个子节点直到达到叶子节点 L。我们选择子节点不应该乱选,而是应该选择那些优质的子节点。

2. 扩展
如果 L 节点上围棋对弈没有结束,那么可能创建一个节点 C。

3. 模拟
用价值网络和快速走子计算节点 C 的质量度。

4. 反向传播
根据 C 的质量度,更新它爸爸爷爷祖先的质量度。

      上述搜索步骤反复进行,直到达到某个终止条件。搜索结束后,MCTS 选择根节点的质量度最高的子节点作为 AlphaGo 的走法。从上面描述来看,AlphaGo 建立在 MCTS 之殇,机器学习模主要用于减少搜索宽度和减少搜索深度两个方面。策略网络用于使得搜索朝着几个恰当的候选集中,从而减少了搜索宽度。价值网络和快速走子用在评估叶子节点质量度上,使得搜索就不用继续往下搜索,从而减少了搜索的深度。

2.2. 基于博弈论的牌类游戏 AI

      牌类游戏中,选手不知道对手的私有信息,不能确定某个动作之后的状态,从而使用搜索来求解。最近战胜德州顶级人类的 Libratus 是建立在反事实遗憾最小 (CounterFactual Regret Minimization, CRM)[4] 算法之上。 CRM 算法也是将游戏展开搜索。在某一个节点,当前玩家只能使用其知道的信息构建状态,因此会造成不同节点的状态一样。状态一致的不同节点被归了一个信息集合 (Information Set)。

如上图所示,在节点玩家按照上一轮得到的动作选择概率 p(action)^T ,选择动作进入不同分支;搜索不同分支得到不同分支的价值(价值表示胜负、得分和奖励之类的效用);然后按照下面的公式更新。

其中 regret_{action1}^{T} 表示不选择 action1 动作的遗憾值。


       CRM 遍历所有节点,并保存所有状态下不同动作的概率值。即使可以进行一些优化和压缩,CRM 也需要巨大的计算能力和存储空间。这就是为什么 Libratus 开发人员使用匹兹堡超级计算中心(PSC)新升级的超级计算机 Bridges 进行开发。

      另一号称超过人类专家的德州 AI 是 DeepStack [5] 也是用了 CRM, 同时用深度学习模型近似所有状态下不同动作的概率值。

3. 留给人类的堡垒们



      几千年以来,棋牌游戏是人类智力的竞技场。值此人工智能大发展之际,人类用棋牌游戏构建了其中一条保卫人类智力优越感的防线。人类公元 1997 年,国际象棋首先被计算机系统深蓝攻陷,人们开始寄希望于复杂度奇高的围棋; 人类公元 2016 年 3 月,围棋被计算机系统 AlphaGo 攻破,因为国际象棋和围棋是完全信息游戏,人们又寄希望于非完全信息的德州扑克;不想不满一年,2017 年 1 月,计算机系统 Libratus 攻克了德州扑克。这段激动人心的历程是要载入人类(机器人)史的。但在当下,人类在这条防线上还拥有一些堡垒。


      连围棋都被攻克了,完全信息的棋类游戏没有办法再担当人类堡垒之职,我们只能把目光放在牌类游戏中。虽然 Libratus 在德州扑克中超越了人类,但那只是两位选手对局情况。如果是多人对局的德州,我们就没有办法使用 CRM 了,需要设计不同的算法框架。按照 Tuomas Sandholm 教授本人的观点,那就是一个 “totally different story”。更进一步的情况,某些牌类游戏不仅允许多人对局,还允许或者要求某些选手之间合作。比如,斗地主有三位选手,两位农民对战一位地主。再比如桥牌和四国军棋,两位选手组成一队,两队进行对局。这些情况也是现有没有考虑过的问题。

4. 总结



      随着计算机科学与技术的不断发展,人工智能在不同棋牌游戏中超过了人类,但还在一些游戏中探索。基于这个认知,我个人觉得在未来一段时间棋牌游戏依然是一个有意思的点,因此想在上面做一些研究和探索。工欲善其事必先利其器,为了方便自己和他人,我便开始开发 RoomAI (https://github.com/roomai/RoomAI)。RoomAI 的目标是提供一些非完整信息游戏环境,目前已经支持德州和梭哈。

参考文献

[1] Campbell, Murray, A. Joseph Hoane, and Feng-hsiung Hsu. "Deep blue." Artificial intelligence 134.1-2 (2002): 57-83.
[2] 几种智能算法在黑白棋程序中的应用,柏爱俊
[3] Silver, David, et al. "Mastering the game of Go with deep neural networks and tree search." Nature 529.7587 (2016): 484-489.
[4] Neller, Todd W., and Marc Lanctot. "An Introduction to Counterfactual Regret Minimization." (2013).
[5] Moravčík, Matej, et al. "Deepstack: Expert-level artificial intelligence in no-limit poker." arXiv preprint arXiv:1701.01724 (2017).


    本站仅按申请收录文章,版权归原作者所有
    如若侵权,请联系本站删除
    觉得不错,分享给更多人看到

    AlgorithmDog 微信二维码

    AlgorithmDog 微信二维码