這篇整理一種把 LLM 當成快速決策器的用法:題目附上一組封閉選項,每個選項用一個單 token 代碼表示,模型只輸出一個 token,決策直接取這個 token 的機率分布,不讓模型生成任何推理過程。本篇涵蓋這個分布在量什麼、用途的錯誤代價怎麼決定門檻與樣本數、怎麼取得分布、哪幾類題目適合交給它、它在選項設計與統計判讀上的侷限、它跟能查證的推理與確定性工具怎麼排在同一條流程裡,以及採用之前要怎麼驗證。temperature、top_p 這些取樣參數的完整機制在 3.5 Sampling 與 Decoding 策略,本篇只寫這個用途為什麼需要特定的取樣設定;推理模型怎麼把思考時間變成可擴展的維度在 3.8 Reasoning models。

System 1 與 System 2 的類比與本篇採用的定義

System 1 與 System 2 是心理學的雙歷程(dual-process)理論用語。這組名稱由 Keith Stanovich 與 Richard West 在 2000 年的論文 Individual differences in reasoning: Implications for the rationality debate?(Behavioral and Brain Sciences 23 卷 5 期)提出;Daniel Kahneman 在 2002 年的諾貝爾獎演講〈Maps of Bounded Rationality〉沿用這組名稱並註明出處,再在《快思慢想》(Thinking, Fast and Slow,2011)把它們推廣開來。System 1 是快速、自動、不費力的直覺判斷,System 2 是緩慢、需要專注、可以逐步檢查的推理。

類比到 LLM,System 1 對應「模型讀完輸入之後直接給答案」。System 2 在本篇指能取得輸入以外證據的處理:模型可以讀檔、呼叫工具、查證前提之後再給答案。人也具備這種查證能力,但在本篇的分工裡另列一層(見〈System 1、System 2 與確定性工具的分工〉)。只多生成推理 token、不呼叫任何工具的推理模型,讀不到輸入以外的資料,輸入裡寫錯的前提它一樣讀不到真相,頂多比較容易察覺輸入內部的矛盾;完整推理在推論端多花的計算叫 test-time compute,本篇關心的是其中帶工具查證的那一種。

本篇的 System 1 決策模型指一個具體的操作:題目與選項全部放進輸入,模型的輸出上限設為 1 個 token,決策取那一個位置上各選項代碼的機率。一次這樣的呼叫,計算量是一次完整的 prefill(推論時一次讀完整個輸入的階段):第一個輸出 token 的機率分布,就在 prefill 那次計算的最後一個位置產生。模型照樣用全部的層讀完整個輸入,所以它的「快」來自省掉生成後續 token 的步驟,讀輸入用的計算量和平常相同。一次呼叫的成本因此幾乎只剩輸入 token,延遲接近 TTFT(送出請求到收到第一個 token 的時間);下文會看到,一個實際的用法常常每題要呼叫好幾次(打亂選項順序、先分流再作答),成本要照呼叫次數乘上去。這個成本差在大量、逐筆的判斷上才有份量:每次部署要看的每張截圖、每張進來的工單、每一題送去查證之前的分流,下文的例子都是這一類。

類比的邊界要先劃清楚:人的 System 1 有自己的記憶與經驗,模型的 System 1 只有輸入裡的文字加上訓練時學到的分布。這個差別讓模型讀不到輸入以外的證據,〈單 token 分布的量測對象〉從這一點推出單 token 決策在哪裡可靠、在哪裡危險。

單 token 分布的量測對象

單 token 分布量到的是模型在不做任何查證時,根據輸入文字對各選項的傾向。模型只輸出一個 token 時讀不到檔案、跑不了工具、也沒有機會生成「先確認一下這個前提」的推理。前提違反常識時,模型可以靠訓練時學到的知識察覺(TruthfulQA 這類題組量的就是這種情形);前提是專案狀態這類訓練資料裡沒有的事實時,它判斷前提可不可信只能依輸入本身的線索:輸入裡有前後矛盾、或寫法露出了不確定,它有機會察覺;線索不足時,它以輸入寫的為準。

這個性質把題目分成兩種:

  • 輸入就是全部證據的題目,傾向等於判斷。例如問一張截圖裡哪個按鈕在視覺上最突出,截圖本身就是全部的證據,沒有輸入以外的事實需要查證。
  • 輸入含有未經查證前提的題目,傾向預期會繼承那個前提。假設輸入寫著「這個檢查已經在測試裡涵蓋」,而測試裡並沒有這項檢查,模型預期會依這句話選出「不需要額外處理」,而且可能選得很有把握。能查證的 System 2 在這裡的價值是有機會先去讀那份測試、發現前提是錯的;單 token 決策結構上沒有這個機會。這種前提出現在輸入裡,通常是因為輸入經過某一方的轉述或整理:一個 agent 把自己對專案狀態的理解寫進題目,或上一步的摘要被當成事實傳給下一步。

下文說的信心指被選中那個選項的機率(選項順序打亂過時,是對回選項內容之後的機率;重複取樣時是它被選中的比例),有把握指信心高於事先登記的門檻。輸入含有未經查證前提的題目,可以寫成一個可檢驗的假設:前提錯誤的題目上,單 token 決策會以高信心選錯,而信心高低預測不了對錯。信心與正確率之間的對應關係叫機率校準,本篇查到的校準量測都不是在這種題目上做的:

  • GPT-4 技術報告(2023)讀取模型在 MMLU 子集上給 A、B、C、D 四個選項代碼的對數機率,預訓練模型的信心與答對比例相當吻合,經過後訓練之後校準明顯變差。
  • Saurav Kadavath 等人(2022,Language Models (Mostly) Know What They Know)量到較大的模型在格式合適的選擇題與是非題上校準良好——格式合適指選項全部列在題目裡、模型只用代碼作答——量測也涵蓋 TruthfulQA 這類針對常見誤解設計的題組;同一篇論文還量到,把其中一個選項換成「以上皆非」會明顯降低準確率與校準。
  • CREPE 資料集(Xinyan Velocity Yu 等人,2022)處理的是帶錯誤預設的問句:開放領域問答模型找得出問句帶了哪些預設(表現中等),卻難以判斷那些預設是不是事實,論文把主因歸給檢索不到相關的證據段落。那份實驗量的是偵測與更正錯誤預設,沒有量信心。

