来呀!AI喊你斗地主——首个搞定斗地主的深度神经网络

作者 | Anonymous authors

译者 | 蔡志兴

编辑 | Jane

出品 | AI科技大本营

【导读】近年来,从围棋到 Dota 团战赛,深度神经网络应用在各种游戏竞赛中不断取得突破。这一次,有人把这种方法用到斗地主游戏的研究中,可以说真的很接地气了!

本论文是 ICLR 2019 的投稿论文,目前该论文还处于双盲审状态,因此也还未公布作者。营长在看到这篇论文的时候,就想第一时间分享给大家。接下来,我们就一起来看看这个有趣的研究吧!也预祝作者的论文能够成功被接收,今后在这个项目上还可以再有进展!

摘要

近几年,深度神经网络在围棋,国际象棋和日本象棋(Shogi)等多款游戏中都能够击败人类。和这些棋类相比,中国的纸牌游戏“斗地主”也是非常出名!斗地主属于非完整信息类的游戏即不知对方底牌,在游戏过程中包含隐藏信息,具有随机性,并且多个玩家间存在合作与竞争关系。本文,我们将介绍一种使用卷积神经网络(CNN)来预测斗地主游戏中玩家行为的方法,它是通过人类的游戏记录来进行监督训练。在没有搜索情况下,此网络就能以绝大优势击败了性能最好的AI 程序;在重复模式(Duplicate Mode)下也能战胜了顶级的人类业余玩家。

简介

斗地主(CCP)易于学习但想要擅长或精通却是难事,它不仅需要数学知识和战略性的思考,更需要玩家精心策划每一步。游戏规则我们在这里就不多说了,主要说一下我们的研究思路和成果。

我们选择 CNN 来解决斗地主游戏问题的主要原因如下:

  • 首先,CNN 在完善的信息游戏中取得了超越人类的卓越表现
  • 其次,在CCP 中存在同一类别不同等级的两套出牌方式(例如“34567”比“45678” 等级来得低,等级低的不能压等级高的。)

迄今为止,还没有使用深度神经网络来研究斗地主游戏的。该网络是否能够在游戏输入信息不完善的情况下选择合理的操作还有待证明。由于在每局游戏中有队友的存在,这就出现了两个问题:一是要教会该网络进行合作;二是它要具备良好的推理能力。针对这些问题,我们设计了 DeepRocket,它是目前能够在斗地主游戏中取得最好效果的一种网络。在下面的实验中,我们证明了该网络可以在不完善的信息游戏中学会合作与推理。

Deep Rocket 框架

DeepRocket 系统包含三个部分: 叫地主模块、策略网络以及带牌(Kicker)网络。当游戏开始时叫地主模块会被调用以便计算 DeepRocket 的得分(叫地主和抢地主时分数会加倍)。在 DeepRocket 出牌之前会先调用策略网络,策略网络会依据当前环境预测出最应该执行的策略,其中包括带牌模式(带单张或者一对)。当策略中含有带牌时,Kicker 网路才会被调用。游戏流程如下图1、2所示。

图1 DeepRocket 游戏流程

图2 策略网络和 Kicker 网络的工作流程

▌叫地主模块

在分完牌后需要先确定谁是地主,所以我们为此设计了一个基于逻辑代码的叫地主模块。叫地主的关键因素在于手牌的好坏。是否决定叫地主取决于手牌中是否有大牌(如:“A”、“2” 以及大小王)和手牌顺不顺(有较少的杂牌)。

▌策略网络

策略网络采用监督学习的方式。其中该网络包含 10 层 CNN 层和 1 层全连接层,激活函数采用 Relu。最终的 softmax 层输出所有合理出牌方式 a 的概率分布。输入为当前的游戏状态。策略网络的训练样本来自于随机抽样,这些样本包含当前状态以及最优的决策,采用随机梯度上升的方式训练网络,让策略网络的出牌与人类的出牌越来越相近。

我们使用 800 万条游戏记录来训练策略网络,一条记录代表一场完整的游戏,一局斗地主按回合来分,又能分为许多样本。

