128回探索の自己対局8,192局を生成し、value教師信号の課題を分析した
Splendor は、宝石トークンを集めてカードを購入し、買ったカードの色を以後の購入コストの永久割引として使いながら得点を伸ばすボードゲームだ。通常は15点以上を目指す。
モデルは局面ごとに、各合法手の良さを表す policy と、最終的な win / draw / loss を予測する value を出す。実戦ではこの予測を PUCT というゲーム木探索に入れて手を選ぶ。
前回の実験では、同一モデルであっても探索回数を増やすことで明確に強くなり、128 simulations が32 simulations を有意に上回ることが確かめられた。そこで今回は探索回数の比較を一段落させ、128 simulations に固定した上で「より精度の高い探索が生成する教師データ」を十分な規模で構築することにした。
128 simulations で8,192局を生成した
自己対局は4,096個の初期配置について席順を入れ替え、合計8,192局を生成した。
各手では128 simulations の PUCT を実行する。序盤12手だけ temperature 1 で手をサンプリングし、その後は最大 visit の手を選ぶ。root には探索の多様性を出すための noise も入れる。
最終的に得られた学習候補は478,364局面だった。
| 指標 | 結果 |
|---|---|
| games | 8,192 |
| eligible decisions | 478,364 |
| simulations / decision | 128 |
| max-ply 打ち切り | 0% |
| policy target fallback | 0.0970% |
policy target fallback は、探索ノイズを除いた後の visit が少なすぎて通常の補正を使えず、raw visits に戻した割合である。約0.1%しかなく、ほぼ全局面で意図した教師分布を作れた。
policy target はかなり鋭くなった
policy の教師信号には、探索後に各合法手へ何回 simulation が入ったかを正規化した分布を使う。
128 simulations まで読むと、分布はかなり集中した。
| 指標 | 結果 |
|---|---|
| normalized entropy 平均 | 0.2423 |
| top action の平均確率 | 0.7024 |
| top action が99%以上の局面 | 41.7% |
| 平均合法手数 | 26.94 |
合法手が平均27個近く存在するにもかかわらず、探索後の着手分布は約42%の局面で1手にほぼ全ての確率質量が集中している。
これは「探索結果が常に最適である」と証明するものではないが、モデルが最初に出力した事前確率(raw policy)を単に模倣しているのではなく、128回の木探索を経て明確な行動の選好(preference)が生成されている裏付けといえる。
value教師は終盤と序盤で性質が違った
今回もうひとつ見たかったのが value だった。
通常の value target は単純で、ゲームに勝ったら win、負けたら loss、引き分けなら draw を、そのゲーム中の各局面へ教師として付ける。
一方、探索そのものも各局面で root value を持っている。
簡略化すると、
terminal value = 最後まで対局した結果
search root value = その局面から128 simulations読んだ時点の評価である。
探索で得られた価値の評価値を教師信号に適度に反映させれば、1ゲームの最終勝敗のみを全局面に割り当てる従来の方法よりも、分散が小さく解像度の高い学習信号が得られるのではないか――これは以前から検証したかった仮説だった。
しかし今回、探索時のルートにおける評価値(search root value)とゲームの最終結果を着手数残り局面ごとに比較したところ、典型的なホライズン効果が顕著に確認された。
| 終局までの残り decisions | root value の MAE |
|---|---|
| 1–8 | 0.3566 |
| 33–64 | 0.9331 |
| 65–160 | 0.9952 |
value は -1 = loss, 0 = draw, +1 = win のスカラーとして比較している。
終盤ではある程度最終結果に近いが、ゲーム序盤から中盤では誤差がほぼ1に近い。33手以上残っている局面は216,220 rows、全体の45.2%だった。
したがって、探索時の評価値は「終局結果(terminal outcome)よりも解像度が高いから優れた教師信号になる」と短絡的には判断できない。
PUCT探索によって方策(policy)が劇的に改善されることと、探索途中のルートにおける評価値が遠い終局の勝敗を高精度に予測できることとは、切り離して考える必要がある。
次は value target だけを変えて比較する
この結果をもって、探索評価値の利用を直ちに諦める判断はしなかった。
次の学習実験では、今回収集した478,364局面をそのまま使い、初期モデル、最適化アルゴリズム(optimizer)、乱数シード、1エポックの学習条件を完全に揃えた上で、value の教師ターゲット設計のみを変更して比較する。
T: terminal outcome のみM: terminal outcome + search value を 1/3 混ぜるこの2条件は全く同じ再生バッファ(replay cache)を参照し、異なるのは value の教師ターゲット計算式のみとする。
探索評価値の導入がノイズを抑えて学習を安定化させるのか、それとも長期の予測誤差をそのまま自己蒸留してしまうのかを、学習後のモデル同士による直接対局で検証する。
過去の実験では複数の変更を同時に適用したことで要因分析が難航した経緯があったため、今回は検証変数を1点に厳密に絞り込んでいる。
自己対局生成も速くした
8,192局の生成途中で、native self-play を8 workerへ並列化した。
最初の shard は2,048局に5,214.65秒かかったが、8 worker を使った最後の shard は2,331.88秒だった。約2.24倍の throughput、55.3%の wall time 削減になる。
ただしこれはモデル品質自体の改善ではない。探索設定や乱数シード、出力順序は維持されているものの、バッチサイズや並列処理に伴う浮動小数点演算のわずかな差によって、最大値(argmax)選択のタイブレーク等で着手系列が分岐する可能性は排除できない。そのため今回は「同一条件の検証サイクルをより低コストで回せるようになった」という運用・実験効率面の成果として位置づけている。
今回の検証の本質は、128-simulation PUCT による十分な規模の自己対局コーパスを構築し、そこから得られる policy と value の教師信号の振る舞いを詳細に分析できた点にある。
policy 側には十分に先鋭化した質の高い探索分布が得られた一方で、value 側では遠い未来の勝敗を予測する探索評価値の精度に明らかな限界が確認された。
次回はこの同一データを用い、2通りの value 教師設計で学習したモデル同士を対戦させ、どちらのアプローチが真に対局実力の向上に寄与するかを確かめる。
この記事は、実装・実験記録をもとに、本文の大部分をLLMが執筆し、筆者が内容を確認・編集しています。