- +1
在圍棋上碾壓李世石后,人工智能在麻將領(lǐng)域能夠戰(zhàn)勝人類嗎?
很高興能借著 AlphaGo 的東風(fēng),和大家分享一下麻將 AI 研究的現(xiàn)狀。
一. 麻將和圍棋有什么不同?
從博弈論的角度來講,圍棋是完全信息動(dòng)態(tài)博弈,而麻將屬于非完全信息動(dòng)態(tài)博弈。圍棋中對(duì)局雙方所掌握的信息是對(duì)稱的,而麻將中各對(duì)局者間所掌握的信息不對(duì)稱。雖然大家都能看到每位牌手打過什么牌,但你不知道我的手牌是什么,我也不知道你的手牌是什么。這種信息不對(duì)稱的產(chǎn)生的根本原因是牌墻的隨機(jī)性。
圍棋與麻將(或者說棋與牌,弈與博)的上述區(qū)別,決定了它們獲勝策略的根本不同。棋類項(xiàng)目本質(zhì)上就是蒙特卡洛樹,獲勝策略就是選擇或迫使對(duì)手選擇一個(gè)分支,這個(gè)分支下面所有的結(jié)局都是自己勝。只不過由于棋類變化很多,連 AlphaGo 也遠(yuǎn)不可能遍歷整個(gè)樹,所以 AlphaGo 會(huì)通過價(jià)值網(wǎng)絡(luò)來估計(jì)某一分支下勝結(jié)局的概率。其實(shí)人類的思維也是類似的,在圍棋里平白被對(duì)手屠掉一條大龍,或者在象棋里平白送給對(duì)手一個(gè)車總是不好的——在這些分支下,勝結(jié)局的概率大大降低了。

下圖選自《科學(xué)化麻雀》,閑家愚形聽牌打 10% 危險(xiǎn)度的牌對(duì)攻,x 軸為自己和牌時(shí)得分,y 軸為牌局巡次,z 軸為自己的得分期望。

選手的競(jìng)技水平如何衡量?麻將是否是「運(yùn)七技三」的游戲?其實(shí)無論圍棋還是麻將,區(qū)分選手的競(jìng)技水平都不可能只靠一局,就好比 AlphaGo 和李世乭要進(jìn)行五番棋對(duì)決,AlphaGo 贏第一盤時(shí)大家并不覺得 AlphaGo 一定比李世乭強(qiáng)一樣。圍棋有三番、五番、十番棋,對(duì)于競(jìng)技麻將(國標(biāo)麻將、日本麻將)而言,區(qū)分頂尖選手的競(jìng)技水平至少需要 2000~10000 手牌(如果采用類似橋牌的復(fù)式賽制,這一數(shù)字會(huì)大幅降低)。
至于衡量一個(gè)競(jìng)技項(xiàng)目的競(jìng)技性,單純用運(yùn)氣所占比例是沒有意義的。隨著對(duì)局?jǐn)?shù)的增大,運(yùn)氣所占比例會(huì)越來越小,選手的長(zhǎng)期成績(jī)必然會(huì)向其真實(shí)水平收斂。一個(gè)競(jìng)技項(xiàng)目的競(jìng)技性應(yīng)當(dāng)用「區(qū)分選手競(jìng)技水平所需必要對(duì)局時(shí)間」來衡量。比如圍棋需要三番棋,麻將需要 2000 手牌,圍棋一盤平均需要 4 小時(shí),三番棋約 12 小時(shí),而麻將一手牌約 3 分鐘(網(wǎng)絡(luò)對(duì)局),2000 手牌約 100 小時(shí)。麻將相比圍棋有運(yùn)氣成分,并不意味著麻將選手的競(jìng)技水平無法衡量,而意味著麻將需要更多的對(duì)局時(shí)間來區(qū)分選手的競(jìng)技水平。
下圖選自日本麻將平臺(tái)天鳳麻雀鳳凰桌 1000 場(chǎng)以上玩家安定段位排行。這里的「試合」是指半莊,也就是兩圈牌,考慮到連莊,平均一試合是 10 手牌,1000 試合是 10000 手牌??梢钥吹脚剖值母?jìng)技水平得到了很顯著的區(qū)分,結(jié)果也與麻將圈內(nèi)認(rèn)知相似。