前提寫在輸入裡、而且是錯的這種情形,本篇沒有找到直接量過信心的研究,所以這個假設要靠實驗驗證(做法與一次量測的結果見〈驗證 System 1 用法前要預先登記的實驗條件〉)。在驗證之前,高信心只能讀成「模型對這個前提的傾向很集中」,這個傾向和答對的機率有多接近要另外量。

用途的錯誤代價結構:門檻、樣本數與是否需要分布

同一個單 token 決策用在不同的地方,該怎麼設門檻、要取多少樣本、甚至是否需要取分布,都由這個用途的錯誤代價結構決定。這個結構由三件事組成,設計任何一個 System 1 用法之前先寫下來:

  • 哪一種錯誤要緊:二分判斷有兩種錯誤。以「要不要先查證」這種分流為例,該查證的題被判為不需要叫放行錯誤(false negative,漏判),不需要查證的題被判為需要叫多餘升級(false positive,誤報);以找缺陷為例,有缺陷的圖被判為正常是漏判,正常的圖被標成有缺陷是誤報。
  • 要緊到什麼程度:錯一次的代價 C,對比把這一題交給下一層的成本 c。下一層也可能出錯,所以比較的是兩側的期望損失:直接採用時是 P(答錯) × C,升級時是 c + P(下一層答錯) × C。答錯機率 P(答錯) 高於 c ÷ C 加上下一層的答錯機率時,升級就划算;下一層的錯誤率小到可以忽略時,門檻就是 c ÷ C。
  • 失誤本身是否就是量測對象:多數用途裡失誤是要壓低的指標;〈弱模型可用性測試〉這一類裡,失誤的位置正是要找的訊號,代價結構整個反過來。

這三件事往下決定四件事:

  • 是否需要取分布。C 和 c 相近時(例如替工單貼分類標籤,錯一筆的代價接近重做一次的成本),c ÷ C 接近 1,而答錯機率不會超過 1,升級從來不划算;這個用途正式運作時只要模型最可能的那個答案,一次 temperature 設為 0 的呼叫就夠了,分布只在量校準與抽樣稽核時才需要。選項順序固定時,代碼的先天偏好仍會影響最可能的那個答案,這類低代價用途可以接受這個偏差,或用〈取得單 token 分布的方式〉提到的 PriDe 修正,不必每題輪換。C 遠大於 c 時,c ÷ C 接近 0,只有答錯機率低於 c ÷ C 的題目值得直接採用、不送到下一層;router 省得到下一層成本的條件,是它能把一大部分題目挑成這一類。
  • 可接受的失誤率 r。「放行錯誤率」有兩種分母,要先說清楚用哪一種。代價推導要的是放行的題目裡答錯的比例,它要低於 c ÷ C;實驗量得到的通常是前提錯誤的題目裡被放行的比例(漏判率)。兩者之間隔著前提錯誤的普遍度 π:π 越低,同一個漏判率換算到放行題目裡的答錯率越低。所以 r 由 c ÷ C 與 π 一起決定,不只由 C 決定。下文用到的 r = 30% 是漏判率的示意值;c ÷ C 小、π 又不低的用途,r 要低得多,樣本數也跟著放大(見〈小樣本的信賴上界〉)。
  • 要列哪些對照組。C 遠大於 c 的用途,最相關的基準是「全部升級」。分流方案少升級的題數乘上 c,要大於它多出的放行錯誤乘上 C、再加上 router 本身的呼叫成本,才贏過「全部升級」。
  • 以 r 為準的結論是否適用。失誤本身是量測對象時不適用,那一類的結論看的是兩個版本的差距。

樣本湊不到能下結論的數量時,預設處置也由代價決定:代價高的用途預設全部升級,或交給人。反過來,c 接近 C、錯誤會在下游自己浮現並被修正的用途(工單分錯會被承辦人退回改正),可以直接上線、用準確率監看,〈驗證 System 1 用法前要預先登記的實驗條件〉那一套是給要以 r 下採用結論的用途。

取得單 token 分布的方式:token 機率與重複取樣

本篇處理兩條取得分布的路,差別在 API 是否回傳 token 機率。

直接讀 token 機率:部分 API 與多數本地推論伺服器可以回傳每個輸出位置上機率最高的幾個 token 與它們的對數機率(logprobs)。輸出上限設為 1,一次呼叫就拿到第一個位置上前幾名 token 的對數機率,而這份清單和選項的分布之間隔著四個落差:

  • 同一個代碼常有幾種 token 寫法(有沒有前導空白、有沒有括號)。先把每個對數機率取指數換回機率(exp(logprob)),再把同一代碼各種寫法的機率相加,才是那個選項的機率。
  • 排在回傳名單之外的代碼讀不到機率,只知道這個代碼的機率低於名單上的最後一名。
  • 落在選項代碼以外的 token 上的機率,代表模型想輸出的不是任何一個選項;這部分的大小是模型有沒有照格式作答的訊號,先記下來,再對選項重新正規化。
  • 部分伺服器回傳的是經過取樣參數截斷、再對留下的 token 重新正規化之後的機率,留下的選項機率因此偏高,信心看起來比模型原本的更集中。確認的方式是把 top_p、top_k、min_p 與重複懲罰設成停用值,比對同一題在設與不設時回傳的機率是否不同。

