iT邦幫忙

2026 iThome 鐵人賽

DAY 14
0

同一道不等式題,模型抽樣八次後依序給出 1, 2, 1, 2, 1, 3, 1, 3。題目要求同時滿足 n+10>11-4n>-12,唯一的整數解是 2;候選池裡出現兩次正解,多數決最後選了出現四次的 1,這些候選答案中確實出現了正解,但依靠多數決也可能選出、累積而成的穩定錯誤。

Wang 等人在 2022 年提出的 Self-consistency,做法是從同一題抽樣的多條 reasoning paths,再選擇最一致的答案,用這種 decoding strategy 取代只走一條 greedy path (Sebastian Raschka 的《Build a Reasoning Model (From Scratch)》也把它放在 inference-time scaling 的章節中)。因此,Day 14 的目標是:不更新模型權重,讓同一批題目各生成八個候選,觀察多數決與 token 成本怎麼改變。

本日實驗依然沿用 frozen revision 的 Qwen3-0.6B-Base,以及前兩天相同的 64 題 validation subset 與 boxed-answer prompt。這次開啟 sampling,固定八個 seeds,其餘設定如下:

do_sample: true
temperature: 0.7
top_p: 0.95
top_k: 50
max_new_tokens: 256
sample seeds: 1301 ... 1308
batch size: 16
tool calls: 0
sealed-test inference: 0

八次抽樣一共留下 512 個 completions,當中 53 個答案通過 verifier,32 個符合 strict format,124 個可以從最後一個 \boxed{...} 擷取答案,另有 5 個找不到答案。每題平均產生 5.72 個不同的 vote keys,中位數是 6,八次生成中可觀察到並未形成壓倒性的共識。

投票前,每個答案會先經過前面建立的 extraction 與 normalization。Vote key 使用 frozen 的 normalized_prediction exact string,缺少答案時放入固定 sentinel,最高票平手就選最早的 sample ID。Reference answer 不參與投票,只在選出答案後評估正確性。這份規則可重建每一次選擇,也涵蓋一個限制:數學等價、字串不同的答案可能被拆成幾組票。

把固定前 k 個 samples 依序放進候選池,得到的 accuracy–token curve 是:

k=1  self-consistency  5/64   prefix any-success  5/64   pass@k  0.1035   tokens  18,586
k=2  self-consistency  5/64   prefix any-success 12/64   pass@k  0.1752   tokens  36,110
k=4  self-consistency  9/64   prefix any-success 20/64   pass@k  0.2672   tokens  69,430
k=8  self-consistency 13/64   prefix any-success 23/64   pass@k  0.3594   tokens 136,623

三個 accuracy 回答不同問題。Self-consistency 是多數決最後交出的答案;prefix any-success 檢查固定前 k 個候選是否至少出現一次正解;unbiased pass@k 則用完整八個候選估計隨機取 k 個時至少含一個正解的機率。k=1 的多數決是固定 sample 0,所以得到 5/64;pass@1 把八個 seeds 的正確比例先按題目平均,因此是 53/(64×8)=0.1035。

k=2 沒有增加正確題數,原因是因為:64 題中有 60 題平手,兩個 samples 會給出兩種答案,earliest-sample tie-break 讓結果退回第一個 sample。到了 k=4 仍有 37 題平手,k=8 也有 28 題;多數決需要重複答案,抽樣帶來的多樣性同時會讓票數分散。

完整八個候選時,有 23/64 題至少出現一次正解,多數決只選對 13/64,相差 10 題。開頭的不等式就是一例:正解 2 出現兩次,錯誤答案 1 出現四次;因為多數決忠實執行了規則,錯誤答案恰好形成較大的群。

另一題要求列出某個整係數多項式所有可能的整數根。八個候選中有四個寫成 1, -1, 11, -11,參考答案是 -11, -1, 1, 11;對人類讀者而言兩者是同一組數,但我們設計的 exact normalized key 與 evaluator 沒有處理集合重新排序,所以正式紀錄把多數決判錯。另有一個 sample 剛好使用參考答案的順序,成為候選池裡唯一被判對的答案。看完輸出後再改規則有可能污染這次比較,因此 13/64 與十題差距都維持原始 contract,這也同時意味著 evaluator 也要能處理等價關係。

成本從 k=1 的 18,586 total tokens 增至 k=8 的 136,623,約為 7.35 倍。候選數增加八倍,實際 token 沒有正好乘八,因為每次輸出會提早停止或碰到 256-token 上限。Self-consistency 從 7.81% 增至 20.31%,兩端的 Wilson 95% intervals 分別是 0.0338–0.1702 與 0.1227–0.3171,區間仍有重疊。這 512 筆候選巢狀在 64 道題內,獨立樣本假設不成立;pass@k 的不確定性採 task-level bootstrap。

這批 validation results 可總結出一些結論:當我們增加抽樣讓更多題目的候選池出現正解時,多數決只取回其中一部分,並付出 7.35 倍 token。當正解只有一票,或同一答案被表示成不同字串,「生成得到」與「選得出來」正確答案變成兩個不同的情況。下一步需要檢查的正是選擇策略,reference answer 必須排除在決策方式之外。


上一篇
Decompose、plan、solve——拆解問題在什麼時候會有用?
下一篇
Best-of-N—候選答案很多的時候,真的就比較會選嗎?
系列文
模型真的會推理嗎?30 天從 Base Model 打造可驗證的小型推理模型18
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
vito1317
iT邦新手 5 級 ‧ 2026-08-17 21:47:53

Day 14 這篇把 self-consistency 最容易被忽略的那一層講得很清楚,受益良多。

幾個特別想推的點:

  1. 開頭 1, 2, 1, 2, 1, 3, 1, 3 這個例子選得很好。 正解 2 出現兩次、錯誤答案 1 出現四次,
    一眼就看懂「多數決忠實執行了規則」和「選到正解」根本是兩件事。

  2. 把三種 accuracy 拆開來報,這件事很多人不做。 self-consistency / prefix any-success /
    unbiased pass@k 各自回答不同問題,尤其把 pass@1 = 53/(64×8) 的算法直接寫出來,
    讀者才不會誤把 pass@k 當成方法本身的 accuracy。

  3. 23/64 vs 13/64 那十題,我覺得是整篇最有價值的數字。 「生成得到」與「選得出來」的落差
    被量化出來,後面所有 selection strategy 的討論才有基準可比。

  4. k=2 沒有進步、60 題平手退回 sample 0 的分析很誠實。 earliest-sample tie-break 在小 k 的
    時候幾乎等於把投票關掉,這個坑我自己也踩過(還為它寫了一整天)。

  5. 看完輸出後不回頭改 normalization 規則、維持原始 contract,這個自律很難。
    而 {1, -1, 11, -11} 與 {-11, -1, 1, 11} 被拆成不同 vote key 的例子,剛好說明 evaluator 的
    等價關係必須在實驗開始前就定義好,事後補規則就污染比較了。

另外 Wilson 95% CI 有重疊還照實寫出來、也提到 512 筆候選巢狀在 64 題內、所以 pass@k 改用
task-level bootstrap——這種對不確定性的處理在鐵人賽文章裡真的少見。

看到結尾說「下一步需要檢查的正是選擇策略」,剛好我這次鐵人賽也在走同一條路線,
如果對你之後的 Best-of-N 與選擇策略有幫助的話:

我要留言

立即登入留言