一行代碼不用寫(xiě),AI看論文自己「生」出代碼庫(kù)!科研神器再+1
這幾年,AI領(lǐng)域的科研人員遇到一個(gè)問(wèn)題。
那就是機(jī)器學(xué)習(xí)的論文實(shí)在是多到看不過(guò)來(lái),更別說(shuō)還要用代碼實(shí)現(xiàn)論文中邏輯。

HuggingFace上的「每日論文」板塊每天都有十幾篇新出的研究論文
這導(dǎo)致一個(gè)問(wèn)題,研究者往往「重視結(jié)果」而沒(méi)有精力來(lái)用用代碼驗(yàn)證,并且復(fù)現(xiàn)很多先前的工作有點(diǎn)「重復(fù)造輪子」,浪費(fèi)研究者的精力。
但與此同時(shí),目前的AI——像o3/Gemini 2.5系列等——在理解科學(xué)文獻(xiàn)和高質(zhì)量代碼上表現(xiàn)非常好,像Andrej Karpathy、吳恩達(dá)等頂級(jí)研究者和科學(xué)家都在推崇使用AI的「編程氛圍」。
有沒(méi)有辦法用現(xiàn)在這些「前沿AI」的能力解決這個(gè)問(wèn)題?
韓國(guó)科學(xué)技術(shù)院和DeepAuto.ai針對(duì)這個(gè)問(wèn)題推出了名為Paper2Code的多智能體框架(又名PaperCode),可將機(jī)器學(xué)習(xí)論文直接轉(zhuǎn)換為可用的功能代碼庫(kù)。

論文地址:https://arxiv.org/pdf/2504.17192
一般來(lái)講,單獨(dú)一個(gè)智能體或者LLM很難將一篇論文直接轉(zhuǎn)換為可用代碼庫(kù)(下圖左)。
PaperCode多智能體框架通過(guò)將任務(wù)分為三個(gè)階段:規(guī)劃階段、分析階段和生成階段。
此外,每個(gè)階段都通過(guò)一組專門(mén)設(shè)計(jì)的智能體來(lái)實(shí)例化這個(gè)過(guò)程。

這個(gè)項(xiàng)目已經(jīng)開(kāi)源,如果真的可以讓AI「看論文」,并且將論文邏輯用代碼實(shí)現(xiàn),確實(shí)可以為科研工作者省去很多不必要的精力。

項(xiàng)目開(kāi)源后,網(wǎng)友突然調(diào)侃,你能不能用Paper2Code生成Paper2Code的代碼呢。
如何解決的「可重復(fù)性」問(wèn)題
可重復(fù)性(Reproducibility)是科學(xué)進(jìn)步的核心。
通過(guò)復(fù)現(xiàn)其他人所宣稱的科研成果,可以使研究人員驗(yàn)證、并基于公布的成果進(jìn)行構(gòu)建,最終推動(dòng)人類整體知識(shí)的邊界。
然而因?yàn)槲臋n不完整、缺少實(shí)驗(yàn)細(xì)節(jié)、無(wú)法訪問(wèn)數(shù)據(jù)或?qū)S泄ぞ撸貏e是在機(jī)器學(xué)習(xí)研究中,缺乏相應(yīng)的代碼:例如,只有 21.23%的論文在 2024 年被頂級(jí)機(jī)器學(xué)習(xí)會(huì)議接受并提供了其代碼實(shí)現(xiàn),如下圖所示。
因此,這種復(fù)現(xiàn)他人的成果的過(guò)程費(fèi)時(shí)費(fèi)力。
研究人員經(jīng)常需要投入大量精力從論文中逆向工程方法和實(shí)驗(yàn)結(jié)果,這一過(guò)程減緩了整體科學(xué)創(chuàng)新的步伐。

