在上個月舉行的單挑無限注德州撲克( heads-up
no-limit
hold’em)人機對戰中,由卡耐基梅隆大學研發的ai程式libratus以每100手14倍大盲(譯者注:縮寫為14bb/100,意為玩100手牌,平均能赢對手14倍大盲注)完勝世界級人類玩家團隊,震驚所有在場人員。
比賽共打12萬手,最後libratus赢得了1,776,250個籌碼,近90個買入。雖然人類玩家輸慘了,但幸運的是他們并不需要真的自掏腰包把輸掉的錢給赢家libratus(雖然他們來參加這場對戰也需繳納費用)。
libratus是“ai撲克界的聖杯(the
holy grail )”,cmu博士noam brown這樣評價道。libratus由 noam brown和 cmu教授tuomas
sandholm共同研發,并且是cmu這一系列撲克機器人裡面最新的一款。此前,還沒有任何機器人能在單挑無限注德州撲克中打敗世界級人類選手。
在brown看來,libratus尚有很大發展空間:“從理論上來講,更新版libratus能達到50bb/100”(譯者注:即更新後的libratus每100手能赢人類對手50倍大盲,也就是還有3.5倍的潛力可挖)。近日,世界著名撲克牌雜志card
player 對brown進行了專訪,了解了ai撲克研究的曆史發展和未來走向等問題。以下為雷鋒網編譯:
brown
card player :您對這次對戰結果感到驚訝嗎?
brown:其實我還還挺驚訝的,我沒想到ai能做得這麼好。我們之前為了測試ai效果有讓它和 claudico(雷鋒網譯者注:cmu較早版本ai)對戰過,結果是libratus以10~12bb/100打敗claudico,這個成績好于2015年claudico與人類對戰的結果(譯者注:那次大戰中ai輸給了人類選手),不過差不太多。是以我們感覺,這次人機對戰libratus的勝算要大一些,但是不确定到底會赢多少。是以當這次結果出來的時候,我們對ai能表現這麼好感到相當詫異。
card player :是以其實當時你們認為ai還沒辦法以14bb/100打敗人類,是嗎?
brown:是這樣,我們不知道人類到底比claudico 厲害多少,有多少是ai需要提升的。(譯者注:在2015年那場對戰)中,人類選手發現并充分利用了claudico 的漏洞,比如他們讓claudico 多次采用“溜進”(譯者注:limp,翻牌前專用名詞,指玩家不做任何加注,隻跟進1倍大盲注)戰術。這一招非常有效果,是人類玩家打敗claudico
的關鍵。但是libratus不是通過利用對方弱點赢的。libratus和claudico對戰時,libratus能夠在不利用後者弱點的情況下以10~12bb/100打敗claudico ,這說明如果libratus 沒有任何弱點的話,能比人類更強。而libratus這次之是以能打敗人類,其原因就在于它沒有任何人類可以利用的弱點。
card player :在人類玩家緊追比分,對戰進入白熱化的時候,你是不是在想對手可能已經找到了libratus的弱點,還是說仍舊很有信心?
brown:第一周比賽快要結束時,雙方幾乎打成平局。人類選手也在第一周對libratus會如何調整打法、它的強項在哪裡等做出了一系列推測。他們沒有和我詳談他們認為戰局将會如何發展,但從我聽到的來看,他們應該是想從資料中尋找libratus的套路,分析它的弱點和優勢。是以,大體上我不怎麼擔心。他們認為ai在一些方面有缺陷,但實際上并沒有。比如,在有一天的比賽中,他們80%都是再加注( three-betting ),因為從資料來看,他們認為ai
對特定的三倍打法( three-bet
size)不太擅長。但我不認為那是缺陷,隻是他們的資料中存在噪音。他們在比賽程序中獲得的資料導緻他們得出了這樣的結論。但他們确實看到了裡面存在的一些問題。比如libratus對特定的開局下注的大小對應不好。比賽前我們認為這不是什麼大問題,但事實證明,這個弱點很要命。好在ai還留有一手——趁當天晚上對手睡覺的時候,ai就開始連續不斷地進行訓練,彌補自己的不足以防止對手以後再次利用這一缺陷。是以你看到,從第二周局勢就開始轉變了。
card player :這次微調整對之後的比賽是否重要?因為人類選手也會協同作戰讨論戰略,是以這次調整是否加大了對戰難度?
brown:這裡面有挺多誤解的。ai微調不是說我們讓它再再加注(four-bet)的次數增多,或提高加注倍數,而是因為對手在翻牌前和翻牌時總是下不同大小的注。ai程式知道如何回應2倍,2.5倍或3倍的開局下注。但如果對方以2.75倍開局,那麼ai就會把2.75約等于3,是以它的回應還是比較準确的。這樣的做法雖然算不上不合理,但如果它能不四舍五入的話,效果會更好。于是它那晚就整夜訓練自己如何去回應2.75倍的下注。它下注的大小是由算法決定的,根據對手下注次數最多倍數,這個數字離我們事先設定好的一些數目離得有多遠,算法可以為對手下的注分出優先等級。是以這就是微調所做的改變。這也是算法中的關鍵部分,讓ai一步步根據人類打法改變自己的路子,而不像他們之前猜測的去利用人類弱點。
card player :那麼我們能不能說libratus在轉牌圈(the turn)和河牌圈(the river)時的回應沒在翻牌前和翻牌時的回應那麼重要?
brown:在轉牌圈和河牌圈時,你會發現ai需要花時間思考接下來的動作。這個時間非常迅速以至于有的人可能都沒有注意到。其實,每次人類對手在轉牌圈和河牌圈下注時,它都要重新計算政策。這樣,無論對手怎麼出招它都能給予完美回應。是以ai必須預先計算一系列的不同下注大小并放入到遊戲樹(game
tree)中,但預先計算的不能應對轉牌圈和河牌圈,因為這兩個需要實時計算的政策。(譯者注:遊戲樹是指組合博弈理論中用來表達一個賽局中各種後續可能性的樹)
card player :這個實時計算能力是否正是claudico 所缺乏的?或者是做的不夠完美的地方?
brown:claudico 能夠在河牌圈進行實時計算,隻不過在下面幾個方面比較弱。首先,它沒有考慮到阻斷牌(雷鋒網(公衆号:雷鋒網)譯者注:blocker,即自己要的牌在别人手上)。為了運作更快,它需要把幾手牌組合起來,然後再區分對待。基于此它可能會認為,黑桃a帶三張黑桃和梅花a帶三張黑桃是一樣的,即便這兩種牌應該區分對待。claudico
的最終遊戲解算機(end-game
solver)會對大量的實時下注進行計算,但不會在每次人類下注時進行再計算。我認為,對人類每次下注進行再計算這一步,對libratus本次的獲勝至關重要。同樣的,這次我們能在轉牌圈開始的時候就對這種計算進行擴充。這種做法的計算量更大,因為現在ai需要處理約50種可能出現的不同河牌圈,并且在遊戲結束(每手牌)前可能出現的行動數量也在呈指數級地增長。是以,要像有效地擴充這種新算法,新程式的計算成本也比
claudico 要貴上1000倍。
card player :libratus什麼時候才能打出一個完美的gto( game theory optimal,距離博弈理論中的最優化政策)?像libratus這樣的機器你們還會推出多少個版本?
brown:沒人知道ai離打出一個博弈理論中的最優化政策還有多遠。我們有很多方法來計算這一數值,但代價極其昂貴,是以到現在都還沒實作。也許我們明年會開始嘗試。如果非要我推測的話,我猜一個博弈理論中的最優化政策可以以15bb/100
戰勝libratus。這是我的粗略估計,範圍應該在5~50bb/100。
card player :哇,是以這類ai還是有很大提升空間喽?
brown:這不好說。以前ai的緻命弱點是在轉牌圈和河牌圈沒有把阻隔牌考慮在内,這在高水準對戰中确實非常關鍵。但libratus不存在這個問題。它會在每個轉牌圈和河牌圈中,專門考慮每手牌的情況,和之前的ai相比,該做法讓libratus的表現有了飛躍式的進步。
在區分阻隔牌這一點上,libratus沒多少提升空間了。但是在如何選擇下注數額上,還是可以有進步的。我很難說它能進步多少,但我猜測可能會達到15。
card player :有人認為libratus在轉牌圈和河牌圈的超額下注(over-betting)非常具有進攻性。你是否認為ai在這方面已經達到了完美水準,或說在如何平衡下注上仍有改善空間?
brown:它能在比賽時超額下注,我們也很意外。libratus 并非根據人類的資料訓練而成,它之前從來沒跟人類玩家過過手。是以此次對戰,它采取的是它認為最優的政策。它的政策非常獨特,并且和人類所認為的最優打法非常不同。超額下注是它政策的重要部分,另外還有donk
bets。能看到ai做到人類未能做到的事,這真的難以忘懷,我也很滿足。這種進攻性早在claudico身上就有所展現,那時候人們覺得它在底池還很小時就玩all-in很不明智。我覺得它這是錯誤的打法,是沒有做好平衡的表現。但是我認為從libratus身上我們已經看到了比較合理的進攻性,而這也是它成功的關鍵。
card player :很多人都想知道這對未來的線上撲克玩家意味着什麼。您能否說一下,至少是在目前情況下,為何您研發的ai不會威脅到遊戲的公正性?
brown:至少我能向大家保證,我們不會線上上運作libratus ,也沒有這個打算。但很顯然,其他人會把我們公開的技術應用在機器人中,并讓它們參與線上遊戲。關于機器人會如何影響線上撲克玩家,我不去做太多推測,因為我也确實不清楚。但我知道現在已經有機器人被應用線上上了,有些撲克牌遊戲網站費很大力氣想要線上上安置這樣的機器人。我不知道在這場博弈中哪方會赢。
card player :在比賽中減少或增少籌碼的數量對比賽結果會有什麼影響?如果雙方各有500到1000
倍大盲注的籌碼,機器能應付的了嗎?
brown:我們選擇200倍盲注是因為年度計算機撲克競賽采用的是這個規制。每年,做撲克的
ai 研究者都會聚集起來互相對戰。一直以來,ai都很難把200倍盲注玩好。因為牌越多,ai 就要做出更多的選擇。就我的了解,200
倍盲注是人類玩德撲的上限。保持公平對等是很有必要的,但同時也應該讓 ai 玩起來有難度。如果盲注數量變少,比如隻有 100倍盲注,我認為 ai
和人類對戰的結果和現在一樣(如果不是更好的話)。要是盲注數量增多,比如 增加到500或1000倍……坦白說,我認為
結果還是跟現在一樣(如果不是更好的話)。這不是因為對 ai 來說情況變簡單了,而是因為盲注增多,對人類來說變複雜了。我不認為人類能習慣 500 或
1000 倍的盲注。到了那個數量級,libratus
真正擅長的大規模超大投注(over-bets)的重要性就會凸顯出來。我人類在超大投注方面不會比 libratus 更強。
card player :讓機器人跟再多一位玩家對戰的其他玩法,ai研究員有在研究嗎?
brown:在三人對戰撲克上已經有了一些研究。總的來講,
libratus靠現有技術,就算再多加兩個對手也沒問題。現在的問題不是技術,而是你怎麼評價ai的表現。因為當你有兩個以上對手的時候,盡管ai使用的是最好的gto政策,但它仍會輸錢,因為其他玩家都或明或暗地串通好了。是以在遊戲中讓一個ai對戰五個人類玩家,你很難去評價ai是否比人做的更好。這種評價方式不可行。這也是為什麼這次比賽我們是一對一制的,也是為什麼本次比賽結果在一對一遊戲制度下有相當大的意義。我認為目前無限德州撲克
6 人桌(six-max)略微超出了libratus 和類似ai機器的能力。
話雖如此,年度計算機撲克競賽已經在計劃加入6人桌比賽了,是以這方面的研究馬上也會開始,而且我認為該領域會發展非常迅速。我覺得,随着libratus一點一點的進步,兩年内你就能看到它在6人桌比賽中戰勝人類了。當你玩6人桌的時候,是否要打gto政策這真的無法确定,因為進攻較弱的對手的打法效果可能會更好。ai撲克研究圈目前也在讨論這一點,不過還沒有結論。但在針對弱者并攻擊對方弱點方面,還是人類更有優勢。
【兼職召集令!】
如果你對未來充滿憧憬,喜歡探索改變世界的科技進展,look no further!
我們需要這樣的你:
精通英語,對技術與産品感興趣,關注人工智能學術動态的蘿莉&萌妹子&技術宅;
文字不求妙筆生花,但希望通俗易懂;
在這裡,你會收獲:
一群來自天南地北、志同道合的小夥伴;
前沿學術科技動态,每天為自己充充電;
更高的生活品質,翻翻文章就能掙到零花錢;
有意向的小夥伴們把個人介紹/履歷發至 [email protected],如有作品,歡迎一并附上。
本文作者:夏睿