# AlphaZero AlphaZero は、DeepMind が発表した二人零和完全情報ゲーム向けの強化学習アルゴリズムである。チェス、将棋、囲碁を同じ枠組みで扱い、ゲームのルール以外の領域固有知識をほとんど使わずに、自己対局から方策・価値ネットワークと探索を同時に改善する点が特徴である。 コンピュータ将棋では、AlphaZero そのものよりも、`AlphaZero 型`、`AlphaZero 系`、`AlphaZero 風` といった形で、方策・価値ネットワーク、MCTS、自己対局による強化学習を組み合わせた方式を指すことが多い。[dlshogi](/shogi/shogiwiki/softs/dlshogi/) や [ふかうら王](/shogi/shogiwiki/softs/fukauraou/) を理解するうえで重要な背景になっている。 ## 概要 AlphaZero は、局面 `s` を入力し、合法手ごとの方策 `p` と局面価値 `v` を出力するニューラルネットワークを使う。探索では、このネットワークを [MCTS](/shogi/shogiwiki/search/monte-carlo-tree-search/) の中で使い、方策で有望手を優先し、価値で葉局面を評価する。自己対局では、MCTS の訪問回数分布を方策の教師、終局結果を価値の教師として学習する。 このため AlphaZero は、単にニューラルネットワークで指し手を選ぶ方式ではなく、`探索で教師を作り、その教師でネットワークを更新し、更新したネットワークで次の探索を行う` という循環が本体である。 ## 学習の流れ 1. 現在のネットワークで自己対局を行う。 2. 各局面で MCTS を行い、ルートの訪問回数分布を方策ターゲットとして保存する。 3. 終局結果を価値ターゲットとして保存する。 4. 方策ターゲットに近づき、価値予測が終局結果に近づくようにネットワークを更新する。 5. 更新されたネットワークで次の自己対局を生成する。 AlphaZero 論文では、AlphaGo Zero と異なり、勝敗だけでなく引き分けを含む期待結果を価値として扱う。また、囲碁では自然に使える回転・反転対称性をチェスや将棋には仮定せず、学習データ拡張や探索時の盤面変換も行わない。 ## 将棋での特徴 将棋はチェスより盤が大きく、持ち駒を任意の地点へ打てるため、合法手空間が大きい。AlphaZero 論文では、将棋の方策出力を `9 x 9 x 139` の平面で表し、移動、成り、持ち駒の打ち手を含む 11,259 通りの手を表現している。違法手は確率を 0 にして正規化する。 論文中の将棋実験では、各 MCTS に 800 simulations を用い、将棋では 24 million games、700k mini-batches、12 hours の学習が報告されている。評価相手は、WCSC27 版 elmo と YaneuraOu 2017 Early KPPT 4.73 の組み合わせで、EnteringKingRule は NoEnteringKing とされている。 ただし、これは巨大な TPU 環境での研究実験であり、そのまま一般的な将棋ソフト開発環境に再現できるという意味ではない。コンピュータ将棋で実務上重要なのは、AlphaZero の数値結果そのものよりも、方策・価値ネットワーク、探索付き自己対局、MCTS、学習データ生成の設計思想である。 ## 従来型将棋ソフトとの違い 従来型の強い将棋ソフトは、[アルファベータ法](/shogi/shogiwiki/search/alpha-beta/)を中心に、手の並べ替え、枝刈り、静止探索、置換表、評価関数などを高度に組み合わせている。評価関数は、人間棋譜や自己対局、探索結果などから学習されることも多いが、探索自体は深さ優先の alpha-beta 系であることが多い。 一方 AlphaZero 型では、探索は MCTS を中心に構成される。方策ネットワークが有望手を絞り、価値ネットワークが局面を評価するため、従来型の評価関数や手作りの探索ヒューリスティックの役割が相対的に小さくなる。 とはいえ、実際の将棋ソフトでは純粋な AlphaZero 方式だけでなく、詰み探索、入玉規則、既存棋譜、他エンジンとの対局、探索パラメータ調整などを組み合わせることが多い。`AlphaZero 型` という語は、論文と完全に同一の実装ではなく、この設計思想を将棋向けに取り入れた方式を指す場合が多い。 ## dlshogi との関係 DeepLearningShogi は、README で AlphaGo/AlphaZero の手法を参考に実装していく方針を掲げている。実装上も、方策・価値ネットワーク、MCTS による自己対局、`hcpe3` 形式の教師データ、USI エンジンとの対局、探索パラメータ調整など、AlphaZero 型の考え方を将棋開発向けに扱うための機能を含んでいる。 [dlshogi](/shogi/shogiwiki/softs/dlshogi/) やふかうら王は、AlphaZero 論文をそのまま再実装したものというより、AlphaZero 型の探索・学習の枠組みを、将棋ソフトとして運用できるように発展させた例として見ると分かりやすい。 ## 関連項目 - [自己対局](/shogi/shogiwiki/self-play/) - [dlshogi](/shogi/shogiwiki/softs/dlshogi/) - [ふかうら王](/shogi/shogiwiki/softs/fukauraou/) - [探索](/shogi/shogiwiki/search/) - [アルファベータ法](/shogi/shogiwiki/search/alpha-beta/) - [評価関数](/shogi/shogiwiki/evaluation-function/) - [NNUE](/shogi/shogiwiki/evaluation-function/nnue/) ## 参考にしたホームページ - [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) - [PubMed: A general reinforcement learning algorithm that masters chess, shogi, and Go through self-play](https://pubmed.ncbi.nlm.nih.gov/30523106/) - [TadaoYamaoka/DeepLearningShogi](https://github.com/TadaoYamaoka/DeepLearningShogi)