(原標題:CMU風頭被搶 新型DeepStack算法搶先攻克德州撲克圖靈測試)
在國外的學術圈裡,有一份論文火了。論文裡進行的研究表明,人類歷史上第一次,AI在德州撲克遊戲上贏得了人類職業玩家。而這份論文的突破性意義在於:AI在非完整信息的博弈遊戲中,贏得人類職業對手。這篇論文的名字是《DeepStack:無限下注撲克裡的專家級人工智慧》(DeepStack: Expert-Level Artificial Intelligence in No-Limit Poker),1月6號提交到了ArXiv上。
論文作者是來自加拿大Alberta大學、捷克Charles大學、布拉格捷克理工大學的研究人員。而論文題目裡的DeepStack,是一種新型的算法名稱,論文裡說明到「DeepStack 是一種通用算法,可用於一大類非完整信息的序列博弈」。在一項涉及到數十位參與者和4.4萬手撲克的研究中,DeepStack 成為了世界上第一個在「一對一無限注德州撲克」上擊敗了職業撲克玩家的電腦程式。
什麼是「一對一無限注德州撲克」(HUNL)
德州撲克的英文名稱是「Texas Hold'em」,而「一對一無限注德州撲克」(Heads-up no-limit,簡稱 HUNL)的意思,就是有2個玩家且不限下注籌碼。這篇論文裡的自然就是計算機和職業玩家挨個對局。
雖然是撲克,但跟鬥地主還是很不一樣的,它是「賭場」十分受歡迎的項目。這裡祭出視頻,幫大家理解一下德州撲克的規則和玩法。
從上面的視頻中,我們大致能了解一場德州撲克會有兩類信息:玩家每人手裡分到2張底牌的「私有信息」和桌子上公共牌的「公開信息」。玩家選擇5張公共牌裡的3張,與手裡的2張底牌組合,最後以期得到最好的5張牌的組合。按照「Card Ranking」決定最後的勝者。
在中國玩德州撲克的名人,一個是汪峰老師,另一個就是李開復老師。在知乎上「撲克有哪些技巧、經驗或者原則?」的提問下,排名第一的,就是李開復老師的答案,他尤其提到玩好詐唬(Bluffing,高手慣用技巧)的關鍵在於學好統計。
德州撲克是新一代的圖靈測試?
德州撲克已經成為十分流行的人工智慧研究測試地,每一個撲克玩家手裡握著的底牌「私有信息」,是其它玩家看不到的,所以被稱為是「非完整信息」(Imperfect information)的博弈。這跟圍棋有很大不同,圍棋是完整信息公開的博弈,玩家們可以看到棋盤上的每個旗子,考慮所有落子的可能性。所以德州撲克對於人工智慧來說,更加具有挑戰性。
《DeepStack》這篇論文的通信作者 Michael Bowling曾經在2015年初接受《New Scientist》採訪時說道:「德州撲克最有趣的地方,就是你無法獲得完整的信息」。
而卡耐基梅隆大學(CMU)Tuomas Sandholm教授也說道:「撲克已經成為在非完整信息情況下,衡量(計算機)智能水平的標準......而它可以看做是一種超越圖靈測試的存在。」
有趣的是,這兩位教授都在領導自己的團隊攻克這個新型圖靈測試,一位在加拿大Alberta大學,一位在美國CMU大學。
幾天前,CMU已經發出預告:由Tuomas Sandholm教授領導研發出的Libratus人工智慧系統,將於當地時間1月11日,在賓夕法尼亞州匹茲堡的 Rivers 賭場,與四個頂級職業玩家玩12萬手的HUNL,並角逐20萬美元的獎金。早在2015年,Libratus的前身Claudico與人類玩家首次對戰,在8萬手的對決中完敗,這次算是CMU的捲土重來。
但是我們已經知道了結果,Alberta趕在CMU之前,把就論文發出來了。學術圈人士紛紛表達讚美,稱DeepStack具有裡程碑意義(當然這份論文還未通過同行審議階段),然而跟CMU Libratus提前好幾天的預熱盛況相比,DeepStack並沒有得到等量的媒體待遇,也引發一些人的不滿。
CMU走的是當年AlphaGo的路線,在華麗的賭場搞一場秀,與人類頂尖玩家對戰,還有20萬美金的噱頭。所以這份DeepStack論文雖然比CMU更早取得突破,但陣仗不如後者大,媒體對其忽視了,也在情理。
總之一句話,Alberta搶了先,CMU搶了熱鬧(學術界的競爭也是異常激烈的)。
此份DeepStack論文的成果
DeepStack總共與33位人類選手進行了4.4萬手的較量,分別在2016年11月7日和12月12日之間於線上舉行對局。最終獲勝的前三位選手,分別有5000、2500和1250加元的獎勵。以下是對局結果。結果顯示,DeepStack的平均贏率為492 mbb/g(一般人類玩家到50 mbb/g就被認為擁有較大優勢,750mbb/g 就是對手每局都棄牌的贏率)。
前面我們提到,一場撲克的信息可以分為「私有」和「公開」,放在桌子中間的5張公開牌形成一種動態的「公開狀態」。遊戲中的公開狀態的可能序列構成一個公開樹(Public tree),其中每一個公開狀態都有一個相關的公開子樹(Public subtree)。
上圖是HUNL 中公開樹的一部分。紅色和藍色線條表示玩家動作,綠色線條表示公開的公共牌。圓形節點表示遊戲結束。
這張圖是DeepStack整體架構,分為(a)(b)(c)三個部分。在(a)中,DeepStack在每一個公開狀態裡, 都要重新計算它需要的動作,其中子樹值(Subtree value)會通過一個訓練好的深度神經網絡 Neural net(b)來計算,而訓練Neural net的樣本就是(c)。
總的來說,DeepStack結合了遞歸推理(Recursive reasoning)來處理信息不對稱性,還結合了分解(Decomposition)集中計算到相關決策上,並形成了一種關於任意牌的直覺(Intuition),這種直覺可以使用深度學習進行自我玩牌而自動學習到。
[廣告]活動入口:
買美股,上老虎 - 超低佣金,每股只需1美分