生成AIは、時々間違った情報を作り出してしまうことがあります。これを「ハルシネーション」と呼びます。この記事では、ハルシネーションがどうして起こるのか、そしてそれを防ぐ方法を説明します。

ハルシネーションが起こる理由

ハルシネーションは、大きく3つの原因で起こります。

1. LLMの学習データが原因

LLMの学習データが、ハルシネーションの大きな原因になります。

誤情報の含有: LLMが学習するデータに古い情報や誤った情報が含まれている場合、モデルはその情報を学習し、誤った答えを生成することがあります。LLMはデータ内のパターンを学習するため、誤情報であってもそれを再現してしまう可能性があります。

知識の限界: LLMが学習するデータに特定分野の知識が十分に含まれていない場合、正確な答えを出せないことがあります。この場合、モデルは他の類似した情報に基づいて推測するため、誤った情報を生成するリスクが高まります。

2. LLMの学習方法が原因

LLMがどのように学習したかも、ハルシネーションの原因になります。

アーキテクチャの問題: LLMは通常、Transformerアーキテクチャに基づいています。Transformerは自己注意機構を使用してトークン間の関係を学習しますが、その設計上、特定の条件下では長いコンテキストや微細な文脈を十分に捉えきれないことがあります。このため、文脈から逸脱した内容が生成される可能性があります。

Softmax関数の限界: 出力層のSoftmax関数で、LLMが各トークンに対して計算したスコアを確率分布に変換し、その中から最も確率の高いトークンを次の出力として選択します。
しかし、確率分布が過度にシャープ化(極端に偏った形)されると、特定のトークンに対して過剰な自信を持ってしまい、誤った選択をすることがあります。

3. LLMの推論が原因

LLMの推論でも、ハルシネーションの原因が含まれます。

温度パラメータによる多様性: 言語モデルの出力には「温度」と呼ばれるパラメータが関与しており、この温度が高いとより多様で創造的な出力が生成されやすくなります。しかし、その反面、モデルが不確実な推論を行い、ハルシネーションが発生しやすくなる傾向があります。逆に温度が低すぎると、生成される内容が繰り返しやすくなるため、適切なバランスが求められます。

ハルシネーションを防ぐ方法

ハルシネーションを防ぐ方法を紹介します。

1. RAGによる知識の補完

RAGを使えば、AIが外部情報を参考にして答えを作るので、AIが持っていない知識について回答でき、間違った情報を出すことが少なくなります。また、回答結果に加え、回答に利用した参考情報を確認することで、ハルシネーションが起きているかどうか人間側で確認することができます。

現状ハルシネーション対策では最も効果的です。本ブログでも、いくつか解説記事を執筆しています。

2. 温度パラメータを下げる

推論時の温度パラメータを下げることで、ランダム性を抑え、正確なトークンが選ばれる確率を高めます。これにより、ハルシネーションのリスクを減少させます。

3. プロンプトの工夫

プロンプト(LLMに質問や指示を与えるための文)を工夫することで、LLMが間違った答えを作ることを低減することができます。

明確な指示: 曖昧な質問や抽象的な指示を避け、具体的な情報や明確な目的を持った質問をすることが重要です。これにより、モデルが余計な解釈や推測をせず、正確な情報に基づいて応答する可能性が高まります。デコーディング表現の不完全さに対処する手段として有効です。

コンテキストの提供: モデルが誤った結論に至らないよう、必要なコンテキストや背景情報をプロンプトに含めると良いです。モデルが適切な文脈に基づいて回答を生成する可能性が高まります。サンプリングのランダム性による誤ったトークン生成を防ぐことができます。

モデルの制約を明示する: モデルが知らないことや推測に基づく回答をしないように、「わからない場合はその旨を伝えてください。」と指示することも効果的です。

4. ハルシネーションを反復プロンプトで検出(論文)

hall3
To Believe or Not to Believe Your LLMというGoogle DeepMind社の論文では、ハルシネーションを認識論的不確実性偶然性不確実性に分けています。
前者は訓練データの不足やモデルの容量不足など、事実や言語に関する知識不足から生じ(根拠の弱さ)、後者は同じクエリに対して複数の正当な回答が存在するような、予測問題における不可避なランダム性から生じると定義しています。本論文では、認識論的不確実性の推定方法を提案しています。

hall2
具体的には、以下のような手順で推定します。
①LLMにクエリを入力し、初回の応答を取得する。
②応答をプロンプトに追加して再度クエリを行う。このプロセスを数回繰り返す。
③応答の一貫性を定量的に評価するために、相互情報量(MI)を計算する。

相互情報量の値が高いほど、モデルの内部における回答の依存性が強いことを示し、認識論的不確実性が低いことを示します。根拠が確かなら回答は一貫するはずで、もし不確かなら回答がぶれるという考え方です。
逆に、相互情報量が低い場合、回答が独立して生成されている可能性が高く、モデルの知識が不確実であることが示唆されます。

ハルシネーションを定量化できたことで、今後より有効な対策が打てる可能性があります。

参考文献

Yasin Abbasi Yadkori, Ilja Kuzborskij, András György, Csaba Szepesvári. "To Believe or Not to Believe Your LLM." arXiv, 2024. https://arxiv.org/abs/2406.02543. Licensed under CC BY 4.0.