第31回世界コンピュータ将棋選手権で変態将棋を指してみた件

第31回世界コンピュータ将棋選手権に参加された皆様、視聴してくださった皆様、誠にありがとうございます。QhapaqチームはMolQha-として参加して予選12位で敗退となりました。敗退して隠すこともなくなったので、大会を通じて色々考えたことを紹介していきたいと思います。

 

【新しいことに色々挑戦してみた】 

電竜戦で振り飛車をコンセプトにして勝ったのに味をしめて(そして山崎A級の爆誕を祝って)本大会コンセプトは「変な将棋を指す」というものにしました。せっかくだから色々新しいものを作ってみようとyoutubeにチャンネルを立てたりもしてみました。

 

 

www.youtube.com

 

【変態将棋、全然勝てない】

解説動画でも簡単に述べていますが将棋AIの戦型を狙った形で分散させるのは簡単ではありません。手で定跡を作ろうとすると恐ろしい数の局面を入れなければならなくなりますし、かといって「後手の最初の2手は必ず34歩、44歩とする(四間飛車の典型ムーブ)」みたいな作りにすると、先手が「76歩、22角成(一手損、角交換四間飛車)」としてきたときに死んでしまいます。

 

こうした問題を解決するためにMolQha-の開発時間の大半は特定の戦型の少数の棋譜からその戦型を指しこなせるシステムの設計に費やしました。

 

そうした努力の甲斐あって、ある程度自動的に特定の戦型を研究できるシステムが完成。これで嬉野流や一間飛車を試しまくるぜヒャッハーと思った矢先。

 

これらの戦型が今の将棋AIだと全く勝てないことが判明します。どのぐらい勝てないかというと後手で勝率が3割を切る程度に勝てないことが発覚しました。

 

【変態将棋の何がいけないのか】

ここでは後手番の話に絞ります。というのも大会では試合の半数ぐらいは後手番になるわけですし、良い後手番の戦略が見つかれば先手番でも同じことができると期待できるからです。

 

様々な戦型を試した結果、後手番の勝率は初手34歩、84歩、32金以外の手を選ぶと激減(例えば初手42銀とか)することがわかりました。この3手以外の手を指してしまうと、先手番だけが一方的に飛車先の歩を交換することが出来てしまう(14歩? 知らない子ですね)からです。

 

それならいっそ嘘矢倉でもやったろうかと思いましたが、先手の角道が自由なまま後手の角道を閉じてしまうのも駄目なようです。なら振り飛車じゃとも思いましたが、振り飛車は水匠系列はともかく、たぬき、illqha系列に対しては異常に勝率が悪い(これも勝率3割弱)ことがわかりました。

 

そして色々試した結果として見つかった一番マシな戦略が初手94歩でした。初手94歩は先手番だけが一方的に飛車先の歩を交換することを可能とする手ではありますが、72銀や62銀に比べると勝率が5%ちょっと高い(後手番勝率は35%程度になる)ことがわかったのです。

 

これを元に先手の戦略も決めます。先手の初手16歩はWCSC29で妖怪惑星Qhapaqが使った技ではありますが、初手16歩だけだと角換わりの局面に一致してしまう可能性があります。変態将棋をやるためには2手パスを行うことで後手側に一方的に飛車先の歩を交換する権利を与えねばなりません。

 

というわけで、先手番では端歩を突き越してもらうことにしました。不思議なことにも、先手の歩の突き越しはNNUEミラーに於いては勝率が悪くない(55%前後)こともわかりました。

 

斯くしてMolQha-のコンセプトは「飛車先の歩交換よりも端の位」というものになりました。評価関数は様々な変態系で高い勝率を誇った電竜戦-tsecのtanuki-をベースに、後手番での勝率が高くなるような追加学習を施したものを使いました(まさか、コレがフラグになるとは

 

【ディープ、いうほど強いか?】

本大会の最大の注目株は深層学習(ディープラーニング)を使った将棋エンジンでした。なにせご家庭用のGPUでスリッパを使った既存エンジンを倒していたわけですから、本番の計算リソースではレート5000すら超える(今までの最強はせいぜい4500ぐらい)とさえ言われていました。

 

しかし、私はコレに懐疑的でした(電竜戦でgct、dlshogiと同盟を組みながら、美味しいところを持って行かれたことを根に持ってるという説もある)。というのも、floodgateで時々流れてくるgct+v100やらgct+a100がちょくちょく負けていたからです。

 

勿論、どんな強いソフトでも負ける可能性はあります。ただ、(AlphaZeroの論文などで描かれてるグラフなどから)補外されたa100利用時のレートに比べると統計的に無視できないレベルで負けていました。

 

 

 

ディープ系列が長時間で強くならない理由として2つの理由を考えていました。ひとつは、探索過程で読んだ手をすべて覚えておかなければならない関係で深く読める量に限界があるということ。もう一つは、長い手数の良くない変化が見つかったときに従来エンジンはすぐに最善手を切り替えるのに対して、複数回ランダムプレイを行うことによる合議(に近いルール)で指し手を決めるディープ系列では長時間探索すればするほど、新しい手を受け入れにくくなることです(この問題は探索パラメタを弄ることで軽減はできるのだが)。

 

この予想は大会で大当たりとなるのですが、gct, dlshogiチームを始め多くの人が凄い時間と努力を積み重ねてディープ系列のエンジンを作っていることも知っていたのでなんとも気まずい感じになってしまいました。

 

【MolQha-自体の大会の雑な振り返り】

全体の成績は以下のようになりました(以下敬称略)

1.いちびん(先手、勝ち)

2.習甦(後手、勝ち)

3.二番絞り(先手、負け)

4.sakura(後手、勝ち)

5.Qugiy (先手、負け)

6.HoneyWaffle(後手、勝ち)

7.PAL(先手、負け)

8.koron(後手、引き分け)

9.elmo(後手、引き分け)

 

電王トーナメントでさんざん後手番ばかり引かされたことをネタにし続けた結果、すっかり先手番で勝てない体になってしまいました。また、本大会ではあるまじきミスをしてしまいました。それは負けたら予選突破が厳しくなる8,9試合目で千日手にならないようにする設定をミスった(8試合目は完全に忘れてた、9試合目はなんか設定をミスったっぽい)ことです。

 

f:id:qhapaq:20210504234502p:plain

クイズ:「?」に入る駒は何でしょう

 

 

f:id:qhapaq:20210504234537p:plain

 

答え:銀冠ではない

 

斯くしてMolQha-の挑戦は終わってしまいました。ただ唯一良かったこととして、変な将棋はいっぱいさせたと思います。今後共、コンピュータ将棋をよろしくお願い申し上げます。