這條路還有一個前提:每個選項代碼恰好是一個 token。代碼若被 tokenizer 切成兩個 token,第一個位置上的機率只代表代碼的前半段,不同選項的前半段又可能相同,分布就失去意義。單一字母或數字在常見的 tokenizer 裡多半是一個 token,但切法依模型而定,所以這個性質要對實際使用的那個模型的 tokenizer 確認。

重複取樣近似分布:API 不回傳 token 機率時,把同一題在 temperature 1.0 下獨立取樣 K 次,各選項被選中的比例就是分布的估計值。取樣用的機率是 softmax(logits / T),logits 是模型對每個 token 輸出的原始分數,T = 1 時算出來的就是模型原本的分布(機制見 3.5 的〈Temperature:調分佈尖銳度〉);T 設成 0 會讓每次都選同一個選項,量到的只剩眾數。其餘會在取樣前截斷或改寫機率的參數——top_p、top_k、min_p(三者見 Top-K / Top-P / Min-P 卡)與重複懲罰——都要明確設成該 API 表示停用的值。

只是不寫這些參數,等於套用伺服器的預設值,而多數本地推論伺服器預設開著其中幾個;API 沒有開放某個參數時,把它記成未知。被截掉的低機率選項在 K 次取樣裡一次都不會出現,分布因此比模型原本的更集中;作答題與可用性測試固定放的「現有選項都不夠」「找不到」,正是機率常常偏低、最容易被截掉的那一類,所以這兩個選項在 K 次取樣裡從來沒出現過,本身就是可能被截斷的訊號。重複懲罰另外有一個針對這個用途的問題:選項代碼全部出現在輸入裡,懲罰範圍涵蓋輸入的伺服器會把這些代碼的機率一起壓低。

這條路的代價是成本乘上 K,而估計值的精度隨 K 慢慢提升。估計值的格距是 1/K,K=5 時只能落在 0%、20%⋯⋯100% 六格;格距小不代表分得出小的差距:K=20、比例在 50% 附近時,估計值的 95% 區間仍寬約正負 22 個百分點(標準誤是 √(0.5 × 0.5 / 20) ≈ 0.11,算法見二項比例信賴區間卡)。要比較相差幾個百分點的兩個比例,需要的取樣次數遠多於 20。

兩條路共用一個設計:選項順序要輪換,並記錄當次的順序,事後才能把每個代碼對回它當次代表的選項內容。輪換用循環排列:n 個選項排 n 次,每個選項輪流佔每個代碼一次,代碼的偏好才保證被平均掉;隨機選幾種順序做不到這一點。重複取樣時把 K 次分配到這 n 種順序上;直接讀 token 機率時,同一題用這 n 種順序各呼叫一次,把每次的分布對回選項內容再平均。Chujie Zheng 等人(2023,Large Language Models Are Not Robust Multiple Choice Selectors)量到模型在選擇題上會偏好特定的選項代碼,而這個偏好主要來自代碼 token 本身:不論選項內容是什麼,模型都先天給某些代碼較高的機率。代碼與內容的對應固定不變時,這個偏好會和模型對內容的判斷混在一起,事後分不開。

輪換讓每題的呼叫次數乘上 n;同一篇論文另提出 PriDe 這種不需要標籤的做法:只在少量題目上排列選項內容、估出模型對各代碼的先天偏好,再拿這個估計修正其餘題目,其餘題目維持一次呼叫。共用同一段前綴的重複呼叫,在支援 prompt caching 的 API 上也比較便宜。輪換同時處理另一個來源:4.21 LLM-as-Judge 的 position bias 指 judge 偏好先出現的候選,成因是出現的順序而不是代碼,緩解做法同樣是交換或打亂順序。

適合單 token 決策的題型

適合交給單 token 決策的題目有一個共同條件:判斷所需的證據全部在輸入裡、而且答案不需要多步推導,或者要問的是題目答案以外的事:這一題要不要先查證、模型在畫面上能否找到某個元件。證據完整但要多步推導的題目(例如「這段程式輸出哪個值」)交給不帶工具的推理模型,見〈System 1、System 2 與確定性工具的分工〉的表下說明。下面三類題型各自用不同的方式滿足這個條件。條件之外還有一類題目不交給它:價值取捨與正解本身有爭議的決定,證據可以全部在輸入裡,而決定的權限在人(見〈分流題〉)。

證據完整的封閉選項題

這一類題目附上封閉選項,作答需要的證據全部在輸入裡,例如「這張截圖裡的錯誤訊息出現在哪個編號的區塊」「這段 log 屬於哪一類錯誤」。這類題目沒有輸入以外的前提要查證,所以缺查證機會這個弱點不出現,剩下的是模型本身的辨識能力,以及〈單 token 決策的侷限〉一節的選項設計問題。

截圖類題目常用 Set-of-Mark 的做法:在圖上候選元件的位置疊上編號,選項就是這些編號。疊編號會帶來一個副作用:編號框本身把「這裡有一個元件」標了出來,模型不用自己找到元件也能答對一部分題目。要量模型能否自己找到元件,對照組只換掉這一個變數:在不是元件的空白區域也疊上幾個干擾框,編號就不再等於「這裡有元件」,作答格式照樣是單 token。另一種對照是完全不疊編號、改用座標或描述作答,它同時換掉了輸出格式,已經不是單 token 決策;計分改成「座標落在目標元件的範圍內算找到」,多次取樣的找到比例代替代碼分布。這兩種對照在〈弱模型可用性測試〉上更必要:那裡量的是元件是否夠突出,而編號框本身就讓每個元件變得一樣突出。

