這項(xiàng)由俄羅斯MTS AI公司的研究團(tuán)隊(duì)完成的突破性研究,于2025年4月發(fā)表在arXiv學(xué)術(shù)平臺(tái)上。論文的主要作者包括Nikita Sorokin、Ivan Sedykh以及來(lái)自國(guó)際IT大學(xué)的Valentin Malykh。感興趣的讀者可以通過(guò)arXiv:2504.09643v1訪問完整論文。這項(xiàng)研究提出了一種全新的代碼生成方法——RewardRanker,它就像給AI配備了一個(gè)經(jīng)驗(yàn)豐富的編程導(dǎo)師,能夠從多個(gè)代碼候選方案中挑選出最優(yōu)秀的那一個(gè)。
這個(gè)研究解決的問題其實(shí)很貼近我們的日常體驗(yàn)。當(dāng)我們讓AI幫忙寫代碼時(shí),經(jīng)常會(huì)遇到這樣的情況:AI給出的代碼看起來(lái)挺像那么回事,但實(shí)際運(yùn)行時(shí)卻問題百出。這就好比讓一個(gè)剛學(xué)會(huì)寫字的孩子抄寫文章,雖然每個(gè)字都認(rèn)識(shí),但組合起來(lái)可能就不通順了。傳統(tǒng)的AI代碼生成模型就存在這樣的問題——它們生成的代碼具有很強(qiáng)的隨機(jī)性,哪怕一個(gè)小錯(cuò)誤都可能讓整個(gè)程序崩潰。
研究團(tuán)隊(duì)發(fā)現(xiàn)了一個(gè)有趣的現(xiàn)象:AI在生成多個(gè)代碼方案時(shí),雖然第一次嘗試可能不夠完美,但在這些嘗試中往往隱藏著正確的解決方案。這就像一個(gè)學(xué)生考試時(shí),雖然第一反應(yīng)的答案可能有誤,但草稿紙上的幾次嘗試中可能包含了正確思路?;谶@個(gè)發(fā)現(xiàn),他們開發(fā)了RewardRanker系統(tǒng)。
一、重新定義代碼生成的游戲規(guī)則
RewardRanker的工作原理可以用餐廳點(diǎn)菜來(lái)類比。傳統(tǒng)的AI代碼生成就像一個(gè)新手廚師,只會(huì)按照第一個(gè)想到的菜譜做菜,成功率完全看運(yùn)氣。而RewardRanker則像一個(gè)經(jīng)驗(yàn)豐富的主廚團(tuán)隊(duì):首先讓多個(gè)廚師(代碼生成器)分別準(zhǔn)備不同的菜品(生成多個(gè)代碼方案),然后由一位資深美食評(píng)委(重排序模型)品嘗所有菜品,最終選出最美味的那道菜呈現(xiàn)給顧客。
這個(gè)系統(tǒng)的核心創(chuàng)新在于引入了一個(gè)"智能評(píng)委"——重排序模型。這個(gè)評(píng)委不僅能夠判斷代碼的好壞,還能通過(guò)不斷學(xué)習(xí)變得越來(lái)越專業(yè)。研究團(tuán)隊(duì)采用了一種叫做"近端策略優(yōu)化"(PPO)的強(qiáng)化學(xué)習(xí)技術(shù)來(lái)訓(xùn)練這個(gè)評(píng)委。簡(jiǎn)單來(lái)說(shuō),就是讓評(píng)委在不斷的實(shí)踐中積累經(jīng)驗(yàn),逐步提高判斷水平。
與以往的方法不同,RewardRanker特別注重從失敗中學(xué)習(xí)。傳統(tǒng)方法往往只關(guān)注正確的代碼,而忽略了錯(cuò)誤代碼中蘊(yùn)含的寶貴信息。RewardRanker會(huì)特別收集那些"看起來(lái)很好但實(shí)際有問題"的代碼案例,這些被稱為"困難負(fù)樣本"。通過(guò)分析這些容易混淆的錯(cuò)誤案例,系統(tǒng)能夠更好地識(shí)別代碼中的細(xì)微問題,就像醫(yī)生通過(guò)研究疑難病例來(lái)提高診斷水平一樣。
整個(gè)訓(xùn)練過(guò)程采用了迭代自訓(xùn)練的方式,這就像一個(gè)持續(xù)改進(jìn)的循環(huán)過(guò)程。系統(tǒng)首先接受基礎(chǔ)訓(xùn)練,然后生成新的代碼樣本,對(duì)這些樣本進(jìn)行評(píng)估,找出其中的優(yōu)秀案例和問題案例,再用這些新數(shù)據(jù)來(lái)更新訓(xùn)練,如此循環(huán)往復(fù)。這種方法雖然計(jì)算成本較高,但即使只進(jìn)行一輪迭代,也能顯著提升代碼生成質(zhì)量。
二、數(shù)據(jù)基礎(chǔ)與評(píng)估標(biāo)準(zhǔn)的精心構(gòu)建
研究團(tuán)隊(duì)構(gòu)建訓(xùn)練數(shù)據(jù)的過(guò)程就像準(zhǔn)備一場(chǎng)盛大的烹飪比賽。他們從CodeContests和公開的Codeforces競(jìng)賽解題數(shù)據(jù)中收集了豐富的編程素材,這些數(shù)據(jù)包含了各種類型的編程問題和對(duì)應(yīng)的解決方案,既有正確的優(yōu)秀代碼,也有存在問題的代碼片段。
在數(shù)據(jù)處理階段,研究團(tuán)隊(duì)采用了兩種不同的組織方式。對(duì)于監(jiān)督學(xué)習(xí)階段,他們將數(shù)據(jù)整理成"問題-解答"的配對(duì)形式,就像教科書中的例題和標(biāo)準(zhǔn)答案。這部分?jǐn)?shù)據(jù)總共包含120萬(wàn)個(gè)樣本,平均每個(gè)樣本約1500個(gè)字符長(zhǎng)度。為了確保訓(xùn)練效率,他們剔除了超過(guò)4000個(gè)字符的過(guò)長(zhǎng)樣本,這就像挑選食材時(shí)去掉過(guò)大不易處理的部分。
更有趣的是對(duì)齊訓(xùn)練數(shù)據(jù)的構(gòu)建方式。研究團(tuán)隊(duì)將數(shù)據(jù)組織成"問題-正確答案-錯(cuò)誤答案"的三元組形式,這樣的結(jié)構(gòu)能夠幫助系統(tǒng)學(xué)會(huì)區(qū)分好壞代碼。在CodeContests數(shù)據(jù)中,標(biāo)記為"OK"的代碼被視為正確答案,其他則被歸類為錯(cuò)誤答案。為了增加訓(xùn)練的多樣性,他們既使用了相似度很高的錯(cuò)誤答案(通過(guò)編輯距離計(jì)算),也使用了隨機(jī)選擇的錯(cuò)誤答案,最終構(gòu)建了200萬(wàn)個(gè)這樣的三元組數(shù)據(jù)。
評(píng)估階段,研究團(tuán)隊(duì)選擇了MultiPL-E數(shù)據(jù)集作為主要測(cè)試平臺(tái)。這個(gè)數(shù)據(jù)集的特別之處在于它支持多種編程語(yǔ)言的代碼生成評(píng)估,涵蓋了18種不同的編程語(yǔ)言,從流行的Python、Java、C++到相對(duì)小眾的編程語(yǔ)言都有涉及。此外,他們還使用了MBPP數(shù)據(jù)集進(jìn)行補(bǔ)充評(píng)估,這個(gè)數(shù)據(jù)集包含974個(gè)Python編程問題,每個(gè)問題都配有自然語(yǔ)言描述、標(biāo)準(zhǔn)解答和測(cè)試用例。
三、技術(shù)實(shí)現(xiàn)的巧妙設(shè)計(jì)
RewardRanker的技術(shù)實(shí)現(xiàn)過(guò)程就像培養(yǎng)一個(gè)專業(yè)的藝術(shù)鑒賞師。整個(gè)過(guò)程分為幾個(gè)階段,每個(gè)階段都有其特定的目標(biāo)和作用。
首先是監(jiān)督微調(diào)階段,這就像給一個(gè)學(xué)生提供標(biāo)準(zhǔn)教材進(jìn)行基礎(chǔ)學(xué)習(xí)。系統(tǒng)在大量的代碼數(shù)據(jù)上進(jìn)行訓(xùn)練,學(xué)習(xí)如何生成基本的代碼結(jié)構(gòu)和語(yǔ)法。這個(gè)階段建立了代碼生成的基礎(chǔ)能力,為后續(xù)的高級(jí)訓(xùn)練奠定基礎(chǔ)。
接下來(lái)是獎(jiǎng)勵(lì)模型訓(xùn)練階段,這是整個(gè)系統(tǒng)的核心環(huán)節(jié)。研究團(tuán)隊(duì)使用Bradley-Terry模型來(lái)訓(xùn)練獎(jiǎng)勵(lì)模型,這個(gè)模型的作用就像培養(yǎng)一個(gè)能夠準(zhǔn)確評(píng)估代碼質(zhì)量的專家。系統(tǒng)學(xué)會(huì)了如何給不同的代碼方案打分,優(yōu)秀的代碼獲得高分,有問題的代碼獲得低分。這個(gè)評(píng)分系統(tǒng)的準(zhǔn)確性直接影響到最終的代碼選擇質(zhì)量。
然后是近端策略優(yōu)化階段,這是讓系統(tǒng)變得更加智能的關(guān)鍵步驟。PPO算法通過(guò)與獎(jiǎng)勵(lì)模型的互動(dòng),不斷優(yōu)化代碼生成策略。系統(tǒng)會(huì)生成多個(gè)候選解決方案,通過(guò)獎(jiǎng)勵(lì)模型的評(píng)分來(lái)指導(dǎo)學(xué)習(xí)方向,逐步提高生成高質(zhì)量代碼的概率。這個(gè)過(guò)程就像一個(gè)作家通過(guò)編輯的反饋不斷完善自己的寫作技巧。
最重要的創(chuàng)新在于自訓(xùn)練循環(huán)階段。在PPO訓(xùn)練完成后,系統(tǒng)會(huì)生成新的代碼樣本,并通過(guò)測(cè)試用例來(lái)評(píng)估這些樣本的實(shí)際性能。那些獲得高分但實(shí)際上存在錯(cuò)誤的代碼(困難負(fù)樣本)會(huì)被特別收集起來(lái),加入到下一輪的訓(xùn)練數(shù)據(jù)中。這種做法幫助系統(tǒng)學(xué)會(huì)識(shí)別那些容易誤判的代碼模式,顯著提高了判斷的準(zhǔn)確性。
研究團(tuán)隊(duì)開發(fā)了多個(gè)不同配置的模型版本。RewardRanker(1.3B + 6.7B)使用13億參數(shù)的模型作為代碼生成器,67億參數(shù)的模型作為重排序器。RewardRanker(6.7B + 6.7B)則使用67億參數(shù)的模型同時(shí)擔(dān)任兩個(gè)角色。此外,他們還開發(fā)了專門使用困難負(fù)樣本訓(xùn)練的版本,以及經(jīng)過(guò)自訓(xùn)練優(yōu)化的版本,每個(gè)版本都針對(duì)不同的應(yīng)用場(chǎng)景進(jìn)行了優(yōu)化。
四、令人驚喜的實(shí)驗(yàn)結(jié)果
實(shí)驗(yàn)結(jié)果就像一場(chǎng)精彩的競(jìng)技比賽,RewardRanker在各個(gè)項(xiàng)目上都展現(xiàn)出了優(yōu)異的表現(xiàn)。在MultiPL-E數(shù)據(jù)集的評(píng)估中,RewardRanker取得了令人矚目的成績(jī),這些結(jié)果充分證明了新方法的有效性。
在與現(xiàn)有頂級(jí)模型的對(duì)比中,RewardRanker展現(xiàn)出了明顯的優(yōu)勢(shì)。以Python編程為例,RewardRanker 2 iter.selftraining版本達(dá)到了81.7%的成功率,顯著超過(guò)了DeepSeek-Coder-Instruct 33B模型的79.3%。更令人印象深刻的是,在C++編程語(yǔ)言上,RewardRanker甚至超越了GPT-4,達(dá)到了79.2%的成功率,而GPT-4為76.4%。
不同編程語(yǔ)言的表現(xiàn)也很有趣。RewardRanker在大多數(shù)主流編程語(yǔ)言上都表現(xiàn)出色,包括Java(77.4%)、PHP(71.6%)、C#(75.2%)和JavaScript(75.1%)。雖然在Bash腳本編程上表現(xiàn)相對(duì)較弱(39.6%),但這主要是因?yàn)锽ash編程本身的特殊性和復(fù)雜性。
最令人驚喜的發(fā)現(xiàn)是模型規(guī)模與性能的關(guān)系。RewardRanker 13.4B參數(shù)的模型不僅在性能上超越了33B參數(shù)的大型模型,而且運(yùn)行速度快了三倍。這就像一輛精心調(diào)校的跑車,雖然排量不是最大,但通過(guò)優(yōu)化設(shè)計(jì)獲得了更好的性能表現(xiàn)。這個(gè)結(jié)果對(duì)于實(shí)際應(yīng)用具有重要意義,因?yàn)樗馕吨脩艨梢杂酶俚挠?jì)算資源獲得更好的代碼生成效果。
在MBPP數(shù)據(jù)集上的對(duì)比實(shí)驗(yàn)進(jìn)一步驗(yàn)證了RewardRanker的優(yōu)勢(shì)。與LEVER方法相比,RewardRanker在使用相同基礎(chǔ)模型的情況下,性能提升了0.5個(gè)百分點(diǎn),達(dá)到了69.9%的成功率。雖然提升幅度看似不大,但在代碼生成這樣的精確性要求極高的任務(wù)中,每一點(diǎn)改進(jìn)都是珍貴的。
困難負(fù)樣本訓(xùn)練的效果也得到了驗(yàn)證。通過(guò)引入那些容易被誤判的錯(cuò)誤代碼樣本,RewardRanker學(xué)會(huì)了更加細(xì)致的區(qū)分能力。這就像訓(xùn)練一個(gè)珠寶鑒定師,除了看大量真品外,還要仔細(xì)研究各種仿品的特征,這樣才能在實(shí)際工作中避免被高質(zhì)量仿品欺騙。
五、技術(shù)創(chuàng)新的深層價(jià)值
RewardRanker的技術(shù)創(chuàng)新體現(xiàn)在多個(gè)層面,這些創(chuàng)新不僅解決了當(dāng)前的技術(shù)問題,還為未來(lái)的發(fā)展指明了方向。
首先,重排序策略的應(yīng)用是一個(gè)重要突破。傳統(tǒng)的代碼生成方法往往依賴于生成模型的第一次輸出,這就像只給學(xué)生一次考試機(jī)會(huì)。而RewardRanker允許生成多個(gè)候選方案,然后從中選擇最優(yōu)的一個(gè),這大大增加了獲得正確答案的概率。這種"多次嘗試,擇優(yōu)選擇"的策略在許多實(shí)際應(yīng)用中都非常有效。
迭代自訓(xùn)練機(jī)制的引入是另一個(gè)關(guān)鍵創(chuàng)新。這種方法讓系統(tǒng)能夠從自己的錯(cuò)誤中學(xué)習(xí),不斷改進(jìn)判斷能力。每一輪訓(xùn)練都會(huì)產(chǎn)生新的樣本,這些樣本經(jīng)過(guò)評(píng)估后又成為下一輪訓(xùn)練的素材,形成了一個(gè)正向循環(huán)。這就像一個(gè)優(yōu)秀的學(xué)生,不僅從課本中學(xué)習(xí),還會(huì)從自己的練習(xí)中總結(jié)經(jīng)驗(yàn),不斷提高。
困難負(fù)樣本的重視和利用也是一個(gè)亮點(diǎn)。大多數(shù)機(jī)器學(xué)習(xí)系統(tǒng)都偏重于學(xué)習(xí)正確的樣本,而忽略了錯(cuò)誤樣本中蘊(yùn)含的信息。RewardRanker特別關(guān)注那些"看起來(lái)對(duì)但實(shí)際上錯(cuò)"的代碼,通過(guò)分析這些容易混淆的案例,系統(tǒng)獲得了更強(qiáng)的判別能力。這種做法在醫(yī)學(xué)診斷、金融風(fēng)控等領(lǐng)域都有重要應(yīng)用價(jià)值。
小模型超越大模型的現(xiàn)象也具有重要意義。這說(shuō)明通過(guò)精巧的算法設(shè)計(jì)和訓(xùn)練策略,完全可以讓相對(duì)較小的模型獲得超越大型模型的性能。這不僅降低了部署成本,也為在資源受限的環(huán)境中應(yīng)用先進(jìn)AI技術(shù)開辟了道路。這就像一個(gè)技藝精湛的工匠,用簡(jiǎn)單的工具也能制作出精美的作品。
多語(yǔ)言代碼生成能力的提升也值得關(guān)注。在全球化的軟件開發(fā)環(huán)境中,程序員經(jīng)常需要使用不同的編程語(yǔ)言來(lái)解決問題。RewardRanker在多種編程語(yǔ)言上的優(yōu)異表現(xiàn),使得它能夠成為程序員的得力助手,無(wú)論面對(duì)什么樣的編程任務(wù)都能提供有效支持。
說(shuō)到底,這項(xiàng)研究的真正價(jià)值在于它讓AI寫代碼變得更加可靠和實(shí)用。程序員不再需要擔(dān)心AI生成的代碼問題百出,而可以將AI當(dāng)作一個(gè)真正有用的編程伙伴。對(duì)于初學(xué)者來(lái)說(shuō),這樣的工具能夠幫助他們更快地學(xué)習(xí)編程;對(duì)于經(jīng)驗(yàn)豐富的開發(fā)者,它則能夠提高工作效率,處理那些重復(fù)性的編程任務(wù)。
更重要的是,RewardRanker的成功證明了一個(gè)重要觀點(diǎn):在AI系統(tǒng)中,如何選擇和評(píng)估結(jié)果往往比如何生成結(jié)果更加重要。這個(gè)洞察不僅適用于代碼生成,在其他AI應(yīng)用領(lǐng)域也具有普遍意義。無(wú)論是文本生成、圖像處理還是決策制定,都可以借鑒這種"生成-評(píng)估-選擇"的思路來(lái)提升性能。
隨著這項(xiàng)技術(shù)的進(jìn)一步發(fā)展和完善,我們有理由相信,未來(lái)的編程工作會(huì)變得更加智能和高效。程序員可以將更多精力投入到創(chuàng)新性的設(shè)計(jì)和架構(gòu)思考上,而將那些標(biāo)準(zhǔn)化的編碼工作交給AI來(lái)完成。這種人機(jī)協(xié)作的編程模式,可能會(huì)徹底改變軟件開發(fā)的面貌。有興趣深入了解技術(shù)細(xì)節(jié)的讀者,可以通過(guò)arXiv:2504.09643v1訪問完整論文,了解更多實(shí)現(xiàn)細(xì)節(jié)和實(shí)驗(yàn)數(shù)據(jù)。
Q&A
Q1:RewardRanker是什么?它能做什么? A:RewardRanker是MTS AI開發(fā)的代碼生成系統(tǒng),它的核心能力是從多個(gè)AI生成的代碼方案中挑選出最優(yōu)秀的那一個(gè)。就像給AI配備了一個(gè)經(jīng)驗(yàn)豐富的編程導(dǎo)師,能夠識(shí)別和選擇高質(zhì)量的代碼,大大提高了AI編程的可靠性和準(zhǔn)確性。
Q2:RewardRanker會(huì)不會(huì)取代程序員的工作? A:目前不會(huì)完全取代,但會(huì)顯著改變編程工作方式。RewardRanker更像是程序員的智能助手,幫助處理重復(fù)性的編碼任務(wù),讓程序員能夠?qū)W⒂诟袆?chuàng)意的設(shè)計(jì)和架構(gòu)工作。它提高的是編程效率,而不是替代程序員的創(chuàng)造性思維。
Q3:普通人能使用RewardRanker嗎?需要什么條件? A:目前RewardRanker還是研究階段的技術(shù),普通用戶暫時(shí)無(wú)法直接使用。不過(guò)隨著技術(shù)的成熟,未來(lái)可能會(huì)集成到各種開發(fā)工具和編程平臺(tái)中。使用時(shí)需要基本的編程知識(shí)來(lái)理解和驗(yàn)證生成的代碼,因?yàn)锳I雖然變得更聰明了,但人工審核仍然是必要的。
好文章,需要你的鼓勵(lì)
浙江大學(xué)團(tuán)隊(duì)提出動(dòng)態(tài)專家搜索方法,讓AI能根據(jù)不同問題靈活調(diào)整內(nèi)部專家配置。該方法在數(shù)學(xué)、編程等任務(wù)上顯著提升推理準(zhǔn)確率,且不增加計(jì)算成本。研究發(fā)現(xiàn)不同類型問題偏愛不同專家配置,為AI推理優(yōu)化開辟新路徑。
清華大學(xué)研究團(tuán)隊(duì)提出SIRI方法,通過(guò)"壓縮-擴(kuò)張"交替訓(xùn)練策略,成功解決了大型推理模型"話多且準(zhǔn)確率低"的問題。實(shí)驗(yàn)顯示,該方法在數(shù)學(xué)競(jìng)賽題上將模型準(zhǔn)確率提升43.2%的同時(shí),輸出長(zhǎng)度減少46.9%,真正實(shí)現(xiàn)了效率與性能的雙重優(yōu)化,為AI模型訓(xùn)練提供了新思路。
南洋理工大學(xué)與騰訊聯(lián)合研究團(tuán)隊(duì)開發(fā)出Rolling Forcing技術(shù),實(shí)現(xiàn)AI視頻實(shí)時(shí)流式生成的重大突破。該技術(shù)通過(guò)滾動(dòng)窗口聯(lián)合去噪、注意力錨點(diǎn)機(jī)制和高效訓(xùn)練算法三項(xiàng)創(chuàng)新,解決了長(zhǎng)視頻生成中的錯(cuò)誤累積問題,可在單GPU上以16fps速度生成多分鐘高質(zhì)量視頻,延遲僅0.76秒,質(zhì)量漂移指標(biāo)從傳統(tǒng)方法的1.66降至0.01,為交互式媒體和內(nèi)容創(chuàng)作開辟新可能。
華中科技大學(xué)研究團(tuán)隊(duì)發(fā)現(xiàn),通過(guò)讓AI模型學(xué)習(xí)解決幾何問題,能夠顯著提升其空間理解能力。他們構(gòu)建了包含約30000個(gè)幾何題目的Euclid30K數(shù)據(jù)集,使用強(qiáng)化學(xué)習(xí)方法訓(xùn)練多個(gè)AI模型。實(shí)驗(yàn)結(jié)果顯示,幾何訓(xùn)練在四個(gè)空間智能測(cè)試基準(zhǔn)上都帶來(lái)顯著提升,其中最佳模型達(dá)到49.6%準(zhǔn)確率,超越此前最好成績(jī)。這項(xiàng)研究揭示了基礎(chǔ)幾何知識(shí)對(duì)培養(yǎng)AI空間智能的重要價(jià)值。