第 42 課結尾留下一個沒解的量:要精確知道「偏離均衡值多少錢」,得把簡化過的策略鎖進節點再重算,那個做法就叫節點鎖定。今天要解決的問題是:當你推測某個對手在河牌過度棄牌或過度跟注,怎麼把這個推測變成求解器的輸入,拿到剝削策略與 EV 增量,以及這個增量到底要打幾折。結論先講:節點鎖定回答的是「如果對手真的這樣打,我的最佳回應值多少」,不是「對手會這樣打」;畫面上的 EV 增量是以鎖定為真的條件值,實際價值還要扣掉鎖定值的估計誤差,與對手看穿之後的反制。 下面用一個可以手算的河牌賽局,把均衡、四種鎖定、連鎖調整、頻率不確定性與被反剝削的代價各算一遍。這裡所有數字都是紙上推演與教學示意,不是任何軟體的真實輸出;台灣沒有合法的現金撲克賭場,內容定位是機率與決策訓練,不構成任何下注建議。

📖 學

一、定義與機制

節點鎖定(node locking)是指:在決策樹的某個節點,不讓求解器自己決定策略,而是由你指定一組動作頻率,再讓其餘沒被鎖的節點重新求解。一般求解時,雙方的每個節點在每次迭代都往最佳回應修正,最後收斂到均衡;鎖定之後,被鎖的節點凍結,其餘節點繼續修正,所以收斂的對象變成「在這個被凍結的行為之下,雙方各自的最佳回應」。如果被鎖的是對手的節點,你這一側沒被鎖的節點就會收斂到針對那個行為的剝削策略。

兩個機制細節決定了怎麼用。第一,鎖的粒度不同:PioSOLVER 官方手冊的節點鎖定頁面(我讀到的是頁面摘要)列出「整個範圍鎖定」與「組合鎖定」兩種,後者只固定選定的手牌、其餘手牌仍由求解器調整;GTO Wizard 的功能介紹(只讀到搜尋摘要)則說可依個別組合、手牌類別或動作頻率來設定,例如限定「過牌恰好 30%」。第二,被鎖節點以外的所有節點都會重算,包含前面的節點:你鎖的是河牌面對下注的反應,但求解器會回頭改你自己更早的下注決定,也會改對手那一側沒被鎖的手牌。這就是「單點鎖定會連鎖調整」的來源,下面兩節用數字展示。

二、示範賽局:先把均衡算出來

規則:河牌,底池 100,P1 先行動,可以下注 50(半池)或過牌。P1 的範圍有 12 個組合:堅果 N 共 4 組、中等牌 M 共 3 組、空氣 A 共 5 組。P2 只有兩類牌,抽象成機率:強抓牌 S 佔 40%,弱抓牌 W 佔 60%(不計牌面扣除,只為手算)。牌力順序是 N > S > M > W > A:M 贏 W、輸 S,A 誰都贏不了,所以空氣只能靠對手棄牌賺錢。過牌後直接攤牌,面對下注 P2 只能跟或蓋,沒有加注。EV 沿用第 42 課的記法:攤牌贏拿 100、輸拿 0;下注被蓋拿 100;下注被跟贏拿 150、輸拿 −50。

步驟一:算 P1 的詐唬量。 P2 面對下注時,不論 S 或 W,都贏空氣、輸堅果(M 在均衡裡不下注,下一步驗證)。令跟注 EV 等於 0:詐唬佔下注範圍的比例 b 滿足 150b − 50(1 − b) = 0,b = 50 ÷ 200 = 25%,也就是 s ÷ (1 + 2s) 取 s = 1/2。堅果 4 組都下注,詐唬組合數 y 滿足 y ÷ (4 + y) = 0.25,y = 4/3;5 組空氣平分,每組下注頻率 a = (4/3) ÷ 5 = 4/15 ≈ 26.7%。

步驟二:算 P2 的整體跟注率。 空氣過牌是 0;下注 EV = 100 − 150C(C 是 P2 整體跟注率),令它為 0,C = 2/3,即 1 ÷ (1 + s)。C = 0.4 × cS + 0.6 × cW,其中 cS、cW 是 S、W 各自的跟注頻率。這裡有一件值得記住的事:均衡只釘住 C,不釘住 cS 與 cW 的分配。 再看 M 為什麼過牌:M 過牌攤牌贏 W(60%),EV = 60;M 下注的 EV = 0.4 × (100 − 150cS) + 0.6 × (100 + 50cW) = 100 − 60cS + 30cW。把 cW = 10/9 − (2/3)cS(由 C = 2/3 推出)代入,得 133.33 − 80cS,要不超過 60,需 cS ≥ 11/12。所以均衡是一族:cS 在 91.7% 到 100% 之間,對應 cW 在 50% 到 44.4% 之間。

