麻将牌识别算法AI也能打麻将了只赢钱
?
去年8月,在世界人工智能大會上,微軟宣布由微軟亞洲研究院研發的麻將AI系統Suphx成為首個在國際知名專業麻將平臺“天鳳”上榮升十段的AI系統,其實力超越該平臺公開房間頂級人類選手的平均水平。
?
近日,微軟公布了Suphx相關論文,并向媒體解讀了Suphx的創新技術和相關領域應用進展。
?
論文鏈接:
https://arxiv.org/abs/2003.13590
?
自發布以來,他們將整個Suphx系統架構進行了重新優化,另一方面他們在算法上也做了很多改進,使Suphx的訓練更為高效。
?
Suphx研究人員微軟亞洲研究首席研究員秦濤、高級研究工程師李俊杰介紹,為加快強化學習的速度而引入的“先知教練”技術,用“先知”來引導正常 AI?的訓練,這兩個模型不停的相互學習,其學習效率會更高,即在一開始訓練的時候需要獲取到部分完美信息。
?
一個問題是,如果要將先知技術遷移到其他實際的非完美信息應用中,是否也能提供類似Suphx那樣的訓練條件?
?
研究人員告訴AI科技大本營(ID:rgznai100),他們在金融行業做的一些嘗試,初步效果很不錯。“如果今天A股已經閉盤了,那么我們就知道了今天所有的股票信息,當我們回頭看昨天做決策的時候,假設知道了今天股票的信息,那這就成了完美信息。那么在這種情況下就可以利用完美信息,把模型訓練得更好。正如在麻將AI系統中,通過完美信息可以得到一個非常強大的Teacher Model,這樣Student Model也會學的很好。”
?
此外,他們在物流行業、機器翻譯領域也做了一些初步嘗試。研究人員稱,在機器翻譯領域中,完美信息也會很有幫助,“如果知道這句話的上下文,可能它翻譯得更好,即完美信息,但實際中不一定每句話都知道它的上下文,但是訓練中拿到的完美信息可以幫助將翻譯做得更好。”
?
當然,Suphx還在不斷進化,研究人員介紹了其下一階段的系統迭代計劃:
?
Suphx現在很多時候還是用了高手的數據訓練一個模型,然后再到強化學習,但是面對不同的麻將平臺及規則,不一定所有的平臺都能拿到人類的數據,在這種情況下怎么能不用人的數據直接從0開始,這是他們目前所在做的。
?
麻將一個很獨特的挑戰在于其隨機因素很多,這對訓練和測試都會帶來很大影響。比如,測試的時候基本會跑100萬場游戲,才能明確比較誰更厲害,這就跟圍棋五局三勝的規則很不一樣,這種情況下如何加快地完成對弈,得出可信賴的結果,也是他們現在正研究的問題。
?
另外,他們也在考慮Suphx能針對性地面對不同對手采取一些自適應策略。
?
以下為微軟Suphx團隊對的詳細技術解讀,內容源自微軟研究院AI頭條:
?
麻將 AI 面臨的挑戰
?
麻將 AI 系統 Suphx 主要基于深度強化學習技術。盡管深度強化學習在一系列游戲 AI 中取得了巨大的成功,但想要將其直接應用在麻將 AI 上殊為不易,面臨著若干挑戰。
?
挑戰一:麻將的計分規則通常都非常復雜,在如天鳳平臺等競技麻將中,計分規則更加復雜。
?
首先,一輪麻將游戲通常有8局甚至更多,每一局結束后四位玩家都會有這一局的得分(可能為正,可能為負)。當一輪游戲的所有8局(或更多局)都結束后,四位玩家按照所有局的累計得分排名,計算這一輪游戲的點數獎勵。在天鳳平臺上,排在一二名的玩家會得到一定數目的點數,排在第三位的玩家點數不變,排在第四位的玩家會被扣去一定數目的點數 。一位玩家的點數會隨著他玩的游戲的增多而變化,當玩家的點數增加到一定程度時會被提高段位,而當玩家的點數扣到0時則會被降低一個段位。因此,為了提高段位,玩家需要盡量多的排在第一位或者第二位,盡量避免被排在第四位。
?
由于一輪游戲的最終點數是由多局的累計得分決定,所以高手可能會策略性地輸掉一些局。例如,如果一位玩家已經在前面7局大比分領先,那么他可能會故意輸掉第8局讓排在第三或四位的玩家贏得此局,從而確保自己的總分排在第一,最終獲得這一輪游戲的最大點數。也就是說,某一局的輸贏并不能直接代表玩家打的好不好,所以我們并不能直接使用每局的得分來作為強化學習的獎勵反饋信號。
?
其次,天鳳平臺上每一輪游戲的計分規則都需要根據贏家手里的牌型來計算得分,牌型有非常多的可能,例如清一色、混一色、門清等等,不同牌型的得分會相差很大。這樣的計分規則比象棋、圍棋等游戲要復雜得多。麻將高手需要謹慎選擇牌型,以在胡牌的概率和胡牌的得分上進行平衡,從而取得第一、二位或者擺脫第四位。
?
挑戰二:從博弈論的角度來看,麻將是多人非完美信息博弈。麻將一共有136張牌,每一位玩家只能看到很少的牌,包括自己的13張手牌和所有人打出來的牌,更多的牌是看不到,包括另外三位玩家的手牌以及墻牌。面對如此多的隱藏未知信息,麻將玩家很難僅根據自己的手牌做出一個很好的決策。
?
?
挑戰三:麻將除了計分規則復雜之外,打法也比較復雜,需要考慮多種決策類型,例如,除了正常的摸牌、打牌之外,還要經常決定是否吃牌、碰牌、杠牌、立直以及是否胡牌。任意一位玩家的吃碰杠以及胡牌都會改變摸牌的順序,因此我們很難為麻將構建一棵規則的博弈樹(game tree)。即使我們去構建一棵博弈樹,那么這棵博弈樹也會非常龐大,并且有不計其數的分支,導致以前一些很好的方法,如蒙特卡洛樹搜索(MCTS)、蒙特卡洛反事實遺憾最小化(MCCFR)算法等都無法直接被應用。
?
?
Suphx 的決策流程及模型架構
?
Suphx 的打牌策略包含5個需要訓練的模型,以應對麻將復雜的決策類型——丟牌模型、立直模型、吃牌模型、碰牌模型以及杠牌模型。另外 Suphx 還有一個基于規則的贏牌模型決定在可以贏牌的時候要不要贏牌。
?
Suphx 的具體決策流程如下圖所示:
?
圖2:Suphx 決策流程
?
Suphx 的5個模型都基于深度殘差卷積神經網絡,它們的大體結構(如圖3、圖4所示)相似,主要不同在于輸入的維度和輸出的維度。其中丟牌模型輸出有34個節點,代表丟34張牌中任何一張牌的概率,其他的4個模型輸出層只有2個節點,代表是否立直、吃牌、碰牌、杠牌的概率。
?
圖3:丟牌模型結構
?
圖4:立直、吃牌、碰牌、杠牌模型結構
?
這些模型的輸入包含了兩大類信息:
?
1. 當前可觀測的信息,例如玩家自己的手牌、公開牌(包括丟出來的牌、碰的牌、明杠的牌),以及每個玩家的累計得分、座位、段位等等。
?
2. 對將來進行預測的信息,比如打某張牌還需要拿幾張牌才能胡牌、能夠贏多少分、胡牌概率有多大,等等。
?
需要指出的是,卷積神經網絡 CNN 比較適合處理圖像數據,但是麻將本身并不是天然的圖像數據,因此我們需要對麻將的這些信息進行編碼,使得 CNN 能夠進行處理。圖5展示了我們用一個4x34的矩陣來編碼玩家的手牌。
?
圖5:手牌信息的矩陣表達
?
實際上,在 Suphx 研發的初期,我們采用了決策樹算法 LightGBM,其在監督學習模仿人類玩家的行為上表現的不錯,但是不適合強化學習,因此后來我們轉而使用 CNN。
?
Suphx 訓練算法
?
Suphx 訓練過程分為三個主要步驟:首先使用來自天鳳平臺的高手打牌記錄,通過監督學習來訓練這5個模型,然后使用自我博弈強化學習以及我們設計的兩個技術解決麻將本身的獨特性所帶來的挑戰,最后我們在實戰時采用在線策略自適應算法來進一步提高 Suphx 的能力。
?
下面我們將重點介紹 Suphx 學習算法中的一些關鍵環節:
?
分布式強化學習
?
Suphx 的整個訓練過程十分復雜,需要多 GPU 和多 CPU 協同,因此我們采用了分布式架構(圖6所示)。架構包括一個參數服務器以及多個自我博弈節點,每個節點里包含了多個麻將的模擬器以及多個推理引擎來進行多個策略之間的博弈(即打麻將)。每個自我博弈節點定期將打牌的記錄發送給參數服務器,參數服務器會利用這些打牌記錄來訓練提高當前策略。每過一段時間,自我博弈節點就會從參數服務器拿回最新的策略,用來進行下一階段的自我博弈。
?
圖6:分布式訓練
?
我們發現,強化學習訓練對策略的熵很敏感。如果熵太小,強化學習訓練收斂速度快,自我博弈并不能顯著提高策略;如果熵太大,強化學習訓練就會變得不穩定,訓練過程中的策略變化會很劇烈。所以,我們對強化學習訓練過程中的策略熵進行了正則化處理,要求熵既不能太大又不能太小。
?
全局獎勵預測
?
如前文所述,麻將的計分規則很復雜——玩家每局有得分,一輪游戲根據多局累計分數的排名計算點數。然而,無論是每局得分還是一輪游戲的最終點數都不適合用來做強化學習訓練的反饋信號。
?
由于一輪游戲中有多局,以一輪游戲結束的最終獎勵點數作為反饋信號不能區分打得好的局和打得差的局。因此,我們需要對每局都單獨提供強化學習的訓練信號。
?
然而,即使每局分數都是單獨計算的,也未必能反映出一局打的好壞,特別是對于頂級職業選手來說。例如,在一輪游戲的最后一兩局中,累計得分排位第一的選手在累計分數領先較大的情況下,通常會變得比較保守,會有意識地讓排位第三或第四的選手贏下這一局,不讓排第二位的玩家贏,這樣就可以穩穩地保住總排位第一。也就是說,某一局得分為負不一定意味著策略不好。
?
因此,為了給強化學習訓練提供有效的信號,我們需要將最終的游戲獎勵適當地歸因到每一輪的游戲中。為此,我們引入了一個全局獎勵預測器,它可以基于本局的信息和之前的所有局信息預測出最終的游戲獎勵。在 Suphx 中,獎勵預測器是一個遞歸神經網絡 (GRU),如圖7所示。
?
圖7:全局獎勵預測器
?
該獎勵預測器的訓練數據來自于高手玩家在天鳳平臺的歷史記錄,而訓練過程則是最小化預測值和最終游戲獎勵之間的平方誤差。預測器訓練好后,對于自我博弈生成的游戲,我們用當前局預測的最終獎勵和上一局預測的最終獎勵之間的差值作為該局強化學習訓練的反饋信號。
?
先知教練
?
麻將中存在著豐富的隱藏信息,如其他玩家的手牌、墻牌等,如果不能獲得這些隱藏信息,那么就很難確保某個動作(例如丟三萬)的好壞,這也是麻將之所以很難的一個根本原因。在這種情況下,雖然 Suphx 可以通過強化學習來提高策略,但學習速度會非常慢。
?
為了加快強化學習訓練的速度,我們引入了一個“先知”,它可以看到所有的信息,包括(1)玩家自己的私有手牌,(2)所有玩家的公開牌,(3)其他公共信息, (4)其他三個玩家的私有手牌,(5)墻牌。只有(1)(2)和(3)是正常的玩家可以獲得的,而(4)和(5)是只有“先知”才能獲得的額外的 "完美 "信息。
?
圖8:左邊為正常可觀測信息,右邊為完全信息(包括對手手牌墻牌這些“完美”信息)
?
有了這些“不公平”的完美信息,“先知”在經過強化學習訓練后,很容易成為麻將超級高手,安定段位也很容易就可以超過20段。這里的挑戰是,如何利用“先知”來引導和加速 AI 的訓練。實驗表明,簡單的知識萃取(knowledge distillation)或者模仿學習(imitation learning)并不能很好地把“先知”的“超能力”轉移到 AI 系統上——對于一個只能獲取有限信息的正常 AI 來說,它很難模仿一個訓練有素的“先知”的行為,因為“先知”的能力太強,遠遠超出了普通 AI 的能力。比如,“先知”看到了其他玩家的手牌,知道每個玩家胡什么牌,所以它可以打出絕對安全的牌,避免因為丟牌使得其他玩家胡牌,然而正常的 AI 并沒有這些信息,它可能完全不能理解為什么“先知”會打這張牌,所以也不能學到這種行為。因此,我們需要一個更聰明的方法,用“先知”來引導正常 AI 的訓練。
?
?
在 Suphx 中,我們的做法如下:
?
首先,通過強化學習訓練“先知”,使用包括完美信息在內的所有特征來訓練“先知”。在這一過程中需要控制“先知”的學習進度,不能讓其過于強大。
?
然后,我們通過加 mask 逐漸丟掉完美特征,使“先知”最終過渡到正常 AI。
?
接著,我們繼續訓練正常 AI,并進行一定數量的迭代。持續訓練的過程中采用了兩個技巧:一,將學習率衰減到十分之一;二,我們采用了拒絕采樣,即如果自我博弈生成的樣本和當前模型的行為相差太大,我們便會拋棄這些樣本。根據我們的實驗,如果沒有這些技巧,持續訓練會不穩定,也不會帶來進一步的改進。
?
參數化的蒙特卡洛策略自適應
?
對一個麻將高手來說,初始手牌不同時,他的策略也會有很大的不同。例如,如果初始手牌好,他會積極進攻,以獲得更多的得分;如果初始手牌不好,他會傾向防守,放棄胡牌,以減少損失。這與此前的圍棋 AI 和星際爭霸等游戲 AI 有很大的不同。所以,如果我們能夠在對戰過程中對線下訓練的策略進行調整,那么我們就可以得到更強的麻將 AI。
?
蒙特卡洛樹搜索(MCTS)是圍棋等游戲 AI 中一種成熟的技術,以提高對戰時的勝率。然而遺憾的是,如前所述,麻將的摸牌、打牌順序并不固定,很難建立一個規則的博弈樹。因此,MCTS 不能直接應用于麻將 AI。在 Suphx 中,我們設計了一種新的方法,命名為參數蒙特卡洛策略自適應(pMCPA)。?
?
當初始的手牌發到麻將 AI 手中時,我們會調整離線訓練好的策略,使其更適應這個給定的初始手牌,具體過程為:
?
模擬:隨機采樣三個對手的手牌和墻牌,然后利用離線訓練的策略將這一局模擬打完。總共做 K 次。
?
調整:利用這 K 次打牌的過程和得分進行梯度更新,微調策略。
?
打牌:使用微調后的策略與其他玩家進行對戰。
?
我們的實驗表明,相對麻將隱藏信息集的平均大小10的48+次方倍而言,模擬的次數 K 的數量不需要很大,pMCPA 也并不需要為這一局手牌收集所有可能后續狀態的統計數據。由于 pMCPA 是一種參數化的方法,所以微調更新后的策略可以幫助我們將從有限的模擬中獲得的知識推廣泛化到未見過的狀態。
?
在線實戰
?
Suphx 已在天鳳平臺特上房和其他玩家對戰了5000多場,達到了該房間目前的最高段位10段,其安定段位達到了8.7段(如圖9所示),超過了平臺上另外兩個知名 AI 的水平以及頂級人類選手的平均水平。?
?
圖9:天鳳平臺“特上房”安定段位對比
?
下表展示了 Suphx 在這些對戰中的一些統計數據,包括1/2/3/4位率、胡牌率以及點炮率。我們發現 Suphx 特別擅長防守,它的4位率和點炮率(deal-in rate)尤其低。
?
注:上表格中的 Bakuuchi 即東京大學/HEROZ 研發的麻將 AI “爆打”
?
Suphx 可以說是“另辟蹊徑”, 具有鮮明的個人風格,創造了許多新的策略和打法,例如它特別擅長保留安全牌,傾向于胡混一色等等。下圖展示了 Suphx 在天鳳平臺實戰時保留安全牌的一個例子。當前時刻 Suphx(南家)需要丟牌,如果是一個人類玩家高手,在這種情況下會丟北風,但是 Suphx 這個時候會丟掉一張7條,這在人類玩家看起來會覺得很不尋常,因為7條是一張好牌,丟掉7條會使得胡牌的進度變慢。Suphx 之所以丟掉7條而留住北風,是因為北風是一張安全牌,這樣在未來某一時刻,如果有人突然立直要胡牌了,Suphx 可以打出北風而不點炮,這樣后面還有機會胡牌;如果它在前面已經把北風丟掉,那這個時候為了打出一張安全牌就不得不拆掉手里的好牌,從而大大降低了胡牌的可能。
?
圖10:Suphx(南邊位置)保留安全牌北風
?
許多觀看 Suphx 比賽的玩家表示在觀戰過程中受到了啟發,甚至有麻將愛好者將 Suphx 稱作“麻將教科書”、“Suphx 老師”,通過學習 Suphx 的打法,幫助他們進一步提升和豐富自己的麻將技巧。“我已經看了 300 多場 Suphx 的比賽,我甚至不再觀看人類玩家的比賽了。我從 Suphx 身上學到了很多新技術,它們對于我的三人麻將打法有著非常大的啟發,”麻將選手太くないお在社交媒體上表示。去年 6 月太くないお成為世界上第 15 位三人麻將天鳳位獲得者,也是第一位在四人麻將和三人麻將中均取得天鳳位的頂級玩家。
?
總結和展望
?
Suphx 可謂是迄今為止最強的麻將 AI 系統,也是天鳳平臺上首款超越大多數頂尖人類玩家的麻將 AI。我們相信,今天 Suphx 在天鳳平臺上取得的成績只是一個開始,未來,我們將為 Suphx 引入更多更新的技術,繼續推動麻將 AI 和不完美信息游戲研究的前沿。
?
同時,我們也期待游戲 AI 的研究可以推動人工智能技術的創新發展,讓人工智能真正走進我們的生活,幫助人們解決更加錯綜復雜的現實挑戰。很多現實世界中的問題如金融市場預測、物流優化等與麻將有著相同的特點,包括復雜操作/獎勵規則、信息的不完全性等。
?
我們相信,我們在 Suphx 中為麻將 AI 設計的技術,包括全局獎勵預測、先知引導和參數化策略自適應等技術,在現實世界的應用中將大有可為,我們也正在積極推動這些技術的外延及落地。
?
Suphx 研發團隊
————————————————
版權聲明:本文為CSDN博主「AI科技大本營」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/dQCFKyQDXYm3F8rB0/article/details/105578255
總結
以上是生活随笔為你收集整理的麻将牌识别算法AI也能打麻将了只赢钱的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何安装UOS操作系统
- 下一篇: 开发板的使用