評估與基準測試
程式碼基準測試(coding benchmarks)
程式碼基準測試要求模型寫出真正的程式,再檢查程式碼能不能跑、能不能通過測試。這是少數評分客觀的場合:你不需要人類、也不需要裁判模型——你只要拿候選解法去執行一整批單元測試,看它有沒有產生正確輸出。經典套件 HumanEval 會給模型一個函式簽章與說明字串,要它把函式內容補完;SWE-bench 則把難度拉高到修正大型開源儲存庫裡的真實錯誤。
標準分數是 pass@k:每題允許模型嘗試 k 次,只要任何一次通過全部測試就算解出。pass@1 衡量一次到位的可靠度;pass@10 衡量正確解是否落在它的能力範圍內某處。由於評分訊號是「執行結果」而非表面相似度,這類基準與開發者眼中的真實有用程度,相關度高得不尋常。
要提醒的是:通過給定測試,不等於正確、安全或好維護,而熱門題目也會滲進訓練集。模型還可能過度擬合於謎題式的函式,卻在面對真實程式庫那種雜亂、規格不明的工作時舉步維艱。
\text{pass@}k = \mathbb{E}_{\text{problems}}\!\left[\,1 - \frac{\binom{n-c}{k}}{\binom{n}{k}}\,\right]
無偏的 pass@k:每題抽 n 個樣本、其中 c 個通過時,抽出的 k 個裡至少一個通過的機率。
又称
另见