步驟三:算賽局值。 堅果下注 EV = 100 + 50 × (2/3) = 133.33,中等牌過牌 60,空氣 0,P1 範圍 EV = (4 × 133.33 + 3 × 60 + 5 × 0) ÷ 12 = 713.33 ÷ 12 = 59.44。這個數字是「P1 不管 P2 怎麼打都能保住的值」:對任意 C,把 P1 的策略寫成空氣下注頻率 a,範圍 EV = 59.44 + (5/12)(a − 4/15)(100 − 150C);取 a = 4/15 時,後項為零,與 C 無關。這是第 41 課「剝削度為零」在這個賽局裡的具體樣子,也是下面所有剝削增量的比較基準。

P1 手牌組合數下注過牌EV(下注)EV(過牌)
堅果 N4100%0%133.33100
中等牌 M30%100%53.33 到 60(視 cS)60
空氣 A526.7%73.3%00

三、鎖定 W 的跟注頻率:什麼會連鎖改變

現在假設你判斷對手的弱抓牌 W 不照均衡打,把 W 的跟注頻率鎖定,S 不鎖(組合鎖定)。我假設 S 仍會自行最佳回應,結果是 S 全部跟注(因為只要下注範圍裡堅果不是絕大多數,S 跟注的 EV 都是正的)。下表是四個鎖定值的求解結果,所有數字可用 EV(下注) 的公式直接驗算:堅果 100 + 50C,空氣 100 − 150C,中等牌 100 − 60cS + 30cW(cS = 1)。

鎖定 cW(整體 C)P1 的最佳回應N 的 EVM 的 EVA 的 EV範圍 EV增量(% 底池)
均衡(cW 約 44%,C = 66.7%)A 下注 26.7%,M 過牌133.3360059.440
0%(C = 40%)A 全下注,M 過牌120604071.67+12.22
20%(C = 52%)A 全下注,M 過牌126602266.17+6.72
80%(C = 88%)A 全過牌,M 全下注14464064.00+4.56
100%(C = 100%)A 全過牌,M 全下注15070067.50+8.06

讀這張表有三個重點。第一,連鎖調整發生在沒被鎖的節點。 你只鎖了 W 的反應,但 P1 的空氣下注頻率從 26.7% 跳到 100%(對過度棄牌),中等牌則從過牌變成 100% 下注(對過度跟注),那兩個都是你沒鎖的節點。原因是第 42 課講過的無差異鏈:空氣的下注 EV 取決於對手的跟注率,中等牌的下注 EV 取決於 cS 與 cW 的加權,鎖定 cW 等於切斷鏈上的一環,其餘各環都要重新解。

第二,單手牌的 EV 下降不代表鎖錯。 鎖 cW = 0% 時,堅果的 EV 從 133.33 掉到 120,因為對手跟得少了;但整個範圍多賺 12.22,是空氣從 0 變 40 賺回來的。判斷鎖定結果要看範圍總 EV 與增量,不能只盯某手牌。

第三,求解器的策略是分段的,EV 是連續的。 以整體跟注率 C 為準,C 低於 2/3 時答案是「空氣全詐唬」,高於 0.8(即 cW > 2/3)時是「中等牌全薄價值下注」,兩者之間(cW 在 4/9 與 2/3 之間)解是混合,這裡我不手算。但 EV 增量是連續的:C 剛好是 0.65 時增量只有 0.3056 × (100 − 97.5) = 0.76(約 0.8% 底池),求解器給的卻是同一個「空氣全詐唬」;C = 0.40 時增量是 12.22,策略一模一樣。策略輸出無法告訴你鎖定值的把握需要多高,EV 增量才能。 兩個答案都是「全詐唬」,前者的利潤薄到幾乎等於雜訊,後者卻足以改變一個玩家的整年勝率。

四、鎖定頻率的不確定性:Beta 收縮

鎖定值不是量出來的,是估出來的。假設你在資料庫裡看到某對手面對你的河牌半池下注共 20 次,跟注 11 次,觀察跟注率 55%,低於均衡的 66.7%。能直接把 55% 鎖進去嗎?先用第 37 課的 Beta 收縮處理。把先驗設成「以均衡 2/3 為中心、相當於 12 手」,即 Beta(8, 4);觀察 11 次跟注、9 次棄牌,後驗是 Beta(19, 13),平均 19 ÷ 32 = 59.4%,標準差約 8.6 個百分點。