這類題目的另一個邊界是視覺細節。視覺語言模型會把輸入圖片縮放到固定的解析度、切成固定大小的區塊(image token 卡說的 patch)再讀,縮放後比一個區塊還小的差異——小字、細邊框、像素級的對齊誤差——可能已經不在模型讀到的輸入裡。這些細節在縮放時已經消失,換更大的模型也讀不到它們;4.15 Vision in coding workflow 把這個限制歸給低解析度模式與 image token 預算,處置是開高解析度模式。在「找出渲染缺陷」這種漏判代價高的用途上,這個弱點直接變成漏判,判定規則要依失效方向設計(見〈判定門檻的方向〉一節)。

分流題:判斷題目要不要升級給 System 2

分流題不問答案,只問「這一題需不需要先查證再決定」,選項是「需要」與「不需要」兩個代碼。單 token 決策在這裡扮演 router:依題目內容把它派到不同處理路徑的分類器(見 4.7 Workflow 編排模式的 router 模式)。router 判為需要的題目升級(escalate)給能查證的 System 2;判為不需要的題目交給原本的下游處理,下游是封閉選項題時再用一次單 token 決策作答。這個位置典型地在 agent 向人提出選項之前:agent 先問自己這一題的前提要不要查證,再決定要不要花一次查證。在這種流程裡,單 token 決策的答案只當成提交給人的建議項,不取代人的裁定——人被問到的理由常常正是價值取捨,那一類決定由人做。

把問題從「選哪個答案」改成「要不要查證」,理由在證據的位置:前提錯誤的題目上,作答需要的證據本來就在輸入以外,單 token 決策答錯是結構上預期得到的結果。router 要的是另一種能力——從輸入裡的眾多前提中,挑出值得查證的那幾個。線索寫在輸入裡:題目裡是否有未經確認的事實宣稱、選項是否全部依賴同一個前提。CREPE 的結果支持其中「找出預設」這一步:模型找得出問句帶了哪些預設。從預設裡挑出值得查證的那些,CREPE 沒有量,要由〈驗證 System 1 用法前要預先登記的實驗條件〉的實驗量;而判斷預設真假這一步,CREPE 量到模型做不好,那一步本來就交給 System 2。router 本身也是一次單 token 決策,面對寫得很肯定的錯誤前提,它同樣可能有把握地判為「不需要」。被它放行的題目直接交給下游,不會進到查證那一層,所以放行錯誤不會自己浮現;要量它,得從放行的題目裡抽樣送去查證,這就是〈System 1、System 2 與確定性工具的分工〉說的抽樣稽核。

要判斷 router 是否值得用,得跟便宜的對照比較:一條確定性的規則(例如「題目含有『已經涵蓋』『已經實作』這類未附證據的宣稱,一律判為需要查證」),以及〈用途的錯誤代價結構〉說的「全部升級」。比較的指標要把放行錯誤與多餘升級分開算。規則沒有門檻可調,所以 router 判為需要查證的信心門檻要在另一批題目上先訂好、事先登記,再拿到評估用的題目上比:兩者在同一批題目上判,各自數出放行錯誤與多餘升級,差距用成對檢定(例如 McNemar 檢定)確認超出取樣誤差。成本的判斷標準把兩種錯誤一起算:router 比規則少放行的題數乘上 C,減去它多升級的題數乘上 c,還要大於 router 對全部題目多付的呼叫成本,多付的模型成本才有回報。登記好的門檻用到評估題目上,升級的題數不一定和規則相近,這條式子在升級數不同時照樣能比。準確率把兩種錯誤加在一起,一個準確率較高的 router 可能放行更多該查證的題。另一個要防的情形,Workflow 編排模式一章的 router 失敗模式稱為「classifier 比下游還複雜」:分流這一步本身要用強模型,強模型的成本抵銷了分流本來要替下游省下的成本。

弱模型可用性測試:用低階模型的失誤找介面設計的訊號

這一類題型把方向反過來:刻意用辨識能力有限的模型,把它找不到、認不出的地方當成介面設計上的警訊。例如畫面上的主要按鈕寫著「新增專案」,問句寫成「要建立一個新的工作空間,該點哪個編號?」,模型在一個畫面上反覆找不到這個按鈕,可能代表它的對比、尺寸或層級不夠突出。這裡期待的是模型犯錯,失誤的位置正是量測對象。

選模型的判斷標準是鑑別力,不是越弱越好:先在參照版本(已知可用的畫面)上跑,挑失敗率落在中段(例如兩到八成)的模型。挑模型用的這一輪和正式比較要用不同的取樣,否則挑出來的模型會帶著選擇偏差。在原版上已經幾乎全錯的模型,任何版本都找不到,兩版的差距量不出來;幾乎全對的模型也一樣。

這類測試有一個難處:模型找不到的原因很多,設計不佳只是其中之一——圖片解析度、問句用詞、語系、模型對某類元件的先天盲點都會造成失誤。區分的方法是成對變體:同一個畫面做兩個版本,只差一項設計性質,兩版用同一份資料、同樣的元件數量。解析度與用詞這類因素在兩版之間相同,失敗率的差距大到超出取樣誤差時,才可以歸給那一項性質。

要對一個新畫面下結論,成對的另一側用已知可用的參照版本(舊版,或通過使用者測試的版本),比較新版與參照版的失敗率;自己做一個只破壞一項性質的壞版本,只用來先確認這個模型對該性質有反應——新版贏過一個刻意做壞的版本,對新版本身沒有結論。

