用語集

ShogiArena のドキュメントで使う専門用語のリファレンス。 各用語に、英語名、略称、定義、関連ページへのリンクを記載する。 本文で不明な用語に出会ったときは、このページで確認できる。

このページの収録範囲

  • 統計的検定(SPRT, LLR, LOS)、レーティング(Elo, BayesElo)、チューニング(SPSA)の主要概念
  • STC/LTC などテストワークフローに関わる用語
  • USI, SFEN, KIF/CSA など将棋固有のプロトコルとフォーマット
  • 各用語から詳細な解説ページへの相互参照

統計的検定

SPRT(Sequential Probability Ratio Test / 逐次確率比検定)

対局結果を 1 局ずつ追加しながら、累積的な証拠を 2 つの仮説(H0: 改善なし、H1: 改善あり)に対して評価する逐次検定手法。 あらかじめ設定した判定閾値に LLR が到達した時点でテストを終了するため、 固定局数のテストよりも必要な対局数を大幅に削減できる。 エンジンの強さの差を統計的に判定するための標準的な手法。

→ 詳細:SPRT(逐次確率比検定)

LLR(Log-Likelihood Ratio / 対数尤度比)

SPRT の中心となる検定統計量。各対局結果から計算される尤度比の対数を累積したもので、 証拠が H0(改善なし)と H1(改善あり)のどちらを支持するかを定量化する。 LLR が上限閾値に到達すれば H1 を採択し、下限閾値に到達すれば H0 を採択する。 加法性を持つため、1 局ごとに効率的に更新できる。

→ 詳細:対数尤度比(LLR)

LOS(Likelihood of Superiority / 優位性の尤度)

あるエンジンが対戦相手よりも強い確率を表す指標。 勝ち数 \(W\) と負け数 \(L\) から \(\text{LOS} = \Phi((W - L) / \sqrt{W + L})\) として計算される。 引き分けは LOS の計算に含まれない。 スコアベースでは \(\text{LOS} = \Phi((\mu - 0.5) / (\sigma / \sqrt{n}))\) とも表現できる。 SPRT のような厳密な仮説検定ではないが、直感的に「どれくらい確信があるか」を示す尺度として有用。

→ 詳細:BayesElo と引き分けモデル

Elo レーティング(Elo Rating)

ハンガリー系アメリカ人の物理学者アルパッド・エロが考案した、対戦型競技のレーティングシステム。 2 者間の勝率をレーティング差というスカラー値で表現し、400 点差で勝率 10:1 となる。 期待スコアはロジスティック関数 \(E_A = 1 / (1 + 10^{-\Delta R/400})\) で計算される。

→ 詳細:Elo レーティング

BayesElo

引き分け率を独立したパラメータ(drawelo)として明示的にモデル化した Elo の拡張。 標準的な Elo(Logistic Elo)では引き分けを 0.5 勝として扱うが、 BayesElo では \(P_{\text{win}} = 1/(1+10^{(-\text{elo}+\text{drawelo})/400})\)、 \(P_{\text{loss}} = 1/(1+10^{(\text{elo}+\text{drawelo})/400})\) として 勝ち、引き分け、負けの 3 つの確率を個別にモデル化する。 Fishtest は歴史的に BayesElo を使用していたが、現在は Logistic Elo に移行している。

→ 詳細:BayesElo と引き分けモデル

Logistic Elo

ShogiArena で標準的に使用される Elo モデル。 勝率とレーティング差の関係をロジスティック関数で表現する。 BayesElo と異なり、引き分けを中間結果(スコア 0.5)として統一的に処理するためシンプルで実装が容易。 ShogiArena の SPRT 実装はこのモデルに基づいている。

GSPRT(Generalized SPRT / 一般化逐次確率比検定)

標準 SPRT を拡張し、仮説中の未知パラメータを最尤推定量(MLE)で置き換えた検定手法。 エンジンテストでは引き分け率などの未知パラメータが存在するため、単純仮説を設定できない。 GSPRT はこの問題を解決し、複合仮説に対応する。 誤り率が 0 に近づくとき、GSPRT は標準 SPRT と漸近的に同じ振る舞いをすることが証明されている。 Fishtest が採用している「SPRT」は実際には GSPRT である。

→ 詳細:GSPRT(一般化逐次確率比検定)

