# 探索不安定性

探索不安定性(Search Instability)は、探索深さや探索窓、手順順序などのわずかな違いで評価値や Principal Variation が大きく揺れる現象である。
[Aspiration Windows](/shogi/shogiwiki/search/aspiration-windows/)や[PVS](/shogi/shogiwiki/search/principal-variation-search/)の再探索と深く関係する。

## 概要

探索は理想的には深くなるほど滑らかに精密化してほしいが、
実際には

- ある深さで高評価
- 次の深さで急落
- さらに次で元に戻る

といった揺れが起きることがある。

原因としては、

- [手の並べ替え](/shogi/shogiwiki/search/move-ordering/)の変化
- fail-high / fail-low による再探索
- [Null Move Pruning](/shogi/shogiwiki/search/null-move-pruning/)や[Late Move Reductions](/shogi/shogiwiki/search/late-move-reductions/)などの選択性
- [静止探索](/shogi/shogiwiki/search/quiescence-search/)や終局判定の境界

がある。

## どんなときに問題になるか

探索不安定性が強いと、

- [Aspiration Windows](/shogi/shogiwiki/search/aspiration-windows/)の再探索が増える
- Principal Variation が頻繁に入れ替わる
- 時間管理が難しくなる
- 棋譜解析で表示が落ち着かない

といった問題が起きる。

## 典型例

- 静かな局面だと思っていたら、少し深く読んで tactical な筋が見つかる
- [LMR](/shogi/shogiwiki/search/late-move-reductions/)で浅く読んだ手が再探索で急に有力になる
- [Razoring](/shogi/shogiwiki/search/razoring/)や[Futility Pruning](/shogi/shogiwiki/search/futility-pruning/)の境界付近で挙動が揺れる

## 将棋AIでの位置づけ

将棋は分岐数が大きく、王手・受け・成り・打つ手の影響が大きいので、
探索不安定性が起こりやすい。

そのため実装では、

- 重要ノードでは選択性を弱める
- fail-high 後の再探索条件を工夫する
- [Principal Variation](/shogi/shogiwiki/search/principal-variation/)の更新規則を安定化させる

といった対策が取られる。

## 注意点

- 不安定性を完全に消すことは難しい
- 速度を上げる選択性と安定性はしばしばトレードオフになる
- 単に評価値が揺れるだけでなく、最善手自体が変わるかも見る必要がある

## 関連項目

- [Aspiration Windows](/shogi/shogiwiki/search/aspiration-windows/)
- [Principal Variation Search](/shogi/shogiwiki/search/principal-variation-search/)
- [Late Move Reductions](/shogi/shogiwiki/search/late-move-reductions/)
- [Razoring](/shogi/shogiwiki/search/razoring/)
- [Futility Pruning](/shogi/shogiwiki/search/futility-pruning/)

## 参考にしたホームページ

- [Chessprogramming Wiki: Search Instability](https://www.chessprogramming.org/Search_Instability)
- [Chessprogramming Wiki: Aspiration Windows](https://www.chessprogramming.org/Aspiration_Windows)
- [GitHub: official-stockfish/Stockfish](https://github.com/official-stockfish/Stockfish/issues/760)