PaperCoder,是一個(gè)多智能體的LLM驅(qū)動(dòng)框架,旨在直接從研究論文中自動(dòng)生成機(jī)器學(xué)習(xí)的可執(zhí)行代碼庫(kù),并與研究論文內(nèi)容相上下文關(guān)聯(lián)。
具體來(lái)說(shuō),PaperCoder旨在通過(guò)將任務(wù)分解為三個(gè)結(jié)構(gòu)化階段來(lái)模擬人類開(kāi)發(fā)者和研究人員編寫(xiě)倉(cāng)庫(kù)級(jí)代碼的典型生命周期:
1. 首先,在規(guī)劃階段,框架構(gòu)建了一個(gè)高層次路線圖以確定要實(shí)現(xiàn)的核心組件,繪制了類圖和序列圖來(lái)建模模塊之間的結(jié)構(gòu)關(guān)系,識(shí)別了文件依賴關(guān)系及其執(zhí)行順序以指導(dǎo)正確的構(gòu)建和執(zhí)行流程,并生成了配置文件以使人類研究人員能夠靈活定制實(shí)驗(yàn)工作流。
2. 接下來(lái)是分析階段,對(duì)每個(gè)文件和函數(shù)進(jìn)行細(xì)致的解析,以理解其預(yù)期功能,例如所需的輸入和輸出、與其他模塊的交互,以及從源論文中得出的任何算法或架構(gòu)約束。
3. 最后,在生成階段,框架根據(jù)先前確定的執(zhí)行順序以及前幾個(gè)階段產(chǎn)生的工件來(lái)合成整個(gè)代碼庫(kù)。

為了驗(yàn)證PaperCoder的有效性,在2024年頂級(jí)會(huì)議(包括 NeurIPS、ICML 和 ICLR)上接受的最近機(jī)器學(xué)習(xí)論文的一個(gè)子集上進(jìn)行了廣泛的評(píng)估——這也被稱為Paper2Code基準(zhǔn)。
此外,還將最近OpenAI發(fā)布的PaperBench基準(zhǔn)納入評(píng)估套件中,從而能夠?qū)?lái)自 ICML2024的一些論文的代碼實(shí)現(xiàn)進(jìn)行細(xì)粒度的評(píng)估。

論文地址:https://arxiv.org/pdf/2504.01848
倉(cāng)庫(kù)級(jí)編碼
基于LLM的代碼生成可以大致分為單文件編碼和多文件(倉(cāng)庫(kù)級(jí))編碼。
單文件編碼側(cè)重于生成相對(duì)較短的代碼片段以解決孤立的任務(wù),例如編程競(jìng)賽問(wèn)題或簡(jiǎn)單的編碼查詢。
隨著LLM在代碼理解、長(zhǎng)上下文推理和處理復(fù)雜工作流程方面的進(jìn)步,研究越來(lái)越多地轉(zhuǎn)向倉(cāng)庫(kù)級(jí)編碼,其中在聯(lián)合考慮架構(gòu)和功能需求的同時(shí)生成多個(gè)文件。
最近很火的Cursor、Windsurf等AI編程IDE也是因?yàn)槟軌蛏蓚}(cāng)庫(kù)級(jí)的代碼從而在程序員中流行起來(lái)。
LLM驅(qū)動(dòng)的科學(xué)研究
科學(xué)進(jìn)步的過(guò)程通常是一個(gè)想法生成、假設(shè)驗(yàn)證和實(shí)驗(yàn)執(zhí)行的循環(huán)。
LLMs已被應(yīng)用于這個(gè)循環(huán)的各個(gè)階段,包括研究構(gòu)思、假設(shè)生成和同行評(píng)審,從而幫助研究人員克服現(xiàn)有局限并加速科學(xué)發(fā)現(xiàn)。
在計(jì)算機(jī)科學(xué)和機(jī)器學(xué)習(xí)中,基于代碼的實(shí)驗(yàn)是基礎(chǔ),LLMs也被用來(lái)設(shè)計(jì)增強(qiáng)現(xiàn)有代碼庫(kù)的實(shí)驗(yàn)。
PaperBench引入了一個(gè)基準(zhǔn)測(cè)試,在該測(cè)試中AI智能體嘗試重現(xiàn)機(jī)器學(xué)習(xí)論文。
通過(guò)專注于庫(kù)級(jí)別的重現(xiàn),PaperCode將LLM驅(qū)動(dòng)的自動(dòng)化范圍擴(kuò)展到了構(gòu)思和假設(shè)生成之外,為科學(xué)研究中一個(gè)關(guān)鍵但尚未充分探索的方面做出了貢獻(xiàn)。
PaperCode的三步走
在機(jī)器學(xué)習(xí)研究中,實(shí)驗(yàn)通常使用代碼進(jìn)行。然而,在很多情況下,研究人員并不發(fā)布他們的代碼,這使得其他人難以重現(xiàn)和驗(yàn)證所提出的方法和實(shí)驗(yàn)。
當(dāng)非作者嘗試手動(dòng)重新實(shí)現(xiàn)代碼時(shí),這個(gè)過(guò)程往往是勞動(dòng)密集型且耗時(shí)的。
受到軟件開(kāi)發(fā)方法論的啟發(fā),PaperCode采用了一種結(jié)構(gòu)化的方法,該方法反映了經(jīng)過(guò)充分驗(yàn)證的軟件工程原則。
規(guī)劃階段
提供研究論文作為模型的輸入并期望它生成一個(gè)完整的倉(cāng)庫(kù)是非常具有挑戰(zhàn)性的。
研究論文主要是為了記錄發(fā)現(xiàn)和說(shuō)服讀者,而不是作為軟件開(kāi)發(fā)的結(jié)構(gòu)化輸入。
因此,論文中通常包含補(bǔ)充信息,這些信息雖然對(duì)于傳達(dá)核心概念是必要的,但與實(shí)現(xiàn)并不直接相關(guān)。
這可能會(huì)引入噪音,使倉(cāng)庫(kù)生成變得困難且效果較差。
為了解決這一挑戰(zhàn),PaperCode建議將論文分解成一個(gè)結(jié)構(gòu)化的多方面計(jì)劃,而不是僅僅使用論文作為輸入。
這種方法將關(guān)鍵的實(shí)現(xiàn)相關(guān)元素組織成四個(gè)不同的組件,確保生成的倉(cāng)庫(kù)結(jié)構(gòu)良好,并與論文的方法論一致。

