快轉到主要內容
  1. AI/

LLM 幻覺是什麼|為什麼 AI 會說謊與如何降低

Idle Engineer
作者
Idle Engineer
AI Runs. I Nap. | 404 Career Not Found
目錄

TL;DR | 面試情境模擬
#

👴 面試官:LLM 的幻覺(Hallucination)是什麼?怎麼解決?

🧑‍💻 :幻覺是 LLM 生成聽起來有信心但實際上錯誤的內容,例如捏造不存在的論文、給錯誤的 API 名稱、混淆相似的事實。根本原因是 LLM 的訓練目標是「生成高機率的下一個 token」而不是「說出真相」。主要緩解方式:用 RAG 讓模型引用真實文件、降低 Temperature 減少隨機性、要求模型說出資料來源、對輸出做事實核查。


比喻:記憶力很好但會亂掰的人
#

想像一個博覽群書的人,你問他任何問題他都會自信地回答,但他有個毛病:記不住的細節他會「填空」,用聽起來合理的內容補上去。你問他「某本書的第 15 章標題是什麼」,他不會說「我不記得」,而是給你一個聽起來符合這本書風格的標題——可能完全是他編的。

LLM 就是這樣。


幻覺的三種類型
#

1. 事實錯誤(Factual Hallucination)
#

捏造或混淆真實世界的事實。

使用者:愛因斯坦在哪一年獲得諾貝爾獎?因為什麼?
LLM:愛因斯坦在 1921 年獲得諾貝爾物理學獎,表彰他發現相對論。

實際:獲獎原因是光電效應,不是相對論。

2. 知識截止(Knowledge Cutoff)
#

訓練資料有截止日期,對此之後的事件一無所知,但可能會猜。

3. 上下文矛盾(Context Contradiction)
#

模型在長對話中忘記前面說過的內容,或與提供的資料矛盾。


為什麼會發生?
#

LLM 的訓練目標:
  最大化 P(next token | previous tokens)
  模型學到的是「什麼樣的詞語序列在訓練資料裡常出現」
  不是學「什麼是真的」

所以:
  「愛因斯坦獲得諾貝爾獎因為______」
  → 「相對論」和「光電效應」在訓練資料裡都常跟這句話共現
  → 模型可能選了更「常見」但錯誤的填空

緩解幻覺的方法
#

方法 原理 效果
RAG 提供真實文件讓模型引用,限制回答範圍 最有效,事實查詢場景首選
降低 Temperature Temperature=0 讓輸出更確定,減少隨機填空 降低創意但提高準確性
要求引用來源 Prompt 裡要求說明資料來源 讓錯誤更容易被發現
Self-consistency 同一問題問多次,取多數共識答案 成本高,準確率提升有限
事後驗證 用工具或搜尋引擎核查輸出 適合高風險場景
Fine-tuning 在特定領域資料上微調,減少領域外猜測 針對性強,訓練成本高

RAG 如何緩解幻覺
#

沒有 RAG:
  問題 → LLM(從訓練記憶回答,可能捏造)→ 回答

有 RAG:
  問題 → 向量搜尋 → 相關文件片段
         LLM(基於提供的文件回答)→ 回答
         「根據提供的資料,...」

RAG 不能完全消除幻覺,但能把「引用真實文件」和「從記憶猜測」明確分開,大幅降低事實錯誤率。


💡 延伸問題
#

Q1:Temperature 是什麼?設為 0 就沒有幻覺嗎?
#

Temperature 控制輸出的隨機程度。Temperature=0 讓模型每次選擇機率最高的 token(最確定的輸出),Temperature=1 增加多樣性。設為 0 不能消除幻覺,只是讓幻覺更「一致」(每次都說同樣的錯誤)。

Q2:為什麼 LLM 不能說「我不知道」?
#

訓練資料裡,「我不知道」的出現頻率遠低於各種自信回答。RLHF 過程中,人類評分者傾向於給出有內容的回答更高分,進一步讓模型偏向生成答案而非拒絕。改善方式:在 System prompt 裡明確指示「不確定時說不知道」。

Q3:不同模型的幻覺率差多少?
#

根據各種 benchmark(TruthfulQA、HaluEval),GPT-4、Claude 3 Opus 等大型模型幻覺率顯著低於小型模型,但沒有任何模型幻覺率為零。高風險場景(法律、醫療)不應該只依賴 LLM,必須搭配人工驗證或 RAG。