91伊人久久大香线蕉_青久久久久国产线免观_亚洲无码久久精品视频_熟妇在线观看免费视频

麻將是人類智慧最后的堡壘?AI打爆它其實很容易

    更新時間:2017-01-05 08:20  

【編者按】

隨著Master完成對人類棋手的60勝,人工智能(AI)對人類智慧的挑戰(zhàn)再度引爆網(wǎng)絡(luò)。

曾經(jīng),圍棋曾以它復(fù)雜的算法,至高的棋理被認為“無可戰(zhàn)勝”,但在圍棋堡壘失手后,我們不禁要問,還有哪個棋牌領(lǐng)域AI不能攻克。

在網(wǎng)絡(luò)江湖上,許多人都說中國的“國粹”麻將會成為人類面對人工智能的“最后壁壘”,但是這樣的說法真的靠譜嗎?

麻將比圍棋好搞定多了

一言以蔽之,麻將AI 不是做不了,而是沒人做。之所以目前還沒有能夠戰(zhàn)勝人類的麻將AI,主要原因還是人們在麻將AI 研究方面的投入不夠。

目前的麻將AI基本都是麻將游戲制作團隊為麻將游戲設(shè)計的,在單機上就可以運行,強度自然有限。

如果像AlphaGo一樣,世界頂級團隊制作,背后龐大資金支持,使用1000個CPU運行,想要設(shè)計一個輕易戰(zhàn)勝人類頂尖麻將牌手的AI沒有任何難度。

首先,麻將的復(fù)雜度要遠遠小于圍棋。單就自己的14張手牌來說(總牌數(shù)136張),組合共有326520504500種(計算方法詳見麻雀 數(shù)學(xué)),遠遠小于圍棋的2.08 10^170。

不足10^12的手牌種類意味著麻將AI完全可以提前計算好每手牌的打法估值并儲存在資料庫中,打牌時調(diào)用即可。

下圖選自日本麻將研究者 的個人網(wǎng)站麻雀 數(shù)學(xué)。

當(dāng)然,打麻將也要考慮別人打的牌以及各家的得分。各家分差的復(fù)雜度是很小的,而別人打的牌雖然復(fù)雜度會很高(136張牌的牌墻組合為4.3 10^185種,甚至超越了圍棋的復(fù)雜度),但別人打的10張牌大多只有1~2張是有用的信息,AI只需要識別這種模式并搜索對比以往對局的牌譜即可。

其次,人類對麻將的研究遠不及圍棋,頂尖麻將牌手的訓(xùn)練水平很低。相比圍棋研究幾千年的歷史,麻將誕生不過百余年,人們真正開始利用科學(xué)手段(統(tǒng)計學(xué)、大數(shù)據(jù))來研究麻將只是近十年剛剛起步。

例如“間四間”是上世紀(jì)流行的日本麻將理論,指的是別人打過中間相隔4張的2張同花色數(shù)牌,則這2張牌的內(nèi)側(cè)筋牌是危險牌。

如別人打過三筒、八筒(中間相隔四五六七筒),則四七筒是危險牌,這是因為別人手里一開始可能是三五六八筒,三八筒效率較低被打掉,留下的五六筒要四七筒。

這一理論在近十年的大數(shù)據(jù)研究中已被證明是完全錯誤的——別人要四七筒的概率并沒有顯著性的上升。

可見,目前人們對麻將的研究還處在很初級的階段,通過別人打過的牌來分析別人想要的牌的科學(xué)研究才剛剛開始。麻將界也沒有圍棋那樣3歲開始學(xué)棋,10幾歲就和世界頂級高手過招,接受世界頂級指導(dǎo)的職業(yè)選手。

麻將本身復(fù)雜度低,人類頂尖牌手水平又不高,被人工智能擊敗會比圍棋要容易得多,不可能是“最后壁壘”。

現(xiàn)在有哪些比較強的麻將AI?

競技麻將方面,目前國標(biāo)麻將和日本麻將都有比較強的AI(高于人類平均水平)。日本麻將的 AI目前最強的當(dāng)然是“爆打”。

“爆打”是由東京大學(xué)工學(xué)系在讀博士生水上直紀(jì)開發(fā)的日本麻將AI,他所在的課題組就是專門研究麻將AI的。

爆打和AlphaGo 一樣,也具有自我對局和分析并學(xué)習(xí)人類牌譜的能力。爆打從2015年開始在最大的日本麻將平臺——天鳳麻雀上開始運行,至2016年2月已經(jīng)打了1.3萬多場(約13萬手牌)。

