標籤:

Libratus-簡介

  • 內容

無限注德州撲克里的巨大的遊戲樹使得它很難被攻克。無限注德州撲克單挑AI Libratus在12萬手牌的比賽中擊敗了4位人類頂尖的無限注德州撲克單挑專家。Libratus使用的基於博弈論的方法是獨立於應用場景的,包括三個模塊:一個計算藍圖全局策略的演算法,一個在遊戲過程中充實子遊戲策略的演算法,和一個用來修正對手發現我們在藍圖策略里潛在的弱點的自我優化演算法。

本文主要介紹 1)Libratus為什麼選擇單挑 2)Libratus的三個模塊主要做哪些事 。

  • 為什麼選擇單挑?

為什麼選擇攻克無限德州撲克單挑遊戲,而不是6max呢?

作者在這裡給出了答案(戳)。我簡單翻譯一下。

短答案:

Libratus所有的技術在實踐中都能很好的在6max應用(擊敗人類)。我認為3個人以上的博弈是個很有趣的科學挑戰,但是撲克可能不是很好的應用領域,有更適合的領域去研究3個人以上的博弈。

長答案:

超過兩個人的博弈對現有技術提出了很多有趣的理論上實踐上的挑戰。首先,在計算上有效地估計納什均衡已經不再可行。就算你找到了某個納什均衡策略,你也不確定你想按照著這個策略去遊戲。在2人零和遊戲里,納什均衡保證,不管你的對手怎麼玩,你在期望上不會輸。但在3人以上的遊戲里,這個結論不再是正確的。你可能玩的納什均衡,但是還是輸。所以我們需要新的技術去解決3人以上的遊戲,並且找到在這類遊戲中如何評估策略效果的方法。

你無法控制人類對手做出有意無意的串通伙牌行為,所以你無法比較6max里一個AI的效果究竟如何。基於上述的理由,Libratus只評估了單挑遊戲。

  • Libratus主要的三個模塊

Libratus主要包含三個模塊:藍圖策略模塊(preflop/flop)、實時的子遊戲策略模塊(turn/river)、藍圖策略的自我修補模塊。

a. 藍圖策略模塊

a.1 對下注尺度做簡化

例如在100/200的遊戲里,所有的下注都規約到100的倍數,對手下注101視作下注100。這麼做的好處是減少遊戲樹的複雜度,便於計算。Libratus使用的下注尺度,是通過分析年度計算機撲克比賽(ACPC)的牌譜中最常見的尺度確定的。

a.2 MCCFR演算法

MCCFR演算法全名是蒙特卡洛反事實後悔最小化演算法。通過模擬大量對局,記錄每個動作的後悔值,即沒有做這個動作所損失的價值。最後在實際遊戲中,演算法會以更高的概率去做後悔值高的動作。演算法細節後續文章會詳述。

a.3 藍圖策略在Libratus中的用處:

藍圖策略由於對下注尺度做了簡化,這樣在turn和river會很容易被剝削,所以只用於preflop和flop的策略計算,以及進入turn的子樹的EV估計。

b. 實時的子遊戲解決模塊

這個模塊採用了安全嵌套子遊戲解決(Nested safe subgame solving )的演算法,實時的計算turn和river的行動,也是Libratus戰勝人類最關鍵的模塊。詳細演算法將在後續文章里介紹。

c. 藍圖策略的自我修補模塊

這個模塊的作用是,根據前一天對手的行動,把沒出現在藍圖策略的尺度添加進去,起到補漏的作用。細節也會在後續文章里介紹。

  • 後續

後續會對藍圖策略,實時的子遊戲解決模塊和藍圖策略的自我修補模塊講解,請關注。

推薦閱讀:

《現金_無限德州GTO應用指南》閱讀筆記(4)
德州撲克六人桌起手牌
都是唯恐天下不亂的主兒
職業牌手訓練指南番外:線上上頭怎麼辦
進階指南試看視頻 下注加註的理由

TAG:德州撲克 |