總體計(jì)劃
規(guī)劃階段的第一步,總體計(jì)劃,涉及從高層次角度總結(jié)和組織實(shí)施研究庫(kù)所需的核心要素。
該摘要提供了一個(gè)基本的概念框架,明確指導(dǎo)后續(xù)步驟。
架構(gòu)設(shè)計(jì)
第二階段涉及根據(jù)前一階段生成的總體計(jì)劃和研究論文來(lái)架構(gòu)軟件。
設(shè)計(jì)一個(gè)結(jié)構(gòu)良好的架構(gòu)是必不可少的,特別是對(duì)于必須無(wú)縫交互的多個(gè)功能的軟件系統(tǒng)。
此階段的重點(diǎn)是識(shí)別必要的組件并定義它們之間的關(guān)系,以確保一個(gè)組織良好且功能性的倉(cāng)庫(kù)。為此,PaperCode要求創(chuàng)建定義軟件架構(gòu)的關(guān)鍵工件。
文件列表是倉(cāng)庫(kù)所需文件的結(jié)構(gòu)化集合,概述了軟件的模塊化結(jié)構(gòu)。
類圖提供了系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)和接口的靜態(tài)表示。使用統(tǒng)一建模語(yǔ)言(UML)符號(hào),這是一種用于建模軟件系統(tǒng)的標(biāo)準(zhǔn)化視覺(jué)語(yǔ)言。
PaperCode將類表示為矩形,將屬性和方法表示為列表,并用連接線來(lái)說(shuō)明不同組件如何交互。 序列圖動(dòng)態(tài)地表示了程序的調(diào)用流程和對(duì)象交互,使用 UML 符號(hào)將參與者表示為對(duì)象,消息表示為箭頭,生命線表示為虛線,直觀地展示了組件如何隨時(shí)間進(jìn)行通信。
這種結(jié)構(gòu)化的方法確保了軟件架構(gòu)的清晰和有組織的表示。
通過(guò)構(gòu)建這些工件,PaperCode直觀地表示了研究論文中描述的關(guān)鍵組件,使存儲(chǔ)庫(kù)生成更加結(jié)構(gòu)化和系統(tǒng)化。
這一過(guò)程有助于更好地分析依賴關(guān)系和關(guān)聯(lián)性,確保生成的存儲(chǔ)庫(kù)與論文的核心思想一致。
邏輯設(shè)計(jì)
在軟件開(kāi)發(fā)中,單個(gè)文件很少孤立地工作。
相反,它們通常通過(guò)導(dǎo)入和模塊交互表現(xiàn)出相互依賴性。
例如,如果函數(shù)A在utils.py中定義,然后被導(dǎo)入到evaluation.py中,那么為了保持正確的依賴結(jié)構(gòu),必須先實(shí)現(xiàn) utils.py再實(shí)現(xiàn)evaluation.py。
為了處理這些依賴關(guān)系,此階段將研究論文以及前兩個(gè)階段生成的工件作為輸入。然后分析每個(gè)文件及其組件的邏輯,確定必要的依賴關(guān)系和最優(yōu)執(zhí)行順序。
作為輸出,它生成一個(gè)有序的文件列表,詳細(xì)說(shuō)明每個(gè)文件的角色,考慮依賴關(guān)系時(shí)應(yīng)實(shí)現(xiàn)哪些文件及其在倉(cāng)庫(kù)中的依賴關(guān)系。
這種方法確保了倉(cāng)庫(kù)生成不僅考慮單個(gè)文件結(jié)構(gòu),還考慮文件間的通信,從而促進(jìn)了一個(gè)組織良好且邏輯連貫的實(shí)現(xiàn)。
配置文件生成
最后,配置文件生成步驟綜合所有先前確定的輸出,生成一個(gè)包含模型訓(xùn)練所需超參數(shù)和配置的配置文件(config.yaml)。
此過(guò)程以前一階段產(chǎn)生的總體計(jì)劃、架構(gòu)設(shè)計(jì)和有序文件列表作為輸入。
在此階段,用戶可以審查和修改config.yaml文件,以識(shí)別和糾正任何缺失或錯(cuò)誤指定的細(xì)節(jié)。
例如,用戶可能需要指定通往Hugging Face數(shù)據(jù)集的路徑或定義檢查點(diǎn)存儲(chǔ)目錄。
這一步有助于減少生成過(guò)程中出現(xiàn)的幻覺(jué),例如模型產(chǎn)生不存在的數(shù)據(jù)集或引用錯(cuò)誤的文件路徑。
分析階段
雖然規(guī)劃階段主要關(guān)注設(shè)計(jì)整體倉(cāng)庫(kù)結(jié)構(gòu)和概述高層路線圖,但分析階段則深入到每個(gè)單獨(dú)文件的具體實(shí)現(xiàn)細(xì)節(jié)。
在這個(gè)階段,會(huì)徹底分析倉(cāng)庫(kù)中每個(gè)文件的詳細(xì)目的和必要考慮因素。
此階段生成的輸出明確指定了每個(gè)文件應(yīng)實(shí)現(xiàn)的目標(biāo),并強(qiáng)調(diào)了成功實(shí)施所需的關(guān)鍵因素。

