TadaoYamaokaの開発日記

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

中盤互角局面集

先日、dlshogiと水匠が互角になる探索ノード数を調べたが、初手開始局面からdlshogiはランダムありで測定していた。
初手開始局面からだと、dlshogiは序盤で優勢を築いてそのまま勝つ場合が多いため、中終盤の精度が測定できていない可能性がある。
そこで、中盤の互角局面集を作成することにした。

以前の互角局面集

以前に互角局面集を作成したが、これはfloodgateの棋譜を使って、24手目から36手目までが評価値±100以内という条件で作成している。
24手目から開始することを想定して作成している。
読みが重要になる中盤よりも前の局面になっているため、今回は読みが重要な局面を抽出したい。

作成条件

中盤の読みが重要になる少し前の局面を抽出するために、以下の条件とした。

  • R3800以上同士の対局のみ
  • 投了、千日手入玉宣言勝ち、持将棋で終局している
  • 50手未満の棋譜は除外
  • どちらかに評価値がない棋譜を除外
  • 全ての指し手について評価値が±170以内

ここまでは以前と同じで、次の条件が中盤を抽出する条件になる。

  • 32手目以降80手目までで、評価値の絶対値が150を超えた直前の局面

作成したスクリプト
DeepLearningShogi/csa_to_gokakusfen.py at defc83590f62338956ec941ffd60ca34e2f9e26c · TadaoYamaoka/DeepLearningShogi · GitHub

作成コマンド:

python -m dlshogi.utils.csa_to_gokakusfen floodgate\2019-2022 floodgate32-80.sfen --moves1 32 --moves2 80 --less_than_moves2 --eval2 150

成果物

全部で8187局面が抽出できた。

中盤互角局面集 · GitHub

戦型分類

戦型別の件数は以下の通りである(上位20件を表示)。

CSVにしたものはこちら。
中盤互角局面集(戦型分類) · GitHub

棋力測定

初手開始局面から測定した場合に、dlshogiと水匠が互角になる条件(水匠のノード数を5000倍)で、作成した中盤互角局面集で測定した。

   # PLAYER               :  RATING  ERROR  POINTS  PLAYED   (%)  CFS(%)    W    D    L  D(%)
   1 suisho5-16thx5000    :    23.5   45.8    33.0      60    55      84   30    6   24    10
   2 pre33                :   -23.5   45.8    27.0      60    45     ---   24    6   30    10

White advantage = 113.54 +/- 48.57
Draw rate (equal opponents) = 10.65 % +/- 4.17

pre33が、dlshogi 30bの5万プレイアウト。
suisho5-16thx5000が、水匠5のノード数をdlshogiの5000倍にしたもの。

※cshogi.cliで連続対局する場合は、--opening-movesを80以上にする。

中盤互角局面集を使った場合は、序盤からでは互角だった条件でも、水匠の方が勝率が高いことがわかった。
このことから、dlshogiは、序盤から優勢を築いて勝つことが多いことがわかる。

現在中終盤の精度改善に取り組んでいるので、この互角局面集で精度が改善されたか測定を行うつもりである。