Professional Documents
Culture Documents
牌型预测与蒙特卡洛模拟结合的麻将博弈策略 李淑琴
牌型预测与蒙特卡洛模拟结合的麻将博弈策略 李淑琴
牌型预测与蒙特卡洛模拟结合的麻将博弈策略
1,
2 1,
2
李淑琴 ,冯浩东
( 1. 北京信息科技大学 计算机学院,北京 100101;
2. 感知与计算智能联合实验室,北京 100101)
摘 要: 针对麻将博弈中状态空间巨大和隐藏信息过多等难点,提出利用局面信息缩减未
知状态空间,并通过动态划分游戏状态提升牌型预测准确率的方法 。根据麻将领域知识将对手
玩家的弃牌信息转换为可利用信息 ,预测对手玩家持有某一牌型的概率,使用这一概率约束蒙
特卡洛模拟的范围,得到对手手牌及需求牌的概率分布。 通过对比试验表明: 局面信息利用方
法和动态游戏划分方法是有效的 ,不仅可以降低出牌的点炮风险,还可以获得更高的得分,实现
了通过缩减未知状态空间提升麻将博弈水平的目的 。
关 键 词: 麻将; 计算机博弈; 非完全信息博弈; 领域知识; 蒙特卡洛模拟
中图分类号: TP311 文献标识码: A 文章编号: 1674 - 8425( 2022) 12 - 0148 - 07
不可见的。因此,麻将是典型的非完全信息博弈。
0 引言
在完全信息博弈领域,当前最出名的是谷歌
[1 - 4]
自古以来,博弈就是一个经典的研究领域,人 公司 DeepMind 团队开发的 Alpha 系列程序 ,
类生活中每时每刻都在做着平衡与决策。 每天的 彻底击败了人类选手。 与其不同,非完全信息博
衣食住行、升学就业时的选择、购物消费时的优惠 弈的解 决 面 临 诸 多 难 题。 第 一,状 态 空 间 巨 大。
折扣、国与国之间的经济竞争和军事竞争,等等, 由于在非完全信息博弈中没有办法得知当前局面
这些问题场景都可以抽象成博弈决策问题。 根据 的全部信息,所以需要进行大量模拟来求解未知
不同的角度,可以把博弈分为不同类型。 根据博 信息。非完全信息博弈的决策动作一般也不是固
弈参与者对整个博弈状态的了解程度可以把博弈 定的,例如德州扑克和斗地主中可以采取过牌操
分为完全信息博弈和非完全信息博弈。 在麻将游 作,麻将中可以进行吃、碰、杠等操作,这都会使局
戏中,玩家只能看到自己的手牌信息和一些公共 面信息更加复杂。这些原因导致非完全信息博弈
信息,而对手的手牌信息以及牌库中的信息都是 的状态空间非常庞大。 第二,信息缺失。 不同于
收稿日期: 2022 - 09 - 04
基金项目: 北京信息科技大学科技项目( 5212010937,KM201911232002)
作者简介: 李淑琴,女,博士,教授,主要从事人工智能与计算机博弈研究,E-mail: lishuqin_de@ 126. com; 通讯作者 冯浩
东,男,硕士研究生,主要从事计算机博弈研究,E-mail: haodong0808@ outlook. com。
1 麻将的规则和术语 2 局面信息利用方法
麻将作为一项智力竞技运动,集益智性、趣味 在麻将中,因为玩家的弃牌与手牌具有一定
150
的联系,玩家的信息会随着游戏进程的发展而不 根据弃牌的数量和相依程度,可以得到某一
断暴露。在麻将中转换局面信息不仅可以帮助麻 张牌对所预测牌的影响度。 计算方式如式 ( 2) 所
将程序做出更合理的出牌决策,也可以降低点炮 示,式中 A i,j 指牌 i 对牌 j 的影响度,N i 指弃牌中牌
风险,进而提高自己的收益。 本文首先根据大众 i 的张数,R i,j 指牌 i 与牌 j 的相依程度。
麻将领域知识提出弃牌信息利用方法和对手牌型 A i,j = N i × R i,j ( 2)
概率计算方法,然后进行蒙特卡洛模拟得到对手 根据某一玩家的弃牌信息可以给出该玩家拥
的手牌分布,实现对麻将局面信息的最大化利用 。 有某一张牌 i 的可能性 P Ri ,计算方法如式 ( 3) 所
2. 1 弃牌信息利用方法 示。当牌的点数不同时,其对应的相依牌数目也
本小节将把对手玩家的弃牌信息转换为可利 不同,因此式( 3) 按牌的点数将牌分为了 5 类。
用信息,并推算对手玩家持有某张牌的概率。 在 1 - A i -2,i - A i -1,i - A i,i - A i +1,i - A i +2,i 2 < i < 8
大众麻将中,同一花色的连续牌是具有强关联性
1 - A i -1,i - A i,i - A i +1,i - A i +2,i i=2
的。针对大众麻将的规则特点,本文将在游戏的 P Ri = 1 - A i -2,i - A i -1,i - A i,i - A i +1,i i=8
前后期采取 2 种不同的弃牌信息利用方法。
1 - A i,i - A i +1,i - A i +2,i i=1
按照当前局面的情形,根据式( 1) 计算每一张
1 - A i -2,i - A i -1,i - A i,i i=9
牌的剩余牌数。
N i = 4 - N Oi - N Mi ( 1) ( 3)
2. 2 对手牌型概率计算方法 增加获胜概 率。 蒙 特 卡 洛 模 拟 是 一 种 统 计 学 方
在 2. 1 小节中,已经得到了玩家手牌中持有 法,用来模拟大量数据。 其核心思想就是通过模
某张牌的概率计算方法。 以此为依据,下面对玩 拟出来的大量样本集或者随机过程去近似想要研
家手中持有刻子、顺子、对子和相关组的概率进行 究的实际问题对象。对于那些由于计算过于复杂
计算。玩家手牌中拥有刻子牌型的概率计算方法 而难以得到解析解或者根本没有解析解的问题,
如公式( 4) 所示。当牌 A 的数量小于 3 时,此时不 蒙特卡洛模拟是一种有效的求出数值解的方法 。
可能存在由牌 A 组成的刻子; 当牌 A 的数量大于 在麻将游戏初期,暴露的信息过少,若在初期
等于 3 时,将根据牌 A 的数量和该玩家拥有该牌 进行蒙特卡洛模拟,只会增加模型复杂度而不会
的可能性综合计算拥有牌 A 刻子的概率。 玩家手 产生收益,因此蒙特卡洛模拟将在游戏中后期进
牌中拥有顺子牌型的概率计算方法如式 ( 5) 所示。 行。下面给出基于局面信息和蒙特卡洛的对手手
计算该玩家手牌中拥有顺子中每张牌的可能性, 牌模拟算法流程,将整个模拟过程迭代 X 次至结
选最小值作为拥有该顺子的概率。 与刻子和顺子 果收敛便可以得出对手手牌,还可以根据对手手
不同,本文在对子和相关组牌型的概率值计算上 牌模拟剩余牌库分布。 这样,麻将游戏中的信息
还考虑了弃牌中其需求牌的非需求牌数量,若其 不透明度会进一步降低,便于麻将程序对博弈局
需求牌的非需求牌数量很多,说明对手玩家手中 势做出更准确的判断。 对手手牌模拟流程如算法
有此牌型的概率极低,如式( 6) —( 8) 所示。 1 所示。
{ 算法 1 对手手牌模拟方法
N A × P RA NA ≥ 3
P AAA = ( 4)
0 NA < 3 输入: 我方手牌 H,对手弃牌 D i ,对手副露 F i ,
P ABC = min( P RA ,P RB ,P RC ) ( 5) 轮数 Round
{
N A × P RA - NN A NA ≥ 2 输出: 对手玩家的手牌分布 DH i
P AA = ( 6)
0 NA < 2 01: 根据式( 1) 计算每一张牌的剩余牌数 N i
换的准确性。所以本文提出了一种动态划分游戏 家 i 的吃碰次数。
前后期界线的方法,可以根据当前局面信息对游 D i = 4 - ( CP i - 1) ( 10)
戏前后期做出更为合理的分界,这会进一步提升
局面信息的利用效率,从而提高麻将程序的出牌
水平。
和以往的方式不同,本文以动作数为标准划
分游戏前后期,而不是游戏轮数。 此处的动作包
括摸牌、吃牌和碰牌。本文统计了 3 000 局真实对
局中 4 位玩家每次动作后的向听数分布,统计结
果如图 1 所示,频次指在对应动作数下的指定向
听数出现次数。 从图中可以看出,部分牌局在执
行一次动作后,就有玩家达到了 1 向听状态。 显 图2 大众麻将中向听数随吃、碰动作数变化的分布图
然,如果只依据向听数为 1 的最大轮数分布进行
前后期划分,将使麻将程序进入歧途。 而且在执 4 实验结果与分析
行动作 3、
4、5、6 次后,都有很大概率达到 1 向听
本文结合局面信息利用方法和动态游戏状态
状态,显然不能仅仅以 1 向听的最大分布动作数 4
划分方法构造了一个麻将 AI 程序,为了证明其可
为前后期分界。
靠性,在本节进行了大量实验。 在每轮对局中,采
用 2 + 2 的对战策略,即 2 位使用 A 方法的麻将程
序和 2 位使用 B 方法的麻将程序进行对战。 为了
消除麻将游戏中靠运气取得胜利的因素,本文设
定了 1 000 局对局为标准来验证各个方法的有效
性。根据麻将规则,玩家只能吃上家的牌。 因此
需要考虑不同程序之间的座位顺序,在实验时通
过调换每轮游戏中麻将程 序 的 座 位 顺 序 加 以 解
决。为了便于对比,将 2 个使用相同程序的对局
结果累加,将 点 炮 率、获 胜 率 和 得 分 作 为 比 较 标
图1 大众麻将中向听数随动作数变化的分布图
准,给出实验结果。
根据大众麻将的游戏规则,吃、碰动作对向听 4. 1 对比实验
数的影响远大于摸牌操作。 因此本文还对吃、碰 4. 1. 1 局面信息利用方法的影响
动作进行了额外的分析,统计了 3 000 局真实对局 正如前文所说,局面信息利用方法的目的是
中 4 位玩家每次吃、碰动作后的向听数分布。 因 通过转换局面信息降低麻 将 游 戏 局 面 的 不 透 明
为在执行一次吃、碰动作后 4 向听的频次极低,因 度,从而提高麻将程序的出牌水平,并降低麻将程
此在统计时将其忽略,最终的统计结果如图 2 所 序的点炮率。 为了证明其有效性,本文将其与传
示。从图中可以看出,当玩家执行 2 次吃、碰动作 统的使用追求快速听牌方法的麻将程序
[14 - 15]
进
后,向听数基本在 2 及 2 以下。 行对比,将 2 个使用本文方法的麻将程序和 2 个
因此,本文将以向听数为 1 时的最大分布动 使用传统方法的麻将程序进行了对战 ,结果如表 3
作数 4 为前后期分界基准,以每轮游戏中玩家的 所示。容易看出,使用局面信息利用方法的麻将
吃、碰动作次数为辅,对每轮游戏中各个玩家的前 程序得分大幅领先于使用追求快速听牌方法的麻
后期界线进行动态划分,如式 ( 10) 所示。 式中 D i 将程序,在点炮率和获胜率上都优于追求快速听
指针对 i 玩家的游戏前后期分界动作数,CP i 指玩 牌方法的麻将程序。
李淑琴,等: 牌型预测与蒙特卡洛模拟结合的麻将博弈策略 153
表3 局面信息利用方法的影响 表5 与高水平麻将 AI 比赛
5 结论
4. 1. 2 动态游戏状态划分方法的影响
为了证明动态游戏状态划分方法是必要的, 本文提出了多种方式来充分利用麻将游戏对
本节将动态游戏状态划分模块替换为传统的静态 局信息,并使用动态游戏状态划分方法划分游戏
麻将对局前后期划分方法进行对比试验。 使用统 前后期,以保证弃牌信息利用方法、对手牌型概率
计数据中向听数为 1 时的最大动作数分布,即玩 计算方法和对手手牌模拟方法的准确性。 实验结
家采取第 4 个动作时为前后期分界,在这里将之 果显示,本文的方法最大程度利用了麻将游戏中
称为静态游戏状态划分方法。 每场比赛包括 2 个 的局面信息。但是这些方法都是根据大众麻将的
使用动态游戏状态划分方法的麻将程序和 2 个使 游戏规则而设定的数学模型。 为了摆脱人类知识
用静态游戏状态划分方法的麻将程序 ,结果如表 4 的局限性,今后将尝试结合深度学习方法,将数学
所示。使用动态游戏状态划分方法后,点炮率大 模型与神经网络模型相结合,使麻将程序的出牌
幅下降,其获胜率和得分也随之提高。 此外,使用 决策更加合理。
静态游戏状态划分方法的麻将程序在游戏后期常
常会做出不符合游戏规则的决策,这与其对游戏
参考文献:
局面信息的错误利用有关,而动态游戏状态划分 [1] SILVER D,
HUANG A,
MADDISON C J,
et al. Mastering
方法避免了这一问题。 the game of go with deep neural networks and tree search
[J]. Nature, 529( 7587) : 484 - 489.
2016,
表4 游戏状态划分方法的影响
[2] SILVER D,
HUBERT T,
SCHRITTWIESER J,
et al. Mas-
游戏状态划分方法 点炮率 获胜率 得分 tering chess and shogi by self-play with a general rein-
动态游戏状态划分方法 0. 292 0. 676 1 872 forcement learning algorithm[J]. arXiv preprint arXiv: .
静态游戏状态划分方法 0. 558 0. 324 - 1 872 01815,
2017.
[3] SILVER D,SCHRITTWIESER J,SIMONYAN K,et al.
Mastering the game of go without human knowledge[J].
4. 2 与高水平麻将 AI 之间的比赛
Nature, 550( 7676) : 354 - 359.
2017,
本节使用本文方法构建的麻将程序与在 2020 [4] SILVER D,HUBERT T,SCHRITTWIESER J,et al. A
年中国计算机博弈锦标赛麻将项目中取得冠军成 general reinforcement learning algorithm that masters
[11]
绩的程序 进行了比赛,每场比赛包括 2 个使用 chess,
shogi,
and Go through self-play[J]. Science,
2018,
本文方法的麻将程序和 2 个冠军程序,统计了不 362( 6419) : 1140 - 1144.
Mathematics,
2019,
43: 815 - 826. the integration of deep learning and XGBoost[J]. CAAI
Abstract: To address the difficulties of huge state space and too much hidden information in
mahjong,this paper proposes to use situation information to reduce unknown state space and improve
the accuracy of tile prediction by dynamically dividing game stage. Based on the domain knowledge of
mahjong,this paper converts the opponent player’s discard information into available information,
predicts the probability of the opponent player holding a certain tile type,and uses this probability to
constrain the range of Monte Carlo simulation to obtain the probability distribution of the opponent’s
hand and demand tiles. Finally,the comparison tests show that the situation information utilization
method and the dynamic game division method are effective,not only to reduce the risk of discarding
winning tiles for opponents,but also to obtain higher scores,achieving the purpose of improving the
level of mahjong by reducing unknown state space.
Key words: mahjong; computer game; incomplete information game; domain knowledge; Monte
Carlo simulation
( 责任编辑 卢 燕)