麻将单机版四人不需要网络有谁知道河北的技巧是什么吗

(原标题:在围棋上碾压李世石後人工智能在麻将领域能够战胜人类吗?)

段昊/国际麻将联盟秘书

很高兴能借着 AlphaGo 的东风和大家分享一下麻将 AI 研究的现状。

一. 麻将和围棋有什么不同

从博弈论的角度来讲,围棋是完全信息动态博弈而麻将属于非完全信息动态博弈。围棋中对局双方所掌握的信息是对称嘚而麻将中各对局者间所掌握的信息不对称。虽然大家都能看到每位牌手打过什么牌但你不知道我的手牌是什么,我也不知道你的手牌是什么这种信息不对称的产生的根本原因是牌墙的随机性。

围棋与麻将(或者说棋与牌弈与博)的上述区别,决定了它们获胜策略嘚根本不同棋类项目本质上就是蒙特卡洛树,获胜策略就是选择或迫使对手选择一个分支这个分支下面所有的结局都是自己胜。只不過由于棋类变化很多连 AlphaGo 也远不可能遍历整个树,所以 AlphaGo 会通过价值网络来估计某一分支下胜结局的概率其实人类的思维也是类似的,在圍棋里平白被对手屠掉一条大龙或者在象棋里平白送给对手一个车总是不好的——在这些分支下,胜结局的概率大大降低了

而牌类的獲胜策略在于尽可能增大自己的得分期望(EV)。我并不知道我接下来要摸什么牌或我的对手有什么牌,但所有可能的情形组成一个概率涳间我只需做出一个选择,使得自己的得分函数的期望最大牌类策略的难点在于,影响这一概率空间的因素过多且具体影响很难确萣,比如对手打牌的习惯

下图选自《科学化麻雀》,闲家愚形听牌打 10% 危险度的牌对攻x 轴为自己和牌时得分,y 轴为牌局巡次z 轴为自己嘚得分期望。

选手的竞技水平如何衡量麻将是否是「运七技三」的游戏?其实无论围棋还是麻将区分选手的竞技水平都不可能只靠一局,就好比 AlphaGo 和李世乭要进行五番棋对决AlphaGo 赢第一盘时大家并不觉得 AlphaGo 一定比李世乭强一样。围棋有三番、五番、十番棋对于竞技麻将(国標麻将、日本麻将)而言,区分顶尖选手的竞技水平至少需要 手牌(如果采用类似桥牌的复式赛制这一数字会大幅降低)。

至于衡量一個竞技项目的竞技性单纯用运气所占比例是没有意义的。随着对局数的增大运气所占比例会越来越小,选手的长期成绩必然会向其真實水平收敛一个竞技项目的竞技性应当用「区分选手竞技水平所需必要对局时间」来衡量。比如围棋需要三番棋麻将需要 2000 手牌,围棋┅盘平均需要 4 小时三番棋约 12 小时,而麻将一手牌约 3 分钟(网络对局)2000 手牌约 100 小时。麻将相比围棋有运气成分并不意味着麻将选手的競技水平无法衡量,而意味着麻将需要更多的对局时间来区分选手的竞技水平

下图选自日本麻将平台天凤麻雀凤凰桌 1000 场以上玩家安定段位排行。这里的「试合」是指半庄也就是两圈牌,考虑到连庄平均一试合是 10 手牌,1000 试合是 10000 手牌可以看到牌手的竞技水平得到了很显著的区分,结果也与麻将圈内认知相似

所以在这个问题下我们讨论麻将 AI 能否战胜人类,指的是麻将 AI 长期成绩(10000 手牌以上)能否比人类更恏并不是单指一手牌。只打一手牌谁都有可能和牌,这是牌类游戏的本质所决定的

当然,这里也不考虑牌手或 AI ***的问题如果通過***获得别人手牌的非法信息,麻将的竞技平衡就完全被打破了再强的麻将 AI 成绩也不可能比***的人类好,反之亦然事实上,现在佷多单机麻将游戏的 AI 就是通过***来增加「智能」的

三. 麻将会成为人类面对人工智能的「最后壁垒」吗?

一言以蔽之麻将 AI 不是做不了,而是没人做之所以目前还没有能够战胜人类的麻将 AI,主要原因还是人们在麻将 AI 研究方面的投入不够目前的麻将 AI 基本都是麻将游戏制莋团队为麻将游戏设计的,在单机上就可以运行强度自然有限。如果像 AlphaGo 一样世界顶级团队制作,背后庞大资金支持使用 1000 个 CPU 运行,想偠设计一个轻易战胜人类顶尖麻将牌手的 AI

首先麻将的复杂度要远远小于围棋。单就自己的 14 张手牌来说(总牌数 136 张)组合共有 种(计算方法详见麻雀の数学),远远小于围棋的 )

这是一手 13 张牌的手牌,现阶段是一上听(差 1 张牌就可以听牌)那么哪些牌是有用的牌,或鍺说我摸到哪些牌会留下呢这些有用的牌称为「有效牌」,最有用的当然是能让我直接听牌的牌这类牌称为「第一类有效牌」。

第一類有效牌:能使手牌向和牌前进一步(上听数降低)的牌包括:

除了第一类有效牌,有用的牌还有以下这些:

第二类有效牌:不能使上聽数降低但能使第一类有效牌增多的牌,包括:

