WCSC36で見えた巨大定跡時代――新ペタショック定跡と水匠11の進化

このゴールデンウィーク期間中に開催されたWCSC36(第36回 世界コンピュータ将棋選手権)に『やねうら王 with GTNET』チームとして参加した。

弊チームは調整に失敗し、残念ながら二次予選通過はならなかった。しかし大会全体を見ると、巨大定跡と評価関数の進化という点で、将棋AIがまた一段階進んだことを強く感じる大会であった。本記事では、その中でも新ペタショック定跡と水匠11系の進化について紹介したい。

まず、決勝に残ったチームのうち3チームが新ペタショック定跡を用いていた。これは、このブログの右側にある「やねうら王を支援する」から飛べるFANBOXで頒布しているものだ。

毎月、50~100万局面ずつ追加されたものをFANBOXで頒布するようにしている。先月時点でついに1027万局面という1000万局面超えの超巨大定跡となっている。(新ペタショック定跡自体は、私の手元では現在1350万局面まで掘れており、本大会では弊チームは、これを用いて参加した。)

また、残りのチームも、そのほとんどはスパーリングパートナーとして、新ペタショック定跡を用いていたようだ。公開されている強力な定跡に無対策のまま臨めば、定跡だけで大きな不利を背負う可能性がある。したがって、少なくとも検証用・対策用として同定跡を何らかの形で利用するのは、上位を狙うチームにとって合理的な判断であったと思う。

本定跡は、各局面で水匠11α,βで1億局面以上探索させて生成しているので生成コストが非常に高く、そのぶん、トップチームの実戦や検証にも耐えうる水準に達していると考えている。6台のPC(9950X) + 4台のXeon機で1ヶ月100~200万局面程度しか掘れない。電気代は毎月10万円の大台を超え、ここ1年でエアコンが2台壊れ、CPUは1つ焼け、メモリもいくつかが壊れた。

何のためにここまでやっているのか、自分でもよくわからない。しかし、ここまで来た以上、もはや止まる理由もない。暴走機関車のように、1億局面を目標に突っ走っている。

さて、今回は、やねうら王のFANBOXで頒布している最新の水匠である水匠11βからさらに進化した水匠(事前告知では+R100以上強くなっている?)が出場するというので注目していた。水匠がどうしてそんなに強くなったのかについては、たややんさんの大会振り返り動画に詳しい。本動画では、今回、水匠を強くした手法がすべて公開されている。

なお、本大会で使用された水匠については、やねうら王のFANBOXでも頒布予定である。複数のバージョンがあるため、今月から数回に分けて順次頒布していく予定だ。

水匠はまだ氷彗の強さには少し届かないのかもしれないが、その差は急速に縮まりつつある。

そして今年は、Coding AIの台頭によって、将棋AI開発そのものの速度も大きく変わろうとしている。評価関数、探索、定跡、実験管理、バグ発見。これらすべてにおいて、人間だけで開発していた時代とは違う局面に入りつつある。

WCSC36は、その変化を強く感じさせる大会であった。

【将棋AI】#WCSC36 感想戦!水匠の取り組みと反省!【将棋AI水匠/たややん】
https://www.youtube.com/watch?v=Wy23m_lXRCM

動画のレジュメ。

12:20 ハイスペック環境で動かしてる氷彗ですら定跡なし後手番だと、ノートPCのソフト(四七八将棋)に負ける。
13:40 この先手が使っている定跡には誰でもアクセスできる。やねうら王の支援者向けにやねうら王のFANBOXで頒布されている新ペタショック定跡(1027万局面)である。
17:28 たややんチャンネル5月10日渡辺明先生との対談でこの定跡に氷彗がハマった形からなら人間でも勝てるのか聞いてみたい。
19:05 新ペタショック定跡(1027万局面)、奨励会員の方、プロ棋士の先生なども見たほうがいいと思います。
20:50 二次予選で決勝に進んだ8チームはトータル18敗しているがそのうちの17敗は後手番。
21:50 決勝リーグ、28対局中、後手番で勝ったのは2局のみ。(後手で勝てる確率は7.14%。残り92.86%は先手勝ちか引分)
39:40 水匠は本大会、氷彗相手に角換りで後手番早繰り銀を試したが、定跡抜けた時点でぜんぜん駄目。人間界でも角換りは後手が避けるようになっていくのでは?
41:10 新ペタショック定跡、今年かなり進化した。
45:30 だから強い評価関数作りたいよね。今年は水匠、だいぶ強くなった。(やねうら王のFANBOXで頒布している水匠11βから+R100以上?)
46:30 強くなった手法
その1. Ryfamateから知識蒸留
その2. 勝率と評価値を変換するときに用いるシグモイド関数に出てくる定数(いわゆるponanza定数)の600は傾きすぎ。もっと大きな値にして緩やかな関数にしたほうがよい(∵ 評価値が大きくなりすぎる)

やねうらお補足 : ここでいうponanza定数とは、評価値と勝率を相互変換するときのシグモイド関数に現れるスケール係数である。ざっくり言えば、「評価値何点をどの程度の勝率差として扱うか」を決める定数である。

48:00 だからFV_SCALE(元の評価関数の内部出力から評価値に変換するときの除算の定数)を大きくする必要がある。
49:10 その結果、実験中の水匠ではFV_SCALE = 80がベストとなった。しかしこれは大きすぎるし、おかしいのではないか。(元のFV_SCALEは16で、FV_SCALEを大きくすれば強くなるという発見は水匠5ぐらいのときにした。)
49:30 なぜこのように大きなFV_SCALEにしないといけないかというと、評価値が大きくなりすぎるからで、なぜ大きくなりすぎるのかというとponanza定数が小さすぎるから。
51:00 なぜ評価値がそのように大きくなるのかさらに調査するために、教師局面における各局面の勝率の分布を調べた。そうすると勝率0%と100%(つまりはmateの局面)の割合が非常に多かった。
52:00 このmateの局面、いらないと思って、減らしたが、減らすと減らしたぶんだけ弱くなった。

やねうらお所見 : これを減らした上で、探索部を調整したほうが良いのではないか?

53:00 このような極端な値を学習させるがゆえに、評価関数の表現力を超えている。
54:00 具体的には、評価関数で用いているニューラルネットの重みの10%ぐらいが127(8bit符号付き整数での最大値)に張り付いている。(表現できないほどの絶対値の大きな値を学習させようとしたためだと思われる。) だから弱い。ponanza定数大きくすべき。
57:00 もっと抜本的に何かしないといけないかも?評価関数のアーキテクチャの改良でなんとかならないか?
1:02:50 WCSCのルール変更についての提案。(略)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です