指南

什麼是撲克 Solver(解算器)?運作原理與該怎麼用

評測者 Solver Scout · 發布 · 更新

什麼是撲克 Solver(解算器)?運作原理與該怎麼用

撲克 solver 是一種軟體,它會針對「一個明確定義的情境」計算出博弈論最優打法。你給它 range、牌面、籌碼深度,以及允許使用的下注尺寸,它就回傳長期下來沒有任何對手策略打得贏的行動頻率與期望值。這套數學並不是什麼商業機密:幾乎所有市售 solver 跑的都是反事實後悔最小化(CFR)的某個版本,由 Martin Zinkevich 等人發表於 2007 年 NIPS,當時就已經能處理約 10^12 個狀態的限注德州撲克抽象模型。八年後,它的改良版實質求解了單挑限注德州撲克,成果於 2015 年 1 月發表在《Science》。這份指南會說明 solver 實際上做什麼、怎麼運作、三種產品類型的差別,以及在你掏錢之前必須誠實面對的限制。

撲克 solver 到底是什麼

從本質上來說,撲克 solver 就是一台博弈論的計算機。你餵給它一個明確定義的撲克情境,它就會算出一套長期下來任何對手策略都打不贏的策略。這套策略叫做博弈論最優打法,通常簡稱 GTO。如果想打好理論基礎,這篇關於什麼是 GTO 撲克的入門文章用白話把理論講清楚了。

關鍵字是「明確定義」。solver 並不知道怎麼打撲克這件事的整體概念,它只會回答你問它的那個確切問題。換掉牌面、換掉籌碼深度,或是換掉誰在這手牌裡,你面對的就是一個全新的問題。

撲克 solver 如何運作

每一次求解都是從輸入開始,以輸出結束。中間夾的,就是那個負責幹活的演算法。

你要定義的輸入

在 solver 能夠執行之前,你得告訴它這個情境的各項參數:

下注樹的重要性,比初學者想像的還高。更多的尺寸選項會產生更豐富的策略,但求解會花更久,輸出結果也會更難讀懂。

找出答案的演算法

大多數 solver 使用一類叫做反事實後悔最小化(counterfactual regret minimization,簡稱 CFR)的演算法。它背後的直覺,比名字聽起來簡單得多。solver 會讓這個情境自己對自己打上數百萬次。每跑完一輪,它就衡量一次「後悔值」,也就是換一個行動原本能多賺多少,然後把策略往那些它後悔當初沒選的行動上靠攏。

把這個循環重複夠多次,策略就會停止變化。到了那個點,雙方都已經盡其所能,誰也沒辦法靠偏離來改善結果。那個平衡點就是納許均衡,也就是 solver 一直在追尋的 GTO 解。

實務上,solver 永遠無法完美抵達均衡。它會非常逼近,並用一個叫做可剝削度(exploitability)的數字回報自己有多接近。可剝削度極低的求解,就已經「收斂」到足以信任的程度了。

你要讀的輸出

當求解完成,你會得到每一個 range 裡每一手牌的策略。針對每個行動,solver 會顯示:

這既是 solver 大放異彩的地方,也是讓人崩潰的地方。輸出非常精確,但它是一整面牆的百分比,而不是建議。

solver 的用途是什麼

這部分很多新手都搞錯,所以值得直接講白:撲克 solver 是研究工具,不是即時助手。

你沒辦法在牌桌上跑求解,它花的時間太長了,而且在任何正規牌局裡用軟體做即時決策都是作弊。真正的工作流程是離桌研究:你檢視那些讓你卡關的情境,找出均衡策略,再慢慢把這些模式內化,讓你的直覺變得更好。

把它想成西洋棋引擎。特級大師會在家裡用引擎分析好幾個小時,然後坐上棋桌靠記憶下棋。solver 負責建立理解,下棋的是你的大腦。

桌面版 solver、雲端版 solver 與訓練器

