# 方策・価値ネットワーク 方策・価値ネットワーク(policy/value network)は、局面を入力し、指し手の有望度を表す方策(policy)と、局面の期待結果を表す価値(value)を同時に出力するニューラルネットワークである。[AlphaZero](/shogi/shogiwiki/alphazero/) 型の将棋AIでは、[モンテカルロ木探索(MCTS)](/shogi/shogiwiki/search/monte-carlo-tree-search/)を導く中核部品になる。 コンピュータ将棋では、従来の評価関数が主に `この局面は何点か` を返すのに対し、方策・価値ネットワークは `どの手が有望か` と `この局面はどれくらい勝ちやすいか` をまとめて返す。このため、評価関数と探索の間にある技術として理解すると分かりやすい。 ## 方策と価値 方策(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_policy` と `output_value` が使われる。`output_policy` は手の選択や MCTS の事前分布に使われ、`output_value` は局面の勝ちやすさを表す値として使われる。 ## NNUE との違い [NNUE](/shogi/shogiwiki/evaluation-function/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 の強さに直結することを示している。 ## 関連項目 - [評価関数](/shogi/shogiwiki/evaluation-function/) - [ニューラルネットワーク](/shogi/shogiwiki/evaluation-function/neural-networks/) - [モンテカルロ木探索(MCTS)](/shogi/shogiwiki/search/monte-carlo-tree-search/) - [AlphaZero](/shogi/shogiwiki/alphazero/) - [自己対局](/shogi/shogiwiki/self-play/) - [dlshogi](/shogi/shogiwiki/softs/dlshogi/) - [PolicyBook](/shogi/shogiwiki/search/policy-book/) - [NNUE](/shogi/shogiwiki/evaluation-function/nnue/) - [知識蒸留](/shogi/shogiwiki/evaluation-function/knowledge-distillation/) ## 参考にしたホームページ - [David Silver, et al. "Mastering Chess and Shogi by Self-Play with a General Reinforcement Learning Algorithm"](https://arxiv.org/abs/1712.01815) - [arXiv PDF: Mastering Chess and Shogi by Self-Play with a General Reinforcement Learning Algorithm](https://arxiv.org/pdf/1712.01815) - [Nature: Mastering the game of Go without human knowledge](https://www.nature.com/articles/nature24270) - [TadaoYamaoka/DeepLearningShogi](https://github.com/TadaoYamaoka/DeepLearningShogi) - [第36回世界コンピュータ将棋選手権 dlshogi アピール文章](https://www.apply.computer-shogi.org/wcsc36/appeal/dlshogi/dlshogi_appeal_wcsc36.pdf)