コンテンツにスキップ

V14サイクル3の複数ヘッド間のバランス

日付: 2026-07-23

目的

V14 d_model=256でCycle 3のself-playデータを学習した際、Policy targetへの適合が小さく、Value lossが悪化する傾向が見られた。単純な学習率変更だけでは改善しなかったため、Policy、Value、Auxiliary Prize、Integrated Beliefをすべて有効にしたまま、各lossがshared Transformerへ与える相対的な強さを比較した。

この検証ではvalidation metricだけで設定を採用せず、選択したcheckpointを旧Championと直接対戦させ、同じrule-poolに対する性能も確認した。

固定条件

Item Value
Initial checkpoint checkpoints/policy_value_v14_gumbel_iterative_10k_20260714-005806-cycle002_best.pt
Train input data/selfplay/v14-gumbel-iterative-10k-20260714-005806-cycle003.train.jsonl
Replay input data/replay/v14-gumbel-iterative-10k/20260714-005806-cycle003-history.jsonl
Validation input data/selfplay/v14-gumbel-iterative-10k-20260714-005806-cycle003.validation.jsonl
Train records 144,933
Validation records 6,340
Model Unified Policy/Value, d_model=256, 4 layers
Batch 16 micro-batch、gradient accumulation 4、effective batch 64
Learning rate 1e-5
スケジューラー none
Epochs 1
Seed 0
Device MPS

比較run:

  • logs/optimizer-comparison/v14-cycle003-multi-head-balance/comparison.json
  • logs/optimizer-comparison/v14-cycle003-multi-head-balance/comparison.md

Multi-head比較

試行 Valueの重み Auxの倍率 Beliefから共有層への倍率 検証Policy KL Top-1 検証Value 検証Aux 検証Belief
K 0.35 1.00 1.00 0.829386 54.36% 0.292964 0.083048 0.002329
L 0.35 1.25 1.00 0.828564 54.71% 0.294517 0.082955 0.002320
M 0.50 1.25 1.00 0.831790 54.41% 0.289765 0.082661 0.002328
N 0.35 1.25 0.25 0.828859 54.39% 0.297954 0.083264 0.002333

Attempt LはPolicyへの適合が最も良かったが、Value悪化が大きかった。Attempt MはPolicy改善量こそ小さいものの、ValueとAuxiliaryの劣化を最も抑え、Value backbone driftも比較候補中で最小だったため、実戦評価対象に選んだ。

Attempt Mのvalidation変化

指標 変更前 変更後 変化
Policy KL 0.832918 0.831790 -0.001128
Policy top-1 agreement 53.95% 54.41% +0.46pt
Value loss 0.282408 0.289765 +0.007357
Auxiliary prize loss 0.084868 0.082661 -0.002207
Integrated belief loss 0.002414 0.002328 -0.000086

Value lossは悪化したが、比較時に許容した+0.01以内だった。Value drift診断ではCandidate全体のMSE増加が+0.007365、backbone-only増加が+0.003332で、K、L、Nより小さかった。

昇格判定

Candidate:

checkpoints/experiments/v14-cycle003-multi-head-balance/attempt-m-best.pt

Champion:

checkpoints/policy_value_v14_gumbel_iterative_10k_20260714-005806-cycle002_best.pt

評価条件:

Item Value
Deck manifest configs/benchmarks/model-decks-v1.yaml
Head-to-head 7 decks × 10 games × 2 player directions = 140 games
Rule-pool 7 model decks × 16 rule agents × 1 game = 112 games per model
Device CPU
Seed 0
Criteria any
Official head-to-head threshold 52%
Training Champion threshold 50%
Maximum rule win-rate drop 2pt
Maximum unfinished-rate increase 2pt
Maximum pokemon-out loss-rate increase 2pt

Artifact:

data/eval/promotion-gate/v14-cycle003-multi-head-attempt-m-vs-cycle002/promotion-benchmark.json

新旧モデルの直接対戦

