boNanoha ≒ bonafish なのか [将棋]
今ガチ勢になろうとしたら、まずはbonafish(bonanza + stockfish)作るところみたいな話がある。
評価関数入れ替えるだけじゃないかなんて思うのだが
・USI処理
・Board Representation
・指し手生成
を全部変える必要がある。
実際本家の差分として作られているGPSでも200箇所ぐらいマクロがあるので
それぐらい余裕だろなんて人は情熱がある人だと思っている(自分はそこまではやる気がしない)
そんなときになのはMiniが公開された。
なのはMiniはぱっと斜め読みしたところ
・探索はStockfishベース
・評価関数部分がbonanza風
となっていて、結構簡単に入れ替わるんじゃないかななんて思ってたら、
誰かもそう思ってたようで即効でboNanohaなるソフトがfloodgateに登場した。
そんな簡単にできるなら俺にもできるだろうと思ってやってみた。
・この間までFV38対応と3次元化したので、それをそのまま使う
・差分計算はとりあえずパス
・make_listはなのはの実装にタダ乗りして純粋にfv(38).binの評価値を返す
とちょっとだけチューンしたバージョンを作成した。
なのはMiniはデバッグビルドでエラーが起きるとか、
ソースも読まずに実装してたら駒割りの正負が逆だったのを発見するとか
初期化忘れた変数使ってたとかの苦難を乗り越えて無事動作
<追記>
他のことやりながら適当に実装してたので、デバッグビルド意外は自分のミス。
あと、quitで終了するとサーチのidle_loopで例外エラーが出るのでそれも修正した。
exitでなぜか0番のスレッドだけ停止処理を動かさずにリソースを開放している。
<追記終わり>
早速動かしてみると、NPSがbonanzaの2倍近く出てきてびっくりする。
(Bonanza 6.0 120万のとき boNanoha 240万前後)
差分評価がないので、むしろ遅いぐらいなのでカウント方法が違うんだと思う。
(すごい昔(2009年頃?)LS3600さんのBlogにも似たようなことが書かれていた)
また、探索の深さも表記が違うのでどう捉えていいかがわからない。Bonanzaは深く読んでいってダメだと手戻りするので14の後11が出てくるみたいなことがあるが、Stockfishはご丁寧に選択探索の深さまで出てくる。
bonanzaの探索深さが11のとき、boNanohaも11/20ぐらいなので実質的にほとんど同じであると思われる。
定跡はよくわからないが、開幕直後に500点近くついていたのがあったので、要調整かもしれない。
(GPSfishも抜けた途端に300点ついてるときがあるのでなんともいえないが)
実際に強いのかというとちょっと微妙だった。
というか、探索深さがBonanzaとほとんど同じなので、かろうじて強いかなー程度の差・・・
なんて思っていたが、100戦やってみたところ71-2-27。
ただ、本当に強くなってるのかはかなり疑問。
floodgateにいるboNanohaはあまりレーティングが伸びていない
bonanza6 R2533
boNanoha R2590
nozomi_i7-4790 R2841 ※参考
今回の結果だけ見るとbonanza以上Nozomi未満あたりの結果だろうと思うが、伸び悩んでいる。
PCの性能もあるので本当のところはわからないが、評価値見てるとそんなに強そうに見えない。
ただ、傾向が確実に変わった。
・FV38とStockfishの枝刈りのせいか、中盤の拮抗した状態から良くなる手順を選びやすい
・逆に終盤力が確実に劣り、大逆転負けをしやすい
たまたまFloodgateでbonanza vs boNanohaをやっていたが、boNanohaも盛大に逆転負けを食らっていた
差分評価を実装していないのでStockfish探索の傾向とFV38を組み合わせたのは偶然とはいえ成功だったかもしれない。また、差分評価がなく評価関数が遅いのに少し強いぐらいなので、ガチでビットボードも移植すればもっと強くなる気はする。
LS3600さんのサイトかどこかに書かれていたが
終盤力にチューニングしすぎると強さの指標としては見誤ることになるということだろうか。
終盤力がないので素人的には弱いように思えてしまうのだが・・・
なのでfloodgateにいるboNanohaは妥当な強さではあるが、
bonafish本来の限界値にはまだ差ががあると思われる。
<追記>
・GPSFISHではDFPNがあった場所に1手詰め、3手詰めが入っている。どの程度動いているかは不明。
・なのは独自修正により、検討モードが動作しないのを発見(infiniteオプションが動作しなくなっている)
評価関数入れ替えるだけじゃないかなんて思うのだが
・USI処理
・Board Representation
・指し手生成
を全部変える必要がある。
実際本家の差分として作られているGPSでも200箇所ぐらいマクロがあるので
それぐらい余裕だろなんて人は情熱がある人だと思っている(自分はそこまではやる気がしない)
そんなときになのはMiniが公開された。
なのはMiniはぱっと斜め読みしたところ
・探索はStockfishベース
・評価関数部分がbonanza風
となっていて、結構簡単に入れ替わるんじゃないかななんて思ってたら、
誰かもそう思ってたようで即効でboNanohaなるソフトがfloodgateに登場した。
そんな簡単にできるなら俺にもできるだろうと思ってやってみた。
・この間までFV38対応と3次元化したので、それをそのまま使う
・差分計算はとりあえずパス
・make_listはなのはの実装にタダ乗りして純粋にfv(38).binの評価値を返す
とちょっとだけチューンしたバージョンを作成した。
なのはMiniはデバッグビルドでエラーが起きるとか、
ソースも読まずに実装してたら駒割りの正負が逆だったのを発見するとか
初期化忘れた変数使ってたとかの苦難を乗り越えて無事動作
<追記>
他のことやりながら適当に実装してたので、デバッグビルド意外は自分のミス。
あと、quitで終了するとサーチのidle_loopで例外エラーが出るのでそれも修正した。
exitでなぜか0番のスレッドだけ停止処理を動かさずにリソースを開放している。
<追記終わり>
早速動かしてみると、NPSがbonanzaの2倍近く出てきてびっくりする。
(Bonanza 6.0 120万のとき boNanoha 240万前後)
差分評価がないので、むしろ遅いぐらいなのでカウント方法が違うんだと思う。
(すごい昔(2009年頃?)LS3600さんのBlogにも似たようなことが書かれていた)
また、探索の深さも表記が違うのでどう捉えていいかがわからない。Bonanzaは深く読んでいってダメだと手戻りするので14の後11が出てくるみたいなことがあるが、Stockfishはご丁寧に選択探索の深さまで出てくる。
bonanzaの探索深さが11のとき、boNanohaも11/20ぐらいなので実質的にほとんど同じであると思われる。
定跡はよくわからないが、開幕直後に500点近くついていたのがあったので、要調整かもしれない。
(GPSfishも抜けた途端に300点ついてるときがあるのでなんともいえないが)
実際に強いのかというとちょっと微妙だった。
というか、探索深さがBonanzaとほとんど同じなので、かろうじて強いかなー程度の差・・・
なんて思っていたが、100戦やってみたところ71-2-27。
ただ、本当に強くなってるのかはかなり疑問。
floodgateにいるboNanohaはあまりレーティングが伸びていない
bonanza6 R2533
boNanoha R2590
nozomi_i7-4790 R2841 ※参考
今回の結果だけ見るとbonanza以上Nozomi未満あたりの結果だろうと思うが、伸び悩んでいる。
PCの性能もあるので本当のところはわからないが、評価値見てるとそんなに強そうに見えない。
ただ、傾向が確実に変わった。
・FV38とStockfishの枝刈りのせいか、中盤の拮抗した状態から良くなる手順を選びやすい
・逆に終盤力が確実に劣り、大逆転負けをしやすい
たまたまFloodgateでbonanza vs boNanohaをやっていたが、boNanohaも盛大に逆転負けを食らっていた
差分評価を実装していないのでStockfish探索の傾向とFV38を組み合わせたのは偶然とはいえ成功だったかもしれない。また、差分評価がなく評価関数が遅いのに少し強いぐらいなので、ガチでビットボードも移植すればもっと強くなる気はする。
LS3600さんのサイトかどこかに書かれていたが
終盤力にチューニングしすぎると強さの指標としては見誤ることになるということだろうか。
終盤力がないので素人的には弱いように思えてしまうのだが・・・
なのでfloodgateにいるboNanohaは妥当な強さではあるが、
bonafish本来の限界値にはまだ差ががあると思われる。
<追記>
・GPSFISHではDFPNがあった場所に1手詰め、3手詰めが入っている。どの程度動いているかは不明。
・なのは独自修正により、検討モードが動作しないのを発見(infiniteオプションが動作しなくなっている)
なのはmini は 3手詰め、長手数詰め が無いので詰みを見逃してしまうようです。
by 通りすがり (2015-01-04 12:48)