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