TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

拡散モデルで将棋の方策を学習する その4

前回、マルチGPUで学習できるようにしたので、拡散モデルで将棋の方策を学習してどこまで精度が上がるか確認した。

学習条件

  • 訓練データ:約14億
  • バッチサイズ:512
  • 学習ステップ:10万ステップ
  • 学習率:1e-4
  • オプティマイザ:AdamW
  • GPU数:2
  • 検証データ:floodgateのR3500以上の棋譜からサンプリングした856,923局面

10万ステップで打ち切ったので、訓練したサンプル数は約5千万である。

学習結果



floodgateの棋譜の指し手に対する正解率は、47%くらいになった。

dlshogiの30ブロックのモデルをバッチサイズ4096で同じサンプル数学習したときの正解率は約46%だったため、同等以上の精度になっている。

パラメータ数は、dlshogiの30ブロックモデルの約53.4%と、dlshogiのモデルより小さい。

Name Type Params
dlshogi_model PolicyValueNetwork 80.5 M
unet UNet2DConditionModel 43.0 M


ただし、拡散モデルの条件付けには、dlshogiのモデルを使っているため、訓練データ数は同じとは言えない(dlshogiのモデルは約40億局面学習している)。

学習時間

10万ステップの学習に、19時間57分かかった。
dlshogiの30ブロックでは、同じのサンプル数(12000ステップ)学習にかかった時間は4時間1分なので、2GPU使用して約5倍かかっている。

まとめ

拡散モデルで将棋の方策を学習して、どれくらいの精度になるか確認した。
同じサンプル数を学習させた場合、dlshogiの30ブロックモデルと同等の精度になることが確認できた。
ただし、拡散モデルの条件付けにdlshogiのモデルを使用しているため公平な条件ではない。

次は、詰みの手順など学習が難しい局面の学習ができるか確認したい。