核心概念
評估大型語言模型效能時,使用現有錯誤基準測試可能會產生誤導性結果,因為模型可能已經記住了這些基準測試的內容,特別是像 Defects4J 這樣歷史悠久的基準測試。
這篇研究論文探討了大型語言模型(LLM)在軟體工程任務中,特別是自動化程式修復(APR)領域的資料洩漏問題。作者指出,使用現有的錯誤基準測試來評估 LLM 的效能可能會產生誤導性的結果,因為模型可能已經在其訓練資料中接觸過這些基準測試的內容,從而記住了解決方案。
研究方法
為了驗證這一假設,作者選擇了多個廣泛使用的錯誤基準測試,包括 Defects4J、BugsInPy、BugsCpp、Gitbug-Java 和 SWEBench-Lite,並使用負對數似然(NLL)和 N 元語法匹配度等指標來評估不同 LLM 在這些基準測試上的表現。此外,作者還建立了一個新的程式碼庫,其中包含從 GitHub 上收集的 2024 年的程式碼,這些程式碼不太可能包含在 LLM 的訓練資料中,作為對比基準。
研究結果
研究結果顯示,較早的基準測試,特別是 Defects4J,在各個模型中都表現出較高的記憶跡象,尤其是在訓練資料量較小、模型較舊的情況下,例如 codegen-multi 6B。而較新的基準測試,如 Gitbug-Java、BugsInPy 和 BugsCpp,則表現出較低的洩漏風險,其 NLL 和 N 元語法匹配度與 2024 年的新程式碼庫相似。此外,研究還發現,訓練資料量較大的新型號,例如 LLaMa 3.1 系列,表現出明顯較低的資料洩漏風險。
研究結論
基於這些發現,作者建議研究人員在評估 LLM 的效能時,應同時考慮所使用的模型和基準測試。對於較早的基準測試,例如 Defects4J,應與較新的基準測試(例如 Gitbug-Java)搭配使用,以最大程度地降低資料污染的風險。此外,作者還建議開發新的評估指標和方法,以更準確地評估 LLM 在實際應用中的泛化能力。
統計資料
codegen-multi 在 Defects4J 上達到了 82% 的 5 元語法匹配度。
CodeLlama 7B 和 Gemma-2 27B 在 Defects4J 上的 5 元語法匹配度均為 64%。
Defects4J 在 TheStack 中的成員資格為 80%。
LLaMa 3.1 的訓練資料量是 codegen-multi 的 30 倍。