レーティングシステム
Arena では、複数の対戦結果をもとに各モデルの相対的な強さを継続的に推定します。
この推定に使用されるのがレーティングシステムです。
現在 Elo と Glicko-2 の 2 つのシステムが実装されており、評価の設定時にいずれかを選択できます。
なぜレーティングが必要か
1 対 1 の Match 結果だけでは、モデル間の強さを安定して比較することができません。
- 対戦相手の強さによって勝敗の意味が変わる
- 少数の対戦では偶然性の影響が大きい
- 全モデルを直接比較するには対戦数が膨大になる
レーティングシステムを使うことで、間接的な比較(A が B に強く、B が C に強ければ A > C と推定できる)を通じて、少ない対戦数でも安定したランキングを構築できます。
Elo レーティングシステム
チェスで使用される古典的なレーティングシステムです。シンプルで理解しやすく、計算コストも低いのが特徴です。
仕組み
各モデルはレーティング値(デフォルト 1500)を持ちます。
対戦前に期待勝率を計算し、実際の結果との差に応じてレーティングが変動します。
期待勝率 = 1 / (1 + 10^((相手レーティング - 自分レーティング) / 400))- 期待通りの結果(強者が勝つ)→ 小さな変動
- 番狂わせ(弱者が勝つ)→ 大きな変動
Elo はゼロサムゲームです。勝者が得る点数は、敗者が失う点数と等しくなります。
K 因子
レーティング変動の大きさを制御するパラメータです。対戦経験が少ないモデルほど大きな K 因子が適用され、初期の不確実性を素早く解消します。
| ゲーム数 | K 因子 | 意味 |
|---|---|---|
| 0〜9 | 32(初期) | 未知のモデルは大きく動く |
| 10〜29 | 16(デフォルト) | 通常の変動幅 |
| 30 以上 | 10(安定期) | 安定したモデルは小さく動く |
Elo の限界
Elo はレーティング値のみを追跡するため、そのレーティングがどれだけ信頼できるかという情報を持ちません。対戦数が少ないモデルと多いモデルが同じレーティングを持っていても、前者の方が不確実性は高いはずですが、Elo ではこれを区別できません。
Glicko-2 レーティングシステム
Mark Glickman(2013)による Elo の拡張版です。レーティングの不確実性と変動性を追跡することで、より正確な評価を実現します。
3 つのパラメータ
Glicko-2 では各モデルを 3 つの値で表します。
| パラメータ | 記号 | 意味 | 初期値 |
|---|---|---|---|
| レーティング | μ(mu) | モデルの強さの推定値 | 1500 |
| Rating Deviation | φ(phi) | レーティングの不確実性。大きいほど信頼性が低い | 350 |
| Volatility | σ(sigma) | パフォーマンスの一貫性。大きいほど結果が安定しない | 0.06 |
φ(RD: Rating Deviation) が Glicko-2 の核心です。
- 新規モデル(対戦少): φ 大 → レーティングへの信頼度が低い
- 経験豊富なモデル(対戦多): φ 小 → レーティングへの信頼度が高い
対戦後、φ は小さくなり(不確実性が下がる)、対戦のない期間が続くと φ は大きくなります(パフォーマンスが変化したかもしれないため)。
期待スコアと g 関数
Glicko-2 の期待スコアは、対戦相手の RD を考慮して計算されます。
g(φ_j) = 1 / √(1 + 3φ_j² / π²) ← 対戦相手 RD の減衰関数
E(μ, μ_j, φ_j) = 1 / (1 + exp(-g(φ_j) × (μ - μ_j))) ← 期待スコアRD が大きい(信頼性の低い)対戦相手との対戦は、結果がレーティング更新に与える影響が弱まります。これにより、信頼性の低い対戦相手との結果が過度に反映されることを防ぎます。
バッチ更新(Glicko-2)
Arena の評価は Step 単位で進行し、1 つの Step には複数の Match が含まれます(用語集 参照)。
Glicko-2 の仕様では、1 つの Step 内の全 Match を1 つのレーティング期間としてまとめて扱います。これをバッチ更新と呼びます。
なぜバッチ更新が重要か
逐次更新(Match ごとに順番に更新する方法)には以下の問題があります。
- φ の過剰縮小: 複数の Match に参加するモデルの RD が 1 Match ごとに縮小され、実際より自信過剰な推定になる
- 順序依存: どの Match を先に処理するかで結果が変わり、決定論的な結果が得られない
バッチ更新では、Step 開始前のレーティング(pre-batch レーティング)を使って全 Match の対戦相手情報を構築し、その後一括で全モデルを更新します。
Step 開始
↓
全モデルの pre-batch レーティングをスナップショット
↓
各 Match の対戦相手情報を pre-batch レーティングで構築
↓
各モデルを全対戦相手リストで一括更新
↓
Step 終了この方式により、Match の完了順序に依存しない決定論的な結果が保証されます。
補足: Elo はデフォルトで逐次更新を使用します。Elo の場合、逐次更新とバッチ更新で本質的な差は小さいため、このような区別は Glicko-2 に特有の考慮事項です。
ペア選択アルゴリズム
どのモデルを対戦させるかも、評価の効率に大きく影響します。Arena ではレーティングシステムに合わせたペア選択アルゴリズムを提供しています。
BaselineStarSelector(Elo 向け)
ベースラインモデルを中心に据え、全モデルと対戦させる戦略です。
- ベースラインとの対戦と非ベースライン同士の対戦を組み合わせる
nonbaseline_ratioパラメータで非ベースライン対戦の割合を調整(0.0〜1.0)- レーティングが近いペアを優先(
prefer_close_ratings) - 直近の重複対戦を回避(
avoid_recent_duplicates)
Glicko2Selector(Glicko-2 向け)
φ(RD)を活用した情報理論ベースの選択アルゴリズムです。期待分散削減量(Expected Variance Reduction) を基準にペアを選択します。
Fisher 情報量: I_ij = g(φ_j)² × E × (1 - E)
各モデルの期待分散削減量: gain = φ⁴ × I / (1 + φ² × I)
ペアスコア: score = gain_i + gain_jこのスコアは以下の特性を自然に反映します。
| 特性 | 理由 |
|---|---|
| φ が大きいモデルほど優先される | φ⁴ ファクター |
| レーティングが近いペアほど有益 | E ≈ 0.5 のとき E×(1−E) が最大 |
| 信頼性の高い対戦相手との対戦が有益 | 対戦相手の RD が小さいほど得られる情報の質が高い |
baseline_weight パラメータで、純粋な Glicko-2 ベース選択とベースライン対戦の比率を調整できます。
Elo vs Glicko-2 の選択基準
| 観点 | Elo | Glicko-2 |
|---|---|---|
| 不確実性の追跡 | なし | あり(φ) |
| ペア選択の最適化 | 基本的 | φ を活用した情報最大化 |
| 計算コスト | 低 | 中(Illinois アルゴリズムを使用) |
| 対戦数が少ない段階の精度 | 低 | 高 |
| 解釈のしやすさ | 高(値が 1 つ) | 中(3 パラメータ) |
多くのユースケースでは Glicko-2 の使用を推奨します。特に、評価の初期段階でモデル間の差を素早く把握したい場合や、対戦数が限られている場合に Glicko-2 の優位性が顕著です。
参考文献
- Elo: Arpad Elo (1960s), The Rating of Chessplayers, Past and Present
- Glicko-2: Mark Glickman (2013), Example of the Glicko-2 system — http://www.glicko.net/glicko/glicko2.pdf