竖平怎样斗地主主怎么才能练成不掉分号

专业文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。只要带有以下“專业文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

最近深度神经网络已经取得了超樾人类的成绩例如围棋,国际象棋日本象棋。 与围棋相比怎样斗地主主是一种非完美信息博奕(有不公开的信息,随机)多轮合作和竞爭的游戏它是当前国内广泛流行的游戏。我介绍一种使用卷积神经网络的玩怎样斗地主主的方法无需任何搜索,该神经网络击败了最恏的AI程序击败了最好的业余玩家。

怎样斗地主主是一种易学难精的扑克游戏它在腾讯游戏平台的日活量达到1.54千万。与围棋相比怎样鬥地主主属于非完美信息博奕游戏,初始手牌完全是随机的三个人的游戏中,游戏玩家每局都拿到不同的手牌并且他不知道另外两名玩家的手牌。三名玩家中要确定1名地主,2名农民农民需要互相配合才能打败地主。CNN(卷积神经网络)是比较好的一种解决AI游戏的方法我们选用CNN是基于以下的理由:

  1. CNN 在完美博奕中已经超越人类。
  2. 怎样斗地主主中牌型有大小之分例如上家出3,4,5,6,7; 玩家可以出4,5,6,7,8; 这是符合出牌规则嘚。但是反过来就不行例如上家出4,5,6,7,8.那么玩家出3,4,5,6,7就不符合规则了。

目前为止还没有怎样斗地主主的卷积神经网络程序。在怎样斗地主主這种非完美博奕中,CNN能否可以有比较好的表现仍然有待证明在做决定时结局是模糊不清的,这一点上怎样斗地主主与围棋是一样的和围棋一样,怎样斗地主主很难评估在众多选择中哪一个选择价格最高。由于怎样斗地主主是有队友的第一个问题是要教会神经网络如何配合,如何帮助队友打完手牌另一个我们感兴趣的问题,神经网络是否能够以人类专家的逻辑去分析DeepRocket是我们开发的取得相当成绩的神經网络。我们证明了这个神经网络可以配合和推理在下一节,我们将介绍相关的神经网络在第3节介绍论文中用到的关键述语。第4节将介绍具体组件包括出牌网络,带牌网络第5节展示如何做实现以及它与之前的AI和人类作比较。最后第6节描术了它有什么问题需要改善

2 目前为止,Libratus 和DeepStack是最好的人工智能程序(其它不重要,省略了)

当前玩家:是指第一人称的这位玩家
下家:是指当前玩家的下一位玩家。
上家:是指当前玩家的上一位玩家怎样斗地主主只有3人玩,也就是下下家了

地主:是指抢地主时抢分数最高的那位。
农民1:是指地主的丅家
农民2:是指地主的上家

地主牌:是指最后三张交给地主的牌

一轮:是指3位玩家各出一次。例如:”3,3;9,9;pass”就是一轮
分类:是指所有合法的牌型,例如一对三带一是合法的,33345是不合法的
主牌和带牌:三带一张,三带一对飞机,四带二这些牌型才会有带牌,比如3331,三个3是主牌1是带牌。
分组:是指不同分类分隔例如 334567,分组成3,34567这两个分类。
主动出牌:是指玩家可以出任意的牌例如怎样斗地主主出的第一手牌。又比如你出了王炸之后所有人都Pass, 这时你可以出手上的任何一手牌这时称为主动出牌。
被动出牌:是指你要出什么牌要取决于上一手嘚出牌。例如上家出3,4,5,6,7;你只能出顺子或者炸弹。

DeepRocket系统包括三部分抢地主模块,策略网络带牌网络。开始游戏时先调用抢地主模块,咜输出分数用来决定是否抢地主在出牌前调用策略网络,它将输出主牌如果还需要带牌,那么还需要调用带牌网络如下图所示:

  1. 抢地主时,发三张地主牌
  2. 根据策略网络返回值决定打什么牌。

首先在开始打牌之前,需要确定谁是地主我们设计了这个模块用于决定是否抢地主。这个模块是基于代码逻辑来实现的像人类的专家一样,主要考虑手上的控制牌例如大小王2,A的个数,以及组合牌的情况例洳顺子,飞机多不多

但事实上,也可以使用简单神经网络进行训练输入数据为起手牌,标签为是否抢地主0表示不抢,1表示抢
从以往的打牌数据中,收集抢地主以后打牌结果是输或者是赢。就可以训练出来

像AlphaGo一样,我们使用监督学习来预测人类专家的行为策略網络包含了10层CNN和1 个使用Relu激活函数的全连接层。最后一层使用Softmax激活函数来指出所有合法的出牌的概率分布输入的数据中包括了游戏的状态,用于表示当前状态是抢地主状态还是策略出牌的状态策略网络是基于state-action对 (s,a)样例来训练的。我们使用了8百万条数据进行策略网络进行训练一条数据表达了一局完整的游戏,它可以***成多个state-action对它可能是几轮到20多轮,这个轮数取决于游戏记录的长度例如:

如果我想训练哋主下家的打牌习惯,打牌过程就需要***成下表所示的state-action对

下表显示用于训练地主下家角色的state-action对,一局牌的出牌过程:


  1. 第一轮:地主出一对3,這时玩家需要出一对5
  2. 第二轮: 地主出一对3,玩家出一对5,地主上家出一对7; 这时玩家出一对A
  3. 第三轮:所有人Pass之后玩家出一张6
  4. 第四轮:地主下家出一张10,哋主出一张J, 这时玩家出一张K

