TadaoYamaokaの開発日記

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

第36回世界コンピュータ将棋選手権 結果報告

5/3~5/5に開催された第36回世界コンピュータ将棋選手権に「dlshogi」というプログラム名で参加しました。

大会の概要

今回は、55チームが参加しました。
第1予選、第2予選を通過した上位8チームで総当たりのリーグ戦で決勝戦が行われました。

参加チーム数は過去最多ということです。

大会の結果

dlshogiは、第3位という結果でした。

決勝で、1位、2位とは0.5勝差でした。
先手番で水匠とあたり、あと少しで宣言勝ちできるところで320手ルールで引き分けになったのが影響しました。

昨年の電竜戦以降、NNUE系が棋力を大きく伸ばしており、今年は二次予選通過も危ういかと思っていましたが、3位という結果は上出来だったと思います。

今大会の特徴

定跡

やねうら王がFANBOXで1000万局面登録された新ペタショック定跡を配布しており、それを利用したチームが多かったです。
その結果、後手が角換わりを避ける対局が増えて、昨年のように水匠が先手定跡で勝ちまくるという展開にはならなかったです。

先手勝率

先手勝率が圧倒的に高く、決勝では、先手勝率83.9%だったようです。
先手で勝つのは当然で、後手でどれくら落とさないかが勝負になっています。

ここまで差がつくと、先手後手入れ替えなどルールを変えないと、後手でどのソフトに当たるかの運で優勝が決まってしまう懸念があります。

dlshogiの今大会に向けた工夫点

モデルアーキテクチャ

以前の日記で書いた通り、今大会でモデルアーキテクチャの改良を行いました。

  • Gated Attentionの導入
  • SwiGLU FFNの採用
  • ResNetの一部をTransformerに置換
  • 相対位置バイアスの導入
  • 絶対位置バイアスの導入
  • 入力層へのラージカーネル適用(7x7)
  • SEBlockの導入(間引き配置)

この内、効果が高かったのは、「SwiGLU」と、「入力層へのラージカーネル適用」です。

SwiGLUについては、nshogiの開発者の方も一番効果があったということでした。

訓練データ

60ブロック768フィルタのモデルから知識蒸留したデータと、dlshogiが評価を誤っていた局面からNNUE系で対局したデータを増やしました。

上記のモデルアーキテクチャの変更と、訓練データの追加のどちらが効果があったかは未検証ですが、2つ合わせて、終盤の互角局面集で連続対局して、電竜戦のモデルと比較して、R+51.2向上しています。
温度パラメータの調整も行っています。

   # PLAYER                  :  RATING  ERROR  POINTS  PLAYED   (%)  CFS(%)     W    D     L  D(%)
   1 hayabusa-8th            :    52.4    8.4  1867.5    3109    60     100  1765  205  1139     7
   2 pre68_40x512_temp160    :    -0.6    8.5  1553.5    3112    50     100  1427  253  1432     8
   3 pre60_40x512            :   -51.8    8.7  1250.0    3121    40     ---  1136  228  1757     7
定跡

定跡は、前大会から手法は同じで、自動作成を続けていました。
483万局面を登録しています。

やねうら王の新ペタショク定跡と比較すると登録局面は少ないですが、新ペタショク定跡採用チームは先手番でも負けがあるのに対して、dlshogiは先手番での負けはありませんでした。
定跡の質に関してはdlshogiの方が高い可能性があります。

これは定跡の作成方法の違いにあり、dlshogiは、3年前くらいから、定跡の相手側の指し手は確率分布とNNUE系の指し手で選んでるため、大会で出現頻度の高い手順が深く掘られています。
一方、ペタショク定跡は以前はPVのみを延長しており、その後、PV周辺(評価値閾値)を中心に掘るように変わっています。
そのため、大会で相手が指さないような手も多く含まれていると予想しています。
ただし、FANBOXで少し古い定跡を配布しているため、それを採用しているチームが指す手は確実に準備済みなため効果的な定跡になるとも言えます。


大会に出るまで定跡の内容を確認していませんでしたが、後手は角換わり回避として、6手目に1四歩を採用していました。
このdlshogiが指した棋譜が、他のチームにも大会中の取り込まれたのか、他チームも6手目に1四歩を指すようになっていました。
新ペタショック定跡は、6手目3二金になっていたので、これはdlshogiオリジナルな定跡なはずです。

定跡手数

今大会の定跡手数と定跡を抜けた時の評価値は以下の通りでした。

二次予選
先手 後手 評価値 手数
dlshogi Gokaku 952 73
arishogi dlshogi 110 70
sojo dlshogi 110 62
Ryfamate dlshogi -189 22
dlshogi nshogi 669 95
dlshogi Shueso 735 69
dlshogi hisui 1113 117
dlshogi yaneuraou 461 33
tanuki dlshogi 30 70
決勝
先手 後手 評価値 手数
tanuki dlshogi 185 64
dlshogi suisho 443 47
dlshogi AobaZero 1473 83
dlshogi ponkotsu 2676 129
hisui dlshogi -120 58
Ryfamate dlshogi -120 58
dlshogi sojo 646 61


先手番は、定跡を抜けるまでの手数の中央値は73手、評価値は735でした。
後手番は、定跡を抜けるまでの手数の中央値は62手、評価値は30でした。

今大会は、後手番でも評価値プラスまで持っていくことができており、後手番定跡としても精度が高かったと言えます。

ハードウェア

昨年は、AWSでH200 SMX x 8を借りましたが、今年はNNUE系に勝つのは難しそうと優勝をあきらめていたので、2年前と同じH100 PCIx8を使用しました。
ハードウェア的には、他のトップチームが去年より高性能なマシンを使用していたのに対して、dlshogiは去年よりダウンしていました。

課題

320手ルール

今大会、2回先手番で320手ルールでほぼ勝ちの状況で引き分けになっているので、ルールが変わらない場合はその対策が必要になります。
大会に特化して、学習を変える必要があり、大会に勝つためだけの改良はモチベーションが上がらないです。
できればルール変更して欲しいとおもっています。

終盤

今大会ではNNUE系より終盤の粗が目立つことはなかったですが、まだNNUE系に比べると終盤が弱い認識です。
終盤のモデル精度は、学習データの質と量を増やすことで対策できると考えているので、今後検証するつもりです。

定跡

決勝で、氷彗とRyfameteには事前に対策されていたのか、後手番であっさり負けています。
電竜戦では他チームの棋譜の取り込みは禁止ですが、世界コンピュータ将棋選手権では予選での棋譜や当日の前の対局の棋譜が取り込まれる可能性があるので、毎対局ごとに定跡を変更する必要があります。
今回は、対策されることを見越した対策までしなかったので、ちょっと気を抜いていました(たけべカフェでまったりしてました)。
張り付いて手作業で更新するのはやりたくないので、前の対局を定跡に自動で取り込むような仕組みを検討します(コンピュータ将棋の強さとは無関係なのでできれば電竜戦と同じルールにして欲しいと思っています)。

まとめ

第36回世界コンピュータ将棋選手権に参加し、dlshogiは第3位という結果でした。

アーキテクチャ改良(特にSwiGLUやラージカーネル)と訓練データ強化により昨年より棋力が向上し、定跡の質でも優位性が見られました。
一方で320手ルール対応や終盤力、対局ごとの定跡更新などが今後の課題として残りました。

優勝した氷彗、おめでとうございます。
大会を運営してくださった主催者様、対局してくださったチームの方々、そして応援してくださった皆様にお礼申し上げます。