AI賭神Libratus稱霸德州撲克賽場,人工智慧是如何打德州撲克的?
稱霸德州撲克賽場的賭神Libratus,是今年最矚目的AI明星之一。
最近,《科學》最新發布的預印版論文,詳細解讀了AI賭神背後系統的全貌。
在最新論文Superhuman AI for heads-up no-limit poker: Libratus beats top professionals中,卡內基梅隆大學(CMU)的博士生Noam Brown和教授Tuomas Sandholm,詳細介紹了德撲AI如何通過將遊戲分解為可計算、可管理的部分,來實現超越人類的表現,而且AI還能根據對手情況,修正潛在的戰略弱點。
Libratus所用到的技術既不需要領域專家知識,也沒有使用人類數據,甚至不是專門為撲克設計的。換句話說,這些技術適用於多種不完美信息博弈。
不完美博弈正是德撲的一個主要特徵。圍棋、國際象棋、跳棋等棋類遊戲,屬於完美信息博弈,對戰的雙方,清楚每一時刻局面上的全部情況。相比之下,德州撲克存在大量的隱藏信息,包括:對手持有什麼牌,對手是否在詐唬?
詳解Libratus
據最新論文介紹,Libratus主要包括三個模塊。
第一個模塊負責對牌面進行簡化計算,將包含10161種情況的一對一無限注德撲抽象成一個比較簡單的博弈。然後,這個模塊為前兩輪制定詳細的策略,並為後兩輪制定一個粗略的策略。這個抽象簡化版博弈的解決方法稱為藍圖策略(blueprint strategy)。
這種抽象體現在兩個方面,一是下注金額上,二是牌面上。
在下注金額上,100美元和101美元其實幾乎沒有差別,因此,演算法可以對不到100美元的差異進行四捨五入。同時,將類似的牌面視為同一類,也能降低計算的複雜度。
需要說明的是,Libratus在後兩輪遊戲中並不會按照抽象版的解決方法來玩,藍圖策略在這兩輪中的作用,只是用來估算玩家在子遊戲中每一首牌應該得到的獎勵,然後參考這個估算值,在真正的牌局中做出更精確的策略。
這個「更精確的策略」,也就是第二個模塊:嵌套安全子博弈求解(Nested safe subgame solving)。在博弈後期,這個模塊會基於當前的牌面,構建一個全新的、更精細的抽象,而且對這個子博弈的策略進行實時計算。
上圖是Libratus的子博弈求解過程。頂部表示在對局過程中出現了一個子博弈,中間部分表示演算法為這個子博弈制定了更詳細的策略,每次迭代中,對手隨機發放一手牌,可選的期望值可能來自舊的抽象(紅色),也可以來自新的、更精細的抽象(綠色)。如果期望值來自新的抽象,兩個玩家的策略都會改變。這就迫使Libratus制定更精細的策略。上圖底部表示用新的策略替代舊策略。
Libratus的子博弈策略計算和那些完美信息博弈不太一樣,它需要確保這些子博弈的精細解決方法與整個博弈的大藍圖策略不衝突,而不能孤立地解決它。
第三個模塊的意義,是隨著比賽的進行,改進自身的藍圖策略。Sandholm教授表示,通常AI使用機器學習來發現對手的戰略錯誤並加以利用。但這也會讓AI暴露自身的弱點,並被對手加以利用。
不同之處在於,Libratus的自我改進模塊分析對手賭注大小,以檢測自身藍圖戰略中潛在的漏洞,然後彌補自身的不足之處。
在與人類高手對戰之前,Sandholm和Brown為了測試Libratus中所用的各項技術,先用簡化版的撲克對整體流程進行了測試,然後把AI用到了完整版的一對一無限注德州撲克上,和他們自己之前開發的Baby Tartanian8進行比賽。
2016年,Baby Tartanian8曾經贏得電腦德撲大賽冠軍,不過Libratus以63±28大盲注/千手(mbb/hand)的戰績擊敗了它。
「我們研發的技術在很大程度上是獨立於領域的,因此可以應用於其他不完美信息策略應用,不僅限於遊戲領域」,Sandholm和Brown總結說:現實世界的戰略交鋒中,隱藏信息無處不在,Libratus引入的範式對AI未來的發展和引用至關重要。
目前,這項技術已經授權給Sandholm創辦的公司。
論文地址
http://science.sciencemag.org/content/early/2017/12/15/science.aao1733
1 月 30 日,賓夕法尼亞州匹茲堡Rivers賭場,耗時20天的德州撲克人機大戰塵埃落定。卡耐基梅隆大學(CMU)開發的AI程序Libratus 擊敗人類頂級職業玩家,贏取了20萬美元的獎金。(關注鈕問,關注創業)
眾所周知,人工智慧已經在圍棋中擊敗了人類中的頂級人物,相比而言撲克更加複雜。撲克不確定因素很多,比如對手可能會欺騙,在現實世界中到處都是欺騙,AI還不懂得怎樣欺騙。撲克玩家看不到對手的牌,但在西洋棋、國際象棋和圍棋中,大家可以看清對方的棋子。
那麼人工智慧是如何打德州撲克的呢?
一、AI賭神Libratus的策略Libratus 運用了三種策略:增強(自我)學習、殘局解算器、避免人類識別模式。程序用「逼近法」打敗了人類對手,「逼近法」與直覺有點相似。
德州撲克有運氣成分,但比賽總共進行12萬手牌,牌運的影響幾乎微乎其微。打100-1000手牌,運氣還是影響很大的;但打了12萬手牌贏到17.66萬個盲注,比賽結果的可信度高達99.77%。也就是說,每場比賽打12萬手牌,人類與AI進行1000場比賽,AI將贏下998場,人類只能贏下2場。因此,人工智慧Libratus 有著完全不可逆轉的優勢。
二、人類學習撲克的模式人類學習撲克的一種模式是試錯模式,每次輸了一手大牌後,想如果我當時不去加註,不去跟注或者扣牌就不會輸了。每次對過去的行為感到後悔,然後總結經驗調整打法,看是否贏得更多的錢或少輸錢。
人類更多是從互聯網學習別人已經總結好的正確打法。然後再加以練習,比如每天打上4-5個小時,再花1-2個小時總結今天打撲克的錯誤和進步,一般6個月里在互聯網上打300—500萬手牌,通常能成為優秀的撲克玩家。
三、人工智慧Libratus學習撲克的模式撲克人工智慧是通過Counterfactual Regret Minimization進行100萬億手牌的訓練來形成一套完美的打法。
Libratus主要依靠自己的近乎無限的計算量,通過無數盤德州撲克對決,把自己培養成能夠面對各種複雜牌局都能提供最優解,換言之,Libratus本身就變成了德州撲克對決的最優演算法集。再根據不同的對手,在不同時間段,進行調整。人工智慧必須根據近期相關性的牌局,來調整自己的打牌的範圍,進而適應不同對手,不同的打法。
卡內基梅隆大學團隊(其Computer Science專業堪稱全球最好)每晚用超級電腦來分析白天的比賽,提高系統性能。系統檢測自身在每輪比賽中的弱點,每天補救三個最明顯的失誤,而不是試圖學習對手的制勝戰術。
相對其它玩撲克的程序,Libratus最主要的提高在於電腦在接近遊戲最後時的玩法。先前的系統從頭至尾使用單一戰術,但是Libratus使用額外的反饋迴路來實時回應對桌的人類。
百度首席科學家的吳恩達說:「撲克曾經是AI最難攻克的遊戲之一,因為關於遊戲狀態你只能看到部分信息。撲克並沒有單一的最優下法。相反,AI玩家必須讓自己的行動隨機化,這樣它詐唬時才能讓對方無法確定真假。」
如果你也想創業!如果你正在創業!
右上角關註:「鈕問」的頭條號
推薦閱讀:
※你覺得金星在林海雪原的表現怎麼樣?
※你所知道的或耳聞的或經歷的怪異(靈異)事件都有哪些?現在還記得嗎?
※吳昕和潘瑋柏是怎麼回事?
※還記得當年《烏龍闖情關》的劉病已嗎?他曾是火遍港台的小天王什麼原因讓他被人淡忘?
※王凱的最新作品有哪些?