因為上一節的結果是線性的:空氣全詐唬的範圍 EV = 90 − 45.83C(例如 C = 40% 得 71.67,C = 2/3 得 59.44),所以不論不確定性多大,期望增量只取決於後驗平均:(5/12)(11/15)(100 − 150 × 0.594) = 3.34,也就是約 3.3% 底池,而不是用原始 55% 算出的 5.35。小樣本下的原始讀數把增量高估了 60%。 而不確定性影響的是「這個增量為正的機率」,也就是 C 確實低於 2/3 的機率,用 Beta 累積分布算(數值積分):

同樣觀察 55%後驗平均標準差C 低於 2/3 的機率期望增量(% 底池)
11 / 20,先驗 Beta(8, 4)59.4%8.6 點79.7%+3.34
33 / 60,先驗 Beta(8, 4)56.9%5.8 點95.5%+4.46
110 / 200,先驗 Beta(8, 4)55.7%3.4 點99.9%+5.04
11 / 20,不給先驗 Beta(1, 1)54.5%10.4 點87.5%+5.56

20 手樣本下,鎖定「對手確實跟得少」有一成多到兩成的機率是錯的,而且先驗怎麼選會讓這個機率在 79.7% 與 87.5% 之間移動。這張表的用途不是挑一個數字,是決定「鎖定要鎖多深、要不要只當作研究、不上桌」。 另外兩個前提容易被忽略:你看到的是對手整體的跟注率,不是 W 單獨的跟注率,把 55% 換算成 cW 時,需要假設 S 固定全跟,得 cW = (0.594 − 0.4) ÷ 0.6 = 32.3%;如果對手其實是 S 也會棄牌,那個換算就不成立。同樣 C = 0.8,若跟注全來自強抓牌(cS = 1,cW = 2/3),中等牌下注的 EV 是 100 − 60 + 20 = 60,等於過牌;若均勻分佈(cS = cW = 0.8),則是 100 − 48 + 24 = 76。鎖整體頻率時,「頻率怎麼分配到各手牌」是藏在輸入裡的第二個參數,資料庫通常看不到它。

五、鎖得太窄:被反剝削的代價

把鎖定結果落實成打法時,你換掉的是自己的策略,也就把自己的「剝削度」打開了。用同一個賽局算:如果你把「空氣全詐唬」當成固定打法(a = 1),不論對手怎麼打,範圍 EV = 90 − 45.83C;對手若察覺並全部跟注(C = 1),EV 掉到 44.17,比均衡值 59.44 少 15.28,約 15.3% 底池。和上一節的增量並排看,期望值是這樣的:

空氣的詐唬頻率 aC = 40%C = 59.4%C = 66.7%C = 100%
0%(從不詐唬)55.0058.2359.4465.00
26.7%(均衡)59.4459.4459.4459.44
50%63.3360.5059.4454.58
100%71.6762.7759.4444.17

每一列是一個策略在不同對手下的 EV。均衡那一列是一條水平線,這就是「不可被剝削」的外觀;其他列都是斜線,而且所有斜線在 C = 2/3 交會於 59.44。詐唬頻率就是一個轉盤:往 100% 轉,賭對時多賺、賭錯時多賠,兩側的幅度同比例放大。 在後驗平均 59.4% 的世界裡,轉到 50% 只多賺 1.06,轉到 100% 多賺 3.34;而最壞情況(對手全跟)下,轉到 50% 賠 4.86,轉到 100% 賠 15.28。這張表說明為什麼不確定時該用中間值,而不是求解器輸出的那個極端值。

對手看穿的速度也可以算。你的下注範圍裡,詐唬佔 5 ÷ (4 + 5) = 55.6%,對手每次跟注的 EV = 150 × 5/9 − 50 × 4/9 = 61.1,也就是每次跟注多賺 0.61 個底池。這個差距要靠他看到你的攤牌才會知道;但只要他有資料庫,就會用和第 37 課相同的 Beta 算式估計你的詐唬佔比,你偏離越多,他需要的樣本越少。薄價值這一側的風險較小:把策略改成「堅果與中等牌都下注、空氣不詐唬」,對手最佳回應是 S 跟、W 蓋(C = 40%),範圍 EV = 50.00,比均衡少 9.44,小於全詐唬的 15.28。不同方向的剝削,被反剝削的代價並不對稱,這是鎖定之後要一起看的第二個數字。

六、常見誤讀

把鎖定結果當成對手的最佳策略。 求解器給的是你的最佳回應。對手的未鎖節點在它的模型裡仍是會自我調整的對手,但真實對手沒有那麼聰明,也沒有那麼固定;結果只在「鎖定為真」時成立。