Result Value
Candidate wins 70
Champion wins 66
Unfinished 4
Candidate win rate over all games 50.00%
Candidate win rate over finished games 51.47%
Wilson 95% confidence interval 43.15% - 59.71%

Candidateはplayer 0で31勝37敗、player 1で39勝29敗だった。先後を入れ替えた合算ではCandidate基準へ正規化できているが、player sideの影響が大きいため、勝率差そのものは確定的な優位性と解釈しない。

固定deck別のCandidate成績:

Deck Candidate Champion Unfinished
Archaludon ex 8 12 0
Garchomp ex 8 12 0
Dragapult 10 10 0
Iono Bellibolt ex 9 7 4
Mega Abomasnow ex 12 8 0
Starmie ex / Archaludon 12 8 0
Mega Lucario ex 11 9 0

ルールエージェント群との対戦

指標 候補モデル Champion
Wins / games 25 / 112 21 / 112 +4 wins
Macro win rate 22.32% 18.75% +3.57pt
Average prizes 1.670 1.643 +0.027
Average attacks 3.473 4.071 -0.598
Unfinished rate 0.00% 0.00% 0.00pt
Pokemon-out loss rate 33.93% 32.14% +1.79pt
Deck-out loss rate 1.79% 2.68% -0.89pt

デッキ別ではGarchompとMega Lucarioがそれぞれ25pt改善した一方、Starmie / Archaludonは25pt悪化した。全体改善は4勝差であり、デッキ間の性能移動を含む。

判定

Head-to-headは正式基準52%には届かなかったが、Training Champion基準50%を満たした。Rule-poolはmacro勝率が改善し、unfinished増加はなく、pokemon-out loss増加も上限2pt以内だった。

criteria-mode=anyではhead-to-headまたはrule-poolのどちらかが合格すれば正式昇格するため、最終statusは promotedとなった。

採用したV14 baseline

configs/v14/train-policy-gumbel-selfplay.yamlを次の設定へ更新する。

epochs: 1
batch-size: 16
gradient-accumulation-steps: 4
learning-rate: 0.00001
lr-scheduler: none
gradient-clip-norm: 10.0
value-loss-weight: 0.5
aux-prize-loss-scale: 1.25
belief-backbone-gradient-scale: 1.0

この設定は今回のデータだけで普遍的な最適値と証明されたものではない。V14の新しいbaselineとして採用し、各self-play cycleでpromotion gateを継続する。

運用Championへの反映

promotion-runは評価とgate判定だけを行うため、単独実験のAttempt Mは合格直後にはlatest alias、run ledger、replay registryへ反映されていなかった。pca promote-checkpointを追加し、2026-07-23に次の状態を検証してから正式採用した。

  • promotion artifactのstatusがpromoted
  • Candidate checkpoint hashが評価時fingerprintと一致
  • 現在latestが評価時のCycle 2 Championと一致
  • Cycle 3のtrain JSONL、history JSONL、training metricsが存在

採用後:

  • checkpoints/policy_value_latest_best.ptはAttempt M bestを参照
  • official / trainingのrun-name scoped aliasもAttempt Mへ同期
  • run ledgerのchampion.best_cyclecycle003
  • replay registryにはCycle 2とCycle 3を登録
  • 採用receiptは data/eval/promotion-gate/v14-cycle003-multi-head-attempt-m-vs-cycle002/champion-adoption.json に保存

この更新は同じrun IDを置換するため冪等であり、評価後に別のChampionへ進んでいた場合は古いartifactによる上書きを拒否する。

次に確認すること

  1. 新baselineで次cycleを学習し、Policy、Value、Auxiliary、Beliefのvalidation推移を確認する。
  2. Candidate対Championの先後差とデッキ別勝率を継続して記録する。
  3. 直接対戦が再び僅差なら、異なるseedまたはdeckあたり20試合で再評価する。
  4. Starmie / Archaludonのrule-pool低下が再現するか確認する。
  5. Average attacks低下が戦術改善か、攻撃機会損失かを試合ログで切り分ける。