MLE(Maximum Likelihood Estimation / 最尤推定)

観測データに対する尤度を最大化するパラメータ値を求める推定法。 GSPRT では、「期待スコアが \(s\) である」という制約のもとで多項分布の MLE を計算する。 この制約付き MLE は世俗方程式(secular equation)を解くことで得られる。

→ 詳細:GSPRT(一般化逐次確率比検定)

世俗方程式(Secular Equation)

GSPRT の制約付き MLE を求める際に解く方程式。 \(\sum_i \hat{p}_i (a_i - s) / (1 + x(a_i - s)) = 0\) の形をしており、 ラグランジュ乗数法から導出される。Brent 法などの数値解法で解く。

→ 詳細:GSPRT(一般化逐次確率比検定)

オーバーシュート補正(Overshoot Correction)

SPRT の判定境界は連続的な LLR 変化を前提としているが、 実際には離散的(1 局または 1 ペアごと)に更新されるため、 LLR が境界を飛び越えることがある。 このオーバーシュートを補正しないと、実際の誤り率が設定値より大きくなる。 Fishtest は Siegmund (1985) の理論に基づく動的オーバーシュート補正を実装している。

→ 詳細:GSPRT(一般化逐次確率比検定)

nElo(Normalized Elo / 正規化 Elo)

スコアの標準偏差で正規化した Elo 差。 \(\text{nElo} = (800 / \ln 10) \cdot (\mu - 0.5) / \sigma_{\text{pg}}\) として計算される。 通常の Elo 差は持ち時間や引き分け率の影響を受けるが、nElo ではこれらの影響が大幅に軽減され、 異なる持ち時間(STC と LTC)間でのパフォーマンス比較が可能になる。 Fishtest では検定の閾値を nElo で表現し、テストの所要対局数を安定化させている。

→ 詳細:正規化 Elo(nElo)

五項分布(Pentanomial Distribution)

ペアゲーム(先後入れ替え 2 局セット)の結果を 5 つのカテゴリ(0.0, 0.5, 1.0, 1.5, 2.0 点)に分類するモデル。 先手有利バイアスを除去し、三項分布よりも情報量が多いため、 SPRT の判定に必要な対局数を 20-40% 削減できる。

→ 詳細:五項分布モデル

三項分布(Trinomial Distribution)

各対局を独立に扱い、結果を勝ち、引き分け、負けの 3 カテゴリに分類するモデル。 最もシンプルなモデルだが、先手有利バイアスがノイズとして含まれるため、 ペアゲームを活用できる場合は五項分布の方が精度が高い。

アカウンティング恒等式(Accounting Identity)

五項分布と三項分布の間に成り立つ恒等式。 三項分布のスコア分散と五項分布のスコア分散の差が、開局集(定跡ファイル)に含まれるバイアスの分散に対応する。 \(\text{Var}{\text{trinomial}} = \text{Var}{\text{pentanomial}} + \text{Var}_{\text{bias}}\) として、開局集バイアスの RMS 値を推定できる。

→ 詳細:五項分布モデル

ブラウン運動近似(Brownian Approximation)

GSPRT の LLR 過程を、ドリフト付きブラウン運動で近似する手法。 十分なサンプル数のもとでは \(\text{LLR}_n \approx \mu n + \sigma W_n\)(\(W_n\) はウィーナー過程)と近似でき、 期待テスト長の計算、Elo 推定、SPRT calculator の基礎となっている。

→ 詳細:GSPRT(一般化逐次確率比検定)

引き分け率(Draw Ratio)

全対局に占める引き分けの割合。 引き分け率が高いほど 1 局あたりの情報量が少なくなり、統計的有意性の判定に必要な対局数が増加する。 BayesElo モデルでは重要なパラメータとなる。 将棋はチェスと比べて引き分け率が低い傾向にある。

偽陽性率 α(Type I Error Rate / 第一種の過誤率)

実際には改善がないにもかかわらず「改善あり(H1)」と誤判定する確率。 SPRT のパラメータとして設定し、通常は α = 0.05(5%)を使用する。 α を小さくするとより確実な判定になるが、判定に必要な対局数が増加する。

→ 詳細:SPRT(逐次確率比検定)

偽陰性率 β(Type II Error Rate / 第二種の過誤率)