策略网络的输入是一个 15×19×21 的三维二元张量。我们用 X、Y 和 Z 代表三个维度。其中 X 代表牌的种类,从 3 到大小王。Y 表示每个种类牌的数量(从 1 张到 4 张), 以及 CCP 中卡牌的组合如单张、对子等。Z 代表每一轮的顺序信息,作用是在游戏中将可变长度变换为固定长度,具体细节如表 1 所示。

表1 Z 的含义

重复试验之后发现,512 滤波器最为合适,10 层 CNN 能使得模型获得最佳的性能,其中每层都使用不同的步长。当我们将 Kicker 网络加到 DeepRocket 中后,策略网络会输出 309 个决策的概率。具体的组合情况如表 2 所示。

表2 组合类型

▌Kicker 网络

仅凭叫地主模块以及策略网络就足以完成一场游戏,但决定带牌的类型对游戏来说也至关重要。

我们将带不同的牌标记为不同的策略。并额外建立了一个 Kicker 网络来预测所带的牌。策略网络负责预测 Main Group(如: 3334 中的 3 个 3)和所带牌的种类如单张或者对子。而 Kicker 网络则负责预测所带的牌具体是哪几张。

Kicker 网络的输入包含剩余的牌以及策略网络的输出值,它由一个15×9×3的三维二元张量构成。其中 X 的含义与策略网络中相同,而 Y 与 Z 的含义如表所示。Kicker 网络包含 28 种输出,其中 15 种为单牌,13 种为对子。

Kicker 网络由 5 层 CNN 层和 1 层全连接层构成,输出为带牌的概率。Kicker 网络每次仅输出一个带牌种类。如果策略网络预测应该出“333444” 以及两张单牌,这时则要调用两次 Kicker 网络。

实验

▌实验设置

我们获取了 800 万条游戏记录,首先将其划分为 8000 万个“状态-行为”对,90% 作为训练数据集,10% 作为测试数据集;然后将其作为网络的输入;最后使用 TFRecords 存储到硬盘中;这样不仅方便修改网络参数,也加快了训练速度。策略网络的大小为 256,对人类专家的行为预测准确度可达 86%-88%。使用 i7-7900X CPU,NAVIDA 1080Ti GPU 以及 Ubuntu 16.04 的操作系统计算策略网络的输出需要 0.01-0.02 秒。

Kicker 网络同样是监督式学习,也使用以上的 800 万条游戏记录作为数据集,但在训练之后它能达到 90% 的准确度,甚至比策略网络更高。

▌与目前最好的 AI 对比

在 DeepRocket 出现之前,MicroWe 是最好的CCP AI。如图 3 和图 4 所示,我们进行了 50000 场游戏测试,每一次迭代表示 5000 场。我们将 20 张卡牌直接发给地主,这样地主的胜率会比平常低。“DR VS MW”代表 DeepRocket 是地主,而 MicroWe 是农民。从图中可看出 DR 表现比 MW 好。

图3 DR 与 MW 的比赛结果

图4 不同 AI 之间比赛的胜率

▌与人类专家对比

我们举办了一场人机比赛,邀请了四位顶级业余选手,在循环模式下进行了 10 场比赛。结果,DR 以 30:24 的分数战胜了人类团队。

▌合作与推理

在 DR 的游戏记录中,我们找到了一个典型的例子能够展现其良好的合作能力(T:10;B:大王;S:小王。其中冒号之前表示玩家,冒号后表示打出的牌,以分号作为某玩家出牌结束标志,0 代表地主)

牌面:

4456777889JKKAA2B;

335567899TTJJKAA2;

4456689TTJQQQK22S;

33Q;

游戏进程:

0,33;1,55;2,66;0,77;1,AA;1,6;2,T;0,J;1,K;0,2;2,S;2,44;0,KK;2,22;2,89TJQK;2,QQ;0,AA;0,56789;1,789TJ;1,3;2,5;

以上加粗部分是关键步骤,在游戏的最后 DR 打出一张“3”来帮助队友取得胜利,由此可见 DR 具有良好合作能力的。

我们也找到了一个能够展现 DR 推理能力的例子:

牌面:

33345578TTJKKA22S;

34566789TQQQKKAA2;

4456678999TJJQA2B;

78J;

游戏进程:

0,345678;1,56789T;0,6789TJ;0,QQQKK;0,AA;2,22;2,55;2,3334;2,TT;2,A;0,2;

