標題の動画の件です。普通、皆さん将棋ソフトの探索速度はNPSを参考にされてると思うんですけど、そのNPSの計測基準はまちまちであり、内部実装を詳しく知らないと比較すら難しいという話です。
この動画、元奨励会三段のあらきっぺさんからも評価が高いです。
結論的には、探索ノード数(Nodes searched)と訪問ノード数(Nodes visited)を区別しましょうということなんですが、思考エンジンのソースコード見ないとそんなことわかんねーよという話でして。
まあ、こんな感じでYouTubeのやねうら王公式ちゃんねるは、わりと初心者受けしそうなタイトルで釣って、内容が将棋ソフトの開発者でも知らないようなマニアックな解説を垂れ流していくいまの路線のまま突き進んでいこうと思っています。
あとは、将棋ソフトの大会スペックと家庭用PCとではスペックが大きく異る(場合がある)ので、そのへんについても今後動画で解説していきます。
将棋AIの探索ノード数の定義についてなんですが、探索中に既に全く同じ局面を見つけていた場合、異なるノードからの分岐であっても重複とみなしてカウントしないのが正しいんでしょうか?それともカウントするのが正しいのでしょうか?
やねうら王ではdo_move()(指し手で一手進める関数)でカウントしているので、重複局面もカウントします。ふかうら王/dlshogiでは、新規局面を展開する時にカウントしているので、重複局面はカウントしません…が、合流は処理していないので、手順前後とかで同じ局面に到達した場合は、カウントすることになります。NPSの定義として何が正しいということはないです。(異種ソフト間でNPSの比較に意味がなくなってしまいますが、ほとんどのソフトは上述したその二種類のどちらかですので)
> 新規局面を展開する時にカウントしているので、重複局面はカウントしません
これは祖先ノードで分岐した場合に分岐から同じ局面に合流する場合でしょうか?
分岐のたびにテーブルを現在のノードから複製して先に進めた手の探索に渡す感じでしょうか?
動画で話している内容を聞いた感じだと、dlshogiは盤面の評価値の計算を行うタイミングで1局面とカウントする感じなんですかね。
新規局面を展開する = AlphaZeroのexpandのことです。
「dlshogiは盤面の評価値の計算を行うタイミングで1局面とカウントする感じなんですかね」は、その理解でおおよそ合ってます。
ふかうら王/dlshogiでは合流は扱わない(手順前後で同じ局面に到達しても別の局面として扱う)です。
引用箇所間違えてた。
> が、合流は処理していないので、手順前後とかで同じ局面に到達した場合は、カウントすることになります。
ここです。