この記事は、書籍『Kaggleではじめる大規模言語モデル入門』の輪読会で学んだテーマを、自分の言葉で整理・深掘りしたものです。
はじめに
前回の記事では分類タスクの評価指標を整理しました。今回はその続きとして、
- 回帰 :MSE / MAE / RMSE / RMSLE / 相関係数 / QWK
- 生成 :BLEU / ROUGE
- 検索・推薦 :Recall@K / MAP@K
- そして「 損失関数と評価指標はなぜ一致しないのか 」
を扱います。NLP のタスクは、突き詰めると分類・回帰・生成・検索/推薦のいずれか(またはその組み合わせ)に帰着することが多く、「このタスクはどれに当たるか?」→「ならば評価指標はこれ」という思考の型を持っておくと、コンペでも実務でも見通しが良くなります。
回帰タスクの評価指標
回帰は連続値を予測するタスクです。分類が「どのラベルか」を当てるのに対し、回帰は「どれくらいか」を当てます。NLP での例を挙げると、
- レビュー文から評価スコア(★1〜5)を予測する
- 記事のタイトルから PV 数を予測する
- 作文から採点スコアを予測する(自動採点)
などがあります。評価指標はどれも「予測値 $\hat{y}_i$ と真の値 $y_i$ のズレの測り方」の違いです。
MSE / MAE / RMSE
\mathrm{MSE} = \frac{1}{n}\sum_{i=1}^{n}\bigl(y_i-\hat{y}_i\bigr)^2, \qquad \mathrm{MAE} = \frac{1}{n}\sum_{i=1}^{n}\bigl|y_i-\hat{y}_i\bigr|, \qquad \mathrm{RMSE} = \sqrt{\mathrm{MSE}}
- MSE(平均二乗誤差) :誤差を2乗するため、 大きな外れに敏感 。外れ値が1つあるだけで値が跳ね上がる
- MAE(平均絶対誤差) :誤差を等しく扱うため、 外れ値にロバスト
- RMSE :MSE の平方根をとることで、 目的変数と同じ単位 で解釈できる(「平均して±3点くらいズレる」のような読み方ができる)
誤差 $e$ に対するペナルティの形を比べると、二乗誤差(青)は誤差が大きい領域で急激に立ち上がるのに対し、絶対誤差(オレンジ)は直線的に増えるだけです。
MSE が外れ値に敏感で、MAE がロバストである理由はこの形の違いにあります。
MSE 最小化は平均値の予測、MAE 最小化は中央値の予測に対応する、という性質も覚えておくと使い分けの指針になります。
RMSLE:相対誤差を見る
\mathrm{RMSLE} = \sqrt{\frac{1}{n}\sum_{i=1}^{n}\bigl(\log(1+y_i)-\log(1+\hat{y}_i)\bigr)^2}
対数をとってから RMSE を計算する指標で、 比率(相対誤差)を重視 します。
PV 数の予測のように値のスケールが桁で変わるタスクでは、「100万PVの記事で10万ズレる」より「100PVの記事で10万ズレる」ほうを重く罰したい。
RMSLE はそれを指標に反映できます。
PCC:相関の強さを見る
\mathrm{PCC} = \frac{\sum_{i=1}^{n}(y_i-\bar{y})(\hat{y}_i-\bar{\hat{y}})} {\sqrt{\sum_{i=1}^{n}(y_i-\bar{y})^2}\sqrt{\sum_{i=1}^{n}(\hat{y}_i-\bar{\hat{y}})^2}}
ピアソンの積率相関係数は、予測値と真値の 線形な相関の強さ を測ります。
誤差の絶対量ではなく傾向の一致を見るため、AUC と同様に予測値のスケールに鈍感で、アンサンブルしやすい指標です。
QWK:順序のある離散値の指標
★1〜5 の採点のように 順序のある離散値 の予測は、分類とも回帰とも捉えられます。
ここで使われるのが QWK(Quadratic Weighted Kappa、二次重み付きカッパ係数) です。
ポイントは「★1を★5と間違える」のは「★1を★2と間違える」より重い、という ズレの大きさを2乗で重み付け して一致度を測ることです。
値はおおむね $-1$〜$1$ の範囲をとり、1 で完全一致、0 で偶然の一致と同程度を意味します。
エッセイ自動採点系のコンペで頻出の指標です。
生成タスクの評価指標
生成タスクは、最終的な出力が テキスト であるタスクです。入力は何でもありえます。
| 入力 | 出力 | タスク例 |
|---|---|---|
| テキスト | テキスト | 機械翻訳、要約、質問応答 |
| 音声 | テキスト | 音声認識、議事録作成 |
| 画像 | テキスト | 画像キャプション生成 |
| 表データ | テキスト | 分析レポートの自動生成 |
正解が一意か、複数か
生成タスクの評価を考えるとき、最初に確認すべきは「正解がほぼ一意に定まるか」です。
| タイプ | 例 | 評価 |
|---|---|---|
| 正解がほぼ一意 | 音声認識、OCR、数式の書き起こし | 正解文字列との一致度で機械的に評価できる |
| 正解が複数存在 | 翻訳、要約、対話、文章生成 | 評価指標の設計自体が難しい |
「良い要約」や「自然な翻訳」は何通りも存在するため、単純な文字列一致では評価できません。
生成 AI の評価が今も学術的にホットな課題であり続けているのは、この「正解の多様性」が根本原因です。
BLEU と ROUGE:n-gram の重なりで測る
古典的かつ今も広く使われるのが、参照文(人手で用意した正解例)と生成文の n-gram の重なり で測る指標です。
| 指標 | 主な用途 | ベースの考え方 |
|---|---|---|
| BLEU | 機械翻訳 | n-gram の 適合率 (生成文の n-gram のうち参照文にも出る割合)+短すぎる出力へのペナルティ |
| ROUGE | 要約 | n-gram の 再現率 (参照文の n-gram のうち生成文がカバーする割合) |
なぜ翻訳は適合率で、要約は再現率なのかは、それぞれで起こりやすい失敗を考えると理解しやすくなります。
- 翻訳の典型的な失敗は「余計なことを言う・でたらめを混ぜる」→ 生成文側の正確さ(適合率)を見たい
- 要約の典型的な失敗は「重要な情報を落とす」→ 参照文側のカバー率(再現率)を見たい
簡単な例で確認します。参照文と生成文を単語分割したとします。
参照文: 猫 が ソファ で 寝て いる
生成文: 猫 が ソファ で 眠って いる
1-gram で見ると、生成文の6語のうち5語(猫/が/ソファ/で/いる)が参照文に含まれるので適合率は 5/6。参照文の6語のうち5語がカバーされているので再現率も 5/6 です。
しかし「寝て」と「眠って」は意味がほぼ同じにもかかわらず不一致扱いです。
これが表層一致指標の限界で、
- 言い換えに弱い (同義語を別物として数える)
- 語順の入れ替えに弱い (n を大きくすると特に)
- 意味が合っていてもスコアが低く出ることがある
という弱点につながります。
近年は埋め込みベースの BERTScore や、LLM に評価させる LLM-as-a-Judge など、意味レベルの評価手法も広く使われるようになっています。
検索・推薦タスクの評価指標
検索・推薦は、大量の候補から 関連するもの・好みに合うものを上位に並べる タスクです。
- 検索 :クエリに関連する文書を順位付けする(検索エンジン)
- 推薦 :ユーザーに合いそうなアイテムを提示する(EC サイトのレコメンド)
LLM の文脈では、 RAG(検索拡張生成)の検索部分 がまさにこのタスクであり、重要度が一気に上がりました。
ユーザーが実際に見るのは上位数件〜数十件だけなので、 上位 K 件の品質を評価する指標 を使います。
Recall@K
\mathrm{Recall@K}=\frac{\bigl|\text{正解アイテム}\cap \text{上位 } K \text{件}\bigr|}{\bigl|\text{正解アイテム}\bigr|}
上位 K 件の中に、正解アイテム全体のうちどれだけが含まれているかを測ります。
K 件以内に入ってさえいれば順位は問わない のが特徴です。
RAG では「後段の LLM が候補の中から必要な情報を選んでくれる」ため、まず Recall@K を確保することが最優先になります。
MAP@K
順位まで評価したいときに使うのが MAP@K(Mean Average Precision at K) です。
1つのクエリに対する AP(Average Precision)を計算し、全クエリで平均します。
AP は「正解を引き当てた各順位における Precision の平均」です。
例として、K=5 の検索結果のうち 1位・3位・4位が正解(正解は全部で3件)だったとします。
| 順位 | 正解? | その時点の Precision |
|---|---|---|
| 1 | ○ | 1/1 = 1.00 |
| 2 | × | ― |
| 3 | ○ | 2/3 ≈ 0.67 |
| 4 | ○ | 3/4 = 0.75 |
| 5 | × | ― |
\mathrm{AP@5} = \frac{1}{3}\left(\frac{1}{1} + \frac{2}{3} + \frac{3}{4}\right) \approx 0.81
同じ3件の正解でも、順位が 3・4・5位に沈むと AP は $\frac{1}{3}(1/3 + 2/4 + 3/5) \approx 0.48$ まで下がります。
同じものを当てていても、上位に並べたほうが高く評価される ──これが MAP の本質です。
人間が直接結果を見る検索・推薦では、Recall@K より MAP@K のほうが体験に即した指標になります。
損失関数 ≠ 評価指標
最後に、すべてのタスクに共通する重要な論点を扱います。
学習時に最小化する関数(損失関数)と、良し悪しを測る評価指標は、必ずしも一致しません 。
- 損失関数 :勾配降下法で学習するため、 微分可能 でなければならない
- 評価指標 :人間が見たい「良さ」を表せばよく、微分不可能でも閾値依存でも構わない
たとえば F1 は「閾値でラベルに変換 → 混同行列を集計」という離散的な操作を含むため微分できません。AUC も順序に基づく指標なので同様です。
そこで実務では次の構図をとります。
学習(最適化) 評価(採点)
交差エントロピーを最小化 → F1 / AUC / MAP@K で採点
(微分可能な代理損失) (本当に見たい指標)
代理の損失で学習したモデルの出力を、 閾値調整や後処理で評価指標に寄せる のが定石です。
たとえば
- マクロ F1 が指標なら、クラスごとに予測確率の閾値を検証データで最適化する
- QWK が指標なら、回帰で学習してから区切り位置(★1と★2の境界など)を最適化する
「与えられた評価指標に対して、損失関数と後処理をどう設計するか」は Kaggle 的な工夫のしどころであり、同時に実務でも効く汎用スキルです。
まとめ
- 回帰指標は「ズレの測り方」の違い。外れ値に敏感な MSE、ロバストな MAE、単位が解釈しやすい RMSE、相対誤差の RMSLE、順序付き離散値の QWK
- 生成タスクは「正解が一意か複数か」で難易度が激変する。BLEU(翻訳・適合率)/ ROUGE(要約・再現率)は手軽だが言い換えに弱い
- 検索・推薦は上位 K 件を評価する。含まれていればよい Recall@K、順位まで見る MAP@K。RAG の検索品質評価にも直結
- 損失関数は微分可能な「代理」であり、評価指標とは別物。閾値調整・後処理で評価指標に寄せる
次回はテーマを変えて、テキストを数値ベクトルに変換する伝統的手法(BoW から word2vec まで)の進化を追います。
参考
シリーズの他の記事
