やねうら王チームの電竜戦PR動画にあるような8月32日は来なかった。
評価関数自作するの面白いよ
私は探索部の改造は2,3日で終わって、そのあと評価関数を作り出したら、これが楽しいのなんの。みんなどうして評価関数(のアーキテクチャ自体)、自分で作らないの?これ、めっちゃ面白いよ。どれくらい面白いかと言うと、評価関数をいじくり回してたら、たけわらべというクソ面白い棋風の将棋ソフトができたのだ。
公開しているたけわらべは、16コアのCPUでfloodgateでR2900程度のようだ。(floodgateに放流してる人がいる)
プログラムの改良により、ここから棋風をあまり変えずにあとR150ぐらいは伸ばせるので、Ryzen Threadripper 3990Xならさらに+R100~200ぐらい上がって、プロ棋士レベルになるということだ。こんな棋風でプロ棋士レベルになるというのが何とも恐ろしい。いまのコンピューター将棋、凄すぎである。
そもそもで言うと、この時点で私にはたけわらべみたいなクソ面白い棋風の将棋ソフトを量産できるだけのノウハウが溜まっていた。たけわらべは、そのバリエーションの一つにすぎない。こんなハチャメチャな棋風でかつプロ棋士レベルの将棋ソフトを量産できるんやぞ?変な棋風の将棋ソフトを自分で作って、それと対局して笑い転げてる毎日であった。8月32日は来なかったが、なんとも幸せなひとときであった。
そんなこともあって、電竜戦のほうは、探索部以外たややんさんに丸投げ王となってしまった。
テラショック定跡について
まあ、定跡はテラショック定跡を使おうと思っていたのだが、たややんさん側で用意した定跡と対局させたらクソ弱かった。テラショック定跡手法自体は面白い手法なのだが、いまの評価関数の精度では序盤でいくら長時間考えても言うほど強くならない。
コンピュータ将棋では、思考時間2倍でR200ぐらい強くなると言われているが、序盤・中盤・終盤と均一にR200強くなるわけではなく、序盤はR30、中盤はR100、終盤はR300というように、終盤だけ強くなってる気がする。例えば、序盤(32手目まで)だけ思考時間を2倍にしたソフトと、中盤(32手目から64手目までとか、64手目から80手目までとか)だけ思考時間を2倍にしたソフトとでは、後者のほうが圧倒的に勝ち越すのではなかろうか。まあ、逆転できないほど序盤で大差をつけられれば別だろうけど、普通、序盤で(評価値的には)そんな大差にならないじゃん?
そんなわけで、テラショック定跡とたややんさん側で用意した定跡とでは、長い時間で水匠同士を対局させたところ3勝17敗であった。ぜんぜん話にならねぇ…。いや、逆に考えろよ。そんなテラショック定跡で昨年のWCSC29で優勝したやねうら王、凄すぎでしょ。
たぬきさんには、「テラショック定跡は、やね師匠にしか使えない呪われた装備」だと言われ、なるほどなーと思いつつも、私だって、呪われた装備だとわかってたらこんなの最初から使わないよ!と思い、テラショック定跡とは決別して、たややんさんに丸投げ王となったわけだ。
テラショック定跡まわりの話は、たぬきさんの電竜戦 参加記録に詳しい。
テラショック定跡もdepth 8ぐらいの浅さで巨大なのを作れば、終盤まで差し掛かるのでわりと良いのかも知れない。何にせよいまの評価関数、序盤の評価値が信用ならないというのが一番の欠点であり、短い時間で終局(or 終局付近)までやった時の勝率のほうがまだ信用できるのではないかと思う。
NNUE評価関数について
NNUE評価関数のほうは、もうとっくに伸び悩んでいて標準NNUEではもうほとんど伸びないと思う。
私のほうでは、評価関数の開発だけに専心すれば、来年には評価関数であと+R100~R150ぐらいは達成できると思っているけども、コンピューター将棋の歴史を振り返るに、いままで評価関数の改善では、言うほど伸びてない。
だって、たけわらべの評価関数30行ぐらいしかない、本当に殴り書きのクソみたいな評価関数なんだけど、それで大会スペックのPC(3990X)では、プロ棋士レベルの強さになるわけだよ?いかに我々が探索とハードのスペックでソフトの棋力を伸ばしてきたのかがわかろうと言うものである。
NNUE型の評価関数がいくら画期的であったと言っても、KPPT型の評価関数と比べてR100ぐらいの差しかない。(特定の戦型に特化して良いなら話は別だが)
まあ、戦型特化の話については、今回の『みずうら王 with お多福ラボ』のPR文書のほうをご覧いただきたい。
DL勢について
それでまあ、今回の電竜戦では、DL(Deep Learning)勢であるGCTが優勝した。2位~5位がやねうら王系で、6位にdlshogiが位置している。
GCT、dlshogiはともにAWSのA100のインスタンスp4d.24xlarge(NVIDIA A100×8)を借りての参戦のようだ。3990Xが50万円ぐらいで買えるのに対して(PC一式でも80万円ぐらい)、A100×8の構成のシステムは、2,000万円程度と言われており、その計算能力には大きな隔たりがある。
だから、いまのところ、2、30万円ぐらいの予算でPCを購入して将棋ソフトを動かすならば、CPUにお金をかけて、やねうら王を動かすほうが強いであろうが、来年か再来年にはどうだかわからない。それぐらいにDeep Learning界隈の進歩は速い。
だから、もはやハードの差(80万円 VS 2000万円)を負けた言い訳にすべきではないのである。
ここ近年、CPU勢は、1年に探索部で+R60~100、評価関数で+R20~50、ハードの進化で+R20~50ぐらいの感じで強くなってきた。年間でR100~200強くなっている感じだ。それに対して、DL勢は、ハード込みで言えば1年でR300~500ぐらい強くなっている。
半年後に開催されるWCSCの決勝の上位がすべてDL勢であったとしても何もおかしくはないのだ。
まあ、やねうら王は、私が楽しいと思える範囲で今後もいままで通り、緩く長く開発を続けていく。評価関数自作するの、楽しいよ!
[2020 11/23 9:00 追記]
たややんさんのブログ記事に、今回のみずうら王の定跡作成手法が書いてあって大変興味深いです。
その2000万円構成のインスタンスを、大会用にどのくらいの予算で何時間借りたんでしょうね・・・?(あっちで聞けって話ですが)
思考時間の調整で「圧倒的に勝ち越す」ほどの差が得られるなら、
1. 指し手数に応じて線形で変化させる
2. 人間が指定したなんらかのパラメータに応じて変化させる
3. AIにそのパラメータを見つけさせる
などの調整にフロンティアが広がっているということでしょうか?むずかしい???
というか思考時間の調整は、もともと開発者の個性や考え方が「素人にもわかりやすく」反映されている要素な気がします。もっとアピールしてほしいし、もっと知りたいです。
p4d.24xlargeの料金は公開されてなかったと思いますが、V100×8のインスタンスが1時間3000円ぐらいだったと思うので、その3倍の性能だとしたら…ごにょごにょ。
思考時間の制御については、Stockfishのtimeman.cppが持ち時間制御のコードで、いままでのcommitの歴史を見るとまあ…色々されてます。
timeman.cpp でググってみましたが、謎のマジックナンバーの由来までは探索しきれませんでした(゚∀。)
ひょっとしてこの数字をひねり出すのに鬼のような計算資源を費やしてるのかもしれませんが、コード自体はシンプルですねぇ
昔のStockfishのtimeman.cppのコードは、何手目で逆転したか(?)の統計情報みたいなテーブルが置いてあって、そこが急所だからたくさん時間使おう、みたいなコードになってたと思うんですけど、いまはもっとシンプルなコードになってるような…。