兩個失敗率的比較要事先估好樣本數,而樣本的單位是不同的題目:問句用詞與編號配置各取不同的組合,每一題在兩版各問一次,用成對檢定比較。只對同一張圖、同一個問句重複取樣,量到的只是那一個刺激上的機率,差距歸不到設計性質。例如要分辨 50% 與 30%,常態近似下每個版本約需 93 題(算法見二項比例信賴區間卡)。弱模型可用性測試的結論看兩版的差距,不套用〈小樣本的信賴上界〉以 r 為準的三種結論,也不放進四層分工;它量到的是這個模型對該性質的敏感度,要說它代表人的使用體驗,還要經過〈與人工裁定的一致率和正確率的差別〉一節說的人工驗證。

兩個設計條件讓這個訊號不被稀釋:問句不和畫面上的標籤共用字詞(例子裡的問句用「建立一個新的工作空間」,不重複按鈕上的「新增專案」;共用字詞時模型比對字串就能答對,層級好壞都答得出來),以及選項裡固定放一個「找不到」,讓模型有地方表達失敗,不必硬猜一個編號。

同一個想法也用在寫作審查:多份低階模型獨立讀同一段文字、回報讀到什麼,讀錯的位置就是文字要修的訊號,做法與量測見〈理解檢查用低階 model 取樣讀者的實際理解,不靠單一 reviewer 的判斷〉。那篇記錄觀察到推理能力較強的讀者會自動補完殘缺的句子、因而看不出缺陷,這個觀察來自單篇稿件、單一模型家族,還沒有在其他稿件與其他模型家族上重測。

單 token 決策的侷限

下面五項侷限都會讓結果看起來正常而數字失準。選項的洩漏與正解落在選項之外,來自選項設計;一致率、小樣本上界與門檻方向,來自統計判讀。

選項寫法造成的答案洩漏

選項是輸入的一部分,模型會從選項的寫法讀到答案的線索。常見的兩種洩漏:

  • 推薦標記:選項旁標了「建議」或「Recommended」,模型會被拉向那一項。量的若是模型自己的判斷,送出前要把這類標記機械地移除;量的若是「標記對決策的影響」,就把有無標記當成一個獨立的實驗因子。
  • 措辭的事後修飾:用過去的決策紀錄建題目時,選項若是在知道結果之後才整理寫成的,措辭會不自覺地把正解寫得更完整、更具體。題目與選項要保留決策當下實際出現的原文。

選項代碼本身的偏差與這兩種不同:它和答案內容無關,處理方式見〈取得單 token 分布的方式〉的輪換順序。

正解落在選項之外的題目

單 token 決策只能在給定的選項裡挑,而很多決策的最終答案是查證之後才浮現的新方案,第一輪的選項裡根本沒有它。這時單 token 決策最好的表現是選出「現有選項都不夠,需要再分析」,所以作答題的選項裡要固定放這一項(選項由規格窮舉、結構上不會有選項外正解的題目除外,例如 log 等級),並且把「模型選出這一項」單獨統計:這個比例偏高的題型,整類交給 router 或 System 2,不交給快速決策,「偏高」的門檻寫進事先登記的決策表。〈驗證 System 1 用法前要預先登記的實驗條件〉記錄了一次量測,資料是一個 AI agent 在工作對話裡向人提出的 63 題封閉選項問答,其中 9 題做最後決定的人(下文稱裁定者)否決了全部選項、要求重新分析。

固定放這一項也會改變校準:Kadavath 等人量到把原有選項之一換成「以上皆非」會明顯降低準確率與校準。本篇的做法是另外加一個選項,和那份量測不完全相同,但同樣改變了選項格式。所以信心門檻要在含這一項的格式下重新量,不沿用不含它的格式量到的數字。

與人工裁定的一致率和正確率的差別

拿模型的選擇跟人的裁定比對,得到的是與裁定的一致率(agreement rate):模型和人選了同一項的比例,LLM-as-Judge 一章的 calibration 步驟(比對 judge 評分與人的評分)量的也是這個量。它和同一題多次取樣給出同一答案的比例(取樣一致性)是兩件事。一致率要換算成正確率,還取決於人的裁定本身是否正確,而人的裁定也受選項寫法影響(同一個推薦標記也會拉動人),也有事後更正的時候。所以報告要寫「與裁定一致的比例」,並另外報兩個基準:有建議項時,永遠選推薦項的一致率;沒有建議項時,永遠選最多數那一類的一致率;以及隨機猜中的機率。模型的一致率勝不過「永遠選推薦項」時,單看一致率還看不出它有沒有多提供資訊:兩者可能錯在不同的題目上。要看的是推薦項被推翻的那些題目上,模型是否和裁定一致。

正解若是實驗者自己構造的(例如成對變體的壞版本「應該」較難找),還有循環論證的風險:構造者認為難的地方,未必是使用者覺得難的地方。這類結果要再由不參與設計的人驗證,例如請使用者實際操作同一組畫面,比對他們卡住的位置與模型找不到的位置,才能說它代表真實的使用體驗。

小樣本的信賴上界

