基準究竟在主張什麼
到這一步,你已經能挑選合適的指標並做誠實的驗證。基準把這種自律打包成可共享的東西:固定的資料集、固定的任務和固定的評分規則,好讓兩個模型在同等條件下比較。然後排行榜給所有參賽者排名。這個承諾很誘人——一個數字、一個贏家——但那個數字只代表基準被設計出來要代表的含義。
像 ImageNet 這樣的視覺基準衡量的是在一組精選物體照片上的 top-1 準確率;一個語言基準可能衡量精確匹配的問答。兩者都不衡量「智能」,也都不能告訴你模型在你真實輸入上的表現。基準是一個代理:用一份狹窄、凍結的樣本代替一個廣闊、不斷變化的現實。代理與現實之間的差距,正是大多數意外發生的地方。
消融:證明真正起作用的是什麼
當一個系統變好時,誠實的問題是*哪一部分*讓它變好。[[ablation-study|消融實驗]]透過一次移除或停用一個組件再重新測量來回答這個問題。這個方法借自神經科學(在那裡你損毀某個腦區,看看什麼會出問題),消融實驗把「我們加了五個技巧,它變好了」變成「技巧 #3 解釋了幾乎全部的提升,其餘都是雜訊」。
做得好的消融實驗是「照搬迷信」式工程的解藥。改動一件事,固定其他一切,然後報告效果。這種紀律和受控實驗一樣:如果你在同一次執行中既移除了 dropout *又*降低了學習率,你就無法把結果歸因於其中任何一個。要麼乾淨地消融,要麼你什麼也沒學到。
config test acc ---------------------------- full model 0.912 - data aug 0.864 (-4.8) - pretraining 0.831 (-8.1) <- the real driver - dropout 0.908 (-0.4) noise?
注意最後一行:0.4 個百分點的下降很可能只是執行間的方差,而非真實效應。這一個觀察恰恰說明了下一個概念為何重要——沒有它,消融表會用虛假的精確度對你撒謊。
差異是真的嗎?統計顯著性
用不同的隨機種子把*同一套*配置訓練兩次,你會得到略有不同的分數——不同的初始權重、不同的打亂順序、不同的 dropout 遮罩。所以當模型 A 比模型 B 高出 0.3 個百分點時,你必須問:這個差距是否超過了雜訊。[[statistical-significance|統計顯著性]]是這個問題的正式版本:如果兩個模型其實一樣好,我對這個差異應該感到多驚訝?
實踐中,既省錢又誠實的做法是用多個種子各跑一次每個模型,報告均值 ± 標準差,而不是單一的「英雄數字」。如果 A 的波動範圍與 B 的重疊,那麼這個排名就不可信。對於已部署的系統,黃金標準是 A/B 測試:把真實流量分流到兩個版本,並測量你真正關心的結果,樣本量要足夠大,使差異越過雜訊底線。
汙染與對測試集的過擬合
前面的台階警告過你:永遠不要在測試集上訓練。基準讓這種失敗變得隱蔽而系統化。基準汙染發生在測試題目——或它們的近似副本——洩漏進訓練資料時。對於一個靠抓取整個網路來訓練的大語言模型來說,這幾乎是預設情形:公開基準及其答案就*在*網路上。一個實際上已經背下答案冊的模型會刷出耀眼的分數,卻對泛化毫無說明。
同一種病還有一個更緩慢、更具社會性的版本。當一個基準多年保持不變時,整個領域就會針對它的測試集去調整架構和超參數——透過成千上萬篇各自偷看排行榜的論文。這就是社群規模的過擬合:基準不再衡量任務,而開始衡量「我們對*這個*基準調得有多好」。其徵兆是排行榜分數與在一份全新、等價的測試集上的表現之間出現巨大的差距。
像懷疑論者一樣讀排行榜
把這些匯成一種習慣。排行榜是提問的起點,而不是答案。在你相信某個排名之前,要像審視任何非凡主張那樣審視它——關注基線、雜訊、資料衛生,以及這個基準是否真的與你的問題相似。
- 找出基線和上限。最高分比一個平凡的猜測者高多少,又離人類水準或飽和點有多近?
- 索要誤差棒。分數是否在多個種子上報告?第 1 名與第 5 名之間的差距是否超過了執行間的雜訊?
- 檢查是否汙染。模型是否在可能包含測試項的資料上訓練過?是否有全新或保留的變體?
- 把基準映射到你的現實。它的任務、分布和指標是否與你將要部署的相符,還是真實的分布偏移會把提升抹平?
最後做一次誠實檢查,因為這一級台階緊挨著前沿的炒作。當一個更大的模型突然攻克了它過去做不出的基準時,人們會把這種能力稱為「湧現」。有時這確實反映了一種真正的新能力;但往往是一個嚴苛指標的假象(一道題在模型答得*完全*正確之前都計零分)再加上可能的汙染所致。把戲劇性的躍升當作需要用消融實驗和乾淨測試集去調查的假設——而不是智能被「打開了」的證據。