機械学習周りのプログラミング中心。 イベント情報
ポケモンバトルAI本電子書籍通販中

第31回世界コンピュータ将棋選手権の参加記録(ねね将棋)

ねね将棋は2021年5月3日~5日にかけてオンラインで行われた第31回世界コンピュータ将棋選手権(コンピュータ将棋協会主催)に参加しました。 対局に付き合ってくださった方、運営の方、応援してくださった方に感謝申し上げます。 簡単に参加記録を残しておきます。

ソフトの内容

ねね将棋はいわゆるDL(Deep Learning)系のエンジンで、昨年までは独自に実装したMCTS探索部および、KPPT型の既存エンジンで生成した棋譜を用いた教師あり学習によるCNN型の評価関数モデルを用いていました。dlshogiと比べ評価関数の精度が決定的に劣る状況となっていたため、今回からdlshogiをベースとして用いて改良を加える方式に転換しました。

今回の改良点は、MCTSベースの探索で起きやすい読み抜けを減らすための、αβ法ベースの探索エンジンとの組み合わせでした。具体的な手法は過去の記事をご覧ください。

select766.hatenablog.com

今回の手法の都合上、GPUとCPUの性能の比率がちょうどよい範囲にある必要があります。自宅のPCがそれに合致するので、自宅のPCでソフトを動かすことにしました。クラウドだと、GPUの性能が強すぎてうまく動かないためです。GPUは3年ほど前に3万円で購入したGTX1060という安い機種です。

対局結果

一次予選

一次予選は二次予選シードを除く34チームが参加しました。

参加ソフト間の棋力差が大きいため、ほとんどの対局は一方的な内容になりました。

すいしょう戦では、8手目で大優勢になったものの詰めるまでには77手かかりました。すいしょうの評価関数は駒割りのみとのことですが、受けに底力を感じました。私が人力で指したら多分勝てません。

アルゴリズムや評価関数の性能差はあまり大きくないと思われるMiacis戦では、ねね将棋は2300nps程度、Miacisは数万nps以上出ているという状況でした。ハードの性能差が致命的な差でした。

結果は5勝3敗で11位となりました。 二次予選進出チームを決める際には勝ち数や直接対決の結果など複数の指標により序列をつけますが、AobaZeroとは全く同じ値となり優劣がつきませんでした。しかもねね将棋とAobaZeroがボーダーライン上でどちらか片方だけが進出可能という状況でした。ルール上の最終の条項である、シード順(前回大会での順位)による決定が行われ、シード順が1位だけ高かったねね将棋が二次予選に進出となりました。ボーダーライン上でこの規定が適用された例は初のようです。

二次予選

DaigorillaEX戦は、途中ねね将棋が優勢でしたが相手をうまく寄せることができず、逆転負けとなりました。YouTubeでのプロ棋士の先生の解説でも同様の見解でした。

f:id:select766:20210505174551p:plain
DaigorillaEX戦の評価値

TMOQ戦は、相手の定跡を抜けたところで後手の相手の評価値が100程度となり、定跡を使わないことによるデメリットが生じました。

Apery戦は優勢でしたが、寄せきることができず320手に達して引き分けとなりました。

寄せ≒終盤がよくないというのは自前で評価関数を学習させていた時代から感じていた課題で、DL系の弱点に思えます。細い詰み筋を見つけられないというよりは、評価値が一定以上になると緩慢な手を指すような印象を受けています。

習甦戦では、途中まで拮抗していたように見えましたが120手目付近で一気に評価値が悪くなり負けました。読み抜けがあったのではないかと考えられます。今回のコンセプトを達成しきれない残念な結果となりました。

f:id:select766:20210505174804p:plain
習甦戦の評価値

結果は3勝5敗1分で23位となりました。

反省

手法上の都合があるとはいえ、絶対的に性能が低いハードでは勝てませんでした。勝てる相手、勝てない相手がはっきりしていて、自分の改良によって勝敗が変化するような場面がなかったのではないかと思います。容易に両立する手段は思いつきませんが、何らかの手段で強力なハードを使うべきでした。また、定跡を入れておくべきでした。昨年は自宅のPCで開発して本番だけ強力なクラウドを利用するという形でしたので、自宅のPCで事前に探索を行ってもあまり効果がないと考えていました。しかし今回は本番も自宅のPCを使いましたので、事前に長時間の探索を行って定跡を作っておくことの効果が高かったはずです。これは見落としていました。

今後

以下の内容を試してみたいと思っています。

  • ニューラルネットワークの圧縮
    • 画像認識の分野で、ほぼ同じ精度を保ったまま計算量を減らす手法が多数提案されています。npsを上げることに貢献できる可能性があります。
    • ただ現状dlshogiの探索部は、強力なGPUを使った場合にCPU側がネックになるとのことなので、圧縮に成功しても直ちに大きな成果はないかもしれません。
  • 探索アルゴリズムの改良
    • 読み抜け対処
    • 並列度の向上
      • バッチサイズを増やした時の棋力低下を補えないか
    • イデア勝負なところが大きいので、思いつけばやるという感じになります。

強力なGPUを買うかどうかは悩ましいですね。ビットコインの関係で値上がりしているというのもありますが、電源を増強したり空調を気にしたりとGPU本体以外のコストがかなりかかってしまいます。クラウド上で比較的安価にGPUが使えるというGoogle Colabは深層学習フレームワークのサンプルを動かした程度しか経験がないので、有料版を試してみたいです。

来年もできる限り参加したいと思っています。オフラインでの開催ができることを願うばかりです。