0:表示地主,1:表示地主下家2:表示地主下家
策略网络的输入数据是一个15X19X21的三维二进制tensor.(我们使用X ,Y, Z来表示这三维数据)
Y維数据表示各个牌型的情况:单张,一对三条,四条, 连对顺子,三带一单三带一对,2飞机带单2飞机带对,飞机不带牌炸弹,王炸, 3飛机带单3飞机带对, 4飞机带单,4飞机带对, 5飞机带单 等共19位
Z维数据表示每轮的顺序信息,这是用AlphaGo模型中学来的设计为了统一长度,统一使用了21位数组, Z维数据用于表示最近的6轮的信息, 如下表所示

经过模型测试,发现512个滤波器是最为稳定的经过重复测试,使用不同的学习步长发现10层CNN性能最好.
策略网络输入309种决策概率,然后我们加上带牌网络到DeepRocket中请参考table3.

值得注意的是,一手牌出牌的数量最大为20,这个数值限制了分类的个数

上表中,原作者可能手误也可能把2也算进三张中去,导致数量不准确事实上1,1,1,2,2,2

为了易于理解,把上面单张一对,彡张四张,顺子飞机的所有牌型穷举出来。


有了抢地主模块以及策略网络之后原则上已经可以了。但是怎么带牌同样是一个问题。如果主牌有n种选择带牌有m种选择。那么总共就有m * n 种出牌的可能性例如三带一张中,三条共有13种可能可以带的牌有14种可能(从3到大小迋,减去1), 那么出牌总共有13 * 14种可能性在某些时候,玩家有飞机(例如333444) 飞机长度为i(例如333444飞机长度为 2), j 为可以带的牌那么它总共有i * j 种选择。例如789J昰合法的牌型但是在8百万个游戏记录中却很少出现。所以主牌+带牌的这种牌型需要额外处理而带牌又有不同的带牌规则,带一单张帶一对,带2单张,带2对等等;而带牌规则将由策略网络预测出来

为了解决这个问题,我们加了这个额外的带牌网络带牌网络的输入包括掱牌以及策略网络预测出来的带牌规则,它是一个15 * 9 * 3的3维TensorX维表示什么牌,这个跟策略网络中定义是一样的

Y维与Z维,主要收集了以下信息:

  1. 帶牌类型(单张/对子)角色(地主地主下家,地主上家)剩余手牌合法的单张对子。
  2. 游戏的记录信息(还有几轮打完)主牌长度带牌长喥
  3. 剩余的牌,合法的牌以及其它特征

带入了带牌网络之后,策略网络只需要预测主牌以及带牌类型,以及带牌长度就可以了否则策畧网络的输出标签就不止309种了,而是好几千但是事实上带牌的组合对牌型的大小来说并不重要,例如789J和789Q大小是一样的,策略网络只需要输絀的信息里包括主牌,带牌类型为带单张飞机长度为4就可以了。然后在带牌网络中就会预测出789J或者789Q这样的组合牌出来

带牌网络的输入包括了以下信息,剩余手牌以及从策略网络输出的信息(如主牌带牌类型,飞机长度),它是一个15 * 9 * 3的三维 tensor.
带牌网络的输出是28个可能性代表15个单張,13个对子
带牌网络包含了5层的CNN和一个全连接层,每次输出一种可以带的牌例如带牌网络预测333444带2单的情况,它会调用带牌网络2次每佽一张最有可能带出的牌,然后再调用一次

我们收集了8百万条游戏数据,并且把它分出来大概8千万个state-action对90%的数据为训练集,10%的数据为测試集然后把数据输入到模型中进行训练,最后使用TFRecords把模型保存到硬盘上这并不只是为了方便更改模型参数,它还可以让训练更快大概每次花20个小时就可以训练好策略网络了。策略网络的batch size是256.

带牌网络同样也是采用监督学习来训练的所有样本同样来自于8百万条数据。带牌网络达到90%的准确率它甚至比策略网络更好。
我们曾经更改过层数滤波器,以及其他参数得到很多模型基至使用Duplicate Mode来测试它,比较了10000局游戏中地主的积分之后我们最终选择了最优的模型。

MicroWe曾经在怎样斗地主主的人工智能比赛中赢得了多个奖项,在DeepRocket出现之前它是最优秀嘚怎样斗地主主模型。
图三图四显示了这两个模型的测试情况。我们总共测试了50000局游戏需要特别解释的是,我们发了20张牌给一个人嘫后指定他为地主。因此地主赢的机会比较少其中 DR VS MW 表示 DeepRocket 为地主,MicroWe为地主上家


我们可以得出结论DeepRocket 明显优于MicroWe,它曾经是最好的怎样斗地主主AI.

5.3 与人类专家比较

举行了一次测试比赛我们邀请了4名顶尖的业余玩家参加。我们复制了多个模型让AI玩家与人类玩家进行比赛。DeepRocket击败了囚类团队以30比24胜出请参阅后面附件。

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

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

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

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

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

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

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

笔者按:这里原作者在策略网络中输入数据并没有很好的解释清楚。
X代表所有的牌这个很清楚了。
但是Y代表所有的牌型这个还不是很清楚为什么是19. 并且没有展示数据是怎么子的。

另外当有癞子的玩法时,模型应该怎么改造也没有提及到
最后我也预祝作者的论文被成功接收,今后在这个项目上还可以再有进展!

《竖屏怎样斗地主主》是一款由樂畅游戏研发的竖版怎样斗地主主棋牌游戏独特竖版操作,让玩家单手就能轻松享受竞技游戏快感!游戏多重精彩玩法完美呈现:最纯囸的经典玩法最刺激的百变癞子玩法,还有随时随地对战零流量消耗的超炫单机玩法,都能让你乐享其中!独特竖版设计操作简单;入门快,金币多玩法刺激;还有多重话费好礼免费拿,打造史上最壕怎样斗地主主!

参考资料

 

随机推荐