pass@k 是程式碼生成及其他「取樣後檢查」型評估的標準指標。對每道問題,模型生成 k 個候選解答,只要其中至少一個通過測試,該問題就計為解出。pass@k 就是依此規則解出的問題比例。pass@1 反映單次嘗試的準確率,pass@10 或 pass@100 則衡量模型在多次嘗試下能解出問題的頻率——當有外部檢查器(如測試套件或驗證器)能從眾多答案中挑出正確答案時,這項指標就特別重要。
這個公式是否假設樣本彼此獨立?
是的。一減去(一減 p)的 k 次方這個算式,假設 k 個樣本各自以相同機率 p 獨立成功。當樣本在非零溫度下抽取而彼此有所差異時,這個假設成立得很好。在極低溫度下,樣本幾乎相同,多抽幾個幾乎沒有幫助,此時假設便失效;當問題難度不一、單一平均 p 掩蓋了難易混雜的情況時亦然。若要把已測得的成功率推算到不同的 k,獨立形式是良好的初步近似。
實務上如何測量 pass@k?
直接抽取 k 個樣本來估計 pass@k 會有很大的雜訊。HumanEval 等基準改為抽取較多的 n 個樣本,計算其中成功的 c 個,並使用不偏估計量 pass@k = 1 − C(n−c, k) / C(n, k),其中 C 為二項式係數。這會對從 n 個樣本中選 k 個的所有方式取平均,得到遠為穩定的數字。本計算器採用較簡單的獨立形式,當 p 取為 c/n 時與該估計量一致,最適合將已知成功率推算到指定的嘗試次數預算。