Splendor AIで探索値をvalue教師に混ぜたモデルを1,600局で確認した

Splendor をプレイする policy-value model を、探索と自己対局で強くしている。

Splendor は、宝石を集めてカードを買い、買ったカードを以後の購入コストの割引として使いながら得点を伸ばすゲームだ。モデルは各局面で、どの手を選ぶかを表す policy と、最終的な win / draw / loss を表す value を予測する。

前回は128回の PUCT 探索で8,192局の自己対局を作った。policy の教師信号はかなり鋭くなった一方、探索中の root value は終局まで遠い局面では最終結果との誤差が大きかった。

そこで今回は、同じ自己対局データから value target だけを変えた2つのモデルを学習し、実際の対局で比較した。

terminal outcome と search value を比較する

2つのモデルは同じ初期 checkpoint、同じ478,364局面、同じ optimizer、同じ1 epoch学習を使う。

違うのは value の教師だけである。

T: terminal outcome のみ
M: terminal outcome に search root value を 1/3 混ぜる

M は最終勝敗を捨てるわけではない。ゲーム終了時の結果を主成分として残しつつ、その局面で128 simulations探索した評価を少しだけ混ぜる。

狙いは、1ゲームの最終結果を全局面へそのまま複製するより、局面ごとの情報を増やせるかを見ることだった。

offline metric だけではほぼ分からなかった

学習後の test 指標はかなり近かった。

指標TM
policy KL0.22920.2280
WDL loss0.63840.6306
WDL Brier0.42520.4221
WDL accuracy0.64400.6456

M がわずかに良く見える項目はあるが、この差だけで強いモデルを選ぶことはしなかった。

ゲームAIでは、最終的にはモデル同士を同じ探索設定で対局させる方が目的に近い。

同じ800局面ペアで元モデルと対局させた

T と M を、それぞれ学習前の bootstrap model と対局させた。

同じ800個の初期配置を使い、席順を入れ替えた2局を1組にする。各モデルは同じ32-simulation PUCTで指す。

challengerpair score
T0.501250
M0.516563

同じ初期配置ごとに M と T の差を取ると、平均差は

0.5165630.501250=0.0153130.516563 - 0.501250 = 0.015313

だった。

ただし、この差の one-sided 95% lower bound は -0.010782 だった。

つまり点推定では M が上だが、「search value を1/3混ぜたことが terminal-only より強かった」とまでは言えない。今回の800 pairsでは、その差を十分な確度で分離できなかった。

事前に決めた選択ルールは点推定が正なら M を次へ進める、というものだったので、M を選択した。

freshな1,600局でもMは元モデルを上回った

次に、選んだ M だけを新しい800 pairs、合計1,600局で bootstrap model と再評価した。

結果は次の通りだった。

結果局数
M 勝ち838
draw6
bootstrap 勝ち756
pair score0.525625
one-sided lower bound0.505017

lower bound が0.5を上回ったため、この評価条件では M が bootstrap より強いという判定になった。

ただし余裕は大きくない。lower bound は parity を約0.005だけ上回っている。

ここで確認できたのは「この M モデル全体が元モデルを上回った」ということまでである。

search value mix だけが原因だとは言えない。T と M の直接的な差については先ほどの区間が0をまたいでおり、独立確認では T を再評価していないからだ。

今回分かったこと

以前は search root value の長い horizon での誤差を見て、「これを教師に混ぜても大丈夫なのか」という疑問があった。

今回、その値を1/3だけ混ぜたモデルが少なくとも壊れず、freshな1,600局では元モデルを上回ったことまでは確認できた。

一方で、terminal-only より search-value mix が優れているという結論にはまだ届いていない。

確認できたこと
M model > bootstrap under the fixed arena
まだ確認できていないこと
search-value mix > terminal-only

この区別は重要だと思っている。点推定が少し良かったことと、その学習手法が本当に効いたことは同じではない。

予定していた次の2世代ループは、この時点ではまだ実行していない。まずは今回の小さい差を過大解釈せず、value target の改善をどう測るかをもう一段詰める必要がある。


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