方策・価値ネットワーク

方策・価値ネットワーク(policy/value network)は、局面を入力し、指し手の有望度を表す方策(policy)と、局面の期待結果を表す価値(value)を同時に出力するニューラルネットワークである。AlphaZero 型の将棋AIでは、モンテカルロ木探索(MCTS)を導く中核部品になる。

コンピュータ将棋では、従来の評価関数が主に この局面は何点か を返すのに対し、方策・価値ネットワークは どの手が有望かこの局面はどれくらい勝ちやすいか をまとめて返す。このため、評価関数と探索の間にある技術として理解すると分かりやすい。

方策と価値

方策(policy)は、合法手ごとの有望度を表す。実装上は、すべての手に対する logits や確率分布として出力され、違法手は MCTS や後処理で除外される。方策が良いほど、MCTS は初期段階から有望な手へ探索資源を集めやすくなる。

価値(value)は、局面の期待結果を表す。AlphaZero 論文では、勝ちを +1、負けを -1、引き分けを 0 とする期待結果として扱われる。将棋実装では、勝率や評価値への変換、千日手・入玉・最大手数引き分けの扱いなどが実務上の論点になる。

MCTS との関係

AlphaZero 型では、方策・価値ネットワークは単独で指し手を決めるのではなく、MCTS と組み合わせて使われる。

  1. 現局面をネットワークに入力する。
  2. 方策出力を、子ノードを選ぶときの事前確率として使う。
  3. 葉局面では価値出力を使って局面を評価する。
  4. MCTS の訪問回数分布を、次の学習で方策の教師として使う。

この流れでは、ネットワークは探索を導き、探索はネットワークを鍛える教師を作る。方策・価値ネットワークは、AlphaZero 型の 探索と学習のループ を閉じるための接点である。

学習ターゲット

方策側の教師は、自己対局中の MCTS で得られたルートの訪問回数分布である。単に実際に指した一手だけを教師にするより、探索が比較した候補手の相対的な強さを反映できる。

価値側の教師は、終局結果や探索・他エンジンによる評価値である。AlphaZero 型の純粋な自己対局では終局結果を使うが、将棋の実装では既存棋譜、他エンジンとの対局、再評価、知識蒸留などを組み合わせることもある。

dlshogi の学習コードでは、policy loss、result loss、value loss、policy accuracy、value accuracy などが扱われる。これは、方策、終局結果、局面価値を別々に観測しながら学習していることを示している。

将棋での出力表現

将棋では、駒の移動だけでなく持ち駒の打ち手もあるため、方策出力の設計が重要になる。AlphaZero 論文では、将棋の方策を 9 x 9 x 139 の平面で表し、移動、成り、持ち駒の打ち手を含む 11,259 通りの手を表現している。

dlshogi でも、ONNX 出力名として output_policyoutput_value が使われる。output_policy は手の選択や MCTS の事前分布に使われ、output_value は局面の勝ちやすさを表す値として使われる。

NNUE との違い

NNUE は、alpha-beta 系探索で高速に使うための評価関数として発展した。CPU 上で差分更新しやすく、深い探索と組み合わせやすい。

一方、方策・価値ネットワークは、GPU などでバッチ推論しながら MCTS を導く用途が中心である。方策を出す点、探索の訪問回数分布を学習ターゲットにできる点、自己対局ループと強く結びつく点が NNUE と大きく異なる。

どちらもニューラルネットワーク型の評価技術だが、想定する探索、推論環境、学習データの作り方が違う。

dlshogi での位置づけ

DeepLearningShogi では、dlshogi/network/policy_value_network*.py に複数の方策・価値ネットワーク実装があり、PyTorch で学習したモデルを ONNX に変換して USI エンジンや ONNX Runtime 版で利用できる。

第36回世界コンピュータ将棋選手権の dlshogi アピール文書では、40 ブロック 512 フィルタのモデルを基準に、Gated Attention、SwiGLU FFN、Transformer、相対位置バイアス、絶対位置バイアス、ラージカーネル、SEBlock などを試したことが説明されている。これは、方策・価値ネットワークの精度と探索速度のバランスが、dlshogi の強さに直結することを示している。

関連項目

参考にしたホームページ