市場分成三大類,選得好不好,取決於你的目標與耐心。想看更完整的拆解,可以參考這篇最佳 GTO solver的比較。

類型範例優勢取捨
桌面版 solverPioSolver完全掌控,任何自訂情境學習曲線陡,吃硬體
雲端版 solverGTO Wizard預先求解好的情境,立即取用低階方案的自訂彈性較少
訓練器DEEPFOLD把策略練到變成反射記憶建立在既有求解上,不是原始分析

桌面版 solver

像 PioSolver 這類桌面工具,跑在你自己的電腦上。你定義每一項輸入,機器算出答案,簡單情境可能幾秒搞定,深籌碼、多尺寸的下注樹則可能要好幾分鐘。它們提供最高的彈性,認真的教練至今仍仰賴它們,但代價就是複雜度與運算時間。想看更近距離的比較,可以參考這篇 DEEPFOLD 與 PioSolver的對照。

雲端版 solver

像 GTO Wizard 這類雲端工具,會預先求解龐大的常見情境資料庫,並透過瀏覽器提供,所以你省去了等待與硬體需求,幾乎是瞬間就能瀏覽解答。取捨在於,完全自訂的情境可能受限,或是被鎖在更高階的方案裡,因為你是從一個預建資料庫取用,而不是從頭開始求解。

訓練器

訓練器走的是另一條路。它不是把解答攤給你研究,而是拿這套解答來考你。你會一手接一手面對牌局並選擇行動,訓練器再拿你的選擇對照 solver 認可的打法替你評分。它瞄準的是真正的瓶頸,也就是壓力下的提取記憶,而不是取得資料的管道。如果你正在權衡不同的研究方式,這篇 solver 與 GTO 訓練器的拆解很值得一讀。

到底什麼被「求解」了

這個詞常被隨口亂用,值得把研究實際做到與沒做到的事情釘清楚。

年份程式牌型成果
2015Cepheus單挑限注德州撲克實質求解(Science 347:145-149)
2017DeepStack單挑無限注德州撲克在 44,000 手中擊敗職業玩家(Science 356:508-513)
2018Libratus單挑無限注德州撲克在 120,000 手中擊敗 4 位頂尖職業玩家(Science 359:418-424)
2019Pluribus六人無限注德州撲克擊敗菁英職業玩家(Science 365:885-890)

只有第一行才算「求解」。在亞伯達大學主導 Cepheus 研究的 Michael Bowling 刻意把門檻定得很窄:他在 2015 年 1 月成果發布時說:「我們把一個遊戲定義為實質已解,是指窮盡一生的對局也無法在 95% 信心水準下,在統計上把它和真正的解區分開來。」而且這還只適用於限注牌型,其規模遠小於你實際在打的無限注。

其餘三行是「贏」,不是「解」。打贏牌桌上最強的人類,門檻低於證明沒有任何策略能打贏你。這個區別會影響你怎麼解讀自己手上的 solver:它給你的是無限注德州撲克某個小切片上、對均衡相當不錯的近似值,而不是撲克這個問題的已解答案。

順帶一提這件事變得多便宜。根據卡內基美隆大學,Pluribus 用 12,400 核心小時、花 8 天訓練出藍圖策略,實戰時只跑在 28 個 CPU 核心上;而一年前的 Libratus 需要 1,500 萬核心小時。成本這樣崩跌,正是 solver 等級的策略能這麼快進入消費級軟體的原因。

真正的限制

solver 很強大,但它不是通往成績的捷徑。誠實的缺點如下:

最後這一點,正是為什麼這麼多用功的玩家會卡關。他們把求解讀得滴水不漏,一個小時後卻還是把同一個情境打錯,因為他們從來沒把資料轉化成直覺。

從 solver 學習最聰明的方法

