PUCT探索による勝率の押し上げ効果を定量的に検証した

前回は、ルールベースの教師データから policy と value を同時に学習するパイプラインを構築した。policy は「次にどの手を選ぶべきか」、value は「その局面から勝てそうか」を予測する。

その後、このモデルを PUCT アルゴリズムによるゲーム木探索に組み込み、自己対局データを生成して次の世代のモデルを学習するループを回した。しかし、自己対局から得られた新モデルは、ベースとなった元モデルに対して明確な優位を示せなかった。

そこで今回は、学習ハイパーパラメータを調整する前に、より根本的な前提を検証することにした。

「そもそも同じモデルを使っていても、探索を加えることで実際に強くなっているのだろうか?」

もし探索を挟んでも生の policy とほとんど実力差がないのであれば、自己対局によって生成される教師信号自体に改善の余地がほとんどないことになる。逆に、探索によって対局性能が大きく向上しているなら、その改善シグナルを学習側のネットワークがまだうまく吸収できていないという仮説が成り立つ。

PUCT探索の仕組み

policy-value モデルは、局面を入力として受け取り、各合法手の事前確率分布と局面の勝敗予測を出力する。

PUCT はこの2つの予測値を活用しながら、ゲーム木のどのノードを優先的に展開すべきかを決定する探索手法だ。簡潔に表すと、各候補手に対して次のスコアを計算して比較する。

Q(a)+U(a)Q(a) + U(a)

ここで Q(a)Q(a) はこれまでの探索で蓄積された局面の行動価値評価であり、U(a)U(a) は未探索の手を試行するためのボーナス項で、policy が高く評価している手ほど大きな値が割り当てられる。

探索を1サイクル進める単位を simulation と呼ぶ。本検証における simulation budget は、1手を決定するまでに何回の simulation を実行するかを表す。

たとえば budget 32 であれば、1手を選択するまでにゲーム木を32回展開する。探索終了後、ルートノードで最も訪問回数の多かった手を選択して着手する。

同一モデルによる探索回数の比較実験

今回はモデルの重みを完全に固定し、探索回数(simulation budget)の条件だけを変更して対局テストを実施した。

各評価では共通の初期配置を用い、先手・後手を入れ替えた2局を1組(ペア)として300組、計600局を戦わせた。3通りの比較実験を行い、総対局数は1,800局となる。

モデルの追加学習や新規自己対局データの生成は行わず、対局時の探索回数のみを分離して比較した。

比較高budget側の pair score区間
32 simulations vs 8 simulations0.6300[0.5965, 0.6635]
128 simulations vs 32 simulations0.6642[0.6316, 0.6967]
32 simulations vs raw policy0.6583[0.6266, 0.6900]

pair score は先手後手の2局をペアとして集計した勝率スコアであり、0.5で互角、0.5を超えれば左側の条件(高budget側)が優勢であることを示す。表中の区間は90%信頼区間であり、両端はそれぞれ片側95%信頼限界に対応する。

最初の2条件(32 vs 8、128 vs 32)は事前設計に基づいて実施した。一方、「32 simulations vs raw policy」は、32 vs 8 の結果を確認した段階で追加した追試である。そのため事前の判定ルールを変更するためではなく、探索なしの素の policy との性能差を把握するための参考データとして扱っている。

3つの実験すべてにおいて、pair score は0.5を有意に上回った。

32 simulations の PUCT は、raw policy に対する pair score で 0.6583 を記録した。全く同一のニューラルネットワークであっても、policy の最大確率手をそのまま選ぶ運用と比べ、32回の探索を挟むだけで大幅な実力向上が確認できた。

なお、budget 1 の PUCT が raw policy の argmax と完全に一致することは、事前に1,138局面のテストで確認している。したがって、この比較は「探索の有無」がもたらす直接的な効果をきれいに捉えている。

128 simulationsでも継続して勝率が向上する

