GitHub|快手开源斗地主AI,入选ICML,能否干得过「冠军」柯洁?

机器之心报道
机器之心编辑部

AI 打斗地主 , 除了信息不完全 , 还要学会合作与竞争 。
众所周知 , AI 在围棋上的实力是人类所不能及的 。 不过斗地主还不一定 。 在 2017 年 AlphaGo 3 比 0 战胜中国棋手 , 被授予职业九段之后 , 柯洁决定参加斗地主比赛 , 并获得了冠军 。 在当时的赛后采访中 , 柯洁表示 , 「很欢乐 , 希望以后再多拿一些冠军 , 无论什么样的冠军都想拿!」
但是好景不长 , 在这种随机性更高的游戏上 ,AI 紧随而至 。
近日 , 快手 AI 平台部的研究者用非常简单的方法在斗地主游戏中取得了突破 , 几天内就战胜了所有已知的斗地主打牌机器人 , 并达到了人类玩家水平 。 而且 , 复现这个研究只需要一个普通的四卡 GPU 服务器 。
GitHub|快手开源斗地主AI,入选ICML,能否干得过「冠军」柯洁?
文章图片

随着斗地主 AI 的不断进化 , 人(Ke)类(Jie)的斗地主冠军宝座不知还能否保住 。
GitHub|快手开源斗地主AI,入选ICML,能否干得过「冠军」柯洁?
文章图片

人工智能在很多棋牌类游戏中取得了很大的成功 , 例如阿尔法狗(围棋)、冷扑大师(德州扑克)、Suphx(麻将) 。 但斗地主却因其极大的状态空间、丰富的隐含信息、复杂的牌型和并存的合作与竞技 , 一直以来被认为是一个极具挑战的领域 。
近日 , 快手 AI 平台部在斗地主上取得了突破 , 提出了首个从零开始的斗地主人工智能系统——斗零(DouZero) 。
比较有趣的是 , 该系统所使用的算法极其简单却非常有效 。 团队创新性地将传统的蒙特卡罗方法(即我们初高中课本中常说的「用频率估计概率」)与深度学习相结合 , 并提出了动作编码机制来应付斗地主复杂的牌型组合 。
GitHub|快手开源斗地主AI,入选ICML,能否干得过「冠军」柯洁?
文章图片

该算法在不借助任何人类知识的情况下 , 通过自我博弈学习 , 在几天内战胜了所有已知的斗地主打牌机器人 , 并达到了人类玩家水平 。 相关论文已被国际机器学习顶级会议 ICML 2021 接收 , 论文代码也已开源 。 同时 , 论文作者开放了在线演示平台供研究者和斗地主爱好者体验 。
GitHub|快手开源斗地主AI,入选ICML,能否干得过「冠军」柯洁?
文章图片

  • 论文链接:https://arxiv.org/abs/2106.06135
  • GitHub 链接:https://github.com/kwai/DouZero
  • 在线演示:(电脑打开效果更佳;如果访问太慢 , 可从 GitHub 上下载并离线安装:https://github.com/datamllab/rlcard-showdown)
在线演示支持中文和英文 。 使用者可以选择明牌 / 暗牌 , 并可以调节 AI 出牌速度 。 在明牌模式下 , 用户可以看到 AI 预测出的最好的三个牌型和预计胜率 。
GitHub|快手开源斗地主AI,入选ICML,能否干得过「冠军」柯洁?
文章图片

让 AI 玩斗地主难在哪儿?
一直以来 , 斗地主都被视为一个极具挑战性的领域 。 首先 , 与许多扑克游戏和麻将一样 , 斗地主属于非完美信息游戏(玩家不能看到其他玩家的手牌) , 且包含很多「运气」成分 。 因此 , 斗地主有非常复杂的博弈树 , 以及非常大的状态空间(每个状态代表一种可能遇到的情况) 。 除此之外 , 相较于德州扑克和麻将 , 斗地主还有两个独特的挑战:
  • 合作与竞争并存:无论是德州扑克还是麻将 , 玩家之间都是竞争关系 。 然而 , 在斗地主中 , 两个农民玩家要相互配合对抗地主 。 虽然过去有论文研究过游戏中的合作关系 [1] , 但是同时考虑合作和竞争仍然是一个很大的挑战 。
  • 庞大而复杂的牌型:斗地主有复杂的牌型结构 , 例如单张、对子、三带一、顺子、炸弹等等 。
它们的组合衍生出了 27,472 种牌型 [2]:
GitHub|快手开源斗地主AI,入选ICML,能否干得过「冠军」柯洁?
文章图片

在强化学习里 , 这些牌型被称为动作空间 。 作为对比 , 这里列举出了常见强化学习环境及棋牌类游戏的动作空间大小:
GitHub|快手开源斗地主AI,入选ICML,能否干得过「冠军」柯洁?
文章图片

虽然无限注德州扑克本身有与斗地主有相同数量级的动作空间 , 但是其动作空间很容易通过抽象的方式缩小 , 即把类似的动作合并成一个 。 例如 , 加注 100 和加注 101 没有很大的区别 , 可以合并成一个 。 然而 , 斗地主中一个动作中的每张牌都很重要 , 且很难进行抽象 。 例如 , 三带一中带的单张可以是任意手牌 。 选错一次(比如拆掉了一个顺子)就很可能导致输掉整局游戏 。