掌桥专利:专业的专利平台
掌桥专利
首页

一种基于深度学习的斗地主游戏选手余牌计算方法

文献发布时间:2023-06-19 10:54:12


一种基于深度学习的斗地主游戏选手余牌计算方法

技术领域

本发明涉及网络游戏中数据处理技术领域,特别涉及一种基于深度学习的斗地主游戏选手余牌计算方法。

背景技术

棋牌游戏平台是大众型休闲娱乐平台,以棋盘游戏和牌类游戏为主。棋牌游戏平台将地方特色棋牌、麻将、休闲类游戏及棋牌游戏转移网络平台上进行的网络平台,深受广大人民群众的喜爱。

对于棋类的游戏,牌面所有的信息都是双方可以互见的,比如AlphaGo Zero基本上将所有的棋类困局都已经解决了。但是对于斗地主游戏来说,一方是看不到其他两方牌。这个时候传统的按照规则或者穷尽各种不同的组合,准确度不高且会使盘面的复杂度再度地出现指数级的爆增,很难计算选手的余下牌面。因此,就需要研究出一种能在复杂度可控的情况下能够较快较准确猜测出不同选手的手中剩余的纸牌的方法,不仅可以在游戏过程中为选手提供在线决策,也为解决斗地主游戏中的不完美信息博弈问题的研究提供重要依据。

不完美信息博弈是非常挑战的AI难题,斗地主AI的难题在于它是一个3人游戏;两人组队合作跟另外一个人博弈,如何组队,以及队内信息又是不共享的,这使得斗地主的博弈问题更加复杂;既需要算法的精巧设计,又需要高效得利用算力。因此,就需要一种合理的算法,能够解决这些技术难题。

发明内容

本发明的目的是提供一种基于深度学习的斗地主游戏选手余牌计算方法,能够快速准确地计算不同选手手中剩余的纸牌、为牌类游戏的不完美信息博弈问题的研究提供重要依据。

本发明解决上述技术问题的技术方案如下:

一种基于深度学习的斗地主游戏选手余牌计算方法,其包括如下步骤:

步骤1:样本预处理:从网络游戏中获取牌局样本,并对牌局样本进行预处理;

步骤2:训练样本提取:从预处理后的牌局样本中提取训练样本;

步骤3:训练样本特征提取:对步骤2所获得的训练样本进行特征提取,并将获取的特征二值化处理;

步骤4:深度卷积网络设计:确定深度卷积网络的激活函数、卷积层和全连接层;

步骤5:深度卷积网络输出设计:根据剩余牌数的多少,选择单标签分类或者多标签分类的方法作为输出方式;

步骤6:计算模型的损失函数设计步骤:分别确定单标签分类或者多标签分类时的损失函数,获得计算模型;

步骤7:计算模型训练:选取训练样本集,对步骤6获得的计算模型进行训练。

步骤8:计算模型输出结果的调整:对计算模型的输出结果,按照规律由高到低进行排序,最终返回计算结果。

所述步骤1中,牌局样本进行预处理中,根据场次、分值、选手胜率挑选牌局样本,并将每个牌局样本的信息统一格式化。

所述步骤2中,训练样本提取过程中,先对牌局样本中的任一牌局确定计算余牌训练的标签,然后提取训练样本。

所述步骤3中,训练样本特征提取过程中,将每个训练样本中的牌局信息,并将所述牌局信息二值化处理。

所述步骤4的深度卷积网络设计过程中,激活函数采用ReLU函数。

所述步骤5中,深度卷积网络输出设计过程中,其输出采用LogSoftmax进行处理。

所述步骤6中,采用单标签分类最大似然损失函数NLLLoss和多标签分类损失函数MultiLabelSoftMarginLoss。

所述步骤7中,切分训练样本集,选取合适的样本百分比;一部分样本作为训练集来训练计算模型,余下的作为测试集。

采用本发明的方案的有益效果是:

本发明的基于深度学习的斗地主游戏选手余牌计算方法,包括样本预处理、训练样本提取、训练样本特征提取、深度卷积网络设计、深度卷积网络输出设计、计算模型的损失函数设计、计算模型训练和计算模型输出结果的调整等步骤。

