在國外的學術圈裡,有一份論文火了。論文裡進行的研究表明,人類曆史上第一次,ai在德州撲克遊戲上赢得了人類職業玩家。而這份論文的突破性意義在于:ai在非完整資訊的博弈遊戲中,赢得人類職業對手。
論文作者是來自加拿大alberta大學、捷克charles大學、布拉格捷克理工大學的研究人員。而論文題目裡的deepstack,是一種新型的算法名稱,論文裡說明到“deepstack 是一種通用算法,可用于一大類非完整資訊的序列博弈”。在一項涉及到數十位參與者和4.4萬手撲克的研究中,deepstack 成為了世界上第一個在“一對一無限注德州撲克”上擊敗了職業撲克玩家的計算機程式。
德州撲克的英文名稱是“texas hold'em”,而“一對一無限注德州撲克”(heads-up no-limit,簡稱 hunl)的意思,就是有2個玩家且不限下注籌碼。這篇論文裡的自然就是計算機和職業玩家挨個對局。
雖然是撲克,但跟鬥地主還是很不一樣的,它是“賭場”十分受歡迎的項目。這裡祭出視訊,幫大家了解一下德州撲克的規則和玩法。
從上面的視訊中,我們大緻能了解一場德州撲克會有兩類資訊:玩家每人手裡分到2張底牌的“私有資訊”和桌子上公共牌的“公開資訊”。玩家用自己的2張底牌和5張公共牌結合在一起,選出5張牌,不論手中的牌使用幾張(甚至可以不用手中的底牌),湊成最大的成牌,跟其他玩家比大小。按照“hand rank”決定最後的勝者。
在中國玩德州撲克的名人,一個是汪峰老師,另一個就是李開複老師。在知乎上“撲克有哪些技巧、經驗或者原則?”的提問下,排名第一的,就是李開複老師的答案,他尤其提到玩好詐唬(bluffing,高手慣用技巧)的關鍵在于學好統計。
德州撲克已經成為十分流行的人工智能研究測試地,每一個撲克玩家手裡握着的底牌“私有資訊”,是其它玩家看不到的,是以被稱為是“非完整資訊”(imperfect information)的博弈。這跟圍棋有很大不同,圍棋是完整資訊公開的博弈,玩家們可以看到棋盤上的每個旗子,考慮所有落子的可能性。是以德州撲克對于人工智能來說,更加具有挑戰性。
《deepstack》這篇論文的通信作者 michael bowling曾經在2015年初接受《new scientist》采訪時說道:“德州撲克最有趣的地方,就是你無法獲得完整的資訊”。
而卡耐基梅隆大學(cmu)tuomas sandholm教授也說道:“撲克已經成為在非完整資訊情況下,衡量(計算機)智能水準的标準......而它可以看做是一種超越圖靈測試的存在。”
不知對手“底牌”的博弈,即非完整資訊博弈要求更複雜的推理。
計算機正确決定,依賴于對方“底牌資訊”情況下的機率分布,這種“底牌資訊”可以通過對手過去的行為顯露出來。比如有時玩家采取“詐唬”(bluffing),對手有時手裡并沒有強牌,但還是作出全額下注志在必得的行為,計算機這時要根據對方過去的博弈表現,來判斷對手有強牌的機率。
相應的,對手也會推斷我方的底牌資訊,是以這裡就是一個“遞歸推理”(recursive reasoning),一個玩家無法輕易推理博弈狀況。
有趣的是,這兩位教授都在上司自己的團隊攻克這個新型圖靈測試,一位在加拿大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總共與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),這種直覺可以使用深度學習進行自我玩牌而自動學習到。
而對于deepstack和1月11日的cmu的libratus賭場大戰,雷鋒網将跟蹤深入報道。
ps:關注雷鋒網公衆号(雷鋒網(公衆号:雷鋒網)
本文作者:亞萌