當(dāng)然,這里也不考慮牌手或 AI 作弊的問題。如果通過作弊獲得別人手牌的非法信息,麻將的競(jìng)技平衡就完全被打破了。再強(qiáng)的麻將 AI 成績(jī)也不可能比作弊的人類好,反之亦然。事實(shí)上,現(xiàn)在很多單機(jī)麻將游戲的 AI 就是通過作弊來增加「智能」的。
三. 麻將會(huì)成為人類面對(duì)人工智能的「最后壁壘」嗎?
一言以蔽之,麻將 AI 不是做不了,而是沒人做。之所以目前還沒有能夠戰(zhàn)勝人類的麻將 AI,主要原因還是人們?cè)诼閷?AI 研究方面的投入不夠。目前的麻將 AI 基本都是麻將游戲制作團(tuán)隊(duì)為麻將游戲設(shè)計(jì)的,在單機(jī)上就可以運(yùn)行,強(qiáng)度自然有限。如果像 AlphaGo 一樣,世界頂級(jí)團(tuán)隊(duì)制作,背后龐大資金支持,使用 1000 個(gè) CPU 運(yùn)行,想要設(shè)計(jì)一個(gè)輕易戰(zhàn)勝人類頂尖麻將牌手的 AI 沒有任何難度。
首先,麻將的復(fù)雜度要遠(yuǎn)遠(yuǎn)小于圍棋。單就自己的 14 張手牌來說(總牌數(shù) 136 張),組合共有326520504500 種(計(jì)算方法詳見麻雀の數(shù)學(xué)),遠(yuǎn)遠(yuǎn)小于圍棋的 2.08×10^170。不足 10^12 的手牌種類意味著麻將 AI 完全可以提前計(jì)算好每手牌的打法估值并儲(chǔ)存在資料庫中,打牌時(shí)調(diào)用即可。
下圖選自日本麻將研究者らすかる的個(gè)人網(wǎng)站麻雀の數(shù)學(xué)。

其次,人類對(duì)麻將的研究遠(yuǎn)不及圍棋,頂尖麻將牌手的訓(xùn)練水平很低。相比圍棋研究幾千年的歷史,麻將誕生不過百余年,人們真正開始利用科學(xué)手段(統(tǒng)計(jì)學(xué)、大數(shù)據(jù))來研究麻將只是近十年剛剛起步。例如「間四間」是上世紀(jì)流行的日本麻將理論,指的是別人打過中間相隔 4 張的 2 張同花色數(shù)牌,則這 2 張牌的內(nèi)側(cè)筋牌是危險(xiǎn)牌。如別人打過三筒、八筒(中間相隔四五六七筒),則四七筒是危險(xiǎn)牌,這是因?yàn)閯e人手里一開始可能是三五六八筒,三八筒效率較低被打掉,留下的五六筒要四七筒。這一理論在近十年的大數(shù)據(jù)研究中已被證明是完全錯(cuò)誤的——?jiǎng)e人要四七筒的概率并沒有顯著性的上升。

四. 現(xiàn)在有哪些比較強(qiáng)的麻將 AI?
競(jìng)技麻將方面,目前國標(biāo)麻將和日本麻將都有比較強(qiáng)的 AI(高于人類平均水平)。日本麻將的 AI 目前最強(qiáng)的當(dāng)然是「爆打」。


爆打從 2015 年開始在最大的日本麻將平臺(tái)——天鳳麻雀上開始運(yùn)行,至 2016 年 2 月已經(jīng)打了 1.3 萬多場(chǎng)(約 13 萬手牌)。2015 年 9 月,爆打達(dá)到天鳳麻雀四段,2015 年 12 月更是一度沖進(jìn)天鳳七段,長(zhǎng)期成績(jī)顯示平均為六段以上。這意味著什么呢?

