德州撲克:AI打牌也能完勝人類了
筆者從完美信息博弈類游戲的理論出發, 分析了AI打德州撲克為何能打贏人類?
前段時間,受周圍朋友的影響,喜歡上了德州撲克,享受和牌友心理博弈的過程,也享受“賭博”帶來的快感。一直覺得德州最大的魅力就在于它不完全是理性的判斷,更多的是感性、勇氣和理智之間的較量,不確定性太多,所以它區別于其他的棋牌類游戲,沒有辦法通過學習一些套路和技巧就能完勝對手。
最近回了學校,又開啟了每天和AI“博弈”的磕鹽生活。今天驚奇的發現,AI打德州撲克居然也完勝人類了!此次比賽共持續 20 天,由 4 名人類職業玩家 Jason Les、Dong Kim、Daniel McAulay 和 Jimmy Chou 對戰人工智能程序 Libratus,在為期 20 天的賽程里面對玩 12 萬手,爭奪 20 萬美元的獎金。最終的結果是「比賽過程中,人類選手整體上從未領先過」。
隨著天數的增加,AI和人類選手的差距愈發明顯
近幾年,隨著科技的不斷發展,計算機打敗人類的案例屢見不鮮。作為一只“程序媛”,我也算是半個“局內人”,本科參與過一些計算機博弈和機器人相關的比賽,碩士期間對AI也有一些淺顯的了解。今天就從理性的角度講講,AI是如何打敗人類的。
幾年前也是輝煌過的~~~
德州撲克怎么玩?(會玩請忽略)德州撲克是目前世界上最流行的撲克游戲??偨Y來說,如果想要贏牌,第一種可能就是你的牌比其他人的牌都大,第二種可能就是通過押注的技巧把牌沒有你大的對手都嚇跑。可能性就是德州撲克最有趣的地方。
圖片來自網絡,侵刪
完美信息博弈和不完美信息博弈
為什么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協議
- 目前還沒評論,等你發揮!