本发明的基于深度学习的斗地主游戏选手余牌计算方法,通过验证游戏核心玩法、文字音频图形的AI处理、数据分析、个性化决策、自动推荐等。游戏环境是全数字环境,便于训练数据的采集,利于技术的落地。此外,游戏本身是强商业化的方向,更容易创造出兼具学术意义和商业价值的产品。

本发明通过平台积累的游戏样本,对样本进行预处理,提取特征训练模型,猜测出其他选手手牌,为解决斗地主游戏中的不完美信息博弈问题的研究提供支撑,也为将来研究出类似AlphaGo的牌类游戏机器人提供研究基础,为选手出牌策略提供重要依据。

附图说明

图1为本发明的基于深度学习的斗地主游戏选手余牌计算方法的流程图。

图2为本发明的基于深度学习的斗地主游戏选手余牌计算方法的训练样本提取流程图。

图3本发明的基于深度学习的斗地主游戏选手余牌计算方法的样本特征提取设计图。

图4本发明的基于深度学习的斗地主游戏选手余牌计算方法的网络结构与损失函数设计图。

图5本发明的基于深度学习的斗地主游戏选手余牌计算方法的计算模型训练流程图。

具体实施方式

以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。

如图1-5所示,本发明的一种基于深度学习的斗地主游戏选手余牌计算方法,包括如下几个步骤。

步骤1:样本预处理:从网络游戏中获取牌局样本,并对牌局样本进行预处理;

步骤2:训练样本提取:从预处理后的牌局样本中提取训练样本;

步骤3:训练样本特征提取:对步骤2所获得的训练样本进行特征提取,并将获取的特征二值化处理;

步骤4:深度卷积网络设计:确定深度卷积网络的激活函数、卷积层和全连接层;

步骤5:深度卷积网络输出设计:根据剩余牌数的多少,选择单标签分类或者多标签分类的方法作为输出方式;

步骤6:计算模型的损失函数设计步骤:分别确定单标签分类或者多标签分类时的损失函数,获得计算模型;

步骤7:计算模型训练:选取训练样本集,对步骤6获得的计算模型进行训练。

步骤8:计算模型输出结果的调整:对计算模型的输出结果,按照规律由高到低进行排序,最终返回计算结果。

所述步骤1中,牌局样本进行预处理中,根据场次、分值、选手胜率挑选牌局样本,并将每个牌局样本的信息统一格式化。

步骤S1中所述的平台样本预处理。从平台中下载大量的样本,利用场次,分值,游戏选手胜率等信息挑选出高质量游戏样本;定义牌局的基本参数,将游戏信息统一格式化,统一由基本参数来表达每个牌局。如基本参数'ld':0,表示地主为座位号0。基本参数'dipai':'Q5A',表示底牌为Q5A。基本参数'jiaofen':[3,0,0],表示三个座位号选手分别叫的分值为3分、0分和0分。基本参数'jiabei':[0,0,0],表示每个选手的加倍信息,0表示不加倍。'cards_init',初始化17张牌信息。'acts':['0,55','1,66','2,77',...]游戏出牌过程,地主开始出牌,循环下去;保存每一局游戏信息。通过以上的基本参数,将每个牌局样本统一地表达出来。

所述步骤2中,训练样本提取过程中,先对牌局样本中的任一牌局确定计算余牌训练的标签,然后提取训练样本。

首先,对游戏出牌过程‘acts’及游戏初始化的牌计算三个游戏选手剩下的牌,作为计算余牌训练的标签。由于斗地主只有54张牌且只有三个人,所以只要猜测出其中一个人的牌,就能计算出三个人手上的牌。一局牌局根据‘acts’出牌过程,可以获取多个训练样本。

所述步骤3中,训练样本特征提取过程中,将每个训练样本中的牌局信息,并将所述牌局信息二值化处理。

先统计游戏出牌过程‘acts’中打出的牌;提取最后16回合出牌,每一回合当做一个独立的特征;统计被猜测的座位号打出的牌;当被猜测的座位号是地主时,通过底牌计算其手上可以确定的牌;计算自己手上的牌;计算自己未见过的牌,被猜测座位号选手的手上剩余的牌就在未见过的牌中;叫分以及加倍信息。将上述特征信息二值化,比如手牌可以用15乘以4很好表达,也有利于模型卷积运算。添加额外的牌面信息,比如是否还存在王炸或者四张牌的情况等。

所述步骤4的深度卷积网络设计过程中,激活函数采用ReLU函数。

