從 Event Loop 到 Transformer Attention,用網頁教你懂「AI 為什麼會亂講話」
TL;DR(Too Long; Didn’t Read)
「幻覺」(Hallucination)不是錯誤,而是生成式 AI 在缺乏記憶時的預測行為。
就像瀏覽器的 Event Loop 在等待事件時仍保持運行,AI 也會在「沒有資料」的情況下主動補完語意。👉 本文用前端思維重現生成式 AI 的幻覺現象,從 JS 的非同步運作講到 Transformer 的注意力分配,讓你理解:AI 的幻覺,其實是語言系統的「反射弧」。
開發者都知道:
JavaScript 在等待資料時不會卡住,而是先預測、再回填。
生成式 AI 也是同樣邏輯。
當你問:
「請舉例 2025 年台灣的長照 AI 案例?」
模型若沒見過這個資料,它會「先補」一個合理句子,
好比瀏覽器在 Promise 尚未 resolve 前,先用 Placeholder 畫出畫面。
📌 幻覺的本質:是語言模型的「非同步回應策略」。
想像這段程式:
console.log("使用者問題:請列出台灣AI長照案例");
setTimeout(() => {
console.log("查無實際資料,改用語意補完:");
console.log("根據衛福部與輔大合作的AI照護計畫...");
}, 1000);
console.log("AI正在生成答案中...");
輸出結果:
使用者問題:請列出台灣AI長照案例
AI正在生成答案中...
查無實際資料,改用語意補完:
根據衛福部與輔大合作的AI照護計畫...
這跟生成式 AI 完全一樣:
它的「主執行緒」不能停下來,所以即使缺資料也要先給反應。
這就是幻覺產生的瞬間。
AI 沒有「阻塞 I/O」,而是「語義非同步」。
在 React Fiber 裡,瀏覽器會「分段渲染」,讓畫面不卡頓。
生成式 AI 的 Transformer 也是「分層注意」的。
| 系統概念 | 對應前端 | 對應 AI |
|---|---|---|
| 任務切片 | Fiber reconciliation | Token-by-token decoding |
| 非同步排程 | Scheduler | Beam search / Sampling |
| 部分結果先輸出 | Suspense fallback | Auto-regressive output |
| 錯誤修正 | Commit phase | Reranker / Verifier |
👉 幻覺 ≈ 一次渲染未完成的 Fiber tree。
AI 提早 commit 了語意,但還沒 fetch 到正確的資料。
想像一個用戶滾動頁面時的畫面更新:
每次 scroll 都觸發 repaint,而某些圖片還沒載入。
瀏覽器不會空白一片,而是先放佔位圖。
生成式 AI 在語料缺口時,也會先放「語義佔位」:
例如:「根據 2025 年衛福部政策指出……」
→ 這是語義佔位符(semantic placeholder)。
這樣的幻覺看似錯誤,其實是模型的容錯機制。
若沒有它,AI 的回答會變成「我不知道」一片空白。
可以用網頁重現 AI 的幻覺過程:
當使用者輸入問題時,JS 模擬 Transformer 的 token 流輸出:
const tokens = ["根據", "資料", "顯示", "2025", "台灣", "AI", "長照", "計畫"];
const hallucinate = ["可能", "涉及", "衛福部", "與", "輔仁大學", "合作"];
const hasData = false;
async function generate() {
const output = [];
for (let t of (hasData ? tokens : hallucinate)) {
output.push(t);
console.log(output.join(""));
await new Promise(r => setTimeout(r, 200));
}
}
generate();
效果:
預期結果:「根據資料顯示2025台灣AI長照計畫」
幻覺模式:「可能涉及衛福部與輔仁大學合作」
💡 工程寓意:
生成式 AI 不會「等資料」,它會「預測合理輸出」維持語義流暢。
就像 React Suspense 讓畫面不閃爍,
AI 的幻覺讓回答不中斷。
但差別在於:
因此,我們需要 RAG(檢索增強生成) 與 Verifier(驗證器)
來像 DOM Diff 一樣修正語意樹。
| 類型 | 做法 | 類比前端 |
|---|---|---|
| 事實型任務 | 接資料庫 + RAG | API Fetch |
| 創意型任務 | 高溫度 + 允許幻覺 | CSS Animation |
| 混合型任務 | 兩階段:生成→驗證 | Hydration 後更新 |
重點:
不要追求「零幻覺」,而是要讓幻覺「像瀏覽器 fallback 一樣可控」。
💬 結語:
幻覺不是錯,而是 AI 為了保持流暢性而「先畫後修」。
工程師該做的,是給它正確的 data fetch pipeline,
讓模型像 React 一樣,知道什麼該暫存、什麼該更新。