具體來(lái)說(shuō),分析階段的輸入包括原始研究論文和先前生成的工件(總體計(jì)劃、架構(gòu)設(shè)計(jì)、邏輯設(shè)計(jì)和配置文件)。
該階段的輸出包括文件級(jí)別的分析文檔,記錄了精確的實(shí)現(xiàn)細(xì)節(jié),這些細(xì)節(jié)將為后續(xù)的代碼生成過(guò)程提供信息。
編碼階段
最后階段是編碼階段,該階段生成構(gòu)成研究倉(cāng)庫(kù)的代碼。
每個(gè)文件的生成都由前幾個(gè)階段的綜合輸出指導(dǎo):研究論文本身、總體計(jì)劃、架構(gòu)設(shè)計(jì)、邏輯設(shè)計(jì)、配置文件、特定文件分析以及先前生成的代碼。

由于倉(cāng)庫(kù)文件之間經(jīng)常存在導(dǎo)入依賴關(guān)系,PaperCode嚴(yán)格遵循規(guī)劃階段建立的有序文件列表,以確保順序一致性。
最初生成的代碼可能需要后續(xù)調(diào)試或完善以確保正確性和完全功能性。
在這項(xiàng)工作中,全面的調(diào)試策略和詳細(xì)的錯(cuò)誤修正工作流程超出了本文的當(dāng)前范圍。
實(shí)驗(yàn)與評(píng)估
研究人員進(jìn)行了一系列嚴(yán)格的實(shí)驗(yàn)和評(píng)估,構(gòu)建了兩個(gè)基準(zhǔn)測(cè)試。
一個(gè)是Paper2Code基準(zhǔn)測(cè)試,選取了2024年ICML、NeurIPS和ICLR會(huì)議上的90篇論文。
這些論文都是經(jīng)過(guò)篩選的,不僅有公開(kāi)的GitHub代碼庫(kù),且代碼庫(kù)規(guī)模適中,便于進(jìn)行實(shí)驗(yàn)驗(yàn)證。
另一個(gè)是PaperBench Code-Dev基準(zhǔn)測(cè)試,包含了20篇來(lái)自ICML 2024的論文,以衡量的是復(fù)現(xiàn)論文的準(zhǔn)確性。
在實(shí)驗(yàn)中,PaperCoder和基線模型進(jìn)行了對(duì)比,ChatDev是一個(gè)多智能體框架,通過(guò)智能體對(duì)話來(lái)開(kāi)發(fā)軟件;MetaGPT則采用基于角色的多智能體范式進(jìn)行軟件開(kāi)發(fā)。
此外,還有一些比較簡(jiǎn)單的基線模型,比如只給模型論文摘要(Abstract),或者整篇論文(Paper),讓模型生成代碼庫(kù)。
論文作者發(fā)布的官方代碼庫(kù)(Oracle)代表了最理想的實(shí)現(xiàn)。
研究團(tuán)隊(duì)采用了多種評(píng)估方法,包括基于模型的評(píng)估和人工評(píng)估。
基于模型的評(píng)估分兩種情況:一種是有參考的評(píng)估。
當(dāng)有作者發(fā)布的官方代碼庫(kù)時(shí),評(píng)估模型會(huì)將生成的代碼庫(kù)與論文和官方代碼庫(kù)進(jìn)行對(duì)比,從1到5分進(jìn)行打分,分?jǐn)?shù)越高表示生成的代碼庫(kù)與官方實(shí)現(xiàn)越接近,組件覆蓋越全面,錯(cuò)誤越少。
另一種是無(wú)參考的評(píng)估,只靠論文來(lái)評(píng)估生成的代碼庫(kù)。
在沒(méi)有官方代碼庫(kù)的情況下,僅依靠論文和生成的代碼庫(kù)進(jìn)行評(píng)估,同樣讓評(píng)估模型去推斷和評(píng)判代碼庫(kù)是否實(shí)現(xiàn)了論文中的關(guān)鍵組件,并給出相應(yīng)的分?jǐn)?shù)。
人工評(píng)估則邀請(qǐng)了碩士和博士研究生參與。這些參與者都有豐富的科研經(jīng)驗(yàn),至少發(fā)表過(guò)一篇同行評(píng)審論文。
他們會(huì)根據(jù)論文內(nèi)容制定關(guān)鍵的實(shí)現(xiàn)標(biāo)準(zhǔn),然后對(duì)不同方法生成的代碼庫(kù)進(jìn)行比較和排名。
在排名過(guò)程中,仔細(xì)考量代碼庫(kù)的各個(gè)方面,如完整性、結(jié)構(gòu)合理性、對(duì)論文方法的忠實(shí)度等。
實(shí)力「出圈」
經(jīng)過(guò)一系列嚴(yán)格的實(shí)驗(yàn)和評(píng)估,在所有會(huì)議和兩種評(píng)估模式下,PaperCoder的表現(xiàn)遙遙領(lǐng)先于其他基線模型。
在基于參考的評(píng)估中,PaperCoder在ICML、NeurIPS和ICLR論文上的平均正確性得分分別達(dá)到了3.72、3.83和3.68;在無(wú)參考評(píng)估里,得分更是高達(dá)4.73、4.77和4.73,直接碾壓其他模型。

