読み太は進行度を用いている。前回の電王トーナメントのときに「進行度、絶対入れたほうがいいっすよ!」と私が読み太の塚本さんに言ったからだ。その当人である私は、やねうら王に進行度を入れてない。なんなんだ、お前と言われそうであるが、忙しくてそこまで手が回っていないのである。
進行度の使い所は難しい。探索全般で使えれば良いのだが、実際は、簡単に導入できるのはfutility marginぐらいではないかと思う。読み太もそうなっている。それであれ、進行度は入れたほうが強いと私は思うのだが、進行度の計算もタダ(計算時間ゼロ)ではないので、実際のところよくわからないし、いままでやねうら王と読み太との対局は手元でさせていなかったのでよくわからない。
つい最近、3駒関係の局面の可視化の人の手によって「野生の読み太」という、やねうら王に進行度を導入するpatchが公開されたので、これを機に少し計測してみようかと思う。また「野生の読み太」には、評価関数も独自に学習させたものが公開されているようである。これをelmoにした場合と野生の読み太のままにした場合とも比較する。
やねうら王の互角局面集を開始局面とする。T4,b1000と書いてあれば4スレ1秒での計測である。4スレ1秒であまりに差があるときは早い段階で計測を打ち切る。僅差のときは4スレ2秒、4秒、8秒、…。と増やしていく。(実際には、置換表用のメモリが足りなくなるので4スレ2秒の次は8スレ2秒、16スレ2秒、…。) また、読み太のほうは評価関数フォルダにprogress.binを配置しなければならないらしいので、そうしている。
あとやねうら王のほうは、配布している実行ファイルをそのまま用いている。(トーナメント用ではなく通常用。トーナメント用だとR10〜20ぐらい強いのだが、メモリを消費するので並列対局させるときにメモリ不足になる。)
やねうら王V471+ elmo vs 読み太(WCSC27)+elmo
この組み合わせで、純粋な探索部の性能差が評価出来るはず。
T4,b1000,661 – 16 – 323(67.17% R124.4) win black : white = 49.39% : 50.61%
T4,b2000,630 – 17 – 353(64.09% R100.63) win black : white = 49.03% : 50.97%
T8,b2000,575 – 12 – 293(66.24% R117.12) win black : white = 49.42% : 50.58%
やねうら王のほうがR100ほど強いと言えそうだ。やねうら王と読み太は、どちらもStockfishを大いに参考にしているし、やねうら王からforkして作られた読み太はとても共通部分も多いのだけど、何故このように探索部での大きな差があるのかという話は…本記事で扱う範囲を大きく超えるのでまたの機会にしたい。
やねうら王V471+ elmo vs やねうら王(進行度あり)+elmo
この組み合わせで、進行度をfutility marginに用いたときの効果が計測できるはず。
T4,b1000,505 – 46 – 449(52.94% R20.42) win black : white = 51.15% : 48.85%
T4,b2000,377 – 51 – 322(53.93% R27.39) win black : white = 52.36% : 47.64%
残念ながら進行度なしのほうが強いようだ。futility marginに導入するだけでは進行度の計算によるオーバーヘッドを解消できてなさそう…。進行度をfutility marginに適用したあと、探索パラメーターを全体的に調整すればもしかすると違ってくるかと思うが、それにしても大変な作業だ。
念のため、8スレ2秒でも計測した。4台のPCで行なったので4つあるが、トータルでは1157-175-1088(51.54% R10.7)であり、進行度を入れていないほうが強い。
T8,b2000,388 – 61 – 371(51.12% R7.78) win black : white = 53.49% : 46.51% T8,b2000,247 – 43 – 250(49.7% R-2.1) win black : white = 48.69% : 51.31%
T8,b2000,279 – 38 – 253(52.44% R16.99) win black : white = 54.51% : 45.49%
T8,b2000,243 – 33 – 214(53.17% R22.08) win black : white = 52.08% : 47.92%
やねうら王V471+ elmo vs やねうら王(進行度あり)+評価関数 野生の読み太
この組み合わせで、「野生の読み太」の評価関数が優れているのかが評価できるはず。
T4,b1000,537 – 21 – 442(54.85% R33.82) win black : white = 53.12% : 46.88%
T4,b2000,545 – 25 – 430(55.9% R41.17) win black : white = 52.92% : 47.08%
elmoより少し弱いが、思考エンジンを進行度ありにすることでのマイナス分は差し引いて考える必要がある。また、読み太の評価関数から追加学習したものらしいので、そういう意味では評価関数ファイルとしてはelmoに迫るものがあり、かなり良い結果だと思う。
結論
・進行度は、futility marginに活用するだけでは互角ぐらいにしかならない。
・野生の読み太、評価関数としては善戦してはいるがelmoには届いていない。
やねうら王に進行度を導入しようかと思っていたが、しなくても良さそうなので肩の荷が少し下りた気分である。
おつかれさまでした。記事の味付けに蛇足します。
野生の読み太の教師は、定跡なしだったり、読み太の定跡だったり、HoneyWaffleの定跡だったり、をちゃんぽんした20億弱です。
ランダムムーブ機能以前のバイナリで作成してます。一部、gensfenで千日手のときの処理の不具合(?)修正前のものも混ってます。
全部 depth 8。絞る時のパラメータは eta 10, lambda 0.10 と根拠ない調整をしています。
(対戦で計測したわけではなく、色見が薄くでたので、もう一周できるかな、と。。)
進行度はオーバーヘッドでそこまでではなかったんですね、、少し意外でした。
有難うございました。
それはdepth 8がとても利いているような…。