![]()
作者:上交博士,在騰訊codebuddy 實習,發(fā)表一作頂會頂刊論文10篇(含best paper 等),開源PFLlib等明星項目,獲得社區(qū)贊譽。主要研究AI強化學習、AI合成數(shù)據(jù)、Agent 記憶等。
在 AI 輔助 Coding 技術快速發(fā)展的背景下,大語言模型(LLMs)雖顯著提升了軟件開發(fā)效率,但開源的 LLMs 生成的代碼依舊存在運行時錯誤,增加了開發(fā)者調(diào)試成本。
現(xiàn)有基于偏好優(yōu)化的改進方法,多依賴「通過 / 失敗」二元信號構(gòu)建訓練數(shù)據(jù),難以知曉「錯在哪」,也忽視了模型能力在訓練時的動態(tài)變化特性。
針對此缺口,在騰訊 CodeBuddy 實習期間,我們提出自適應漸進式偏好優(yōu)化方法(AP2O),并構(gòu)建 AP2O-Coder 框架。該方法借鑒人類的「按題型高效刷題」經(jīng)驗出發(fā),通過「考試 - 分析 - 糾錯 - 小測」的系統(tǒng)性流程提升模型代碼糾錯能力,在多款主流開源模型上實現(xiàn)最高 3% 的 pass@k 性能提升,同時降低訓練數(shù)據(jù)需求量。
![]()
- 論文標題:AP2O-Coder: Adaptively Progressive Preference Optimization for Reducing Compilation and Runtime Errors in LLM-Generated Code
- 論文鏈接:https://arxiv.org/pdf/2510.02393
- 開源代碼:https://github.com/TsingZ0/AP2O
一、現(xiàn)有方法的核心挑戰(zhàn)
與 AP2O-Coder 的針對性設計
當前離線偏好優(yōu)化方法(如 DPO 等)在 LLM 代碼糾錯任務中面臨三大核心挑戰(zhàn):
- 錯誤類型感知缺失:僅依賴單元測試的二元反饋信號,無法知曉類型錯誤(如 KeyError、ValueError 等),導致模型難以定位錯誤原因;
- 訓練聚焦性不足:訓練數(shù)據(jù)采用隨機打亂的方式批量輸入,模型需在多種錯誤類型間頻繁切換適應,糾錯學習的針對性不強;
- 動態(tài)適配能力薄弱:靜態(tài)構(gòu)建的訓練集無法匹配模型訓練過程中不斷變化的能力短板,易引發(fā)災難性遺忘或訓練資源浪費。
為應對上述挑戰(zhàn),AP2O-Coder 借鑒人類按題型進行的「錯題整理 - 專題突破 - 定期復盤」的學習模式,構(gòu)建了包含四大核心模塊的優(yōu)化框架,旨在實現(xiàn)錯誤信息的深度利用與模型能力的動態(tài)適配。
二、AP2O-Coder 的
核心技術框架與工作機制
AP2O-Coder 的核心設計思路是通過系統(tǒng)化流程實現(xiàn)錯誤類型的精準捕捉、漸進式優(yōu)化與動態(tài)適配,其整體框架包含四個關鍵步驟(如圖 1 所示):
![]()
圖 1:AP2O-Coder 框架流程圖
代碼生成評估(Exam)
為全面掌握目標模型的初始能力邊界,該模塊讓 LLM 在 M 個編程任務上生成 N 個候選答案(采用溫度系數(shù) 1.0 的設置以充分探索能力范圍),通過配套的單元測試獲取每個答案的「通過 / 失敗」標簽,形成初始訓練數(shù)據(jù)集,為后續(xù)錯誤分析提供基礎。
錯誤診斷分析(Analysis)
借助編程語言專用分析工具(如 Python 解釋器)對所有失敗答案進行結(jié)構(gòu)化解析,標注具體錯誤類型并統(tǒng)計各類錯誤的出現(xiàn)頻率,按錯誤題型構(gòu)建結(jié)構(gòu)化的「錯題本」。該過程實現(xiàn)了從二元反饋到精細化錯誤信息的轉(zhuǎn)化,為針對性優(yōu)化提供數(shù)據(jù)支撐。
漸進式偏好優(yōu)化(Correction)
![]()
自適應錯誤回放(Quiz)
為適配模型訓練過程中的能力變化,該模塊定期在一個小驗證集上評估模型性能,實時捕捉當前階段的高頻錯誤類型,找出模型依舊犯錯的題型,將其對應的失敗答案重新納入訓練流程。通過動態(tài)調(diào)整訓練數(shù)據(jù)分布,確保模型始終聚焦于當前的能力短板,有效緩解災難性遺忘問題。
三、實驗驗證與結(jié)果分析
研究團隊在 6 款主流 LLM(含代碼專用模型 CodeLlama、DeepSeek-Coder、Qwen2.5-Coder 與通用模型 Llama3、Qwen2.5、Qwen3)上開展了系統(tǒng)驗證,參數(shù)規(guī)模覆蓋 0.5B - 34B,實驗基準包括 EvalPlus(HumanEval/MBPP)與 LiveCodeBench v6,主要取得以下研究發(fā)現(xiàn):
性能提升的有效性
在不同類型與參數(shù)規(guī)模的模型上,AP2O-Coder 均展現(xiàn)出穩(wěn)定的性能改進。如下表所示,在 EvalPlus(HumanEval)基準上,AP2O-Coder (H2L) 即使對于 30B+ 的大參數(shù)模型,也能實現(xiàn) 2.8% - 3.4% 的性能優(yōu)化,且未出現(xiàn)現(xiàn)有后訓練方法中性能退化現(xiàn)象。
![]()
表 1:各種類型和規(guī)模代碼的 LLM 在 Pass@1 on EvalPlus (HumanEval) 上的表現(xiàn)。
錯誤抑制效果與泛化能力
![]()
圖 2:使用 Qwen2.5-Coder-7B 在測試基準上出現(xiàn)錯誤的統(tǒng)計數(shù)據(jù)。
![]()
圖 3:使用 Qwen2.5-Coder-7B 在測驗階段對驗證集上的錯誤統(tǒng)計結(jié)果。我們的 AP2O-Coder 能夠逐步減少錯誤。
如圖 2 所示,相較于 SFT、DPO 等基線方法,AP2O-Coder 能夠有效降低各類錯誤的發(fā)生頻率,且未引入新的錯誤類型。如圖 3,在 Qwen2.5-Coder-7B 的實驗中,高頻錯誤「WrongResult」的發(fā)生率顯著下降,IndexError 等小眾錯誤在訓練后期實現(xiàn)清零。同時,該方法在 pass@5、pass@10 等指標上的穩(wěn)定提升(如圖 4),表明其增強了模型代碼生成的泛化能力。
![]()
圖 4:在不同模型規(guī)模下,使用 DeepSeek-Coder 在 EvalPlus (HumanEval) 基準上的 pass@5 和 pass@10 表現(xiàn)。
樣本效率的優(yōu)化
![]()
圖 5:用于在 MBPP 訓練集上對不同規(guī)模的 Qwen2.5-Coder 進行訓練并達到最優(yōu)性能的偏好數(shù)據(jù)對需求。
AP2O-Coder 通過錯誤類型的精準聚焦,顯著提升了訓練數(shù)據(jù)的利用效率。實驗結(jié)果顯示,該方法僅需 4% - 60% 的偏好數(shù)據(jù)即可達到傳統(tǒng) DPO 方法的最優(yōu)性能,在 32B 參數(shù)規(guī)模的模型上,數(shù)據(jù)需求量減少更為明顯(如圖 5),這就和班上刷題時,優(yōu)等生所需刷題量更少類似,為低資源場景下的 LLM 代碼優(yōu)化提供了可行路徑。
通用 LLM 適配性
![]()
圖 6:在將通用 LLM(如 Qwen2.5、Qwen3 和 Llama3)適配到代碼領域時,其在 EvalPlus (MBPP) 上的 pass@1 表現(xiàn)。
AP2O-Coder 不僅適用于代碼專用 LLM,也能有效支持通用 LLM 向代碼領域的適配。在 Qwen3、Llama3 等通用模型的實驗中,經(jīng)過該方法優(yōu)化后,模型在 MBPP 基準上的 pass@1 分數(shù)顯著提升,驗證了其跨模型類型的適配能力(如圖 6)。
四、研究發(fā)現(xiàn)與方法特性
實驗過程中,團隊發(fā)現(xiàn)了優(yōu)化策略與模型規(guī)模的適配規(guī)律:
對于Qwen2.5-Coder,小參數(shù)模型(≤ 3B)采用「低頻錯誤 -> 高頻錯誤」的優(yōu)化順序更具優(yōu)勢,這一策略可避免模型因能力有限而陷入高頻常見錯誤的學習困境,而讓小模型一開始能看到不同種類的錯誤,跳出局部最優(yōu);
大參數(shù)模型(≥ 7B)采用「高頻錯誤 -> 低頻錯誤」的順序效果更優(yōu),能夠充分發(fā)揮其強學習能力,快速實現(xiàn)整體錯誤率的下降。這一發(fā)現(xiàn)為不同規(guī)模 LLM 的代碼優(yōu)化提供了針對性參考。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.