探索量を 32 simulations から 128 simulations へと4倍に増やしたケースでも、128側の pair score は 0.6642 に達した。

少なくとも今回検証した範囲では、32 simulations 付近で探索の効果が頭打ちになる現象は見られなかった。

ただし、「探索量を増やすほど加速度的に勝率が伸びる」とまでは判断できない。8→32 の改善幅と 32→128 の改善幅の差を評価した信頼区間は0を挟んでおり、スケーリング曲線の具体的な形状を確定させるには至らなかった。

確実に言えるのは、32 simulations の段階で十分な実力向上が得られており、さらに 128 simulations まで拡張しても追加の改善代が残されている、という事実だ。

32 simulationsの探索はraw policyとは異なるターゲットを生成していた

この測定結果によって、自己対局学習が伸び悩んでいた要因を大きく絞り込むことができた。

これまでは新モデルが元モデルを超えられない理由として、「そもそも探索をかけても元の policy より質の高い手がほとんど生成されていないのではないか」という疑念が存在していた。

しかし、今回のデータはその懸念を明確に退けている。

32 simulations の探索は raw policy より明らかに強く、探索後の訪問回数分布(visit distribution)も raw policy の優先順位を大きく更新していた。自己対局で採用している 32 simulations の設定では、探索完了後に最多訪問となった手が raw policy の最優先手と食い違う局面が約29%存在していた。

したがって次の課題は、探索が提示しているこの訪問分布の差分を、学習側のネットワークがどれだけ的確に取り込めるかを検証することになる。

木の再利用(tree reuse)に関する前提の再検証

今回の実験では、事前の見積もりと実挙動とのズレも明らかになった。

探索アルゴリズムでは、直前の自手番で構築した部分木を次の手番へ引き継ぐ「tree reuse(木の再利用)」を利用できる。設計当初は、名目上の budget が 32 であっても、この再利用効果によって実質的には 50〜85 simulations 相当の探索量として機能している可能性を想定していた。

しかし実際の数値を集計したところ、自己対局中において約75%の局面で tree reuse 自体は発生していたものの、ルートノードでの平均訪問回数は 34.73 回にとどまっていた。32回からわずかに底上げされる程度であり、想定していた 50〜85 回には遠く及ばなかった。

さらに、モデル同士の優劣を判定する arena 対局では、6,898 手の局面ログを検証したところ、tree reuse は1度も発生していなかった。対戦環境では各プレイヤーが独立した探索インスタンスを保持するため、自分の手番が回ってくるまでに相手の手が1手挟まり、保持していた1手先の部分木とマッチしない設計になっていたためだ。

この仕様は両プレイヤーに対称に適用されるため、対局評価の公平性を損なうものではない。ただし、自己対局のデータ収集時と arena での性能評価時とでは、同じ nominal budget 32 であっても実効的な探索回数にわずかな差異が生じていることが判明した。

いずれにせよ、tree reuse による追加訪問回数は当初の想定より大幅に少なく、観測された探索性能の向上は、実効 budget 50〜85 といった過大な探索量を前提としなくても十分に説明がつく。

次の検証ステップ

今回の結果を受け、「探索が弱小で学習価値のある信号を生み出せていない」という懸念は払拭された。

今後フォーカスすべき論点は、探索によって生成された自己対局データが、学習時に既存の教師データとどのように混合されているかという点だ。現状のパイプラインでは初期の教師データを維持しつつ自己対局データを追加しているため、探索によって得られた質の高い改善シグナルが、既存の教師データによって希釈されている可能性がある。

次の実験ではこのデータ混合比率を見直し、探索が発見した着手の質をニューラルネットワークがどの程度吸収できるかを評価していく。

まずは探索単体で十分な実力向上が得られることを確認できた。次は、その探索結果をいかにモデルの基礎力へ反映させるかを検証する。


この記事は、実装・実験記録をもとに、本文の大部分をLLMが執筆し、筆者が内容を確認・編集しています。