以上加粗部分是关键步骤,虽然最后农民输了,但是他选择打“A”是一个不错的选择,因为地主只剩一张牌,而农民手里还有 (“7, 8, J, A, S”)五张牌,选择出“A”也是人类专家的正常逻辑,DR 能够从人类中学到此行为。

展望

虽然,我们已经证明了 CNN 能够预测斗地主游戏中玩家的行为,并与队友进行合作;在没有任何的 MCTS 之下能达到顶级选手的水平甚至更高。但是,我们也还有许多方面要进行完善。第一个是强化问题,直接将应用在 AlphaGo 的方法移植到 CCP 中是行不通的;第二个是关于 Monte Carlo 搜索或者 MCTS 的问题。

在未来,DR 可以在以下方面进行改进:

  • 叫地主的方式可以改进,在抢地主的过程中只有 0、1、2 和 3 是正确操作,0 代表玩家不想当地主。我们将尝试用深度神经网络去训练叫地主的方式。
  • 我们将尝试使用随机权重训练模型。
  • 我们将训练分别代表三个角色的三个输出模型。

最后预祝作者的论文被成功接收,今后在这个项目上还可以再有进展!

原文链接: https://openreview.net/pdf?id=rJzoujRct7&utm_source=wechat_session&utm_medium=social&utm_oi=40535670652928

【完】

原文发布于微信公众号 - AI科技大本营(rgznai100)

原文发表时间:2018-10-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯技术工程官方号的专栏

图像内容的「深度」理解及其应用

本文作者:朱晓龙博士,2015 年毕业于香港大学,主攻计算机视觉和机器学习方向,涉及物体检测,位姿估计,人脸特征点定位,3D 视觉等课题。本科期间参与北京大学智...

3945
来自专栏新智元

深度学习研究总结:强化学习技术趋势与分析(经典论文)

【新智元导读】机器学习技术总结回顾第二期:上一期,作者回顾了生成对抗网络 ICYMI 及 3 篇经典论文,本期关注的内容是强化学习。这本文中,作者从数学原理入手...

3678
来自专栏CreateAMind

海马体what where记忆推理模型

1272
来自专栏MixLab科技+设计实验室

研究了一堆Q-learning资料后,写了这份指南

“我从来不相信什么懒洋洋的自由,我向往的自由是通过勤奋和努力实现的更广阔的人生,那样的自由才是珍贵的、有价值的;我相信一万小时定律,我从来不相信天上掉馅饼的灵感...

1383
来自专栏磐创AI技术团队的专栏

【干货】史上最全的Tensorflow学习资源汇总

在之前的Tensorflow系列文章中,我们教大家学习了Tensorflow的安装、Tensorflow的语法、基本操作、CNN的一些原理和项目实战等。本篇文章...

6009
来自专栏AI科技评论

开发 | Kaggle实战:这才是使用数据降维&可视化工具 HyperTools 的正确姿势!

AI科技评论按:世界首屈一指的机器学习竞赛平台 Kaggle,在今年早些时候推出了基于 Python 的高维数据降维以及可视化处理工具 HyperTools,并...

3695
来自专栏目标检测和深度学习

使用 HyperTools 的正确姿势! | Kaggle 实战教程

1224
来自专栏AI科技评论

视频 | 强化学习模拟水下稳定性,潜水体15分钟学会规则

这里是雷锋字幕组编译的 ICRA 2018 系列,带你了解 机器人与自动化 领域的最新研究成果。

1304
来自专栏ATYUN订阅号

AI设计小能手:选个颜色让AI帮你生成logo

生成对抗网络(GAN)已被用于发现新药物,创建令人信服的汉堡和蝴蝶照片,并产生脑癌的合成扫描。而荷兰马斯特里赫特大学(Maastricht University...

2106
来自专栏腾讯Bugly的专栏

人人都可以做深度学习应用:入门篇

导语 2016年,继虚拟现实(VR)之后,人工智能(AI)的概念全面进入大众的视野。谷歌,微软,IBM等科技巨头纷纷重点布局,AI 貌似将成为互联网的下一个风口...

9178

扫码关注云+社区

领取腾讯云代金券