只鎖一個節點,卻忽略這個傾向在其他節點留下的痕跡。 河牌過度棄牌的人,往往翻牌圈跟得很寬、轉牌圈也棄牌過多,到河牌的範圍組成早就不是均衡裡的樣子。鎖定河牌的反應,卻沿用均衡的河牌輸入範圍,等於對一個不存在的對局求解,第 42 課說過「範圍輸入錯了,節點內再精確也沒意義」。

把 EV 增量當成每手收益。 3.34% 底池是「到達這個節點」的增量。底池設 20 個大盲,就是約 0.67 個大盲;如果這個節點每 100 手只到達 3 次,每百手約 2 個大盲左右,還沒扣掉對手調整與抽水。把增量乘上到達頻率,再除以估計誤差,才是你該期待的數字。

以為鎖定可以取代對手的資料。 鎖定只負責把「假設」變成「結論」;假設從哪來、可靠度多少,仍然要靠樣本與 Beta 這類算法回答。

資金面:把任何從鎖定學來的偏離帶上桌之前,先只當驗證樣本,轉盤開在中間值(例如上表 50%),銀彈建議 30 到 50 個買入起跳,而且要用小到最壞情況也不傷決策品質的注碼。研究的目的是提高決策品質,不是預測收益,也不保證任何一段期間的結果。

🧠 為什麼是這樣

節點鎖定的核心性質是一個不等式:把對手鎖在偏離均衡的策略之下,你的最佳回應 EV 一定不低於賽局值。 理由很直接:均衡策略對任何對手策略都能保住賽局值,而最佳回應至少不比均衡策略差,所以鎖定之後算出的增量不會是負的。這也解釋了為什麼求解器永遠「找得到」剝削:它找到的不是真實漏洞,是你輸入的假設下的最優解。所有風險都藏在輸入:鎖定值若是錯的,增量就是假的,而且你換上的策略在對手回到均衡或反向調整時是負值。這與第 41 課的結論一脈相承:偏離均衡的收益與損失都由對手的真實行為決定,不是由你的策略決定。

成立前提有四個。第一,對手的傾向在樣本期間穩定,Beta 收縮的先驗假設的是一個固定的未知頻率,對手若因為輸錢、換桌或看穿你而改變,後驗是過期的。第二,樣本沒有選擇偏誤:你看得到的手牌,是進入攤牌或你參與的那部分;你蓋掉的牌、對手沒被你下注的情境,資料庫裡沒有。第三,鎖定的節點分配假設合理,如第四節所示,整體頻率可以由完全不同的手牌分配造成,而不同分配對薄價值這類決策影響很大。第四,對手的其他節點與範圍沒有同時偏離,否則鎖一個節點的結果等於部分真、部分假。

失效情形與對手的反制,大致落在三處。對手若看穿你的調整,最直接的反制是把偏離方向反過來打:你增加詐唬,他就多跟,第五節算過最壞情況的代價是 15.3% 底池;對手若在你進行薄價值下注時換成少跟,薄價值那一側也會損失,只是幅度較小。再來,對手若不是單一的「過度棄牌」,而是在不同牌面、不同位置有不同傾向,單點鎖定只在你分類正確的那個子集有效,其餘情境照打均衡比較安全。最後,節點鎖定在多人池、淺籌碼與複雜下注樹裡會更脆弱,因為鎖定的節點之間會互相影響,單鎖一個點的結果可能被另一個沒鎖的節點抵消;這些情況我這裡沒有算。

站內兩篇專欄可以對照著讀:平衡與 GTO 解釋為什麼均衡值是你的保底,剝削性打法 則處理怎麼從 HUD 數字找到漏洞、偏離多少才合理。今天補上的是它們之間的橋樑:漏洞估計(Beta 收縮)→ 鎖進求解器 → 讀 EV 增量與最壞損失 → 決定轉盤開多大。

✍️ 今日練習

紙筆與計算機,15 到 20 分鐘,不需要求解器。

