3秒でわかる
生成AIが事実でない内容を、いかにも正しそうな文体で出力してしまう現象。仕組み上ゼロにはできず、検証する前提で使います。
30秒図解
もう少し詳しく
どういうものか
ハルシネーションは、生成AIが存在しない事実や誤った情報を、自信のある文章として出力する現象です。日本語では幻覚と訳されます。実在しない論文の題名と著者を挙げる、実在しないライブラリの関数名を教える、実在する人物に架空の経歴を付ける、といった形で現れます。
原因は、大規模言語モデルが事実を検索して答えているのではなく、直前までの文脈から次に来る確率の高い語を選び続けているからです。「それらしい語の並び」を作る能力と「事実かどうか」を判断する能力は別物で、前者だけで文章が完成してしまいます。
なぜ必要か
この語を知らずにAIを使うと、出力の信頼度を一律に高く見積もってしまいます。危ないのは、8割が正しく2割が誤りという出力です。全部が嘘なら気づきますが、正しい記述の中に紛れた誤りは見落とされます。ハルシネーションという名前が付いていること自体が、出力を検証してから使うという運用を思い出させる役割を持ちます。
具体例
プロンプトの書き方で、ある程度は抑えられます。
悪い例
Reactのパフォーマンス改善について教えて
良い例
Reactのパフォーマンス改善について、公式ドキュメントに記載がある手法だけを挙げてください。
根拠が確認できない項目は挙げず、「確認できませんでした」と書いてください。
各項目に、その<a href="/glossary/api" class="text-primary font-medium underline underline-offset-2 hover:text-primary-dark">API</a>が導入されたバージョンを添えてください。「分からないときは分からないと答えてよい」と明示的に許可を出すと、無理に埋める出力が減ります。バージョンや出典を書かせるのは、確認できる形にすることで嘘が目立つようにする狙いです。
つまずきやすいところ
「AIに事実確認させる」は解決になりません。同じモデルに「今の回答は正しいですか」と聞くと、自分の誤りをもっともらしく擁護する説明が返ってくることがあります。検証は、公式ドキュメントや実行結果など、モデルの外にある情報で行います。コードなら、実際に動かすのが最も確実な検証です。
RAGを使って社内文書を参照させても、ゼロにはなりません。検索で拾った文書に答えが無いとき、モデルが不足分を補って書いてしまう余地が残ります。参照した箇所の引用を必ず出力させ、引用が無い主張は疑う運用にします。
似た用語との違い
| 語 | 指すもの |
|---|---|
| ハルシネーション | 事実でない内容を自信を持って出力すること |
| 誤字や計算ミス | 手順の途中で生じる単純な誤り |
| バイアス | 学習データの偏りが出力の傾向に現れること |
ハルシネーションは能力不足ではなく、次の語を予測するという仕組みそのものから出てくる副作用です。モデルが賢くなるほど頻度は下がりますが、原理が同じである以上ゼロにはなりません。
覚え方
生成AIは、知っていることを話す辞書ではなく、続きを書く作家だと考えます。作家は資料が無くても話をつなげられます。つないだ結果が事実と一致するかは、読む側が確かめる仕事です。