実際には改善があるにもかかわらず「改善なし(H0)」と誤判定する確率。 SPRT のパラメータとして設定し、通常は β = 0.05(5%)を使用する。 検出力(Power)は \(1 - \beta\) で表される。

→ 詳細:SPRT(逐次確率比検定)

SPRT Calculator

Fishtest が提供する Web ツール。elo0、elo1、引き分け率、真の Elo 差などのパラメータを入力すると、 SPRT テスト完了までの期待対局数を計算できる。 テストの計画段階でリソース見積もりに活用できる。 ブラウン運動近似に基づく計算を行う。

→ ツール:SPRT Calculator

無関心領域(Indifference Zone)

SPRT における elo0 と elo1 の間の区間。 この区間内の Elo 差では、H0 と H1 のどちらを採択しても許容される。 例えば elo0=0, elo1=5 の場合、0〜5 点の Elo 差は「検出する必要がない微小な差」として扱われる。 無関心領域を狭くするほど検出感度は上がるが、必要な対局数が増大する。

→ 詳細:SPRT(逐次確率比検定)


持ち時間とテスト

STC(Short Time Control / 短時間制御)

SPSA チューニングや初期検証に使用する短い持ち時間設定。 典型的にはノード数制限(例: 100,000 ノード/手)や短い固定時間で実行する。 高速なフィードバックループが利点だが、長時間での探索特性を十分に反映しない可能性がある。 STC で有望な結果が得られたパッチは、LTC で再検証するのが標準的なワークフロー。

→ 関連:LTC 回帰テスト

LTC(Long Time Control / 長時間制御)

STC で得られたチューニング結果やパッチの最終検証に使用する長い持ち時間設定。 典型的には数秒〜数分/手で実行し、エンジンの実戦的な探索深度でのパフォーマンスを評価する。 STC の結果が LTC でも有効かを確認するため、回帰テストとして実施される。

→ 詳細:LTC 回帰テスト

TC(Time Control / 持ち時間)

対局における時間制限の設定。ShogiArena では以下の形式をサポートする。

形式説明記法例
固定時間1 手あたりの固定時間fx1000(1 秒/手)
フィッシャー持ち時間 + 1 手ごとの加算t60000+i1000
秒読み持ち時間 + 秒読みt300000+b10000
ノード数1 手あたりのノード数制限n100000
深さ探索深度制限d20

秒読み(Byoyomi)

日本将棋特有の持ち時間制度。持ち時間を使い切った後、1 手ごとに一定の秒数(例: 10 秒)が与えられる。 フィッシャー方式(1 手ごとに時間が加算される)とは異なり、秒読み時間は蓄積されない。 ShogiArena では t{ms}+b{ms} の形式で設定する。

回帰テスト(Regression Test)

SPSA チューニングの途中で、パラメータの変更が長時間制御(LTC)でも有効かを定期的に検証するテスト。 STC でのチューニング結果が LTC で性能低下を起こしていないかを確認し、 フェイルした場合は自動的にパラメータをリバートする。 局所最適への陥落を防止する安全機構。

→ 詳細:LTC 回帰テスト


チューニング

SPSA(Simultaneous Perturbation Stochastic Approximation / 同時摂動確率近似法)

エンジンパラメータを対局結果に基づいて自動最適化するアルゴリズム。 p 次元のパラメータを同時に ±1 摂動させ、わずか 2 回の関数評価(2 セットの対局)で全パラメータの勾配を推定する。 パラメータ数に依存しない効率性が特徴で、数十〜数百のパラメータを持つエンジンのチューニングに適している。

→ 詳細:SPSA(同時摂動確率近似法)

ゲインスケジュール(Gain Schedule)

SPSA の更新ゲインと摂動幅を制御する減衰系列。ShogiArena では パラメータ単位 で、 ペア通し番号 \(k_{\text{pair}}\) に対して摂動 \(c_i = \text{step}i (k{\text{total}}/k_{\text{pair}})^\gamma\)、 更新ゲイン \(r_i\)(delta / step / A / alpha / gamma から導出)として定義される。 グローバルな学習率スカラ(かつての mobility / a0)は存在しない。 既定は Spall 推奨の減衰(\(\alpha = 0.602,\ \gamma = 0.101\))。

→ 詳細:ゲインスケジュール

Rademacher 摂動(Rademacher Perturbation)

