Zenn
🎼

BERTScoreのPrecision・Recallのお気持ち

2025/03/25に公開

はじめに

生成AIによる文章要約タスクの定量評価でBERTScoreがあると思いますが、BERTScoreで算出する適合率、再現率、F1は何を指しているのか、気持ちをメモしたいと思います。
※文中は適合率、再現率よりPrecision、Recallの方が読みやすいかなと思ったので、混在しています。

BERTScoreとは

事前学習済み言語モデルBERTのベクトル表現を利用して、生成テキストと参照テキスト(正解)との意味的な類似度を評価する自動評価指標です

BERTScoreは従来の単純な語句一致ベースの指標(例:ROUGEやBLEU)が見落としがちな言い換えや語順の違いにも対応でき、文の意味に着目した評価が可能です

要約生成や機械翻訳などで出力された文章を正解データとの類似度で評価することなどに使われています。

https://arxiv.org/pdf/1904.09675

お気持ち

適合率(Precision)

生成した文に含まれる内容のうち、実際に正解文の内容をどれだけ正確に反映できているかを評価することを目的とする。
つまり、『生成文における情報の正確性や品質の高さ』を測定する。

再現率(Recall)

正解文が持つ内容や情報のうち、生成した文がどれだけ網羅的に表現できているかを評価することを目的とする。
つまり、『正解文の内容を取りこぼすことなく再現しているかどうか』を測定する。

BERTScoreではトークン同士をベクトル空間上で比較することで、単語の意味的な類似度を考慮しつつ、この二つの観点(正確性と網羅性)を定量的に評価します。

数式を見たお気持ち

適合率

生成文側から見た類似度です。生成文の各トークンについて、正解文の中で最も類似度が高いトークンを見つけ、その類似度を集計します​。それら最大類似度の平均を取ったものがPrecisionスコアとなります

生成文のトークン集合 x^\hat{x}、正解文のトークン集合 xx とすると、

PBERT=1x^x^jx^maxxix(xix^j)P_{BERT}=\frac{1}{|\hat{x}|}\sum_{\hat{x}j \in \hat{x}}\max{x_i \in x}( \mathbf{x}_i \cdot \mathbf{\hat{x}}_j )

直感的には「生成文中の情報のうち、どれだけ正解文に合致しているか」を表します。

再現率

正解文側から見た類似度です。正解文の各トークンについて、生成文の中で最も類似度が高いトークンを見つけ、その類似度を集計します。​それら最大類似度の平均がRecallスコアです。

RBERT=1xxixmaxx^jx^(xix^j)R_{BERT}=\frac{1}{|x|}\sum_{x_i \in x}\max_{\hat{x}_j \in \hat{x}}( \mathbf{x}_i \cdot \mathbf{\hat{x}}_j )

「正解文の情報がどれだけ生成文でカバーされているか」を表します。

F1スコア

PrecisionとRecallの調和平均として定義されます

FBERT=2PBERTRBERTPBERT+RBERTF_{BERT} = 2 \frac{P_{BERT} \cdot R_{BERT}}{P_{BERT}+R_{BERT}}

PrecisionとRecallのバランスを取った単一の類似度指標で、0〜1の値を取ります。

通常、BERTScoreのF1スコアが最終的な評価値として用いられます。必要に応じてPrecisionやRecallも分析されます。また、オプションで各トークンの重要度に応じてIDF重みを掛ける拡張も提案されています​。(出現頻度の低い単語に高い重みを与え、意味的に重要なキーワードのマッチを強調する目的)

要約とスコア例

病気のレポート要約とBERTScoreの対応

例えば、正解要約が「患者は37.5℃の発熱と咳嗽(がある)。胸部レントゲンで肺炎を疑う所見がみられた。」という文章で、モデル生成要約が「患者に発熱(37.5℃)と咳がみられ、胸部エックス線写真で肺炎の疑いがある。」だったとします。

この場合、表面的には一部表現が異なりますが、BERTScoreでは以下のように評価されます。

「発熱」と「発熱」は同じ単語であり、そのベクトル類似度は非常に高くなります(ほぼ1に近い値)。
「咳嗽(せきそう)」と「咳」は表記が異なりますが、いずれも「咳(せき)」という症状を指す言葉です。BERTの埋め込み空間ではこれらは近いベクトルとなるため、高い類似度を示します。

つまり、従来のn-gram一致ではマッチしないこうした言い換えも、BERTScoreでは正しく類似語として評価されます​。

「胸部レントゲン」と「胸部エックス線写真」も同義語関係にあり、高い類似度でマッチします。

双方の要約に登場する「肺炎」というキーワードも完全一致するため類似度スコアに大きく貢献します。

このように主要な情報はすべて対応が取れているため、Precision・Recallともに高くなり、BERTScoreのF1も1に近い非常に高い値となることが期待できます。実際、欠損や不整合がなければ完全一致に近い評価が得られます。

一方、もう少し極端なケースで考えると、例えば生成要約が「患者に強い頭痛があり入院した。」のように、元の正解要約に無い情報(頭痛)を含んでいたとします。

この場合、「頭痛」に対応する正解文のトークンが存在しないためその類似度は低く、Precisionが下がります。また、正解文にあった「発熱」「咳嗽」等が生成文中に見当たらない場合、それら正解トークンの最大類似度が低くなるためRecallが下がります。
BERTScoreはこのように内容の過不足にも敏感に反応します。

まとめ

適合率≒要約の正確性、再現率≒要約の網羅性、F1≒そのバランスととらえることができます。

それぞれの値を個別に見ることで、例えば「このモデルは情報を盛り込みすぎる傾向がある(Precision低・Recall高)」や「情報を削りすぎる傾向がある(Precision高・Recall低)」といった要約の性質を分析できます。

BERTScoreの適合率、再現率がなんなのか、お気持ちを生成AIに調べてもらった結果をまとめました。

ヘッドウォータース

Discussion

ログインするとコメントできます