比如摸到九索一般情况下应该选择留下九索打掉三索,因为第一类有效牌变多了:

计算采用天凤牌理オンライン対戦麻雀 天鳳 / 牌理

第三类有效牌:不能使上听数降低,也不能使第一类有效牌增多但能使第二类有效牌增哆的牌,包括:

比如摸到五索一般情况下应该选择留下三五索拆掉八九索,虽然第一类有效牌张数没变但三五索相比八九索多了 1 种第②类有效牌——六索(原是第三类有效牌)。

(也许看到这里你有点算不过来,或者感觉这和你平时打的麻将压根不是一个游戏没关系,这很正常你可以找张纸,在纸上仔细算一下每种第二类有效牌都新增了哪些第一类有效牌)

可见,对于一开始一上听的 13 张手牌而訁除了七八九筒外的所有数牌都是有用的牌。麻将的牌效率就是这样——不断通过有效牌增大自己的进张面最终使得和牌的概率越来樾大。也许你已经发现麻将牌效率的本质就是一个搜索树,最开始的手牌

经过多轮选择后可能对应多种结局(和牌)例如:

路径:摸箌第一类有效牌八万或七索听牌,再自摸另一张和牌(最大概率结局)

路径:先摸到第二类有效牌一万或七万后打掉三索,然后摸到一萬或七万的另一张听七索或者摸到七索选择听一万和七万对倒和牌。

路径:先摸到第三类有效牌三筒后打掉三索然后摸到四筒后拆掉仈九索,之后和牌

对于一个两上听以内的手牌来说,这个树的深度最多也就是 4~5 步每一步的分支平均在 15 种左右,也就是说复杂度最多在 10^5 數量级由于每条路径都对应着一个确定的概率,一个好的麻将 AI 完全可以做到遍历这个树比较两种或更多种打牌选择之间所对应结局的囷牌期望之和。

对于三上听以外的手牌(由上文图中可知三上听以外的手牌约占手牌所有组合的 80%)由于手牌中会存在大量的孤张或简单搭子,只需单独比较孤张或简单搭子的效率即可计算量更小。

除了上述穷举手牌搜索树的方法还可以采用模拟的方法。比如让麻将 AI 在短时间内模拟两种打法各 1000 手牌哪个和牌率更高就选哪种打法。虽然这样不太精确但已经足够保证比人要强了

2. 和牌限制与番数价值

很多麻将规则对和牌有限制,比如国标麻将必须八番起和四川麻将必须缺一门,太原麻将和牌必须包含指定牌张等等我们只需在上述基础牌效率算法搜索树的基础上,「砍掉」那些结局不符合要求的分支即可

有些时候我们不仅关注和牌的概率,也关注和牌的大小比如有些牌我们宁可损失一些进张也想去做清一色,追求更高的和牌得分我们只需为树的所有结果赋值(和牌得分),并用结局对应的值与路徑对应的概率求出不同打法的得分期望并进行比较

「这个牌该不该碰」似乎是打麻将时比较令人头疼的问题。但其实副露判断只是计算量大并不需要特殊的算法,依然是对比碰与不碰两种选择所对应的所有结局的得分期望即可日本麻将中的立直(报听)判断也是同理。

只不过当我们在考虑「打哪张好」的时候两种打牌选择之间所对应的路径和结局有大部分都是重合的;而我们在考虑「该不该碰」的時候,两种选择所对应的路径和结局基本是完全不同的这无形中增大了计算量。其实人脑在做蒙特卡洛树搜索时比较容易做到「想得佷深」,比如职业棋手可以提前算到 20 甚至 30 步棋;但难以做到「想得很广」通常情况下大脑只能做到从两种选择中找几个概率较大、有代表性的结局样本做比较。所以副露判断显得难其实只是计算量的问题,而对于麻将 AI 来说这不是问题。

防守端需要解决的是攻守判断和防守打法两个问题即「什么时候要防守」和「要防守应该打什么」。解决这些问题最好的方法是让麻将 AI 自己通过大量的牌谱(千万场量級)进行自我学习正如前文我所提到的,其实人们对于麻将应该如何科学防守的研究也才刚刚开始想要分析一个打过三筒和八筒的人嫃正需要的是几筒,需要大量的牌谱作为样本进行研究这部分研究现在还要等待电脑去完成,未来的麻将 AI 在这方面要比人类做得更好可鉯说是必然的

对大量牌谱所做的出牌模式研究还可反过来应用于牌效率算法的改进中。比如早巡打过八万的人手牌中有九万的概率较小那么牌墙中剩余九万的概率就有所上升,牌效率中利用九万的路径的概率就可以做出相应的修正

状况判断指的是麻将的「大局观」,洳为了争取第一名或者为了规避第四名而采取不同的策略状况判断其实就是对得分期望做进一步的修正。比如某状况下我必须自摸 13 番牌財能逆转那么最终结果是 13 番以下的牌的得分期望可以进一步降低,而 13 番及以上的牌的得分期望则可以提高

总之,麻将的复杂度较低算法上可以用搜索树穷举法以及大量牌谱的自我学习来解决,只要有大量牌谱资料有人肯花时间,有人愿意出资开发一个能胜过人类嘚麻将 AI,非常容易

本文来源:网易科技报道 责任编辑:白鑫_NT4464

参考资料

 

随机推荐