Skip to main content

LLM Evaluation

LLM の評価は、generative model の中でも特に難しい問題です。「正解が一意に決まらない」「benchmark contamination がある」「user 体験は静的 metric では測れない」など、複数の課題を同時に抱えます。

評価軸

代表的 benchmark

Benchmark評価対象
MMLU / MMLU-Pro多分野知識
GPQA大学院レベル科学
HumanEval / MBPPコード生成
LiveCodeBench汚染しにくいコード評価
GSM8K / MATH算数・数学
AIME / MATH-500高難度数学
IFEval指示追従の精密評価
MT-Bench自由対話 (LLM-as-a-Judge)
Chatbot Arena人間 pairwise 投票
SWE-Bench実 GitHub issue 解決
GAIA / AgentBenchAgent 系 task

LLM-as-a-Judge

人手評価が高コストなため、強い LLM (GPT-4 / Claude 系) を judge に使う LLM-as-a-Judge が広まりました。

  • Pairwise (A と B どちらが良いか)
  • Pointwise (1〜10 で評価)
  • Reference-based (正解と比較)

利点は安価で再現性が比較的高いこと。欠点は 判定 LLM の bias (verbosity bias、position bias、self-preference) があることです。

Chatbot Arena

Chatbot Arena は、ユーザーが匿名 2 モデルに同じ質問を投げ、勝者を投票 する人間評価です。Elo / Bradley-Terry rating でランキングを作ります。実利用に近い、もっとも信頼性が高い indicator の一つとして扱われています。

Benchmark contamination

Pretrain corpus に benchmark の解答が含まれていると、評価が無意味化します。最近の対策:

  • Held-out / 新作 benchmark (LiveCodeBench、AIME、GPQA Diamond)
  • N-gram / fuzzy match で contamination 検査
  • Private holdout
  • Process-level 評価 (中間ステップを見る)

評価設計の落とし穴

落とし穴内容
Few-shot 数の違い0-shot vs 5-shot で順位が変わる
Prompt の違いsystem prompt / format で差が出る
Decoding 設定temperature / top-p で差が出る
Judge model の biasLLM judge の自己選好
Cherry-picked tasks公開 task が contamination 済み
単一 benchmark への過適合"MMLU が高い ≠ 強い"

実務では、複数 benchmark + Chatbot Arena + 自社 dogfood の組合せが標準です。

数式で見る LLM-as-a-Judge と Arena rating

Pairwise evaluation では、同じ prompt xx に対する二つの回答 yA,yBy_A,y_B を比較し、どちらが良いかを判定します。Judge model の score を sϕ(x,y)s_\phi(x,y) とすると、A が B に勝つ確率は Bradley-Terry model で次のように書けます。

P(ABx)=σ(sϕ(x,yA)sϕ(x,yB))P(A\succ B\mid x)=\sigma(s_\phi(x,y_A)-s_\phi(x,y_B))

この式の気持ちは、「絶対点ではなく、同じ prompt に対してどちらの回答が相対的に良いかを比較する」というものです。

Chatbot Arena のような rating では、model ii の rating を rir_i として、model ii が model jj に勝つ確率を次のように置きます。

P(ij)=11+10(rjri)/400P(i\succ j)=\frac{1}{1+10^{(r_j-r_i)/400}}

この式は Elo rating の標準的な形です。実利用に近い prompt で人間が pairwise に投票するため、static benchmark よりも user preference に近い signal を得られます。ただし、position bias、verbosity bias、style preference などを制御する必要があります。

Benchmark contamination は、training corpus Dtrain\mathcal{D}_{train} に benchmark item bb が含まれる問題として書けます。

bDtrainb\in\mathcal{D}_{train}

この状態では、model が一般化して解いたのか、記憶していたのかを区別しにくくなります。そのため、時間で切った live benchmark や、新作 problem を使う評価が重要になります。

関連ページ

主なソース