可以看到,天鳳麻雀平臺(tái)的活躍用戶數(shù)約為 17 萬人(不包括新人僵尸號(hào)),而六段以上的用戶總數(shù)為 5793 人,約占 3.4%。也就是說,爆打打麻將比 96.6% 的麻將玩家要好,全世界麻將打得比爆打好的人,數(shù)量?jī)H有幾萬人左右(包含所有麻將規(guī)則的估算)。這只是一個(gè)課題組,用時(shí)一年多研究出的,在一臺(tái)電腦上運(yùn)行的麻將 AI,就已經(jīng)基本趕上 AlphaGo 早期版本所取得的成績(jī)了。
國標(biāo)麻將方面,目前最強(qiáng)的 AI 大概是我本人目前正在參與設(shè)計(jì)的國標(biāo)麻將 AI 了。最初的版本只加入了最常用的十幾個(gè)番種的分值判斷,防守端幾乎沒有做,實(shí)測(cè)對(duì)隨機(jī)牌手和牌率就已經(jīng)達(dá)到 24% 左右,基本與國標(biāo)麻將平均和牌率 24.3% 持平(國標(biāo)麻將數(shù)據(jù)可見國標(biāo)麻將、日本麻將對(duì)局時(shí),「點(diǎn)炮、自摸、流局」的比例分別是多少? - 段昊的回答)。實(shí)際水平大概處在所有牌手中上位 10~20%左右的水平(低段位牌手多,大部分牌手的水平處在平均以下)。
五. 麻將 AI 的算法應(yīng)該是什么樣子的?
最后,我來淺談一下麻將 AI 的基本算法。
1. 基礎(chǔ)牌效率
麻將的牌效率指的是能使手牌更快和牌的打牌方法,是麻將的基本功。來簡(jiǎn)單舉個(gè)例子:
下圖牌畫取自聯(lián)眾國標(biāo)麻將(http://gbmj.lianzhong.com)。

第一類有效牌:能使手牌向和牌前進(jìn)一步(上聽數(shù)降低)的牌,包括:

第二類有效牌:不能使上聽數(shù)降低,但能使第一類有效牌增多的牌,包括:

計(jì)算采用天鳳牌理オンライン対戦麻雀 天鳳 / 牌理。



可見,對(duì)于一開始一上聽的 13 張手牌而言,除了七八九筒外的所有數(shù)牌都是有用的牌。麻將的牌效率就是這樣——不斷通過有效牌增大自己的進(jìn)張面,最終使得和牌的概率越來越大。也許你已經(jīng)發(fā)現(xiàn),麻將牌效率的本質(zhì)就是一個(gè)搜索樹,最開始的手牌




對(duì)于一個(gè)兩上聽以內(nèi)的手牌來說,這個(gè)樹的深度最多也就是 4~5 步,每一步的分支平均在 15 種左右,也就是說復(fù)雜度最多在 10^5 數(shù)量級(jí)。由于每條路徑都對(duì)應(yīng)著一個(gè)確定的概率,一個(gè)好的麻將 AI 完全可以做到遍歷這個(gè)樹,比較兩種或更多種打牌選擇之間所對(duì)應(yīng)結(jié)局的和牌期望之和。
對(duì)于三上聽以外的手牌(由上文圖中可知三上聽以外的手牌約占手牌所有組合的 80%),由于手牌中會(huì)存在大量的孤張或簡(jiǎn)單搭子,只需單獨(dú)比較孤張或簡(jiǎn)單搭子的效率即可,計(jì)算量更小。
除了上述窮舉手牌搜索樹的方法,還可以采用模擬的方法。比如讓麻將 AI 在短時(shí)間內(nèi)模擬兩種打法各 1000 手牌,哪個(gè)和牌率更高就選哪種打法。雖然這樣不太精確但已經(jīng)足夠保證比人要強(qiáng)了。
2. 和牌限制與番數(shù)價(jià)值
很多麻將規(guī)則對(duì)和牌有限制,比如國標(biāo)麻將必須八番起和,四川麻將必須缺一門,太原麻將和牌必須包含指定牌張等等。我們只需在上述基礎(chǔ)牌效率算法搜索樹的基礎(chǔ)上,「砍掉」那些結(jié)局不符合要求的分支即可。
有些時(shí)候我們不僅關(guān)注和牌的概率,也關(guān)注和牌的大小,比如有些牌我們寧可損失一些進(jìn)張也想去做清一色,追求更高的和牌得分。我們只需為樹的所有結(jié)果賦值(和牌得分),并用結(jié)局對(duì)應(yīng)的值與路徑對(duì)應(yīng)的概率求出不同打法的得分期望并進(jìn)行比較。
3. 副露判斷
「這個(gè)牌該不該碰」似乎是打麻將時(shí)比較令人頭疼的問題。但其實(shí)副露判斷只是計(jì)算量大,并不需要特殊的算法,依然是對(duì)比碰與不碰兩種選擇所對(duì)應(yīng)的所有結(jié)局的得分期望即可。日本麻將中的立直(報(bào)聽)判斷也是同理。
只不過當(dāng)我們?cè)诳紤]「打哪張好」的時(shí)候,兩種打牌選擇之間所對(duì)應(yīng)的路徑和結(jié)局有大部分都是重合的;而我們?cè)诳紤]「該不該碰」的時(shí)候,兩種選擇所對(duì)應(yīng)的路徑和結(jié)局基本是完全不同的,這無形中增大了計(jì)算量。其實(shí)人腦在做蒙特卡洛樹搜索時(shí),比較容易做到「想得很深」,比如職業(yè)棋手可以提前算到 20 甚至 30 步棋;但難以做到「想得很廣」,通常情況下大腦只能做到從兩種選擇中找?guī)讉€(gè)概率較大、有代表性的結(jié)局樣本做比較。所以副露判斷顯得難,其實(shí)只是計(jì)算量的問題,而對(duì)于麻將 AI 來說,這不是問題。
4. 防守端
防守端需要解決的是攻守判斷和防守打法兩個(gè)問題,即「什么時(shí)候要防守」和「要防守應(yīng)該打什么」。解決這些問題最好的方法是讓麻將 AI 自己通過大量的牌譜(千萬場(chǎng)量級(jí))進(jìn)行自我學(xué)習(xí)。正如前文我所提到的,其實(shí)人們對(duì)于麻將應(yīng)該如何科學(xué)防守的研究也才剛剛開始,想要分析一個(gè)打過三筒和八筒的人真正需要的是幾筒,需要大量的牌譜作為樣本進(jìn)行研究。這部分研究現(xiàn)在還要等待電腦去完成,未來的麻將 AI 在這方面要比人類做得更好可以說是必然的。
對(duì)大量牌譜所做的出牌模式研究還可反過來應(yīng)用于牌效率算法的改進(jìn)中。比如早巡打過八萬的人手牌中有九萬的概率較小,那么牌墻中剩余九萬的概率就有所上升,牌效率中利用九萬的路徑的概率就可以做出相應(yīng)的修正。
5. 狀況判斷
狀況判斷指的是麻將的「大局觀」,如為了爭(zhēng)取第一名或者為了規(guī)避第四名而采取不同的策略。狀況判斷其實(shí)就是對(duì)得分期望做進(jìn)一步的修正。比如某狀況下我必須自摸 13 番牌才能逆轉(zhuǎn),那么最終結(jié)果是 13 番以下的牌的得分期望可以進(jìn)一步降低,而 13 番及以上的牌的得分期望則可以提高。
總之,麻將的復(fù)雜度較低,算法上可以用搜索樹窮舉法以及大量牌譜的自我學(xué)習(xí)來解決,只要有大量牌譜資料,有人肯花時(shí)間,有人愿意出資,開發(fā)一個(gè)能勝過人類的麻將 AI,非常容易。
(本文首發(fā)于知乎,澎湃新聞獲作者授權(quán)轉(zhuǎn)發(fā)。原文鏈接:https://www.zhihu.com/question/40171482/answer/90573732)





- 報(bào)料熱線: 021-962866
- 報(bào)料郵箱: news@thepaper.cn
滬公網(wǎng)安備31010602000299號(hào)
互聯(lián)網(wǎng)新聞信息服務(wù)許可證:31120170006
增值電信業(yè)務(wù)經(jīng)營(yíng)許可證:滬B2-2017116
? 2014-2025 上海東方報(bào)業(yè)有限公司




