Hand-Crafted Evaluation

Hand-Crafted Evaluation(HCE)は、 人手で特徴量と重みを設計する評価関数である。 NNUE 以前の主流であり、 今でも小型エンジンや教育用実装では重要である。

概要

HCE では、 開発者が

  • 何を特徴量として数えるか
  • どれくらい重く扱うか

を設計する。

典型的な要素は、

である。

実装例

int evaluate(const Position& pos) {
    int score = 0;
    score += material(pos);
    score += pieceSquareTables(pos);
    score += kingSafety(pos);
    score += mobility(pos);
    return score;
}

実際には phase に応じた重み付けや、 多数の pattern feature を加えることが多い。

将棋AIでの位置づけ

将棋では、

  • Bonanza 以前の手作り評価
  • Bonanza 系の大規模特徴量評価
  • NNUE

という流れがある。

HCE はその出発点であり、 現代的な学習評価を理解するためにも土台として有用である。

また、将棋では

  • 持ち駒
  • 成り
  • 囲い
  • 玉頭の厚み

などをどう表現するかが設計の肝になる。

NNUE との関係

NNUE は学習評価だが、 差分更新を重視する点や高速評価を目指す点では、 HCE と連続した発想を持つ。

そのため HCE の知識は、 NNUE を理解したり、補助評価を設計したりするうえでも役立つ。

注意点

  • 項目が増えるほど Evaluation Overlap が起こりやすい
  • 重み調整が手作業だと時間がかかる
  • 戦術的な強さは 探索 に強く依存する

関連項目

参考にしたホームページ