少量樣本的「零失誤」只能證明失誤率不高於某個上界,而這個上界比直覺寬得多。n 次裡失誤 0 次時,失誤率的單尾 95% 信賴上界是 1 − 0.05^(1/n):失誤率為 p 時連續 n 次零失誤的機率是 (1 − p)ⁿ,令 (1 − p)ⁿ = 0.05,解出 p = 1 − 0.05^(1/n)。n = 5 時上界約為 45%,資料只排除了「失誤率高於 45%」,45% 以下全部都還可能;n = 10 約為 26%,n = 20 約為 14%。樣本數 n 較大時,這個上界近似 3/n(rule of three);n = 5 時近似值 60% 比精確值 45% 寬,小樣本要用精確算法。本節的上界與下界都取單尾 95%;多數統計函式庫的 95% 精確區間指雙尾,用它們算時要改成雙尾 90%,否則上界會偏寬(n = 9、零失誤時,雙尾 95% 的上界約 34%,單尾 95% 約 28%)。各種算法的差別見二項比例信賴區間卡。

把信賴區間變成結論,要先定這個 System 1 用法可接受的失誤率 r——失誤指這個用途最在意的那一種錯誤,例如 router 的放行錯誤,r 的大小由〈用途的錯誤代價結構〉決定——再看區間落在 r 的哪一側。觀察到失誤時,上界與下界用 Clopper–Pearson 精確信賴區間算:

  • 上界已低於 r:資料排除了不可接受的失誤率,可以採用這個用法。
  • 下界已高於 r:資料排除了可接受的失誤率,結論是不採用。
  • 區間跨過 r:資料和兩種結論都相容。觀察到的失誤率低於 r 時,值得擴大樣本做一次正式實驗,條件照〈驗證 System 1 用法前要預先登記的實驗條件〉事先登記;觀察值已經高於 r 時,擴大樣本之前要先問這個用途值不值得再投入,這是成本取捨,不是統計結論。

正式實驗的題數依預期的失誤率估,零失誤時讓上界低於 r 的數量只是下限:真實失誤率不是零時,有失誤的樣本上界會變寬,很可能又落回「區間跨過 r」。例如 r = 30%、真實失誤率 10% 時,9 題只有約 39% 的機率得出「上界低於 r」,30 題約 83%,50 題約 98%。所以 5 次零失誤落在區間跨過 r 的那一格,只夠支持「值得做正式實驗」;從它推論「這個方法可靠」,等於把一個 45% 的上界讀成接近零。這些算法都假設題目彼此獨立;題目來自同一個專案或同一段對話時,上界仍偏樂觀,下結論前要有第二個來源的資料。

判定門檻的方向

用多次取樣做判定時,門檻要對失效的方向要求更多證據。以「找出有缺陷的截圖」為例,這個用途的失效方向是放行——有缺陷的圖被判為正常。

假設每次取樣有一半的機率把一張有缺陷的圖標記出來,判定規則是「5 次裡至少 4 次標記才算抓到」,那麼抓到的機率是「恰好 4 次」與「5 次全中」兩種情形的總和:(5 + 1) / 2⁵ = 6/32 ≈ 19%,漏判約 81%。一般式是 5p⁴(1 − p) + p⁵,p 是每次標記的機率。這條規則看起來嚴格,但它把較高的證據要求放在「判為有缺陷」這一側,結果是多數有缺陷的圖被放行。

修正方式是把判定對象換成放行:「5 次裡至少 4 次判為正常才放行」,其餘的一律交給下一層(更強的模型或人)。同樣假設每次標記的機率是一半,有缺陷的圖被放行的機率從約 81% 降到約 19%。這一步的代價落在正常的圖上:一張正常的圖若每次有 10% 的機率被誤標,它在新規則下約有 8% 被升級,下一層每 100 張正常的圖要多看約 8 張。直接讀 token 機率時沒有次數,同一個原則寫成「判為正常的機率高於門檻才放行」,門檻同樣依兩類圖各自被升級的比例來訂。門檻偏向哪一側,由兩種錯誤哪一種代價高決定:代價高的那一種錯誤,要有更多證據才允許它發生——漏判代價高時,放行要有更多證據;而這個偏向的成本落在另一側,用有缺陷與正常兩類圖各自被升級的機率,可以算出下一層多承擔多少張。

System 1、System 2 與確定性工具的分工

四層在同一條流程裡的位置,取決於各自的成本與能判斷的事項:

層能判斷的事項成本適合的位置
確定性工具(測試斷言、像素比對、幾何檢查、規則)有明確判斷標準的事項:文字或元件有沒有超出容器、兩張圖哪裡不同、元件有沒有重疊幾乎為零,結果可重現最前面,先把能確定判斷的部分全部處理掉
System 1(單 token 決策)證據在輸入裡、答案在封閉選項裡的判斷;是否升級的分流每次呼叫一次 prefill;每題是 router 與作答各一次,量分布時再乘上輪換的順序數或 K處理確定性工具留下的題目
System 2(能查證的推理)需要查證前提、答案可能在選項之外的問題生成大量 token,加上讀檔與呼叫工具處理 router 判為需要查證的題目,以及 System 1 沒把握的題目
人價值取捨、正解本身有爭議的問題最高價值取捨題直接到這一層;前面各層沒把握的部分;依代價強制審查的決策;抽樣稽核的題目

這張表的排序原則是越便宜、越可重現的工具放越前面,每一層處理前一層留下的題目。表裡沒有列出的一條路徑是不帶工具的推理模型:證據全在輸入裡、但答案要多步推導的題目(例如「這段程式輸出哪個值」),交給它就夠,不必動用能查證的 System 2;router 要分辨這一類時,可以多一個「需要推導」的選項。router 能省成本的前提是 System 2 的成本(輸出 token 加上工具呼叫)高於 System 1 每題那幾次 prefill 的總和。

「System 1 沒把握才升級」這條規則依賴信心能預測對錯,只在量過機率校準的題型上可靠;前提可能錯誤的題型上,信心是否預測對錯正是〈單 token 分布的量測對象〉那個待驗證的假設,那裡的升級要靠題目性質(分流題與確定性規則),不靠信心。