與ChatDev和MetaGPT等基線模型相比,PaperCoder生成的代碼庫(kù)不僅質(zhì)量高,而且細(xì)節(jié)更豐富。
ChatDev生成的文件數(shù)量和PaperCoder相近,但是PaperCoder生成的函數(shù)數(shù)量明顯更多,這意味著它生成的代碼庫(kù)功能更完善。MetaGPT 在評(píng)估得分和代碼數(shù)量指標(biāo)上都明顯落后。
那些只使用摘要或者全文的簡(jiǎn)單基線模型,和PaperCoder相比就更不盡如人意了。這充分證明了PaperCoder多階段框架的強(qiáng)大優(yōu)勢(shì)。
在人工評(píng)估中,PaperCoder同樣表現(xiàn)出色。在所有評(píng)估標(biāo)準(zhǔn)下,PaperCoder都拿到了最高分。

77%的參與者認(rèn)為PaperCoder生成的代碼庫(kù)最適合復(fù)現(xiàn)他們的研究,代碼庫(kù)完整性好、結(jié)構(gòu)清晰,和論文契合。
85%的人認(rèn)為用PaperCoder生成的代碼庫(kù)復(fù)現(xiàn)實(shí)驗(yàn),比自己從頭開(kāi)始寫(xiě)代碼容易多了。