步骤4对于二值化后的牌局特征信息,卷积神经网络CNN((Convolutional NeuralNetworks)可以通过卷积编码出斗地主游戏规则的顺子、对或3带2的空间特征等,简单的卷积运算就能得到不错的准确率。本发明中,使用了六个卷积及激活函数和归一化,采用少数的卷积层数便能得到较高的猜牌准确率。具体研发过程中,发明人也试过Resnet等复杂的网络,效果与本发明差不了多少,本发明能够以较为简单的神经网络实现与这些复杂网络相近的运算效果。激活函数使用ReLU函数,

所述步骤5中,深度卷积网络输出设计过程中,其输出采用LogSoftmax进行处理。

步骤5中,当猜测的牌小于3张时,总共有133种类别,采用单标签分类;当猜测牌大于三张时,采用多标签输出,根据猜测牌的张数将多标签输出中置信度最高的前几张牌当作猜牌的结果。它们的输出都采用LogSoftmax处理

所述步骤6中,采用单标签分类最大似然损失函数NLLLoss和多标签分类损失函数MultiLabelSoftMarginLoss。

步骤6中当需要猜测的牌小于3张时,采用单标签分类最大似然损失函数NLLLoss。NLLLoss的表达式如下式(1)所示。

Loss

公式(1)中,w权重默认为1,x

当猜测牌大于3张时,采用多标签分类损失函数MultiLabelSoftMargin-Loss,如下式(2)所示。

公式(2)中,x是模型预测的标签,x的shape是(N,C),N表示batch size(批尺寸),C是分类数;y是真实标签,y的s也是(N,C)。

所述步骤7中,切分训练样本集,选取合适的样本百分比;一部分样本作为训练集来训练计算模型,余下的作为测试集。

步骤7中训练计算模型,切分样本集,选取合适的样本比率,这里95%当做训练集,5%当作测试集;样本输入,根据剩余牌数获取不同输出;选择对应损失函数计算损失值;Adam自适应更新网络,直到网络收敛。

步骤8中,对于输出结果,按概率由高到低排序;通过已知的条件排除不可能的结果,比如有些牌已经全部出完却又出现在猜牌输出结果中等;根据阈值去除低置信度选项,返回猜牌结果。

如图1为本发明的计算方法的流程图,其中S1表示步骤1。本发明通过对平台样本处理训练,提高猜牌准确率,挑选出概率较高的猜牌结果,有效地降低复杂度。本发明的计算方法具有很强的适应性,能够适应大部分的牌类游戏,提高决策效率。

如图2为训练样本的提取过程的流程图,包括步骤R1~R4。

步骤R1、分离每个牌局样本的'acts',获取计算模型的训练样本。

取'acts'每个游戏动作为一个样本,如['0,55','1,66','2,77',...],相应的样本’acts’有[],['0,55'],['0,55','1,66'],['0,55','1,66','2,77'],分离出的每个‘acts’加上游戏其它信息,如’ld’、’dipai’、’jiaofen’、’cards_init’等组成训练样本。

步骤R2、计算每个游戏选手手上剩余的手牌。

通过初始化牌、底牌信息、地主和游戏出牌过程’acts’等计算每个游戏选手剩余手牌。如果身份时农民,只需要初始牌再减去’acts’中该角色出掉的牌。如果身份时地主,则将初始化牌加上地主底牌再减去’acts’中该角色出掉的牌。

步骤R3、计算被猜牌游戏选手座位号。

因为斗地主猜牌过程中,只需要猜测到另外两个游戏选手中一个的剩余的手牌,就可以计算剩余游戏选手手牌。当选手中的牌数较少时,猜牌的准确率较高。通过计算另外两个游戏选手剩余手牌较少的座位号,确定被猜测游戏选手座位号,只需要猜测该游戏选手手牌,便能知道所有人手上的牌的情况。

步骤R4、确定训练样本标签。

猜牌训练样本的标签即为其它游戏选手手上剩余的牌。通过计算游戏选手剩余手牌和确定的被猜测游戏选手座位号,即手牌最少的游戏选手,获取猜牌标签结果。

如图3为训练样本的特征提取的流程图,包括步骤A1~A7。

步骤A1、统计已经打出的牌。

通过样本信息’acts’获取所有回合打出的牌,并将其二值化成15乘以4的矩阵特征,1*15*4矩阵特征。CNN就可以通过卷积编码出斗地主规则的顺子、对或3带2的空间特征等。

步骤A2、提取前16回合打出的牌。

通过样本信息’acts’获取前16回合打出的牌。并将每一回合二值化成15乘以4的矩阵特征,每一回合当做一个独立的特征,则有16*15*4矩阵特征。

步骤A3、统计被猜牌座位号选手打出的所有牌;

通过样本信息’acts’与被猜测座位号计算该选手打出的所有牌,并将每一回合二值化成15乘以4的矩阵特征。CNN就可以通过卷积编码出斗地主规则的顺子、对或3带2的空间特征。

步骤A4、当被猜测的座位号是地主时,通过底牌计算其手上可以确定的牌;由于地主底牌是公开的,可以通过地主打出的牌,知悉地主手上是否还有底牌没打出,计算地主手上可以确定的剩余手牌。

步骤A5、计算自己手上的底牌。

通过‘acts’游戏进程统计自己打出的牌,计算自己手上的剩余的牌,并将手牌二值化成15乘以4的矩阵特征。

步骤A6、计算自己未见过的牌。

计算自己未见过的牌,通过计算桌面可见的牌与自己的手牌,获取另外两个选手剩余的牌,被猜测座位号手上剩余的牌就在未见过的牌中。

步骤A7、添加叫分以及加倍等信息。

将叫分及加倍信息,添加入矩阵特征中。这里可以直接用数值当作特征,但使用多通道表示会有更好的效果,比如三分就在第三个通道上赋值为1,对做卷积操作来说,二值化的处理通常会取得比较好的结果。所有的特征连接在一起整合成(21,15,9)矩阵,作为猜牌的计算模型的输入。

如图4~5,计算模型的训练过程包括步骤B1~B6。

步骤B1、游戏信息特征二值化。

统计游戏出牌过程‘acts’中打出的牌;提取最后16回合出牌,每一回合当做一个独立的特征;统计被猜测的座位号打出的牌;当被猜测的座位号是地主时,通过底牌计算其手上可以确定的牌;计算自己手上的牌;计算自己未见过的牌,被猜测座位号手上剩余的牌就在未见过的牌中;叫分以及加倍信息。将上述特征信息二值化,比如手牌可以用15乘以4很好表达,也有利于模型卷积运算。添加额外的牌面信息,比如是否还存在王炸或者四张牌的情况等。所有信息特征整合,作为猜牌网络模型的输入。

步骤B2、卷积网络提取特征。

使用了六个卷积及Relu激活函数和归一化,少数的卷积层数便能得到较高的猜牌准确率,我们也试过Resnet等复杂的网络,效果差不了多少。激活函数ReLu与BatchNormal归一化有效地加快网络训练和收敛的速度,控制梯度爆炸防止梯度消失,防止过拟合。

步骤B3、全连接输出。

根据不同牌数,选择不同的全连接层,输出不同的结果。

步骤B4、LogSoftMax对全连接输出处理。

采用LogSoftmax处理,

步骤B5、损失函数计算。

根据不同牌数,选择相应损失函数计算。当需要猜测的牌小于3张时,采用单标签分类最大似然损失函数NLLLoss。NLLLoss的表达式如下式(1)所示。

Loss

公式(1)中,w权重默认为1,x

当猜测牌大于3张时,采用多标签分类损失函数MultiLabelSoftMargin-Loss,如下式(2)所示。

公式(2)中,x是模型预测的标签,x的shape是(N,C),N表示batch size(批尺寸),C是分类数;y是真实标签,y的s也是(N,C)。

步骤B6、计算模型更新。

Adam自适应更新网络,不断重复,直到网络收敛。

本发明的基于深度学习的斗地主游戏选手余牌计算方法,包括样本预处理、训练样本提取、训练样本特征提取、深度卷积网络设计、深度卷积网络输出设计、计算模型的损失函数设计、计算模型训练和计算模型输出结果的调整等步骤。

本发明通过平台积累的游戏样本,对样本进行预处理,提取特征训练模型,猜测出其他选手手牌,为解决斗地主游戏中的不完美信息博弈问题的研究提供支撑,为选手出牌策略提供重要依据。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。

此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

相关技术
  • 一种基于深度学习的斗地主游戏选手余牌计算方法
  • 一种基于深度学习的体感游戏跟踪方法及装置
技术分类

06120112721450