なぜ評価指標が必要か
「このAIは優れているのか」という問いに直感だけで答えることは難しい。特定のタスクでは優れていても別のタスクでは劣るということが頻繁にあり、客観的な比較には定量的な指標が不可欠だ。
LLMの評価指標は大きく「自動評価指標」と「人間評価」に分かれる。自動評価指標はコンピュータが計算できる数値で、大規模な比較を低コストで行える。人間評価は実際のユーザー体験に近いが、時間とコストがかかる。
ここでは自動評価の代表的な指標、そしてベンチマークの読み方を解説する。
Perplexity(困惑度)
何を測るか
Perplexityは言語モデルの「テキストへの驚き度」を表す指標だ。モデルがあるテキストを見たときに、どれだけ予測できたかを測る。Perplexityが低いほど、そのテキストへのモデルの理解が高く、自然言語をより正確にモデル化できていることを示す。
計算方法
Perplexityは、テキストの各トークンの予測確率に基づいて計算される。各トークンに対する「このトークンが来る確率」をモデルが出力し、その幾何平均の逆数がPerplexityだ。モデルが全トークンに高い確率を割り当てれば1に近づき(理想)、確率が低ければ高くなる。
人間が書いた自然なテキストに対して、良いモデルはPerplexityが低くなる。GPT-2がリリースされた時点ではWikitext-103データセットでPerplexity約18だったが、現代の大規模モデルでは5前後まで下がっている。
限界
Perplexityはモデルの「言語モデリング能力」を測るが、回答の有益さや安全性は測れない。また、Perplexityを比較するにはトークナイザーが同じである必要があり、異なるモデル間の直接比較が難しい場合がある。
BLEU(Bilingual Evaluation Understudy)
何を測るか
BLEUは機械翻訳の品質評価のために開発されたが、テキスト生成全般に広く使われるようになった指標だ。「モデルの出力が参照テキスト(正解)とどれだけ一致しているか」をn-gram(連続するn個の単語)の一致率で測る。
計算方法
1-gram(単語)、2-gram(連続する2単語)、3-gram、4-gramそれぞれの一致率を計算し、その幾何平均に短すぎる出力にペナルティ(Brevity Penalty)をかけた値だ。スコアは0〜1(または0〜100)で、1に近いほど参照テキストに近い。
例えば参照テキストが「今日は晴れです」で、モデルの出力が「今日は晴天です」なら、「今日は」という2-gramは一致するが「晴れ」「晴天」は一致しないので、スコアは部分的になる。
限界
BLEUの大きな限界は、意味が同じでも表現が違えばスコアが低くなることだ。「I am happy」と「I feel joyful」は意味が似ているが、BLEUスコアは低い。また参照テキストが1つしかない場合、バリエーションのある正解を評価しにくい。
ROUGE(Recall-Oriented Understudy for Gisting Evaluation)
何を測るか
ROUGEは文書要約の評価のために開発された指標で、BLEUと似た考え方を持つ。BLEUが「出力の何割が参照と一致しているか(Precision)」を重視するのに対し、ROUGEは「参照の何割が出力に含まれているか(Recall)」を重視する点が異なる。
主なバリエーション
ROUGE-1、ROUGE-2はそれぞれ1-gram・2-gramの一致率を使う。ROUGE-Lは最長共通部分列(LCS)を使い、語順も考慮した類似度を測る。要約タスクでは主にROUGE-1・ROUGE-2・ROUGE-Lがセットで報告される。
HELMとMMLUのようなベンチマーク
MMLU(Massive Multitask Language Understanding)
MMLUは多様な分野の多肢選択問題を使ってLLMの知識・推論能力を測るベンチマークだ。数学・物理・化学・歴史・法律・医学など57の分野から合計約14,000問が収録されている。
スコアは正答率(%)で表され、GPT-4は約86%、Claude 3 Opusは約86%、Gemini Ultra は約90%という結果が報告されている(2024年時点)。数値が高いほど広範な知識が必要なタスクに強いことを示す。
HELM(Holistic Evaluation of Language Models)
HELMはスタンフォード大学が開発した包括的な評価フレームワークで、単一の指標ではなく「精度・公平性・効率・安全性・校正(calibration)」など複数の軸でモデルを評価する。特定のタスクに特化したベンチマークとは異なり、モデルの総合的な特性を多面的に評価できる。
HumanEval(コード生成)
OpenAIが公開したHumanEvalは、Pythonの関数を生成するタスクで言語モデルのコーディング能力を評価するベンチマークだ。164の問題に対してパスするコードが書けるかを評価する。Claude CodeやGitHub Copilotのようなコーディングツールの比較によく使われる。
ベンチマークスコアの読み方
数字は全部を語らない
ベンチマークスコアは重要な情報だが、いくつかの注意点がある。まず、ベンチマークの問題がトレーニングデータに含まれているケース(データ汚染)が起きると、スコアが実力よりも高く出る。また、特定のベンチマークに特化したファインチューニング(ベンチマークリーキング)も懸念される。
次に、特定の分野のスコアが高くても、別の分野では大きく劣ることがある。MMLUスコアが高いモデルが、クリエイティブライティングや日本語でのタスクに優れているとは限らない。
複数の指標を組み合わせて見る
実務での選択に役立てるには、用途に近いベンチマークの結果を重視することと、複数の指標を組み合わせて判断することが重要だ。また、自分のユースケースに近いタスクで実際にテストすることが、最終的には最も信頼できる評価になる。
まとめ
Perplexityはモデルの言語モデリング能力を、BLEUとROUGEは生成テキストと参照テキストの一致度を、MMLUやHELMは知識・推論・総合性能を測る指標だ。それぞれ目的が異なり、単一の指標だけでモデルの優劣を判断することはできない。ベンチマークスコアは参考情報として活用しつつ、自分の用途に合ったタスクでの実テストを評価の最終判断とする姿勢が実務では不可欠だ。