AI(特に大規模言語モデル、LLM)において「ハルシネーション(hallucination)」が発生する根本的・本質的な原因は、モデルの学習原理と推論手法そのものにあります。 以下に、できる限り技術的・構造的に詳しく説明します。
✅ 定義:AIにおける「ハルシネーション」とは?
モデルが実際には存在しない、事実に反する、または文脈と無関係な情報を生成してしまう現象
例:
- 架空の論文やURLを「もっともらしく」提示
- 存在しないAPI名や関数を返す
- 歴史的事実を捏造する(例:日本の総理大臣の名前を間違える)
🔍 技術的に詳解:ハルシネーションの本質的原因
① モデルの目的関数:次単語予測(言語モデリング)
LLMは以下のような学習目標で訓練されます:
🔧 損失関数(例:クロスエントロピー)
P(w₁, w₂, ..., wₙ) ≈ ∏ P(wᵢ | w₁, ..., wᵢ₋₁)
→ これは「正しい情報を出す」ためではなく、「文脈上もっともらしい単語を予測する」ことに最適化されている。
❗ 結果:
- モデルは「事実性」ではなく「言語的自然さ(尤度)」を追求
- よって、もっともらしいけど間違っていることを言う
② 記憶と構成の混在(parametric knowledge)
モデルが持つ知識は、以下のようにパラメータの中に「暗黙に」埋め込まれています:
知識 ≠ 明示的なDB 知識 ≈ 膨大な文脈の統計的パターン
❗ 結果:
- 実在しない構造を合成する能力=創造性=ハルシネーションの温床
- 記憶ベースではなく「再構成ベース」
③ 学習データのバイアス・ノイズ・欠落
❗ 根本原因のひとつ:
- 学習データに正確な情報が含まれていない、または矛盾している
例:
→ モデルは「中間的に見える答え」を合成して出してしまう
④ 推論時の非決定性(sampling)
生成時には確率分布に基づいてトークンがサンプリングされます:
temperature,top-k,top-p(nucleus sampling)などの設定により、**確率的に「多少ずれた選択」**が行われる
# 温度が高いほど、低確率トークンも選ばれやすくなる token = sample(P(token | context), temperature=0.9)
❗ 結果:
- 安定性や事実性が犠牲になる
- 複数回問い合わせると違う出力になるのもこのため
⑤ トレーニングと実行の文脈不一致
学習時:巨大なデータコーパス 実行時:人間が短いプロンプトだけを与える
- 例:「このコードを説明して」と聞かれても、そのコードの来歴や周辺文脈はモデルは知らない
→ 文脈不足から補完的に「ありそうな説明」を捏造する
⑥ モデルのスケーリングの副作用
大規模化(数千億パラメータ〜兆単位)によって:
- 言語の「構文・語彙・関連性」は非常に正確に生成されるようになったが、
- 「事実性」や「情報の正確さ」のチェック機構が存在しない
❗ 結果:
- ハルシネーションの**「もっともらしさ」だけが増す**
🔧 対策・緩和策(技術)
| 手法 | 説明 |
|---|---|
| RAG(Retrieval-Augmented Generation) | 外部の正確な情報(例:検索エンジン、社内DB)を取り込み、生成時に参照させる |
| ファクトチェックモデルとの統合 | 生成後に別のモデルで事実性をチェックし、フィルタ |
| プロンプトエンジニアリング | 「正確な情報だけを出して」「出典を付けて」など明示する |
| ファインチューニング/インストラクションチューニング | ハルシネーションを抑えるように追加学習 |
| モデルの温度調整 | temperature=0 で決定的に(ただし創造性は低下) |
✅ まとめ:ハルシネーションの本質
| 要因 | 説明 |
|---|---|
| モデルの目的 | 文の尤度(自然さ)を最大化しているだけ |
| 知識の表現 | 統計的・再構成的な「平均知識」しか持たない |
| 推論の仕組み | 確率的であり、検証や参照を伴わない |
| 文脈の限界 | 学習時とのギャップにより補完的に捏造 |
| 出力の制御 | ユーザの意図や事実性をチェックしない |
もしご興味があれば、「RAGを使ったハルシネーション抑制の実装方法」や、「OpenAIがどうハルシネーション低減に取り組んでいるか」などもご紹介できます。