對大多數想進步的玩家來說,最有效率的路徑,不是盯著頻率表格看好幾個小時,而是把策略萃取出來,然後反覆操練到變成自動反應。用 solver 去理解一條線為什麼正確,再用訓練器去練習它,直到正確的行動感覺起來理所當然。這正是 DEEPFOLD 瞄準的缺口:DEEPFOLD 把密密麻麻的 solver 輸出,轉化成經過訓練、能直接上桌的直覺。這篇關於如何用 solver 研究撲克的指南,把這套工作流程系統化地攤開來說明。

一個簡短的例子

假設你在用大盲防守按鈕位加注時一直在虧籌碼。一套真正能帶來改變的工作流程,看起來會像這樣:

  1. 求解或查出大盲防守這個情境,看看哪些手牌要跟注、加注或棄牌,以及各以多高的頻率。
  2. 找出其中的模式,例如哪些同花手牌是有利可圖的跟注,以及棄牌的門檻落在哪裡。
  3. 在訓練器裡把這個確切情境操練幾十次,直到你能不假思索地做出正確反應。

第三步才是進步真正發生的地方。solver 給了你答案卷,但唯有反覆練習,才能把它寫進記憶裡。

結論

撲克 solver 是現有最精準的老師,能為你定義的任何情境算出無法被擊敗的 GTO 策略。桌面工具給你掌控,雲端工具給你速度,兩者產出的結果都很精彩,卻難以吸收。對大多數玩家來說,通往更好成績最快的路,就是用 solver 學會策略,再用訓練器把它操練到變成第二天性。solver 告訴你正確答案,而練習,才是讓這個答案真正屬於你的東西。

參考來源

本文引用的數據與說法皆來自以下公開來源,可自行查證。

  1. Regret Minimization in Games with Incomplete Information(CFR 原始論文) , Zinkevich, Johanson, Bowling & Piccione, NIPS (2007)
  2. Heads-up limit hold'em poker is solved , Bowling, Burch, Johanson & Tammelin, Science 347(6218):145-149 (2015)
  3. Poker-playing program knows when to fold 'em(亞伯達大學 Cepheus 成果發布) , ScienceDaily (2015)
  4. DeepStack: Expert-level artificial intelligence in heads-up no-limit poker , Moravcik et al., Science 356(6337):508-513 (2017)
  5. Superhuman AI for heads-up no-limit poker: Libratus beats top professionals , Brown & Sandholm, Science 359(6374):418-424 (2018)
  6. Superhuman AI for multiplayer poker(Pluribus) , Brown & Sandholm, Science 365(6456):885-890 (2019)
  7. Carnegie Mellon and Facebook AI Beats Professionals in Six-Player Poker , 卡內基美隆大學計算機科學學院 (2019)

常見問題

什麼是撲克 solver(解算器)?

撲克 solver 是一種軟體,它會針對一個明確定義的特定情境,計算出數學上無法被剝削的博弈論最優(GTO)打法。它只會回答你定義的那個確切情境,所以換掉牌面、籌碼深度或玩家,就會變成一個全新的問題。

撲克 solver 是如何運作的?

你提供 range、牌面、籌碼深度與下注樹等輸入,它就會執行一套演算法,通常是反事實後悔最小化(CFR),讓情境自己對自己打上數百萬次。它會往後悔值較低的行動靠攏,直到策略停止變化、抵達納許均衡,然後回報頻率與期望值等輸出。

我可以在牌桌上打牌時使用撲克 solver 嗎?

不行。solver 是離桌研究工具,不是即時助手:求解花的時間太長,無法即時執行,而且在任何正規牌局裡用軟體做決策都算作弊。正確的工作流程是事後檢視讓你卡關的情境,再把這些模式內化。

桌面版 solver、雲端版 solver 與訓練器有什麼差別?

像 PioSolver 這類桌面版 solver 對任何自訂情境提供完全掌控,但學習曲線陡且吃硬體。像 GTO Wizard 這類雲端版 solver 幾乎能瞬間提供預先求解好的情境,但低階方案的自訂彈性較少;而像 DEEPFOLD 這類訓練器則是把 solver 認可的策略練到變成反射記憶,而不是產出原始分析。

相關評測與指南