wcsc31について

はじめに

時々ブログを書いているのですが、コンピューター将棋の大会について書いたことがなかったので、今回はちょっとまとめてみようと思います。

wcsc31について

sakuraという名前のソフトで第31回世界コンピュータ将棋選手権(wcsc31)に出場しました。

www2.computer-shogi.org

2次予選9位でn回目の決勝まであと一歩でした。 DeepLearningShogiを使っているチームの中ではトップで、DL勢の中ではPALについで2番目ということにしておきます。
// Ryfamateは合議らしいので除外です。

sakuraについて

基本的には大量の局面でベースを作って、レベルの高い棋譜で仕上げていこうと思っていました。 NNUEのdepth8で40億局面程度用意し、それを学習させベースのモデルを作成しました。 このdepth8の40億局面で学習したモデルをベースに、depth20から22の局面を2億程度使って学習させました。

結果としては、depth8は40億を用意する必要はなさそうで、もっと手早く強くなったのではという気がしています。

教師局面の生成

教師局面はほぼ全てNNUEを使用しています。 現在の将棋ソフトは十分に強いので、これを使って教師を生成したほうが手っ取り早いはずです。 ほぼこれだけで、DeepLearning勢のトップに追いついたのでNNUEで教師を作るのは悪くないと思っています。 むしろRyzen Threadripperを持っている人たちはNNUEで教師を作ったほうが良いのではと思っています。

seresnet

seresnetを使ったのはコンピューター将棋業界に伝わる「コンピューターチェスで成功したものはまず盲目的に試してみる」という格言に従ったものです。 lc0でseresnetを使っているので使ってみたというだけです。 実際にseやるのとやらないのでの比較をしていないので本当は効果がないかもしれないです。

label smoothing

これは、機械学習コンペやっているとよく出てくるやつだと思っています。

Label Smoothing - Qiita

policyの正解ラベルに(1.0 - 0.001 * NumOf合法手)、合法手に0.001で他は0としています。 これも比較実験をしていないのでわからないのですが、これはいくつかやった工夫の中で唯一効いたと思っています。 // 後で実験して結果を乗せるかもしれません。

DeepLearningShogiについて

今回はDeepLearningShogiにほぼ全面的に乗っかりました。

github.com

学習してみた感想としては、結構かんたんに強くなります。 少し前まではNNUE勢と全く勝負にもならなかったのに、ここまでのものを作った山岡さんはすごいです。

DeepLearningを使った将棋ソフト

今回の大会は電竜線でのGCTの成功に触発されたのか、それともNNUEに限界を感じたのか多くのチームがDeepLearningに乗り換えています。 事後孔明ですが、DeepLearningの将棋ソフトは現状だとNNUEと同等くらいまでしか強くならないような気がしています。 また、計算リソースがないのできちんと計測していませんが、現状だとまだNNUEが優位かなと思っています。 floodgateベースでもRTX3090のソフトが他を圧倒しているわけではないですし、A100 x 16を用意しても伸びしろはあまり大きくないと思っています。

将棋ソフトの今後

良くも悪くもやねうら王次第となっていますが、NNUEの発展は今後やねうら王とそのユーザーがどの程度頑張るかに依存しているかなと思っています。 なんだかんだ、Stockfishの最新に追随して見る人とか、学習の工夫をして見る人もいるので、次のイノベーションが見つかってDeepLearningを突き放す未来があっても不思議ではないと思っています。

DeepLearningベースについては、あとひとつ工夫をしないとNNUEに対して優位には立てないかなと思っています。 基本的には層を増やしていくとlossが明確に下がるので何も考えずによりDeepなモデルを作っていく方向性が考えられますが、 これだけでは劇的に強くするのは難しいかもという気がしています。 ただ、こちらは評価関数だけでも、入力特徴量、出力ラベル、ネットワーク構造等工夫ポイントはたくさんあると思いますので、 こちらのほうが伸びやすそうかなという気がしています。