賽局:河牌,底池 80,P1 下注 40(半池)或過牌。P1 範圍堅果 5 組、空氣 10 組(必輸);P2 只有一手抓牌,贏空氣、輸堅果,面對下注只能跟或蓋,沒有加注,過牌後直接攤牌。

  1. 算均衡:詐唬佔比 b、詐唬組合數 y、每組空氣的下注頻率 a、P2 的跟注率 c;再算堅果的 EV(下注)、空氣的 EV(下注)(應為 0),與 P1 的範圍 EV。
  2. 鎖定 P2 的跟注率 c = 50%:求空氣下注的 EV、堅果的 EV(下注)、範圍 EV 與增量(換成底池百分比)。
  3. 假設鎖定是錯的,P2 其實會全部跟注(c = 100%):P1 若用第 2 步的剝削策略(空氣全下注),範圍 EV 是多少,比均衡值少多少?
  4. 用第 41 課的式子算損益兩平的把握 q* = 損失 ÷(增量 + 損失)。
  5. 對手資料:你看到他面對半池下注共 20 次、跟注 9 次。先驗用 Beta(6, 3)(以 2/3 為中心、相當於 9 手),求後驗平均與用後驗平均算的期望增量;再與直接用原始 45% 算的增量比較。
  6. 把空氣的詐唬頻率設為 a = 50%(轉盤開一半),算 c = 後驗平均與 c = 100% 兩種情況下相對均衡值的盈虧。
  7. 寫一句話:如果你只有 20 手樣本,你會把這個鎖定當成上桌的依據,還是只當成研究假設?為什麼?

自我檢查

  • 步驟 1:b = 40 ÷ 160 = 25%,y = 5/3,a = (5/3) ÷ 10 = 1/6(約 16.7%),c = 80 ÷ 120 = 2/3;堅果 EV(下注) = 80 + 40 × 2/3 = 106.67,空氣 EV(下注) = 80 − 120 × 2/3 = 0,範圍 EV = 5 × 106.67 ÷ 15 = 35.56。
  • 步驟 2、3:c = 50% 時空氣 EV(下注) = 80 − 60 = 20,堅果 100,範圍 EV = (5 × 100 + 10 × 20) ÷ 15 = 46.67,增量 11.11(13.9% 底池);c = 100% 時堅果 120、空氣 −40,範圍 EV = (600 − 400) ÷ 15 = 13.33,比 35.56 少 22.22(27.8% 底池)。
  • 步驟 4:q* = 22.22 ÷ (11.11 + 22.22) = 66.7%。我能說出這個數字的意思:鎖定的把握要高於三分之二,這個「全轉」才值得做。
  • 步驟 5:後驗 Beta(15, 14),平均 15 ÷ 29 = 51.7%;空氣全詐唬的範圍 EV = 80 − 66.67c,期望增量 = 44.44 − 66.67 × 0.517 = 9.96(12.4% 底池);直接用 45% 算是 44.44 − 30 = 14.44,高估約 45%。
  • 步驟 6:a = 50% 時範圍 EV = [5 × (80 + 40c) + 5 × (80 − 120c)] ÷ 15;c = 51.7% 得 39.54,多賺 3.98;c = 100% 得 26.67,少 8.89。轉盤開一半,賭對的收益與賭錯的損失都約為全轉的 40%。
  • 步驟 7:我寫的理由包含樣本數(20 手後驗標準差約 9 個百分點)、先驗選擇與對手是否穩定,而不是「感覺他很鬆」。

🔗 延伸

💬 問 AI

我在練「玩牌技術」第 43 課:節點鎖定(node locking),用求解器做剝削研究。
 
請用下面的資料檢查我的算法(只是教學練習,不是下注建議):
- 河牌賽局:底池 [80],下注 [40];P1 範圍堅果 [5] 組、空氣 [10] 組;P2 只有一手抓牌
- 規則:過牌後直接攤牌,面對下注只能跟或蓋,沒有加注
- 我鎖定的 P2 跟注率:[50%];我看到對手面對下注共 [20] 次、跟注 [9] 次,先驗用 Beta([6], [3])
- 我算出的:均衡的空氣下注頻率 [...]、鎖定後範圍 EV 與增量 [...]、鎖定為假(對手全跟)時的損失 [...]
 
請依序回答:
1. 用「令對手無差異」重新推導均衡的詐唬佔比、空氣下注頻率與跟注率,並驗算賽局值。
2. 鎖定 P2 跟注率 [50%] 後,逐步算每類手牌的 EV、範圍 EV 與增量(換成底池百分比)。
3. 用 Beta 收縮算後驗平均與標準差,以及「真實跟注率低於均衡值」的機率,再算期望增量,說明為何原始讀數會高估。
4. 把空氣詐唬頻率分別設成 [0%、50%、100%],在對手跟注率為後驗平均與 100% 時算相對均衡的盈虧,畫成表。
5. 說明這個賽局的哪些假設在真實求解器裡不成立(單一抓牌、過牌後可下注、多尺度、抽水、範圍輸入錯誤、整體頻率與手牌分配的對應),各會讓結論怎麼失真。
 
請標明「你算出來的」「你的假設」「你不確定的」,不要給我下注或買入建議。