筆者從完美信息博弈類遊戲的理論出發, 分析了AI打德州撲克為何能打贏人類?
前段時間,受周圍朋友的影響,喜歡上了德州撲克,享受和牌友心理博弈的過程,也享受「賭博」帶來的快感。一直覺得德州最大的魅力就在於它不完全是理性的判斷,更多的是感性、勇氣和理智之間的較量,不確定性太多,所以它區別於其他的棋牌類遊戲,沒有辦法通過學習一些套路和技巧就能完勝對手。
最近回了學校,又開啟了每天和AI「博弈」的磕鹽生活。今天驚奇的發現,AI打德州撲克居然也完勝人類了!此次比賽共持續 20 天,由 4 名人類職業玩家 Jason Les、Dong Kim、Daniel McAulay 和 Jimmy Chou 對戰人工智慧程序 Libratus,在為期 20 天的賽程裡面對玩 12 萬手,爭奪 20 萬美元的獎金。最終的結果是「比賽過程中,人類選手整體上從未領先過」。
隨著天數的增加,AI和人類選手的差距愈發明顯
近幾年,隨著科技的不斷發展,計算機打敗人類的案例屢見不鮮。作為一隻「程序媛」,我也算是半個「局內人」,本科參與過一些計算機博弈和機器人相關的比賽,碩士期間對AI也有一些淺顯的了解。今天就從理性的角度講講,AI是如何打敗人類的。
幾年前也是輝煌過的~~~
德州撲克怎麼玩?(會玩請忽略)德州撲克是目前世界上最流行的撲克遊戲,遊戲規則請看視頻:
qqlive://sso/videoid=a03577cuh39&stag=detail.selectpanel.new&playstatisic=scene%3Drightdetail%26pagename%3D%E6%92%AD%E6%94%BE
視頻來自網絡,侵刪
總結來說,如果想要贏牌,第一種可能就是你的牌比其他人的牌都大,第二種可能就是通過押注的技巧把牌沒有你大的對手都嚇跑。可能性就是德州撲克最有趣的地方。
圖片來自網絡,侵刪
完美信息博弈和不完美信息博弈
為什麼AI不容易在德州撲克上打敗人類呢?德州撲克和圍棋對AI來講到底有什麼區別?首先,要理解完美信息博弈(棋牌類遊戲)和不完美信息博弈(撲克類遊戲)的區別。
完美信息博弈是指後行動的參與者可以觀測到先行動的參與者的行動信息。像棋牌類遊戲,雙方的信息都是共享的,比如圍棋,雙方都能夠看到場上已經下過的旗子以及雙方的優勢和劣勢。
而撲克、談判、商業決策等問題,雙方的信息都是不公開給對方的,也即是說但參與者做選擇的時候不知道其他參與者的選擇,這就被稱謂不完美信息博弈。
簡單來說,如果把其他參與者的行動理解為一個參與者做決策時所面對的環境,信息不完美就是決策者不知道自己所處的決策環境。
對德州撲克,即使對手all in了所有的籌碼,那麼我們也不清楚他手裡到底有什麼底牌,信息的不對稱,就迫使大家必須有「賭一把」的精神。
這也是為什麼金融人士和投資大佬們都喜歡玩德州撲克。
我們用理工的思維講講AI是怎麼贏了人類的——完美信息博弈類遊戲
對於圍棋遊戲來說,是一場零和完美信息博弈,這是指在任何時刻,雙方玩家都知道前面遊戲的全部狀態(完美信息),並且在有限步數之後遊戲的結果非勝即負(零和)。知道了遊戲的有限狀態,計算機就可以通過暴力枚舉的方法來計算後面所有可能的下法,形成一顆巨大的搜索樹,這顆搜索樹可以列舉出在當前狀態下所有可能的下法,每個子搜索樹都能獨立求解,計算機就可以根據計算的結果安排對應的策略,從而達到最終的勝利。
舉個慄子,比如,小明是一個普通中國家庭長大的小孩,在他的一生中,面臨著很多個選擇,如何才能在未來走向人生巔峰呢?如果可以列舉出他未來所有的可能性,把每一步的選擇拆解成「子未來」,那麼就可以計算出成功勝算最大的選擇了。(例子可能不夠恰當,理解意思就好,嘻嘻)
小明同學的人生探險
所以,假設我們有無限大的計算資源,就可以將一局遊戲的博弈拆解成一個一個的子博弈(列舉出所有的可能性),從而計算出勝算最大的打法,就可以打贏比賽了。
但是,以棋類遊戲中比較簡單的西洋棋來說,它的分支因子大概是40左右,這表示預測之後20步的動作需要計算40的20次方(這是多大,就算是1GHz的處理器,也要計算3486528500050735年),請注意,這還是比較簡單的西洋棋。
電腦:「我壓力太大了,哇的一聲炸開花」
所以,科學家們利用一些剪枝、搜索等算法以縮減計算範圍,從而在有限的時間內找出最佳策略。
不完美信息博弈類遊戲
終於講到了今天的主角,德州撲克。
德州撲克就是很典型的不完美信息博弈類遊戲,它的策略設置中存在隱藏的信息。這類模型也有大量的應用場景,比如談判、拍賣等等。不完美信息博弈不能如完美信息博弈那樣通過分解而進行求解,因為一個子博弈的最佳策略可能依賴於其它尚未得到的子博弈的策略和輸出。
換句話說,我們無法通過預測到對方下注的多少從而猜測到對方手裡的牌是什麼,因為也許對方的牌並不好,但他通過下注欺騙你,讓你選擇棄牌。所以,這件事對於沒心機的計算機是相當困難的,對手第一手就all in了,但是他的牌到底好不好呢?
因此,當我看到AI在德州上也打敗了人類,還些許有些小激動,maybe未來,機器人也可以具有女人的第六感了。
那AI到底是如何打敗人類的呢?
論文中提及和很多很難理解(其實自己也看不太懂,逃)的算法,為了方便理解,我們以一個簡單的博弈模型來舉例,試圖理解聰明的AI。
我們來設計一個簡單的遊戲。
遊戲玩家有A和B兩人。A可以拋一次硬幣,正反面都只有自己才可以看到,拋完後他有兩個選擇:①sell,賣掉硬幣;②play,和B玩遊戲。
①A選擇了sell:
if:硬幣落在正面,A賣掉後得到五毛錢;else:硬幣落在反面,A賣掉後輸掉五毛錢。②A選擇了play:遊戲繼續,接下來由B來猜硬幣是落在正面還是反面:
if : B猜對了,A賠一元,B賺一元;else:B猜錯了,A賺一元,B賠一元。
此時,對B而言,就是一個不完美博弈,他無法從A選擇play從而判斷A手中的硬幣是正面還是反面。
這時有兩個極限情況,如果B總是猜正面,那麼聰明的A就會變化策略,當他拋到正面時就賣掉硬幣,如果拋到反面才玩遊戲,這樣B必然會輸。此時,A的期望分數為:
0.5(拋到正面的概率)*0.5(選擇sell的得分)+0.5(拋到反面的概率)*1(選擇play的得分)=0.75
如果B總是猜反面,那麼A拋到正面時就會選擇play,得一元;拋到反面就會選擇sell賣掉硬幣,這樣只賠五毛錢。所以A的期望是:
0.5(拋到正面的概率)*1(選擇play的得分)+0.5(拋到反面的概率)*(-0.5)(選擇sell的得分)=0.25
此時,出現一個知識點,叫納什均衡,也就是B為了有效的降低損失,他最有效的策略就是以0.25的概率猜正面,以0.75的概率猜反面,這樣可以確保他的勝算最大。
而博弈永遠是一個動態的過程,如果B持續按照固有的策略做決策,那麼A也會根據B的決策結果調整自己的策略。所以,對B最安全的方法,就是不斷更新A賣掉硬幣會得到的回報,持續尋找最優解。
我們聰明的計算機就是通過這樣的方法動態的計算牌友們押注所帶來的回報期望,進而「持續更新對手的套路」,最終獲得了「比賽過程中,人類選手整體上從未領先過」的效果。
看來,想要和AI鬥智,人類的小腦筋maybe還需要轉的更快才行嘞,也許沒有套路才是最大的套路哦。
都說金融大佬都愛玩德州,看完這篇文章,金融大佬們是否有些啟發呢?
本文由 @汪仔7199 原創發布於人人都是產品經理。未經許可,禁止轉載
題圖來自Unsplash,基於CC0協議