やねうら王 アピール文書(あとで書き直す) 今回はDeep Learning(以下DLと略す)を用いたやねうら王の亜種である「ふかうら王」を用いる。 ふかうら王はdlshogi互換エンジンであり、dlshogiとほぼ同等の機能を持つ。 また詳しくは述べないが、dlshogiはAlphaZero型のMCTSを用いた思考エンジンである。 ふかうら王では、その探索の時にleaf nodeにおいて簡単な詰将棋を調べている。dlshogiでは3手~5手詰めを調べていたが、やねうら王では探索ノード数を固定したdf-pn詰将棋ルーチン(以下df-pnと略す)を用いている。df-pnを用いているのは、ノード数を固定し、一定時間で動作が完了するほうが良いと考えたからである。しかしながら、このdf-pnには置換表は用いていない。置換表を用いると大量のランダムなメモリアクセスが発生して、それにより深刻な探索速度の低下を引き起こすからである。 ところが近年、将棋AIにおけるDLを用いた評価関数は囲碁AIと同様にニューラルネット(以下NNと略す)の層をより深くして評価精度を上げる方向で進化している。層を深くするとそれだけ一つの局面の評価に要する時間は増えるのだが、それを補って余りあるだけ局面の評価精度が向上するようなのだ。 今回弊チームで採用する評価関数モデルは、わりと層が深いので探索速度は従来のものより十分に低いので、従来のものほどCPUはメモリアクセス自体を行わない。だから、leaf nodeでは「置換表ありのdf-pn」を用いたほうが得なのではないかと予想するに至った。 実際に探索中に各leaf nodeで呼び出されるような置換表ありdf-pnを実装する上でいくつかの技術的な困難がある。 ・各探索スレッドから並列的にアクセスされる(並列的にアクセスされてうまく動くようにしなければならない) ・先手番からも後手番からも呼び出される。(先手用と後手用の置換表を分ける方法も考えられるがそれは効率が低下するので出来れば情報は共有したい) という条件を満たすようなdf-pnを開発しなければならない。これは従来のdf-pnより一段と難しい。 またdf-pnだが、naiveなdf-pnアルゴリズムから近年改良が進んで、オープンソースの強い詰将棋ルーチンが公開されている。 安定性が向上した詰将棋エンジン『KomoringHeights v1.0.0』を公開した https://komorinfo.com/blog/komoring-heights-v1/ 上記のKomoringHeightsを参考にさせていただいて、ふかうら王のdf-pnを改良したいと思う。