另外三類決策不受「只處理前一層留下的題目」限制:價值取捨與正解有爭議的題目直接交給人;代價高、不可逆的決策照 4.5 人機協作拓樸 的代價分級強制送人審查;有把握而直接採用的題目也要隨機抽一部分給人稽核,人機協作拓樸一章〈Falling asleep at the wheel〉(人長期看到自動化結果都正確,就不再仔細審查)的緩解做法正是這一項,它用來發現模型有把握而選錯的那一類。稽核時不讓稽核者看到模型的答案:那個答案在稽核者面前就是一個推薦標記,看得到時量到的一致率會被拉高,正好漏掉要找的錯誤。抽樣量依可接受的放行錯誤率與這類題目前提錯誤的比例估,前提錯誤越少見,要抽的題目越多。

下面三個分工細節需要展開。

確定性工具先行,模型只判剩下的題目。以截圖回歸檢查為例:有基準圖時,像素比對可以零模型成本找出「哪裡變了」,沒有差異的截圖直接免看;模型只需要回答確定性工具答不了的那一題——「這個差異是缺陷,還是預期內的修改」。把整張截圖丟給模型問「有沒有問題」,等於讓模型重做像素比對已經做完的事,還多了漏判的風險。模型只拿到新版截圖時,分不出「缺陷存在但被縮放掉了」和「它不知道這個位置原本該長什麼樣」,所以交給模型時要附上基準圖與新版在同一位置的裁切。「預期內」還取決於這次變更的意圖:按鈕由藍變綠,只看兩張圖分不出是改版還是錯誤,所以輸入裡還要有這次變更預期改動的描述(變更說明或設計稿),這一題才屬於證據完整的封閉選項題。要判斷差異是不是缺陷、而沒有基準圖或拿不到變更意圖的截圖,判斷所需的證據不在輸入裡,交給 System 2 或人。文字被截斷、元件互相重疊、圖片載入失敗這類和變更意圖無關的缺陷,單張截圖就是全部證據,仍是證據完整的封閉選項題。

System 1 當 System 2 的 router。router 放在 System 2 前面,是因為它每題的成本是幾次 prefill,而它要省下的是一次能查證的處理。它判為需要查證的題目進 System 2;判為不需要的題目交給下游,下游是封閉選項題時再用一次單 token 決策作答。作答的答案是否能直接採用,看的是 router 放行之後的那一批題目(router 的篩選會改變題目的組成,在全體題目上量到的數字不能搬過來),標籤要來自查證過的正解,與人的裁定一致只算一致率。有兩種量法,對應兩種採用方式:只量這一批題目整體的答錯率時,答錯率低於 c ÷ C 就整批直接採用,否則整批送 System 2;要按信心逐題決定,才需要在這一批題目上量校準,門檻取答對率達到要求的那個信心值,信心高於門檻的直接採用、低於門檻的送 System 2。兩種量測都沒有時,放行的題目也整批送 System 2。router 的篩選門檻一改,放行的那一批題目就跟著變,這些量測要重做。「這一類題目」怎麼分類,本身也是一個要事先登記的判斷。

router 的門檻怎麼訂,照〈用途的錯誤代價結構〉的兩側期望損失比較;那裡的答錯機率是「這一題交給下游直接作答會答錯」的機率,前提正確的題目也可能答錯,所以 router 的校準標籤要用這件事,不只用「前提有沒有錯」。改用這類題目在歷史資料裡前提錯誤的比例時,同一類題目代入的數字都一樣,結論是整類一起升級或一起放行,用不到 router;這個歷史比例的來源是〈驗證 System 1 用法前要預先登記的實驗條件〉那種保存了建議項、裁定與改答原因的決策紀錄。涉及前提的決策錯了,代價多半遠高於一次查證的成本,所以這類用途的門檻偏向「有疑慮就升級」,這和〈判定門檻的方向〉一節是同一個推導。

System 2 刻意質疑 System 1 的直覺答案。這是一個要量過才採用的設計,預期修的是 System 2 沿著第一個想到的答案找理由、沒有認真考慮其他選項的情形,這個效益還沒有量過。單 token 決策可以把「直覺答案」明確地標出來,拿到它之後,System 2 的任務多一項:針對這個答案找反例,或者反向假設它是錯的再推一次。風險在同一個機制上:把 System 1 的答案放進 System 2 的輸入,等於在輸入裡放了一個推薦標記,而〈選項寫法造成的答案洩漏〉說過推薦標記會把模型拉向那一項。所以同一批題目要跑兩種 System 2——一種拿到 System 1 的答案並被要求找反例,一種沒拿到——以查證過的正解當標籤,拿到 System 1 答案的那一種正確率較高、而且差距經成對檢定超出取樣誤差,才保留這個設計;兩者的改判率一併記錄,用來看質疑是否實際改變了答案。

驗證 System 1 用法前要預先登記的實驗條件

