言語モデルの評価指標

Eval

言語モデルの評価指標

まとめ
  • 言語モデル評価の代表指標とタスクごとの使い分けを整理します。
  • 翻訳・要約・生成タスクで使われる自動指標とその計算例を紹介します。
  • 人手評価や LLM を用いた評価との組み合わせ方、バイアス対策をまとめます。

言語モデル評価の全体像 #

翻訳、要約、自由生成などの言語タスクでは「正解が 1 つでない」ケースが多く、評価指標にも多様なアプローチがあります。ここでは n-gram ベース埋め込みベースLLM を用いた評価 の 3 つに分類し、それぞれの特徴と注意点を解説します。


1. n-gram ベース指標(語彙一致を重視) #

指標何を見るか特徴
BLEUn-gram Precision + 短縮ペナルティ機械翻訳の定番。短文や語順の違いに弱い
ROUGE-1/2/Ln-gram Recall / 最長共通部分列 (LCS)要約タスクで頻用。参照が複数あると実用的
METEORUnigram マッチと同義語・語形変化Recall 志向。英語では WordNet を利用
chrF++文字 n-gram の F-scoreサブワード言語でも頑健。chrF を拡張

使い分けのヒント #

  • BLEU: 既存ベンチマークとの比較が必要な翻訳タスクで。短文には smoothing パラメータを設定。
  • ROUGE: 抽出型要約など Recall を重視するタスク向け。rouge-score パッケージで容易に計算。
  • METEOR: 同義語や語形変化を評価したいタスクに。ただし日本語のリソースは限定的。
  • chrF++: 形態素解析が難しい言語(日本語・中国語など)での翻訳評価に適用。
# sacrebleu を使った BLEU / chrF++ の計算例
import sacrebleu

references = [["今日は良い天気です。"]]
candidate = "今日はとてもいい天気だ。"

bleu_score = sacrebleu.corpus_bleu([candidate], references)
chrf_score = sacrebleu.corpus_chrf([candidate], references)

print(bleu_score.score, chrf_score.score)

2. 埋め込みベース指標(意味的適合を重視) #

指標モデルメモ
BERTScoreBERT / RoBERTa などのトークン埋め込みF1 スコアで意味類似度を算出。多言語対応モデルも利用可能
MoverScoreWord Mover’s Distance の改良版低頻度語も重視。計算コストがやや高い
BLEURTRoBERTa を人手評価でファインチューニング小規模データでも人手評価と高い相関
COMET多言語 Transformer + QA 損失翻訳ベンチマークで高い相関。専用 CLI / API が提供される
QAEval / ParaScore質問生成・回答の整合性を確認意味的一貫性を QA を通して評価。準備コストが高い

使い分けのヒント #

  • BERTScorebert-score パッケージで簡単に利用でき、日本語 BERT など任意のモデルに対応。
  • BLEURT / COMET は事前学習済みチェックポイントをダウンロードして利用。人手評価との相関が高いが推論コストも大きい。
  • 意味一致を重視したいが計算資源が限られる場合は BERTScore、より精度が必要なら BLEURT / COMET を検討。
from bert_score import score

cands = ["今日はとてもいい天気だ。"]
refs = ["今日は良い天気です。"]

P, R, F1 = score(cands, refs, lang="ja", model_type="cl-tohoku/bert-base-japanese")
print(F1.mean().item())

3. LLM を用いた評価(LLM-as-a-Judge) #

手法概要注意点
LLM 直接採点GPT-4 などに参照と候補を渡し採点させるプロンプト設計が重要。バイアスと一貫性に注意
LLM + ルーブリック評価基準(流暢さ・忠実度など)を明示し、各項目を採点粒度が上がるがコストも増加
LLM + 自動QALLM に質問生成と回答整合性チェックをさせる長文要約で有効。質問品質が評価に影響

ガイドライン #

  • プロンプトとシステムメッセージを共有し透明性を確保。
  • 温度・乱数の設定を固定し、複数回実行して平均を取る。
  • 自動指標だけでなく、人手評価との相関を定期的に確認。

指標選定のフローチャート #

  1. タスクを明確化
    • 翻訳・要約 → n-gram 指標 + 意味指標
    • 自由生成・対話 → 埋め込み指標 + LLM 評価
  2. 参照データの有無
    • 参照が十分 → n-gram 指標に加えて BERTScore など
    • 参照が少ない → LLM 評価や人手評価を併用
  3. コストと再現性のバランス
    • 軽量・高速 → SacreBLEU / BERTScore
    • 高精度重視 → BLEURT / COMET / GPT-Judge

チェックリスト #

  • 参照データの品質と量を確認したか
  • 自動指標と人手評価(または LLM 評価)の両方で傾向を把握したか
  • 語彙一致と意味的整合性のどちらを重視するか決めたか
  • 評価プロンプトやパラメータを文書化し再現性を担保したか
  • バイアス(評価者・モデル・データ)を検知するための仕組みを整えたか

参考リンク #

複数の指標を組み合わせ、定期的に人手評価との相関を確認しながら、目的に合った評価パイプラインを構築してください。