面對模稜兩可的問題,AI 該學會反問:詳解 CLAM 論文與自動化 Oracle 評估機制

1 前言
這篇論文提出了一個名為 CLAM (CLarify-if-AMbiguous) 的框架,旨在解決大型語言模型 (LLM) 在面對定義不清 (Ambiguous) 的問題時,傾向於過度自信地「盲目猜測」或產生幻覺的痛點。
CLAM 賦予了模型一種類似人類的 後設認知 (Meta-cognition) 能力。它不直接回答問題,而是先經過一個「三階段漏斗」:
- 檢測: 判斷問題是否有歧義。
- 提問: 如果有歧義,生成具體的澄清問題詢問使用者。
- 回答: 根據使用者的補充資訊,給出最終精確答案。
此外,為了克服多輪對話評估昂貴且難以複製的挑戰,作者提出了一套基於 Oracle 的自動化評估協議。
2 問題定義
2.1 痛點分析: 沉默的幻覺與惱人的反問
在我們深入 CLAM 之前,必須先理解為什麼這個問題如此棘手。現代的大型語言模型 (LLM) 如 GPT-3,訓練目標通常是「預測下一個最可能的詞」。這種機制導致模型在面對 模稜兩可 (Ambiguous) 或 定義不清 (Under-specified) 的使用者輸入時,會產生一種危險的行為傾向: 過度自信的猜測。
試想一個場景: 使用者問「他什麼時候登陸月球? (When did he land on the moon?) 」。
- 使用者的意圖: 心裡想的是 Alan Bean (阿波羅 12 號) 。
- 模型的行為: 因為訓練數據中 Neil Armstrong 的頻率最高,模型直接回答 “July 20, 1969”。
這產生了兩大問題:
- 幻覺 (Hallucination) 與錯誤歸因: 模型給出了一個「事實正確」但「語境錯誤」的答案。這比完全胡說八道更難被發現。
- 缺乏後設認知 (Lack of Meta-cognition): 模型沒有意識到「我掌握的資訊不足以回答這個問題」,它缺乏人類那種「等等,我不確定你是指誰?」的自我反省機制。
然而,解決這個問題並非單純讓模型「多問問題」這麼簡單。如果我們矯枉過正,設計一個 強制澄清 (Force Clarification) 的系統,模型就會變成一個惱人的機器人,連「法國首都在哪?」這種明確問題都要反問「你是指現在的法國嗎?」。
因此,真正的挑戰在於選擇性 (Selectivity): 模型必須具備判別能力,只在必要時尋求澄清,而在問題明確時保持高效。
2.2 評估的死結
除了模型行為本身,研究領域還面臨一個巨大的方法論障礙: 多輪對話難以評估。 要測試一個會「反問」的系統,傳統上需要真人介入 (Human Evaluation) 來回答模型的澄清問題。這導致實驗成本極高、速度極慢,且無法保證可複製性 (不同受試者的回答品質不一) 。
3 方法介紹
我們將詳細拆解 CLAM (CLarify-if-AMbiguous) 的運作機制。請想像一個使用者的問題進入系統後,會經歷一個「三階段的決策漏斗」。

3.1 第一階段: 歧義檢測 (Ambiguity Detection) —— 守門員
這是整個系統的「大腦」。如果這個分類器失效,系統要麼變啞巴,要麼變聒噪。
3.1.1 核心機制: 將生成轉化為分類
作者並不是重新訓練一個分類器,而是利用 LLM 本身的生成能力。 我們使用 Few-shot Prompting,給模型看幾個範例:
Q: Who was the first woman to make a solo flight across this ocean?
This question is ambiguous: True.
Q: Who was the first woman to make a solo flight across the Atlantic?
This question is ambiguous: False.
Q: [User Input]
This question is ambiguous:3.1.2 關鍵技術: Log Probability 的應用
模型輸出不應該只看生成的文字 (“True” 或 “False”) ,因為文字是離散的,會丟失信心資訊。 CLAM 計算模型生成下一個 Token 為 “True” 的 對數機率 (Log Probability):
接著,我們設定一個閾值 (論文中設為 -0.3) 。
- 若 ,判定為 Ambiguous -> 進入澄清流程。
- 若 ,判定為 Unambiguous -> 直接回答。
3.2 第二階段: 生成澄清問題 (Clarifying Question Generation) —— 提問者
一旦守門員放行 (判定為歧義) ,模型的任務就從「回答」轉變為「提問」。
3.2.1 Prompt 設計的藝術: 強制前綴 (Forced Prefix)
為了防止模型胡言亂語或直接放棄,作者設計了一個帶有強制引導句的 Prompt:
This is a conversation between a user and a question-answering bot.
... (Few-shot Examples) ...
User: {Ambiguous Question}
Bot: To answer this question, I need to ask the following clarifying question:注意最後一行。系統不讓模型生成這部分,而是預先填好。這強迫模型接續這個句子,進入「提問模式」。
3.2.2 運作邏輯
模型會基於 In-context Learning,模仿範例中的模式,識別出問題中的歧義點 (如代名詞 “he” 或多義詞 “bank”) ,並生成針對性的問句 (如 “Who is ‘he’?”) 。
3.3 第三階段: 多輪對話與最終回答 (Resolution & Final Answer) —— 解題者
這是流程的收尾。系統將所有資訊串接起來,形成一個完整的上下文。
3.3.1 上下文拼接 (Context Concatenation)
輸入給模型的最終 Prompt 結構如下:
3.3.2 隱式指代消解 (Implicit Coreference Resolution)
這是 LLM 的強項。模型不需要顯式地重寫問題 (例如把 “he” 替換成 “Alan Bean”) 。透過 Attention 機制,模型會自動將 中的實體資訊與 中的模糊指代對齊,然後檢索正確知識並生成最終答案。
3.4 自動化評估協議 (The Oracle Setup)
為了解決「評估太貴」的問題,作者引入了 Oracle 模型。這是一個在評估階段扮演使用者的 LLM。