從具體的評(píng)估指標(biāo)來(lái)看,PaperCoder在完整性、結(jié)構(gòu)清晰性和對(duì)論文的忠實(shí)度等方面都得到了高度認(rèn)可。
詳細(xì)分析生成代碼庫(kù),發(fā)現(xiàn)數(shù)據(jù)處理、方法和評(píng)估這三個(gè)主要部分的覆蓋率分別達(dá)到了48%、85%和70%。
雖然還存在一些改進(jìn)空間,但這已經(jīng)足以說(shuō)明PaperCoder生成的代碼庫(kù)具有很高的實(shí)用價(jià)值。
研究分析了基于參考和無(wú)參考評(píng)估之間的相關(guān)性,發(fā)現(xiàn)這兩種評(píng)估得分的相關(guān)性非常強(qiáng),皮爾遜相關(guān)系數(shù)達(dá)到了 0.79,p值也很顯著。

說(shuō)明在沒(méi)有官方代碼庫(kù)作為參考的時(shí)候,無(wú)參考評(píng)估也能很好地衡量代碼庫(kù)的質(zhì)量,是一種可靠的評(píng)估方法。
團(tuán)隊(duì)還研究了不同大語(yǔ)言模型對(duì)PaperCoder性能的影響。
他們用了4種不同的LLM進(jìn)行實(shí)驗(yàn),發(fā)現(xiàn)o3-mini-high這個(gè)模型在所有評(píng)估維度上都表現(xiàn)得最好。

此外,研究人員還進(jìn)行了消融實(shí)驗(yàn),探究PaperCoder各個(gè)模塊的重要性。
結(jié)果表明,隨著逐步添加規(guī)劃、架構(gòu)設(shè)計(jì)、核心邏輯、配置文件和分析等模塊,模型的性能穩(wěn)步提升。

雖然添加架構(gòu)設(shè)計(jì)模塊的時(shí)候,性能暫時(shí)下降了,但后續(xù)加入核心邏輯等組件后,分?jǐn)?shù)又大幅提高了。
最后,研究團(tuán)隊(duì)還測(cè)試了生成代碼的可執(zhí)行性。
他們手動(dòng)調(diào)試了五個(gè)有代表性的論文生成的代碼庫(kù),發(fā)現(xiàn)平均只需要修改0.48%的代碼,就能成功運(yùn)行。
而且這些修改大多是像更新API調(diào)用版本、糾正類型轉(zhuǎn)換這樣的常規(guī)操作。這說(shuō)明PaperCoder生成的代碼不僅結(jié)構(gòu)合理,而且實(shí)用性很強(qiáng)。
目前,PaperCoder的應(yīng)用范圍主要集中在機(jī)器學(xué)習(xí),未來(lái)要是能擴(kuò)展到其他科學(xué)領(lǐng)域,那就更厲害了。





























