Gumbel vs Visit 直接対戦評価¶
更新日: 2026-07-13
結論¶
同一checkpoint、同一simulation予算、固定7デッキ、player位置入れ替えでGumbel Sequential
HalvingとVisit ISMCTSを直接対戦させた。seed 0とseed
1000の2回、合計560試合では、Gumbelは決着509試合中287勝、勝率56.4%だった。Wilson
95%信頼区間は52.0%から60.6%、両側二項検定はp = 0.0045である。
このbenchmark条件ではGumbelがVisitより強いと判断し、480 simulationsでの標準root選択としてGumbelを維持する。ただし、効果量はデッキに依存し、Iono/Belliboltでは未完了率が高い。未知デッキやcross-deck matchupまで含む一般的な優位を証明した結果ではない。
目的¶
固定hidden局面を使ったtactical probeでは、480 simulationsのVisitが高予算Visitと79.3%一致し、Gumbelは51.7%一致した。しかし、高予算側もVisitであるため、この一致率はVisitの探索原理に有利であり、実戦勝率を直接表さない。
そこで、oracleへの一致ではなく最終的な対戦結果を測るため、同じcheckpointをGumbelとVisitで共有し、両方式を同じ試合内で直接対戦させた。
評価条件¶
| 項目 | 設定 |
|---|---|
| checkpoint alias | checkpoints/policy_value_latest_best.pt |
| checkpoint実体 | checkpoints/policy_value_v13_ismcts_iterative_10k_20260705-052512-cycle010_best.pt |
| benchmark config | configs/benchmarks/evaluate-search-ab.yaml |
| deck manifest | configs/benchmarks/model-decks-v1.yaml |
| model | 両方式で同一checkpoint |
| deck | 固定7デッキのmirror matchup |
| player位置 | Gumbel p0対Visit p1、Visit p0対Gumbel p1 |
| games | 各seedで7 decks x 20 games x 2 directions = 280 |
| seeds | 0、1000 |
| 総試合数 | 560 |
| device / workers | CPU / 8 workers |
| simulation予算 | 4 determinizations x 120 = 480 / decision |
| max depth | 18 |
| max steps | 220 |
| non-root探索 | 両方式ともPUCT |
| Gumbel fallback | marked_fallback、実測fallback 0 |
実行時のHEADはc29b5c1を基点としていたが、pca search-abとplayer別root
selectionの変更はworking探索木上にあった。再現する場合は、このレポートと同時にコミットされた実装を基準にする。
CABTのbattle_startにはshuffle seedを指定するAPIがない。両方向に同じevaluation
seedを渡しているが、山札順まで同一にしたcommon-random-number比較ではない。deck、試合数、探索予算、player位置を対称化し、独立した2
seedで再現性を確認する設計である。
実行コマンド¶
seed 0:
pca search-ab \
--checkpoint checkpoints/policy_value_latest_best.pt \
--games-per-deck 20 \
--workers 8 \
--device cpu
seed 1000:
pca search-ab \
--checkpoint checkpoints/policy_value_latest_best.pt \
--games-per-deck 20 \
--workers 8 \
--device cpu \
--seed 1000
保存した結果¶
| Seed | Directory |
|---|---|
| 0 | data/eval/search-ab/gumbel-vs-visit-20260712-013731/ |
| 1000 | data/eval/search-ab/gumbel-vs-visit-20260712-081006/ |
各directoryには次を保存する。
gumbel-p0-vs-visit-p1.jsonとCSVvisit-p0-vs-gumbel-p1.jsonとCSV- Gumbel基準へ正規化した
summary.json
現在のsummary.jsonにあるfinishedは、引き分けを含む完了試合数ではなく、Gumbel勝ちとVisit勝ちを足した決着試合数を表す。今回の合算では決着509、引き分け3、未完了48、実際の完了試合数は512である。
総合結果¶
Seed別¶
| Seed | Gumbel wins | Visit wins | Draws | Unfinished | Gumbel決着勝率 | 95% CI |
|---|---|---|---|---|---|---|
| 0 | 143 | 115 | 0 | 22 | 55.4% | 49.3% - 61.4% |
| 1000 | 144 | 107 | 3 | 26 | 57.4% | 51.2% - 63.3% |
| 合計 | 287 | 222 | 3 | 48 | 56.4% | 52.0% - 60.6% |
合算した決着509試合に対する両側二項検定はp = 0.0045だった。単一seedの偶然だけでは説明しにくく、2回とも同じ方向の差が再現している。
Player位置別¶
| Gumbelの位置 | Gumbel wins | Visit wins |
|---|---|---|
| player 0 | 141 | 113 |
| player 1 | 146 | 109 |
Gumbelは両方のplayer位置で勝ち越した。集計結果はplayer 0またはplayer 1の一方向の有利だけでは説明できない。
戦闘指標¶
| 指標 | Gumbel | Visit | Gumbel基準の差 |
|---|---|---|---|
| 平均サイド取得 | 3.402 | 2.814 | +20.9% |
| 平均attack-ready | 15.121 | 13.645 | +10.8% |
| 平均攻撃回数 | 7.025 | 7.280 | -3.5% |
Gumbelは攻撃回数が少ない一方で、平均サイド取得とattack-readyが高い。少なくともこのbenchmarkでは、行動回数を増やすよりも、サイド取得につながるroot行動へsimulationを配分できた可能性がある。ただし、ログだけから因果関係までは確定できない。
探索診断¶
| 指標 | Gumbel | Visit |
|---|---|---|
| simulations / decision | 480.0 | 480.0 |
| 平均探索深度 | 4.425 | 4.582 |
| 秒 / decision | 4.112 | 4.166 |
| Gumbel fallback | 0 | - |
| policy calls | 35,146 | 33,063 |
simulation予算は両方式で正確に480だった。GumbelはVisitより平均深度が約3.4%浅いが、勝率は高い。今回の結果は、rootで深さだけを最大化することより、Sequential Halvingによる候補への予算配分が有効だった可能性を支持する。
1 decisionの実測時間差は約1.3%であり、tactical probeで見えた約21%の差は長時間直接対戦では再現しなかった。実運用上の速度はほぼ同等として扱う。
デッキ別結果¶
| Deck | Gumbel wins | Visit wins | Draws | Unfinished | Gumbel決着勝率 |
|---|---|---|---|---|---|
| Archaludon ex | 40 | 40 | 0 | 0 | 50.0% |
| Garchomp ex | 48 | 27 | 0 | 5 | 64.0% |
| Dragapult | 37 | 35 | 2 | 6 | 51.4% |
| Iono / Bellibolt ex | 31 | 14 | 0 | 35 | 68.9% |
| Mega Abomasnow ex | 39 | 41 | 0 | 0 | 48.8% |
| Starmie ex / Archaludon | 44 | 35 | 0 | 1 | 55.7% |
| Mega Lucario ex | 48 | 30 | 1 | 1 | 61.5% |
Gumbelの優位はGarchomp、Iono/Bellibolt、Lucarioで大きい。Archaludon、Dragapult、Abomasnowは同等圏であり、すべてのデッキで一様に強くなったわけではない。
Iono/Belliboltは80試合中35試合、43.8%が未完了である。このデッキの決着勝率68.9%は強い打ち切りバイアスを受ける可能性がある。max_steps=300以上での感度分析を別途行い、未完了を減らして確認する必要がある。
Tactical Probeとの関係¶
tactical probeでは高予算Visitをoracleとしていたため、Visitはoracleの探索原理を近似しやすい。そこから言えるのは「通常Visitが高予算Visitの選択を再現しやすい」ことであり、「Visitが実戦でGumbelより強い」ことではなかった。
今回の直接対戦は、最終エージェントとしての強さを測る目的ではtactical probeより優先する。tactical probeは、局面別のQ regret、候補脱落、学習前後のpolicy変化を診断する用途へ限定する。
採用判断¶
- 現在の480 simulations設定では、Gumbel Sequential Halvingを標準root選択として維持する。
- Visitはbaselineとablationとして残す。
- 高予算Visit oracleとの不一致だけを理由にGumbelを退行扱いしない。
- self-play学習では
gumbel_completed_qtargetがモデルへ吸収されるかをvalidationと固定probeで別途確認する。 - Iono/Belliboltのtimeout感度と、未知デッキ・cross-deck matchupは別benchmarkとして扱う。
次の検証¶
- 1試合あたりの上限とturn帯を持つstratified tactical probeを作り、同一試合への局面集中を防ぐ。
- 同一probe集合で学習前後のpolicy KL、Q regret、action agreementを測る。
- 同じ開始checkpointからVisit targetと
gumbel_completed_qtargetの学習を分岐し、探索方式とtarget方式を分離する。 - Iono/Belliboltを
max_steps=300以上で再評価する。 - mirror deckだけでなくcross-deckとholdout deckへ評価範囲を広げる。