SPSA で使用される確率分布。各次元で等確率で +1 または -1 を取る。 正規分布などの連続分布と異なり、離散的なので整数パラメータとの相性が良い。 全次元を同時に摂動させることで、2 回の評価で p 次元の勾配を近似できる。

→ 詳細:勾配推定と摂動

CRN(Common Random Numbers / 共通乱数法)

摂動パラメータ \(\theta^+\) と \(\theta^-\) の評価に同じ開始局面を使用することで、 局面の難易度による変動を相殺し、スコア差 \(s^+ - s^-\) の分散を削減する手法。 追加コストなしで 30-50% の分散削減効果が得られるため、常に有効にすることが推奨される。

→ 詳細:分散削減テクニック


将棋とエンジンに固有の用語

USI プロトコル(Universal Shogi Interface)

将棋エンジンと GUI/フレームワーク間の標準的な通信プロトコル。 チェスの UCI(Universal Chess Interface)を将棋向けに適応したもので、 position sfen ...gobestmovesetoption などのコマンドでテキストベースの通信を行う。 ShogiArena はこのプロトコルを完全実装しており、USI 準拠の任意の将棋エンジンを制御できる。

SFEN(Shogi Forsyth-Edwards Notation)

将棋の盤面状態をコンパクトなテキストで表現する記法。 駒の配置、手番、持ち駒、手数を 1 行で表す。 初期局面は lnsgkgsnl/1r5b1/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGKGSNL b - 1。 定跡ファイルや局面のスナップショットに使用される。

KIF 形式(KIF Format)

日本将棋連盟が定めた棋譜の標準テキスト形式。 日本語の駒名と座標を使い、人間にとって読みやすい。 対局情報(対局者名、日時、戦型など)のヘッダも含められる。

CSA 形式(CSA Format)

コンピュータ将棋協会(CSA)が定めた棋譜形式。 コンピュータ処理に適した簡潔な表記で、英数字のみで記述される。 電竜戦などのコンピュータ将棋大会で標準的に使用される。

裁定(Adjudication)

フレームワークが対局を自動的に早期終了させる仕組み。 評価値の差が十分大きい場合の投了裁定、手数上限に達した場合の引き分け裁定、 勝ち判定(入玉宣言など)がある。 計算資源の節約のため、特に STC でのテストでは積極的に使用される。

定跡ファイル(Opening Book)

対局の開始局面を SFEN 形式で収録したファイル。 同じ定跡セットを使うことで対局間の条件を統一し、CRN による分散削減効果を得る。 pair_both ポリシーでは同じ局面を先後入れ替えて 2 局実施し、先手バイアスを除去する。

→ 関連:分散削減テクニック


フレームワークとツール

OpenBench

Andrew Grant が開発した、チェスエンジンテスト向けのオープンソース分散テストフレームワーク。 SPRT、SPSA、固定局数テスト、データ生成をサポートし、Django ベースの Web UI を提供する。 ShogiArena は OpenBench 互換の API クライアントを実装しており、 OpenBench/ShogiBench サーバに直接結果を提出できる。

→ 詳細:テストフレームワーク概説

Fishtest

Stockfish 開発チームが運営する公式テストインフラ。 世界中のボランティアマシン(数百台規模)で分散テストを実行し、 パッチの STC→LTC 階層テストワークフローを確立した。 SPRT の実用的な採用と五項分布モデルの普及に大きく貢献した。

→ 詳細:テストフレームワーク概説

Cutechess

チェス用のトーナメントマネージャ。CLI(cutechess-cli)と GUI の両方を提供する。 Round-robin、Gauntlet、Knockout など複数のトーナメント形式をサポートし、 SPRT 実装や裁定ロジックの参照実装として広く使われている。 ShogiArena の SPRT 実装は cutechess の設計を参考にしている。

→ 詳細:テストフレームワーク概説

fastchess

Disservin が開発した、高性能なチェスエンジントーナメントランナー。 C++ で実装されており、高速な対局実行と効率的な並列処理が特徴。 cutechess-cli の後継として開発され、SPRT や五項分布をサポートする。

→ 詳細:テストフレームワーク概説


次に読む

テストフレームワーク概説:OpenBench、Fishtest、Cutechess の解説と ShogiArena との関係

統計的検定とチューニング:各用語の理論的背景