2015年9月,爆打達到天鳳麻雀四段,2015年12月更是一度沖進天鳳七段,長期成績顯示平均為六段以上。這意味著什么呢?

上圖是天鳳麻雀平臺2016年3月13日的段位成績分布圖(來源 対戦麻雀天鳳 / )。

天鳳平臺具有非常科學(xué)的段位和Elo Rating體系,越是和高水平牌手對局,獲勝后Rate增加越多,失敗后Rate減少越少;

越是和低水平牌手對局,獲勝后Rate增加越少,失敗后Rate減少越多。最終段位和Rate值的穩(wěn)定值就代表了牌手的真實實力。

可以看到,天鳳麻雀平臺的活躍用戶數(shù)約為17萬人(不包括新人僵尸號),而六段以上的用戶總數(shù)為5793人,約占3.4%。

也就是說,爆打打麻將比96.6%的麻將玩家要好,全世界麻將打得比爆打好的人,數(shù)量僅有幾萬人左右(包含所有麻將規(guī)則的估算)。

這只是一個課題組,用時一年多研究出的,在一臺電腦上運行的麻將AI,就已經(jīng)基本趕上 AlphaGo早期版本所取得的成績了。

國標(biāo)麻將方面,目前最強的AI大概是我本人目前正在參與設(shè)計的國標(biāo)麻將AI了。最初的版本只加入了最常用的十幾個番種的分值判斷,防守端幾乎沒有做,實測對隨機牌手和牌率就已經(jīng)達到24%左右,基本與國標(biāo)麻將平均和牌率24.3% 持平。

實際水平大概處在所有牌手中上位10~20%左右的水平(低段位牌手多,大部分牌手的水平處在平均以下)。

麻將 AI 的算法應(yīng)該是什么樣子的?

最后,我來淺談一下麻將AI的基本算法。

1. 基礎(chǔ)牌效率

麻將的牌效率指的是能使手牌更快和牌的打牌方法,是麻將的基本功。來簡單舉個例子:

下圖牌畫取自聯(lián)眾國標(biāo)麻將(http://gbmj.lianzhong.com)。

這是一手13張牌的手牌,現(xiàn)階段是一上聽(差1張牌就可以聽牌),那么哪些牌是有用的牌,或者說我摸到哪些牌會留下呢?這些有用的牌稱為“有效牌”,最有用的當(dāng)然是能讓我直接聽牌的牌,這類牌稱為“第一類有效牌”。

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

除了第一類有效牌,有用的牌還有以下這些:

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

比如摸到九索,一般情況下應(yīng)該選擇留下九索打掉三索,因為第一類有效牌變多了:

計算采用天鳳牌理 対戦麻雀 天鳳 / 牌理。

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

比如摸到五索,一般情況下應(yīng)該選擇留下三五索拆掉八九索,雖然第一類有效牌張數(shù)沒變,但三五索相比八九索多了1種第二類有效牌——六索(原是第三類有效牌)。

(也許看到這里,你有點算不過來,或者感覺這和你平時打的麻將壓根不是一個游戲。沒關(guān)系,這很正常,你可以找張紙,在紙上仔細算一下每種第二類有效牌都新增了哪些第一類有效牌。)

可見,對于一開始一上聽的13張手牌而言,除了七八九筒外的所有數(shù)牌都是有用的牌。麻將的牌效率就是這樣——不斷通過有效牌增大自己的進張面,最終使得和牌的概率越來越大。

也許你已經(jīng)發(fā)現(xiàn),麻將牌效率的本質(zhì)就是一個搜索樹,最開始的手牌經(jīng)過多輪選擇后可能對應(yīng)多種結(jié)局(和牌),例如:

路徑:摸到第一類有效牌八萬或七索聽牌,再自摸另一張和牌(最大概率結(jié)局)。

路徑:先摸到第二類有效牌一萬或七萬后打掉三索,然后摸到一萬或七萬的另一張聽七索,或者摸到七索選擇聽一萬和七萬對倒和牌。

路徑:先摸到第三類有效牌三筒后打掉三索,然后摸到四筒后拆掉八九索,之后和牌。

對于一個兩上聽以內(nèi)的手牌來說,這個樹的深度最多也就是4~5步,每一步的分支平均在15種左右,也就是說復(fù)雜度最多在10^5數(shù)量級。由于每條路徑都對應(yīng)著一個確定的概率,一個好的麻將AI完全可以做到遍歷這個樹,比較兩種或更多種打牌選擇之間所對應(yīng)結(jié)局的和牌期望之和。

對于三上聽以外的手牌(由上文圖中可知三上聽以外的手牌約占手牌所有組合的80%),由于手牌中會存在大量的孤張或簡單搭子,只需單獨比較孤張或簡單搭子的效率即可,計算量更小。

除了上述窮舉手牌搜索樹的方法,還可以采用模擬的方法。比如讓麻將 AI 在短時間內(nèi)模擬兩種打法各1000手牌,哪個和牌率更高就選哪種打法。雖然這樣不太精確但已經(jīng)足夠保證比人要強了。

2. 和牌限制與番數(shù)價值

很多麻將規(guī)則對和牌有限制,比如國標(biāo)麻將必須八番起和,四川麻將必須缺一門,太原麻將和牌必須包含指定牌張等等。我們只需在上述基礎(chǔ)牌效率算法搜索樹的基礎(chǔ)上,“砍掉”那些結(jié)局不符合要求的分支即可。

有些時候我們不僅關(guān)注和牌的概率,也關(guān)注和牌的大小,比如有些牌我們寧可損失一些進張也想去做清一色,追求更高的和牌得分。我們只需為樹的所有結(jié)果賦值(和牌得分),并用結(jié)局對應(yīng)的值與路徑對應(yīng)的概率求出不同打法的得分期望并進行比較。

3. 副露判斷

“這個牌該不該碰”似乎是打麻將時比較令人頭疼的問題。但其實副露判斷只是計算量大,并不需要特殊的算法,依然是對比碰與不碰兩種選擇所對應(yīng)的所有結(jié)局的得分期望即可。日本麻將中的立直(報聽)判斷也是同理。

只不過當(dāng)我們在考慮“打哪張好”的時候,兩種打牌選擇之間所對應(yīng)的路徑和結(jié)局有大部分都是重合的;而我們在考慮“該不該碰”的時候,兩種選擇所對應(yīng)的路徑和結(jié)局基本是完全不同的,這無形中增大了計算量。

其實人腦在做蒙特卡洛樹搜索時,比較容易做到“想得很深”,比如職業(yè)棋手可以提前算到 20 甚至30步棋;但難以做到“想得很廣”,通常情況下大腦只能做到從兩種選擇中找?guī)讉€概率較大、有代表性的結(jié)局樣本做比較。