團隊要判斷一個 System 1 用法是否值得採用,得靠實驗,而這類實驗最容易出錯的地方是看到結果之後才調整條件。調整的動作本身未必有惡意,但每一次「這題不算」「門檻改成 3/5 比較合理」「把 prompt 措辭改一下再跑」都讓結果往預期的方向移動。下面五件事要在取樣之前寫下來,提交進版本控制或交給預先登記(pre-registration)的平台,讓之後的修改都留下紀錄:

  • 資料集:題目、選項、正解的來源。題目與選項取決策當下的原文,不由知道結果的人重寫——後見之明會讓措辭不自覺地偏向正解。量 router 時,資料集要同時放前提錯誤與前提正確的題目:只放前提錯誤的題目,一律回答「需要查證」的 router 會拿滿分,量不到多餘升級。
  • 排除規則:哪些題目不納入、理由是什麼,在看到模型的答案之前決定。依結果排除題目(例如「模型和人都答錯的題目算資料不足」),會讓假設永遠無法被否證。
  • 模型與提示:模型與版本、提示模板全文、取樣參數與停用值、選項輪換方式,以及主要指標——哪一種錯誤率、對比哪個 r。換模型版本或改提示措辭就是一次新的實驗。
  • 判定門檻與決策表:取樣次數、信心高於多少算有把握、樣本數不足時的結論。計數單位要先定好:同一件事被反覆提問的多題(例如第一次的選項被否決後,針對同一個決定再問一次)彼此不獨立,計成一個題組;量 router 時,每個題組送進去的是第一輪提問,也就是錯誤前提還寫在輸入裡的那一題。題組數的門檻由可接受的失誤率 r 反推:後續實驗拿 router 判前提錯誤的題組,n 組全部判對(每一組都判為需要查證)時,漏判率的單尾 95% 上界是 1 − 0.05^(1/n),r = 30% 時 n 至少要 9 組,所以示意的決策表可以寫成「少於 9 組只描述、不下結論;9 組以上才依門檻判定」。這裡的 9 組是零失誤時的最低題組數,不是保證下得了結論的數量:預期會有放行錯誤時,要依〈小樣本的信賴上界〉的檢定力估更多題組;r 更低的用途題組數更多,湊不到時預設全部升級。
  • 對照組:便宜的基準(永遠選推薦項、確定性規則、隨機猜中、全部升級),以及成對變體的參照版本。

另外有一個常被跳過的零成本步驟:先量流程裡既有的建議選項。這一類流程的共同長相是「先由一方產出選項與建議,再由另一方裁定」,例如 coding agent 向人提出幾個做法並標出建議項、由人決定。那個建議本身就扮演 System 1 的角色:它也是在查證之前給出的傾向。統計建議被推翻的題目各是因為什麼原因被推翻,不呼叫任何模型就能知道「因為前提錯誤而被推翻」在這個流程裡有多常見。這份統計同時供兩個決定使用:前提錯誤的普遍度、router 能把它挑出來的程度與錯誤決策的代價,一起決定值不值得建 router;前提錯誤的題組數,決定後續的模型實驗能不能下結論。

一次量測照「先量流程裡既有的建議選項」的做法跑過,可以用來看決策表怎麼套在一份實際的資料上。資料是一個 AI agent 在一段工作對話裡向人提出的 63 題封閉選項問答,agent 在其中 37 題標了建議選項,人是唯一的裁定者。量測沒有拿模型去模擬建議選項;逐題標註裁定者改答原因的,是一個沒參與任何決策、也沒讀過研究假設的標註者(另一個模型實例;質性研究的內容編碼稱這個角色為 coder),它依照事先登記的分類表(coding scheme)作業。37 題裡有 22 題的建議選項與最後裁定一致(59%),這就是〈與人工裁定的一致率和正確率的差別〉一節說的「永遠選推薦項」基準在這份資料上的值。63 題裡改答原因屬於「前提更正」的有 7 題,分屬 4 個題組;提問那一方的 agent 覆核分類定義有沒有一致套用之後,改判了其中一組,剩 6 題、3 組。這次覆核只檢查定義的套用,不是第二位標註者的獨立標註。這份資料事先登記的門檻是前提更正至少 6 組才進入模型實驗——這個門檻管的是有沒有足夠的題組可以開始實驗,和上面示意決策表的 9 組是兩份登記、兩個 r——覆核後的 3 組與覆核前的 4 組都低於它,依決策表,這份資料不足以進入模型實驗。〈單 token 分布的量測對象〉那個假設在這份資料上因此沒有被檢驗到,既沒有支持也沒有否定它。

同一份資料裡有一個描述性的觀察:前提更正的題目全部走同一條路徑——裁定者先否決全部選項、要求重新分析,重新分析的過程中經過查證、前提改變,裁定者再做裁定;沒有一題是裁定者直接在選項之間改選、理由是前提錯誤。在這個樣本裡,錯誤的前提主要是在裁定者要求重想時才浮現,第一輪的選擇沒有把它暴露出來。這份資料來自單一段工作對話、單一裁定者、單一標註者(沒有讓第二位標註者獨立標一次再比對),要把這個觀察當成假設的依據,需要另一個來源的資料重做一次。

延伸閱讀:取樣、推理與評估的相鄰章節

本篇的判斷建立在幾個可以替換的前提上,換掉其中一個會走到不同的章節:

  • 把「單 token」換成「允許推理」:題目需要多步推理時,走 3.8 Reasoning models 的〈適合 reasoning model 的任務〉,那一節的判斷標準是「有客觀正確答案、需要多步推理」;需要讀檔、跑工具去查證前提時,走同一章的〈Reasoning model + tool use〉。
  • 把「封閉選項」換成「開放式評分」:要評的是一段生成內容的品質時,走 4.21 LLM-as-Judge,那一章處理 rubric 設計、pairwise 比較與三種偏見的緩解。
  • 把「取樣分布」換成「確定性輸出」:需要每次結果完全一致時,3.5 Sampling 與 Decoding 策略講 temperature、seed 與 greedy decoding 各自的效果。
  • 把「模型判斷」換成「人介入的時機」:要決定最後一層的人在什麼時候、以什麼方式介入,走 4.5 人機協作拓樸。
  • 把「單次實驗」換成「長期評估」:要讓一個已採用的 System 1 用法持續被監控,評估軸與 frozen baseline 的設計在 4.13 Eval 設計座標系。