3.4.1 運作原理
我們使用一個成對的資料集 。
- CLAM 看到 ,問: 「你是指誰?」
- Oracle 看到 (特權資訊) ,它知道這是關於 Alan Bean 的問題。
- Oracle 回答: 「我指的是 Alan Bean。」
- CLAM 根據這個回答生成最終答案。
3.4.2 評估指標: 調整後準確率 (Adjusted Accuracy)
為了懲罰「亂問問題」的行為,作者設計了一個指標。若模型對一個無歧義的問題進行了澄清 (即使最後答對) ,準確率會被乘以一個懲罰係數 (例如 0.8) 。
這確保了高分模型必須兼具準確性與選擇性。
4 實驗結果
實驗部分是檢驗真理的時刻。這篇論文的實驗設計非常扎實,不僅證明了 CLAM 能夠提升準確率,更重要的是它解釋了「為什麼能贏」以及「贏在哪裡」。我們將重點關注以下三個核心發現。
4.1 實驗設置
為了全面評估 CLAM 的能力,作者使用了三個主要資料集:
- Ambiguous TriviaQA (作者自建) : 包含成對的歧義/無歧義問答,是測試核心能力的主戰場。
- ClariQ: 真實搜尋引擎的查詢紀錄,側重於資訊檢索場景。
- CLAQUA: 專注於實體消歧義 (Entity Disambiguation) 的多輪對話資料集。
4.2 關鍵成效: 準確與效率的甜蜜點

核心發現 1: CLAM 找到了最佳平衡點 在 Figure 5(a) 中,我們可以看到 CLAM 的柱狀圖顯著高於所有 Baseline。
- Default GPT (藍色): 因為從不提問,遇到歧義就瞎猜,導致準確率極低。
- Force Clarification (綠色): 雖然解決了歧義,但因為對所有問題 (包括無歧義的) 都進行反問,被懲罰係數 大幅扣分。
- CLAM (紅色): 準確率最高。這證明了其 選擇性 (Selectivity) 機制的成功——只在必要時出手,平時保持安靜。
核心發現 2: 單純 Prompting 無法檢測歧義 這是一個非常重要的消融實驗結果,請參考 Figure 6。

4.3 組件分析: 生成的品質
除了「什麼時候問」,我們也關心「問得好不好」。
- 澄清問題品質: 人工評估顯示,CLAM 生成的澄清問題在 Ambiguous TriviaQA 上有 84.0% 的正確率,在 CLAQUA 上更是高達 99.0% (見 Table 2) 。這證明了 LLM 具備極強的語言學理解能力,能精確定位歧義點。
- Oracle 可靠性: Oracle 模型在回答澄清問題時的準確率高達 98.8%。這驗證了作者提出的「自動化評估協議」是高度可靠的,未來研究可以放心使用。
5 結論
這篇論文成功地將大型語言模型從一個「盲目的答題機器」轉化為一個「懂得反思的對話者」。
- 解決的問題: 克服了 LLM 在面對歧義問題時的過度自信與幻覺,以及多輪對話評估昂貴的難題。
- 使用的方法: 提出了 CLAM 架構,結合 Few-shot Prompting 與 Log Probability 檢測機制,實現了選擇性澄清 (Selective Clarification)。同時,引入了 Oracle 自動化評估協議。
- 達成的效果: 在多個資料集上顯著提升了 QA 準確率,並證明了該方法能有效區分歧義與非歧義問題,大幅優於單純的 Prompting 策略。