所以副露判斷顯得難,其實只是計算量的問題,而對于麻將AI來說,這不是問題。

4. 防守端

防守端需要解決的是攻守判斷和防守打法兩個問題,即“什么時候要防守”和”要防守應(yīng)該打什么”。

解決這些問題最好的方法是讓麻將AI自己通過大量的牌譜(千萬場量級)進行自我學(xué)習(xí)。正如前文我所提到的,其實人們對于麻將應(yīng)該如何科學(xué)防守的研究也才剛剛開始,想要分析一個打過三筒和八筒的人真正需要的是幾筒,需要大量的牌譜作為樣本進行研究。

這部分研究現(xiàn)在還要等待電腦去完成,未來的麻將AI在這方面要比人類做得更好可以說是必然的。

對大量牌譜所做的出牌模式研究還可反過來應(yīng)用于牌效率算法的改進中。比如早巡打過八萬的人手牌中有九萬的概率較小,那么牌墻中剩余九萬的概率就有所上升,牌效率中利用九萬的路徑的概率就可以做出相應(yīng)的修正。

5. 狀況判斷

狀況判斷指的是麻將的“大局觀”,如為了爭取第一名或者為了規(guī)避第四名而采取不同的策略。狀況判斷其實就是對得分期望做進一步的修正。

比如某狀況下我必須自摸13番牌才能逆轉(zhuǎn),那么最終結(jié)果是13番以下的牌的得分期望可以進一步降低,而13番及以上的牌的得分期望則可以提高。

總之,麻將的復(fù)雜度較低,算法上可以用搜索樹窮舉法以及大量牌譜的自我學(xué)習(xí)來解決,只要有大量牌譜資料,有人肯花時間,有人愿意出資,開發(fā)一個能勝過人類的麻將AI,非常容易。

(本文于2016年3月14日首發(fā)于知乎,系澎湃新聞獲作者授權(quán)轉(zhuǎn)發(fā),有部分刪改。原文鏈接:https://www.zhihu.com/question/40171482/answer/90573732)

(原標(biāo)題:麻將是人類智慧最后的堡壘嗎?AI打爆它其實很容易)

原標(biāo)題:麻將是人類智慧最后的堡壘嗎?AI打爆它其實很容易