評估、基準測試與紅隊測試
pass@k(k 次取樣通過率)
在程式碼生成中,模型很少在第一次就解出難題,但若允許多次嘗試往往會成功。pass@k 量的正是這件事:k 個獨立取樣解中至少有一個通過所有單元測試的機率。pass@1 是單次可靠度,也就是你只跑模型一次時要緊的數字;pass@100 則揭示正確答案是否落在模型可觸及的分布之內。
直接抽恰好 k 個樣本來估 pass@k 變異很大。HumanEval 的標準估計式改為每題抽取較大的 n(n 大於等於 k)個樣本,數出通過的數量 c,再透過「k 次抽樣全為錯」的互補超幾何機率以封閉形式算出不偏的 pass@k。這給出穩定的估計,並讓你從一次取樣就讀出整條 pass@k 曲線。
大 k 的 pass@k 會美化那些善於探索但單次不可靠的模型,且它需要一個神諭——測試集——所以只衡量測試所涵蓋的部分,會漏掉沉默的正確性缺口。取樣溫度也很關鍵:較高溫度有助大 k 的覆蓋,卻傷害 pass@1,因此講出真相的是整條曲線,而非單一點。
\mathrm{pass@}k = \mathbb{E}\!\left[\, 1 - \frac{\binom{n-c}{k}}{\binom{n}{k}} \,\right]
由 n 個樣本中 c 個正確得到的不偏估計式;分式是抽出的 k 個樣本全錯的機率。
又稱
另見