第1回 世界将棋AI 電竜戦 参加記録

本ブログエントリは、2020年11月21日~22日に開催された、第1回 世界将棋AI 電竜戦(以下denryu2020)の参加記録です。

どうたぬき

tanuki-チームは、大会毎に参加名を変えています。今回の参加名はゲーム「刀剣乱舞」の登場キャラクター、「同田貫正国」からとりました。テーマは質実剛健です。ただし、狸であることが分かりやすいよう、表記は風来のシレンの物を採用しました。

YouTube非公式生放送

tanuki-チームは、前回の世界コンピュータ将棋オンライン大会2020に引き続き、今回もYouTubeを用いた非公式生放送を行いました。非公式生放送では、同田貫の対局の様子を写したほか、Zoomミーティングで番組参加者を募り、その様子を写したりしました。

1日目 https://www.youtube.com/watch?v=pk_lCp4nZJY

2日目 https://www.youtube.com/watch?v=vhF6DYT7b3g

今回は大会側が公式のYouTube生放送を行ったため、こちら側の放送の視聴者多くはなかったように思います。また、大会側もZoomミーティングを提供していたため、参加者が分散し、前回に比べて雑談が少なかったように感じました。

評価関数の改良

評価関数の学習において、Weighted Lossを導入しました。これは、学習局面毎に勾配に異なる係数をかけるというものです。tanuki-チームでは、(1.0-進行度)という係数を掛け、序盤の重みを上げました。これにより、tanuki-評価関数の弱点であった、序盤の評価の精度を上げられるはずでした…。これについては後述します…。

テラショック定跡

定跡の生成において、テラショック定跡手法を採用しました。ただし、やねうら王に実装されているテラショック定跡生成ルーチンを使ったところ、指し手に異様に高い評価値が付くという症状が起きました。また、自分でテラショック定跡生成ルーチンを再実装しても、同様の症状が起きました。やね師匠にご相談させていただいたところ、置換表のハッシュの衝突によるものだろうとのことでした。置換表をスレッド毎に分ける変更が行われ、この症状は起きなくなりました。ただし、調査にかなりの時間を割いてしまったため、思うように定跡の生成ができませんでした。

大会当日

印象に残った対局を中心に述べていきたいと思います。

 1日目

1~3回戦 きふわらけい れさ改(偶奇調整用) きふわらぎょく
きふわらべ2体とれっさー改との対局となりました。これらは非常に弱いソフトのため、ソルコフが極めて低くなることが予想されました。

6回戦 koronプロジェクト
評価値的に互角の局面からだんだんと押されて負けてしまいました。CPU性能では勝っていたため、評価関数の精度で負けていたと考えられます。あるいは、やねうら王V5.32の、スレッド数に応じて枝刈りを強める機能により、読み抜けが発生していた可能性もあります。この1敗が痛かったです。

9回戦 BURNING BRIDGES
7勝1敗ソルコフ最下位のため、A級リーグ入りが危ぶまれました。A級リーグに入るためには、8.2勝以上する必要がありました。そのためには、残り2局を、後手で千日手以上とする必要がありました。逆に、先手で千日手以下の結果が1つ以上あった場合、B級リーグという状況でした。9回戦は後手番だったため、千日手の評価値を100に設定して対局しました。結果、期待通り千日手に誘導することができました。

10回戦 Grampus
後手番だったため、千日手の評価値を100に設定して挑みました。残念ながら中盤で差をつけられ、負けてしまいました。

1日目終了後

1日目の対局の途中、Zoomでたややんさんより、みずうら王 with お多福ラボの定跡データベースは、floodgateと自己対局の棋譜を用いて 生成しているというお話を聞きました。また、事前にやね師匠より、テラショック定跡と別の某定跡を対局させた結果、大差でテラショック定跡が負けたという話を聞いていました。これらを踏まえ、定跡データベースを即席で作りなおそうと思いました。数年前に別のソフトが採用していた、勝ったほうの指し手だけを採用する方式を思い出し、即席で、TanukiColiseumによる自己対戦の棋譜を使って作成してみました。
生成した定跡とやねうら王テラショック定跡を対局させたところ、勝率51%程度と、有意差がありませんでした。この結果を見て、現場判断で即席で生成した定跡のほうを採用する事にしました。

2日目

4回戦 Sylwi
互角の局面から押し負けてしまいました。CPU性能では勝っているはずですので、1日目のkoronプロジェクト戦と同じような原因で負けたのだと思います。

5回戦 名人コブラ
千日手の評価値をデフォルトに設定して対局したところ、千日手となりました。CPU性能では勝っているはずですので、千日手の評価値を低めに設定すべきでした。

9回戦 Viper
定跡を抜けた時点で、どうたぬきから見て-700くらいの値が付いていたと記憶しています。定跡の穴を的確に付かれてしまいました。完敗です。

終わりに

来年5月の大会に向けての開発を再開いたしました。何気なく実験のログを見たところ、進行度の計算に使用するネットワークパラメーターファイルの読み込みに失敗しており、Weighted Lossが全くかかっていなかったことが分かりました。ショックでした。この半年間何をやってきたのだろうという気持ちになりました。次回大会までにはWeighted Lossの検証を正しく行い、棋力を向上させたいと思います。