リレー対局で最強将棋ソフトの三すくみを解消する話
【最強将棋ソフトの三すくみ】
第29回世界コンピュータ将棋選手権(WCSC29)が終了し、入賞ソフトたちの評価関数が公開されました。準優勝のKristallweizenや、初参加+デスクトップPCで7位入賞の水匠、有志作成の最強関数であるillqha4などが公開されました。
様々な関数が公開されれば「どの関数が一番が強いのか」を知りたくなるのが人間の性。ところが困ったことに、今の評価関数は上位の評価関数について三すくみ状態にあるというのです。
R4400付近で発生している3すくみについて図にしてみました#RRate #illqha #Kristallweizen #orqha pic.twitter.com/gIQrysl2rV
— ロタ (@Rota_JP) 2019年5月12日
三すくみに参加しているのは前述のKristallweizen、illqha4、そして2018年末からSOTAに居座っていたorqha1018(illqhaをベースに筆者が改造したもの)です。(因みに水匠、水匠改も同じぐらい強い)
評価関数の表現力が有限である以上、相性問題はあってもいいのですが、最強ソフトを使って検証をしたい人たちにとってはなんとも落ち着きの悪い話です。そこで本稿では三すくみを起こしているソフトたちを殴り倒すことを目指してみます。
【リレー対局】
将棋ソフト同士の相性問題については、WCSC29の覇者であるやねうらお氏による考察が既に存在しています。
端的に言えばorqhaは定跡offでは強い一方で特定の戦型を指定した上での対局ではあまり強くないということです。orqhaは少数高精度のデータで学習を行っているため、序盤の戦型選びに特化した作りになっている可能性は高いです。
しかしこれ、言い換えれば序盤に特化した将棋ソフトを作れているとも言えます。それならば、序盤だけorqhaに指させて、終盤を他ソフトに指させればもっと強い将棋ソフトを実現できるのではないでしょうか?
【実験】
というわけで、定跡オフ、1手1秒、スレッド数4で「序盤30手はorqha、それ以降はKristallweizen」というクソコラエンジンを作成し、orqhaと戦わせてみました。
三すくみの図曰く、この状態ではorqhaが勝ち越しそうですが
結果:
[クソコラ] 270 - 227 [orqha] (引き分けは除外。もとい、対局設定をミスってカウントしてくれなかった)
と、クソコラ関数が勝ち越す結果になりました。統計的にはまだ微妙に怪しいレベルですが、やねうら仮説が正しいこと、リレー対局をすれば将棋ソフトがまだまだ強くなるだろうことが示唆されました。
【実験用コード】
こちらからダウンロードできます。やねうらお氏が開発中のやねうら王用のpython wrapperの「あやねる」の拡張エンジンとなっています。pythonが自力でかけないと使うのは難しいと思われます。
# リレー対局の有効性が示されたら本家やねうら王にも実装されるかも.....知れません
【pythonわからない】
序盤の考察にはorqha、終盤はKristallweizenを使おう(多分 水匠やillqha4もいいぞ!
【技術書典にでます(宣伝)】
次の技術書典にQhapaqも出ます。今回はコンピュータ将棋本(棋譜解析や最弱将棋エンジン開発を中心にした技術を紹介する予定)と機械学習本(Gigazineに掲載された文章要約エンジンIMAKITAなどの機械学習ネタを突っ込んだ本)を頒布予定です。
(AWS台を捻出するために)今期も技術書典に参加します。SDTが消滅して基礎研究に費やせる時間が長くなったので、今期は最弱のコンピュータ将棋を作ってみたいと思います。あと、趣味で自然言語処理を始めました。 pic.twitter.com/udcxM1EgRf
— Ryoto_Sawada🌖Qhapaq (@Qhapaq_49) 2019年7月10日