Semantic Entropy(セマンティックエントロピー)
LLMの複数サンプルを意味クラスタにグループ化し、意味的なばらつき度合いでハルシネーションを確率論的に検出する手法(Kuhn et al. 2023)。字句ではなく意味の不確実性を測定。
Semantic Entropy
概要
Semantic Entropy(意味的エントロピー)は、Lorenz Kuhn、Yarin Gal、Sebastian Farquhar(Oxford大学、2023年6月・Nature誌掲載2024年)が提案した、LLMのハルシネーション検出手法である。従来のn-gramやBERTスコアベースの一貫性測定が「字句の一致」に依存していた問題を解決し、「意味的な一致」を軸とした確率的不確実性でハルシネーションを定量化する。
Nature掲載(2024年): 「Linguistic hallucinations predicted by failure to encode uncertainty in language models」として権威ある学術誌に掲載され、LLM信頼性研究の重要論文として引用が急増している。
核心的アイデア
既存の手法では「東京は日本の首都です」と「日本の首都は東京です」が字句的に異なるため「不一致」と判定されてしまう誤判定が生じていた。Semantic Entropyは生成サンプルを意味的等価クラス(Semantic Equivalence Class: SC)へグループ化することでこの問題を解決する。
アルゴリズム詳細
Step 1: 複数サンプリング
温度パラメータ T > 0 でプロンプトを N 回生成(典型的にN=10〜20)。
Step 2: NLI双方向含意チェック
全サンプルペア (sᵢ, sⱼ) に対してNLIモデルを使用し、双方向で「含意(entailment)」が成立するペアを同一意味クラスに分類。
Step 3: クラス確率の計算
各意味クラスCₖに属するサンプルの対数確率の和を正規化してクラス確率 p(Cₖ) を算出。
Step 4: Shannon Entropy計算
Semantic Entropy = -Σ p(Cₖ) × log p(Cₖ)
意味クラスが1つに集中(高確信)→ 低エントロピー。分散(高不確実)→ 高エントロピー。
評価結果
| タスク | AUROC (SelfCheckGPT) | AUROC (Semantic Entropy) |
|---|---|---|
| TriviaQA | 0.742 | 0.818 |
| SQuAD | 0.703 | 0.789 |
| BioASQ | 0.668 | 0.741 |
| NQ Open | 0.721 | 0.803 |
全ベンチマークでSelfCheckGPTを上回るAUROCを達成(LLaMA-2-70B使用)。
字句エントロピーとの比較
入力: 「フランスの首都は?」
サンプル1: 「パリです」
サンプル2: 「フランスの首都はパリです」
サンプル3: 「パリがフランスの首都です」
字句エントロピー: 高い(3つとも字句が異なる)
Semantic Entropy: 低い(3つとも同一意味クラス = 低ハルシネーションリスク)
実用上の制約
- NLIモデルがN²回のペアチェックを要するためO(N²)のオーバーヘッド
- トークン対数確率が取得できないAPIのみのアクセス環境では計算不可
- 質問応答タスクに最適化されており、長文生成への汎用性は限定的
2025年の応用
- Selective Generation: Semantic Entropyがしきい値を超えた回答は「わかりません」と棄権するシステム
- Active Learning: 高エントロピーサンプルを優先的に人手検証へ回すALパイプライン
- アダプティブRAG: 高エントロピー判定時に追加検索を自動実行
まとめ
Semantic Entropyは、意味的等価クラスへの集約とShannon Entropyの組み合わせにより、字句的バリエーションに惑わされずにLLMの確率的不確実性からハルシネーションを検出する先進的な手法である。Nature掲載の理論的裏付けと複数ベンチマークでの優位性が実証されており、2025年時点でLLM信頼性研究・医療AI・QAシステムへの応用が活発に進んでいる。