dlshogi は、山岡忠夫氏によって開発されているディープラーニング系の将棋ソフト、およびその開発プロジェクトである。正式なリポジトリ名は DeepLearningShogi で、将棋でディープラーニングの実験を行うためのプロジェクトとして公開されている。
公式 README では、基本的に AlphaGo / AlphaZero の手法を参考に実装していく方針と説明されている。コンピュータ将棋では、MCTS、方策・価値ネットワーク、自己対局による学習を組み合わせた代表的な AlphaZero 型将棋AIとして位置づけられる。
dlshogi は、ニューラルネットワークで局面の方策と価値を推定し、その出力を MCTS で利用する。自己対局プログラムで学習データを生成し、Python 側でニューラルネットワークを学習し、USI エンジン側で対局・検討に用いる構成になっている。
DeepLearningShogi の主な構成は次の通りである。
cppshogi
Apery を流用した将棋ライブラリ。盤面管理、合法手生成、入力特徴量作成などを担当する。dlshogi
ニューラルネットワークの学習を行う Python 実装。dlshogi/utils
棋譜変換、教師データ処理、定跡処理、対局、探索パラメータ調整などの補助ツール群。selfplay
MCTS による自己対局を行い、学習用データを生成する。生成データでは hcpe3 も重要な形式である。usi
対局用 USI エンジン。TensorRT を用いた推論、バッチ推論、定跡、詰み探索などを扱う。usi_onnxruntime
ONNX Runtime 版の USI エンジン。実装上は、Apery、Ray+Rn、Leela Chess Zero、やねうら王などの成果を参照・流用していることが README に記載されている。これは、将棋の合法手生成、MCTS、探索部、王手生成などを実用的に組み合わせるためである。
dlshogi は、AlphaZero 論文の概念を将棋ソフト開発に取り込んだ実装例として重要である。純粋に論文通りの実装というより、将棋のルール、USI エンジンとしての運用、GPU 推論、詰み探索、定跡、既存棋譜や他エンジンとの対局データなどを組み合わせている。
このため、dlshogi を理解するには、ニューラルネットワーク単体ではなく、次の要素を一体として見る必要がある。
第36回世界コンピュータ将棋選手権の dlshogi アピール文書では、モデルサイズを単純に大きくするだけでは探索速度が落ちて強くできなかったため、40 ブロック 512 フィルタのモデルサイズを基準に、モデルアーキテクチャを変更して強くする試みが説明されている。
主な変更点として、Gated Attention、SwiGLU FFN、中間ブロックへの Transformer 配置、相対位置バイアス、絶対位置バイアス、入力層のラージカーネル、SEBlock などが挙げられている。訓練データには、60 ブロック 768 フィルタのモデルから蒸留したデータ、自己対局データ、NNUE 系との対局データが使われ、重複を平均化して 42.4 億局面になったとされる。
同文書では、改良後モデル pre68_40x512 は改良前 40 ブロックモデルに対して探索速度が平均で 91.4% に低下した一方、精度向上により対局では R+55.4 になったと報告されている。dlshogi の開発では、モデル精度と探索速度のバランスが重要な課題であることが分かる。