チャプター 13 · ハルシネーション · 9 min
なぜLLMは作り出すのか
キャリブレーション、誤った確信、対策。最も多い批判の裏にある構造的メカニズム — そしてそれに対して何ができるのか。
最も頻繁な批判
LLM にニッチなテーマについて質問する。モデルは自信たっぷりに答える——書誌情報、日付、引用文。確認してみる。その本は存在しない。日付は間違っている。引用は捏造だ。
この現象には公式な名前がある——ハルシネーション——そして、これはおそらく LLM に対して人々が真っ先に向ける批判だ。たまに起こるバグではない。構造的な性質だ。なぜそうなのかを理解するには、モデルがどのように学習されたかに立ち戻る必要がある。
組み合わさる 3 つのメカニズム
1. クロスエントロピーは不確実性を報酬としない。 事前学習中(第 06 章)、目的は正しいトークンの対数確率を最小化することだ。モデルが「わからない」と言うことを学ぶ瞬間は一度もない——常に何かを、できる限りもっともらしく予測することを学ぶ。正しい答えが重みの中になければ、モデルは無知の告白ではなく、最ももっともらしく聞こえる文字列を生成する。
2. RLHF は正直さよりも自信を報酬とする。 アラインメント中(第 08 章)、人間が応答をランク付けする。平均すれば、人間は「確信がない」よりも、自信に満ちて言い回しの良い回答を好む。報酬モデルはこのバイアスを学び、LLM は——実際にはそうでなくても——確信があるように見せることを学ぶ。
3. 内部の検証ループがない。 引用を捏造する人間は立ち止まり、疑い、確認しに行く。トークンごとに生成する LLM にはそのようなメカニズムはない。外部のチェックなしに前進し、各トークンは同じもっともらしさの論理のもとで次のトークンを生む。
ハルシネーションはバグではない。常にもっともらしいテキストを生成するように学習されたシステムが、その重みの中に答えがない問いに出会ったときに起こることだ。
キャリブレーションの問題
よくキャリブレーションされたモデルとは、表明する自信が正解する確率と一致するモデルのことだ。「80 % 確信している」と言うなら、約 80 % の確率で正解しているはずだ。
素の LLM(RLHF 前)は、内部確率について驚くほどよくキャリブレーションされている。しかしアラインメントはモデルを脱キャリブレーションする——自信を報酬とすることで、モデルを自分自身の予測の統計的な真実から引き離してしまう。
これが「自信たっぷりにハルシネーションを起こす」モードの説明になる——モデルが自分が知らないことを知らないわけではない。学習プロセスがその不確実性を隠すようモデルを押しやったのだ。
モデルは自分の発言ひとつひとつに確率を割り当てる。誤っているが文脈的にもっともらしい主張は、しばしば高いスコアを得る:これがハルシネーションの構造的なメカニズムであり、パッチで直る単発のバグではない。
いくつかの質問で遊んでみよう。表明される自信と、実際に正解する確率が、必ずしも同じ曲線をたどらないことを観察してほしい。+ RAG や + 拡張された推論を切り替えて、対策がそのギャップをどう縮めるかを見てみよう。
4 つの対策ファミリー
ハルシネーションはより良いアラインメントでは消えない。それらは構造的だ。実際に減らすには、より良いモデルだけでなく、システム的なてこが必要だ。
1. モデルをツールに接続する(第 11 章)
ルール——LLM が苦手なものはすべて、決定論的なシステムに委ねる。導関数を計算する? コードインタープリタ。株価を取得する? API。ファイルが存在するか確認する? ファイルシステムツール。モデルはもう結果を推測しようとしない——それを観察する。
効果——ツールがカバーする領域でのハルシネーションはゼロに落ちる。それ以外の領域でのハルシネーションは残る。
2. RAG(第 10 章)
あるテーマについてモデルが覚えていることを尋ねるのではなく、応答時に信頼できる情報源を提供する。書誌的・事実的なハルシネーションは大きく減る。なぜならモデルは想像することではなく、読んでいることを引用できるからだ。
限界——情報源が悪いか、うまく取得されなかった場合、モデルはその内容についてハルシネーションを起こす。良い情報源があっても、過剰に外挿することがある(「情報源は X と言っている、だから必然的に Y だ」)。
3. 拡張された推論(第 17 章)
応答する前に下書きを検証する時間を取るモデルは、間違いが少ない。推論モデル(o1、o3、Claude extended thinking)は不可視の思考の連鎖を生成し、その中で再計算したり、あるステップを否定したり、別の道を取り直したりできる。
これは不完全だ——モデルは推論の中でもハルシネーションを起こしうる——が、ステップを展開するという単純な行為だけで、エラーのかなりの部分が捕まえられる。
4. 不確実性に対して明示的にファインチューニングする
研究側で最も有望な角度——モデルに棄権を学習させる。(質問, 応答) のペアを提示する。そこでは内部確率が低いとき、正しい応答は「わからない」や「その情報は持っていない」だ。モデルは自分自身の自信レベルを認識し、それを伝えることを学ぶ。
複数のラボがこれに取り組んでいる(DeepMind、Anthropic)。まだロバストとは言えないが、問題の根本に本当に切り込む唯一の技術だ。
実際にハルシネーションを検出する
ユーザー側で役に立つヒューリスティックをいくつか。
- 情報源を求める。 モデルが情報源を引用できなかったり、捏造したりするなら、その応答は怪しいものとして扱う。
- 具体的なものを確認する。 固有名詞、日付、正確な数字、引用はリスクゾーンだ。一般的な内容はたいてい大丈夫。
- 質問を別の言い方で言い直す。 捏造しているモデルは、同じ質問を言い直されたとき一貫した応答をすることが多い——しかしまったく違う言い回しに対しては一貫しない応答をする。
- モデルに自信レベルを尋ねる。 不完全だが、特に最近のモデルでは実際の応答品質と相関している。
- 別のモデルとクロスチェックする。 ハルシネーションがモデル間で同じであることはめったにない。GPT-4 と Claude が一致する応答は、正しい確率がはるかに高い。
押さえておくべきこと
3 つだ。
一つ。 ハルシネーションはモデルの欠陥ではない——その学習目的の帰結だ。表面的なファインチューニングではどれも消えない。
二つ。 本番環境で機能する対策はシステム的なもの(RAG、ツール、推論、棄権)だ。単独で完璧なものはない——組み合わせれば、ほとんどのケースでハルシネーション率を許容できるレベルまで下げられる。
三つ。 エンドユーザーにとって、最良の防御は、特に具体的な詳細(情報源、日付、数字)について、盲目的に信用しないことだ。LLM が自信たっぷりに答えてくれることは、それが正しいことの証拠ではない。
LLM に「確かか?」と尋ねるのは検証ではない。それはもっともらしいテキストの、もう一回の生成に過ぎない。
更新日