# 定跡自動生成
定跡自動生成は、エンジンの探索結果や自己対局結果を用いて、定跡ファイルを半自動または全自動で構築する考え方である。
近年の将棋AIでは、学習済み評価関数や大量の計算資源を背景に、大規模な定跡生成が実戦的なテーマになっている。
## 概要
将棋ソフトの定跡は、かつては人手で編集する比重が大きかった。
しかし近年は、
- エンジンを長時間回して候補手を掘る
- 分岐先の勝率や評価値を使って枝を残す
- 悪い変化や重複を整理する
という流れを自動化する試みが進んでいる。
やねうら王公式サイトでも、2024年1月14日の記事で「大規模定跡時代」に入ったと説明されており、
完全自動生成か、人手の確認を挟む半自動生成かは違っても、
各チームが独自に大規模定跡を持つ方向へ移っていると整理されている。
## 何を自動化するのか
定跡自動生成では、主に次の工程を機械化する。
- 開始局面や[互角局面集](/shogi/shogiwiki/search/balanced-positions/)を起点に探索する
- 候補手を複数保持して分岐木を広げる
- 評価値、勝率、千日手率、採用頻度などで枝を絞る
- 同一局面や近い局面をまとめる
- 最後に定跡ファイルへ書き出す
このため、単なる探索高速化だけでなく、
[時間管理](/shogi/shogiwiki/search/time-management/)、局面管理、ハッシュ、定跡フォーマット設計も関わる。
## 人手編集との違い
人手編集の定跡は、分かりやすさや思想を反映しやすい。
一方、自動生成は
- 深い探索結果を大量に取り込める
- 既存定跡にない枝も掘りやすい
- 評価関数や探索器を更新したら作り直せる
という利点がある。
ただし、誤った評価や偏った初期局面から生成すると、
定跡全体に癖や偏りが残ることがある。
## 実装例
概念的には次のようなループになる。
```cpp
for (const Position& seed : seedPositions) {
std::queue<Position> queue;
queue.push(seed);
while (!queue.empty()) {
Position pos = queue.front();
queue.pop();
auto candidates = searchBookMoves(pos, depthLimit);
auto selected = selectPromisingMoves(candidates);
book.store(pos, selected);
for (const auto& move : selected) {
queue.push(doMove(pos, move.move));
}
}
}
```
実際には、
- 既出局面の除去
- 並列探索
- 探索失敗時の再試行
- 定跡サイズ制限
などを追加することが多い。
## 関連する記事
- [やねうら大定跡](/shogi/shogiwiki/search/yaneura-large-book/)
- [テラショック定跡](/shogi/shogiwiki/search/tera-shock-book/)
- [ペタショック定跡](/shogi/shogiwiki/search/peta-shock-book/)
- [互角局面集](/shogi/shogiwiki/search/balanced-positions/)
- [探索パラメータの確率的最適化](/shogi/shogiwiki/search/search-parameter-optimization/)
## 注意点
- 強い探索器でも、序盤では評価の揺れが大きいことがある
- 学習データ生成と同じく、開始局面の偏りが成果物へ残る
- 巨大定跡は強いが、配布や差分管理が重くなりやすい
## 関連項目
- [探索](/shogi/shogiwiki/search/)
- [時間管理](/shogi/shogiwiki/search/time-management/)
- [ハッシュテーブル](/shogi/shogiwiki/search/hash-table/)
- [置換表](/shogi/shogiwiki/search/transposition-table/)
## 参考にしたホームページ
- [やねうら王公式サイト: THE ERA OF Large Scale BOOK IN Shogi AI](https://yaneuraou.yaneu.com/2024/01/14/the-era-of-large-scale-book-in-shogi-ai/)
- [やねうら王公式サイト: %E3%82%84%E3%81%AD%E3%81%86%E3%82%89%E5%A4%A7%E5%AE%9A%E8%B7%A1%E3%81%AF%E3%81%98%E3%82%81%E3%81%BE%E3%81%97%E3%81%9F](https://yaneuraou.yaneu.com/2016/07/10/%E3%82%84%E3%81%AD%E3%81%86%E3%82%89%E5%A4%A7%E5%AE%9A%E8%B7%A1%E3%81%AF%E3%81%98%E3%82%81%E3%81%BE%E3%81%97%E3%81%9F/)
- [やねうら王公式サイト: %E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BC%E5%B0%86%E6%A3%8B%E5%85%A8%E8%88%AC](https://yaneuraou.yaneu.com/category/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BC%E5%B0%86%E6%A3%8B%E5%85%A8%E8%88%AC/)