WCSOC2020までにやってきたこと

去年の選手権(WCSC29)の後にnoteを始めたので、WCSOC2020までにやってきたことは実は全部ざっくりと書いています。詳細についてはぼかしている部分もありましたが。

今回の構成は以下のとおりでした。

やねうら王4.89+振り飛車の定跡+白ビール(Kristallweizen)評価関数、Microsoft Azure の第2世代EPYCの120スレッドのインスタンス

なぜ評価関数の学習をやらないのか?

やらない理由というか言い訳はたくさんあります。NNUE型の振り飛車評価関数はすでに複数の開発者の方からリリースされているので、自分でやるからにはそれらは当然超えないと意味がないというのが一番大きいです。超えるようなアイディアと言えば、飛車を振る前後の定跡の精度を高めるとか、相穴熊の教師データをたくさん作るとかでしょうか。

振り飛車定跡の精度を高めるについて、正直この1年ほとんどずっとやっていた割には、勝率はおそらく上がっていないと思います。出回っている最強クラスの評価関数に振り飛車定跡をのせて、定跡なしを相手に検証対局を繰り返すことで定跡を作ってきましたが、1サイクル200局単位では例えば先手四間飛車が29局あって、振り飛車のマイナスをはね返してプラスになれば勝ち(=居飛車側の評価値が悪くなれば勝ち)という判定で16勝13敗とかの結果が出たりします。それで喜んで次のサイクルに行ってみると、それよりも悪くなることもザラで、別の振り飛車ではもう1勝2敗ペースのまま固定化とか、振り飛車のマイナスがどんどん拡大するだけの将棋とかが出てきてしまいます。つまり、「いい振り飛車の評価関数を学習させるためには、いい振り飛車定跡が必要だろう!」と思って去年も含めずっと定跡ばかりやってきましたが、一向に勝率が良くならないという状況です。

あと、すでに複数の開発者の方からリリースされている振り飛車評価関数について、最強クラスの評価関数よりもレーティングがどうしても下がってしまう点も気になります。下がっている原因として考えられるのは、NNUE型評価関数では仕組み的に振り飛車を学習してしまうと何らかの強さが失われてしまう可能性とか、振り飛車をやると本当に序盤から不利を招いてしまう可能性があります。前者については、オンライン大会の直前になってtttakさんがリリースしたNNUEの改造版でなら強いものができそうな期待感はあります。後者については、本当にそうかもと弱気になっています。正直なところ、自分じゃなければ定跡の作業を続けられなかったと思います。どんなに定跡ファイルを修正してもぜんぜん勝率が上がらないので、以前の文春将棋さんのインタビューを受けてなくて目立っていなかったら、何度もやめようかと思いました。でも検証対局でうまく定跡でリードした棋譜を見ると、これを本番で出せたら最高だろうなと思ってやめませんでした。後手ダイレクト向かい飛車の定跡は研究手順が何パターンかあって、完全に同じ将棋も何局か出てくるくらいだったので出せたらよかったのですが。

WCSOC2020の結果について

クラスタ化についていろいろやってみたいことがある、と最初のアピール文書には書いたのですが、コロナ禍のネガティブなムードでとてもできませんでした。3月半ばから丸々1か月、何もできない日々でした。

なので結果的に冒頭で書いた構成で参戦したわけですが、純粋な棋力の上積み(評価関数の精度向上、探索部の性能・効率の向上、複数台のマシンパワーを活かせるクラスタの仕組み)がないと難しいということだと思います。

たらればですが、8回戦の千日手局でなんとか勝つとか、4回戦のQNS戦であと数手粘って320手引きわけとかであと0.5勝していれば星勘定的には8位に入れていました。が、やはり上位勢に対して一時的なリードを奪ってもそこから勝ち切れないと勝負にならないので、妥当な結果だと思います。

本当はこの記事で定跡も公開したかったのですが長くなったのでいったん区切ります。

この記事が気に入ったらサポートをしてみませんか?