11/20(土)、21(日)に開催された第2回世界将棋AI電竜戦に参加しました。
チームdlshogiとして、dlshogi、GCT電竜、python-dlshogi2という3つのソフトでエントリしました。
大会の結果
GCT電竜が優勝、dlshogiが準優勝、python-dlshogi2がC級優勝という結果になりました。
GCT電竜は大会2連覇です。
ディープラーニング系の将棋AIがコンピュータ将棋の大会で優勝したのは、前回の第1回電竜戦が初でしたが、今大会ではA級リーグ(予選リーグの上位10チームの総当たり)のうち5チームがディープラーニング系となり、2017年からディープラーニングを使った将棋AIを開発してきた者としては感慨深いものがあります。
dlshogiは、最終局でGCT電竜と優勝争いとなりましたが、残念ながら負けて準優勝となりました。
python-dlshogi2は、予選リーグは同じ開発者は2つのソフトまでという制限があるため、エンジョイリーグでエントリしました。
そのため、2日目のC級リーグ(予選リーグ29位以下)からの参加でした。
結果は、C級リーグで全勝してC級優勝となりました。
各ソフトの説明とチームの役割分担
GCT電竜
GCT電竜は加納さんが主開発者で、dlshogiのモデルの学習を行っています。
少ない計算資源で強いモデルを作ることを目標として、Google Colabを活用しています。
dlshogiの自己対局の棋譜を一部共有しています。
探索部と学習部はdlshogiです。
python-dlshogi2
Pythonのみで実装したディープラーニング系将棋AIです。
12/20に発売予定の書籍「強い将棋ソフトの創りかた」のサンプルコードになっています。
書籍の内容は、先日の記事で紹介しています。
エントリの目的が、大会で「強いソフト」であることを示すことだったので、目的が達成できました。
戦型について
今大会では、上位のソフトの戦型は、ほとんどが相掛かりでした。
dlshogiも相掛かりを選択しました。
相掛かりを選択した理由
Youtubuの放送でも話しましたが、相掛かりを選択したのには理由があります。
最近dlshogiのモデルは、定跡なしで平手から指すと、ほとんどの場合、角換わりを選択します。
私は、AIの指し手に人間の手を入れることはしたくないため、はじめは特に手を加えずに、最新のモデルで長時間探索させて大会向けの定跡を作成していました。
定跡の作成方法は、アピール文章にも書いていますが、相手側の指し手はfloodgateの出現頻度に応じた確率で選択し、自分側はMCTSで長時間(今回は1.5億ノード)探索した手を採用するという手法です。
floodgateにない局面では、相手側の確率分布にMCTSで探索した際の訪問回数に応じた分布を使用します。
この手法で掘り続けた定跡では、最善手を指し続けると、角換わりで105手で千日手となりました。
また、floodgateに放流した際も、下位のソフト相手に先手番での千日手になる場合があり、大会で角換わりになると有利な先手番を千日手にされてしまう可能性が高いと考えました。
それと、floodgateの棋譜の戦型別の勝率を調べたところ、角換わりが最も頻度が高いが、勝率は相掛かりが高いことわかりました。
このことから、角換わりになる定跡は使えないと判断しました。
そこで、作成した定跡のはじめの数手で角換わりになる手が最善手の場合、2番目の手と入れ替えて角換わりを回避した上で、定跡を作成し直しました。
その結果、相掛かりを選択するようになっています。
なお、将棋AIは今後も角換わりを指せないというわけではなく、現在の将棋AIの精度では千日手にされやすいというだけです。
GCTも、同様の理由で相掛かりを指していた頃のモデルで作成した定跡に、新しいモデルで定跡を延ばすという方法で、相掛かりを選択しています。
まとめ
今大会は、トップのプロ棋士が検討にdlshogiを導入しているということがニュース記事になったことから、dlshogiに対する期待値が上がっていたので、今までの大会ではなかったプレッシャーを感じていました。
結果は、チームdlshogiで、優勝と準優勝のワンツーフィニッシュとなり、最高の結果となりました。
うれしいというよりほっとしたという気持ちです。
他にも大会で整理しておきたい内容があるので、別途記事を書く予定です。