如今,DeepSeek團隊成員的一舉一動,都頗受圈內(nèi)關(guān)注。 近日,來自DeepSeek、上海交通大學(xué)、香港科技大學(xué)的研究人員推出的全新力作CODEI/O,就獲得了Ai2大牛Nathan Lambert的力薦! 論文地址:https://arxiv.org/abs/2502.07316 項目主頁:https://codei-o.github.io/ Lambert表示,非常高興能看到DeepSeek團隊成員撰寫的更多論文,而不僅僅是有趣的技術(shù)報告。(順便還調(diào)侃了一句自己真的想他們了) 這篇論文的主題,是通過一種CodeI/O的方法,利用代碼輸入/輸出,來提煉LLM的推理模式。 值得注意的是,這篇論文是一作Junlong Li在DeepSeek實習(xí)期間完成的研究。 一經(jīng)發(fā)布,網(wǎng)友們就立馬開始了仔細研究。畢竟,現(xiàn)在在研究人員心目中,DeepSeek已經(jīng)是一個GOAT team。 有人總結(jié)道,除了主線論文之外,DeepSeek作者還發(fā)表了許多論文,比如Prover 1.0、 ESFT、Fire-Flyer AI-HPC、DreamCraft 3D等等,雖然都是實習(xí)生的工作,但十分具有啟發(fā)性。 LLM推理缺陷,靠代碼打破 推理,是LLM的一項核心能力。以往的研究主要關(guān)注的是數(shù)學(xué)或代碼等狹窄領(lǐng)域的提升,但在很多推理任務(wù)上,LLM依然面臨挑戰(zhàn)。 原因就在于,訓(xùn)練數(shù)據(jù)稀疏且零散。 對此,研究團隊提出了一種全新方法——CODEI/O! CODEI/O通過將代碼轉(zhuǎn)換為輸入/輸出預(yù)測格式,從而系統(tǒng)性地提煉出蘊含在代碼上下文中的多種推理模式。 研究團隊提出將原始代碼文件轉(zhuǎn)換成可執(zhí)行的函數(shù),并設(shè)計一個更直接的任務(wù):給定一個函數(shù)及其相應(yīng)的文本查詢,模型需要以自然語言的CoT推理形式預(yù)測給定輸入的執(zhí)行輸出或給定輸出的可行輸入。 這種方法將核心推理流程從代碼特定的語法中解脫出來,同時保留邏輯的嚴謹性。通過收集和轉(zhuǎn)換來自不同來源的函數(shù),生成的數(shù)據(jù)包含了各種基礎(chǔ)推理技能,如邏輯流程編排、狀態(tài)空間探索、遞歸分解和決策。 實驗結(jié)果表明,CODEI/O在符號推理、科學(xué)推理、邏輯推理、數(shù)學(xué)與數(shù)值推理以及常識推理等任務(wù)上均實現(xiàn)了一致的性能提升。 下圖1概述了CODEI/O的訓(xùn)練數(shù)據(jù)構(gòu)建流程。該流程從收集原始代碼文件開始,到組裝完整的訓(xùn)練數(shù)據(jù)集結(jié)束。 分解CODEI/O架構(gòu) 收集原始代碼文件CODEI/O的有效性在于選擇多樣化的原始代碼來源,以涵蓋廣泛的推理模式。 主要的代碼來源包括: CodeMix:從內(nèi)部代碼預(yù)訓(xùn)練語料庫中檢索的大量原始Python代碼文件集合,經(jīng)過篩選去除過于簡單或過于復(fù)雜的文件。 PyEdu-R(推理):Python-Edu的一個子集,側(cè)重于復(fù)雜的推理任務(wù),如STEM、系統(tǒng)建;蜻壿嬛i題,并排除以純算法為中心的文件。 其他高質(zhì)量代碼文件:來自各種小型、信譽良好的來源,包括綜合算法存儲庫、具有挑戰(zhàn)性的數(shù)學(xué)問題和知名的在線編碼平臺。 合并這些來源后,總共產(chǎn)生了大約810.5K個代碼文件。 構(gòu)造的LeetCode-O基準測試中的一個示例 轉(zhuǎn)換為統(tǒng)一格式收集到的原始代碼文件往往結(jié)構(gòu)混亂,含有冗余內(nèi)容,并且難以獨立執(zhí)行。 使用DeepSeek-V2.5對原始代碼文件進行預(yù)處理,將其提煉成統(tǒng)一的格式,強調(diào)主要的邏輯功能,使其可執(zhí)行,以便收集輸入-輸出對。 研究團隊通過清理和重構(gòu)代碼,將核心邏輯功能提取到函數(shù)中,排除不必要的元素,然后添加一個主要入口點函數(shù),總結(jié)代碼的整體邏輯。 該函數(shù)可以調(diào)用其他函數(shù)或?qū)胪獠繋,并且必須具有非空的參?shù)(輸入)以及返回有意義的輸出。所有輸入和輸出都需要是JSON可序列化的,以方便進一步處理。 過程中需明確定義主要入口點函數(shù)的輸入和輸出,包括數(shù)據(jù)類型、約束(例如,輸出范圍)或更復(fù)雜的要求(例如,字典中的鍵)等信息。 然后創(chuàng)建一個獨立的、基于規(guī)則的Python輸入生成器函數(shù),而不是直接生成測試用例。此生成器返回遵循主要入口點函數(shù)要求的非平凡輸入。在約束條件下應(yīng)用隨機性,實現(xiàn)可擴展的數(shù)據(jù)生成。 最后,根據(jù)主要入口點函數(shù)生成一個簡潔的問題陳述,作為描述代碼預(yù)期功能的查詢。 如何將原始代碼文件轉(zhuǎn)換為所需同一格式的示例 收集輸入和輸出對在將收集的原始代碼文件轉(zhuǎn)換為統(tǒng)一格式后,使用輸入生成器為每個函數(shù)抽樣多個輸入,并通過執(zhí)行代碼獲得相應(yīng)的輸出。 為了確保輸出是確定性的,會跳過所有包含隨機性的函數(shù)。在執(zhí)行這些代碼期間,研究團隊還會對運行時和輸入/輸出對象的復(fù)雜性施加一系列限制。 在過濾掉不可執(zhí)行的代碼、超過運行時限制的樣本以及超過所需復(fù)雜性的輸入-輸出對后,獲得了從454.9K個原始代碼文件派生的3.5M個實例。輸入和輸出預(yù)測實例的分布大致平衡,各占 50%。 構(gòu)建輸入輸出預(yù)測樣本收集輸入-輸出對以及轉(zhuǎn)換后的函數(shù)后,需要將它們組合成可訓(xùn)練的格式。 研究團隊采用的有監(jiān)督微調(diào)過程,每個訓(xùn)練樣本都需要一個提示和一個響應(yīng)。由于目標是輸入-輸出預(yù)測任務(wù),研究團隊使用設(shè)計的模板將函數(shù)、查詢、參考代碼以及特定的輸入或輸出組合起來構(gòu)建提示。 理想情況下,響應(yīng)應(yīng)該是一個自然語言的CoT,用于推理如何得出正確的輸出或可行的輸入。 研究團隊主要通過以下兩種方式構(gòu)建所需的CoT響應(yīng)。 · 直接提示(CODEI/O) 使用DeepSeek-V2.5合成所有需要的響應(yīng),因為它具有頂級的性能,但成本極低。此處生成的數(shù)據(jù)集稱為 CODEI/O。 下圖2展示了CODEI/O數(shù)據(jù)集中輸入和輸出預(yù)測的2個示例,在這兩種情況下,模型都需要以自然語言的思維鏈 (CoT)形式給出推理過程。 · 充分利用代碼(CODEI/O++) 對于預(yù)測不正確的響應(yīng),將反饋作為第二輪輸入消息追加,并要求DeepSeek-V2.5重新生成另一個響應(yīng)。將所有四個組件連接起來:第一輪響應(yīng)+第一輪反饋+第二輪響應(yīng)+第二輪反饋。研究人員將通過這種方式收集的數(shù)據(jù)集稱為CODEI/O++。 CODEI/O++中的一個完整訓(xùn)練樣本 一個框架,彌合代碼推理與自然語言鴻溝 如下表1所示,主要展示了Qwen 2.5 7B Coder 、Deepseek v2 Lite Coder、LLaMA 3.1 8B、Gemma 2 27B模型的評估結(jié)果。 CODEI/O在各項基準測試中,模型的性能均實現(xiàn)了提升,其表現(xiàn)優(yōu)于單階段基線模型和其他數(shù)據(jù)集(即使是更大規(guī)模的數(shù)據(jù)集)。 不過,競爭數(shù)據(jù)集,比如OpenMathInstruct2在數(shù)學(xué)特定任務(wù)上表現(xiàn)出色,但在其他任務(wù)上有會出現(xiàn)退步(混合綠色和紅色單元格)。 CODEI/O展現(xiàn)出的是,持續(xù)改進的趨勢(綠色單元格)。 盡管其僅使用以代碼為中心的數(shù)據(jù),在提升代碼推理能力同時,還增強了所有其他任務(wù)的表現(xiàn)。 研究人員還觀察到,與單階段基線相比,使用原始代碼文件(PythonEdu)進行訓(xùn)練,只能帶來微小的改進,有時甚至?xí)a(chǎn)生負面影響。 與CODEI/O相比表現(xiàn)明顯不足,這表明從這種結(jié)構(gòu)性較差的數(shù)據(jù)中學(xué)習(xí)是次優(yōu)的。 這進一步強調(diào)了性能提升,不僅僅取決于數(shù)據(jù)規(guī)模,更重要的是經(jīng)過深思熟慮設(shè)計的訓(xùn)練任務(wù)。 這些任務(wù)包含了廣義思維鏈中多樣化、結(jié)構(gòu)化的推理模式。 此外,CODEI/O++系統(tǒng)性地超越了CODEI/O,在不影響單個任務(wù)性能的情況下提高了平均分數(shù)。 這突顯了基于執(zhí)行反饋的多輪修訂,可以提升數(shù)據(jù)質(zhì)量并增強跨領(lǐng)域推理能力。 最重要的是,CODEI/O和CODEI/O++都展現(xiàn)出了跨模型規(guī)模和架構(gòu)的普遍有效性。 這進一步驗證了實驗的訓(xùn)練方法(預(yù)測代碼輸入和輸出),使模型能夠在不犧牲專業(yè)基準性能的情況下,在各種推理任務(wù)中表現(xiàn)出色。 為了進一步研究,新方法中不同關(guān)鍵方面的影響,研究人員進行了多組分析實驗。 所有實驗均使用Qwen 2.5 Coder 7B模型進行,且報告的結(jié)果均為經(jīng)過第二階段通用指令微調(diào)后獲得的結(jié)果。 消融實驗研究團隊首先對數(shù)據(jù)構(gòu)建過程進行了兩項關(guān)鍵的消融研究,結(jié)果如下表2所示。 輸入/輸出預(yù)測 作者通過分別訓(xùn)練,來研究輸入和輸出預(yù)測。 結(jié)果顯示,總體得分相似,但輸入預(yù)測在KorBench上表現(xiàn)出色,同時略微影響了GPQA的表現(xiàn);而輸出預(yù)測在BBH等符號推理任務(wù)上顯示出更大的優(yōu)勢。CRUXEval-I和-O分別偏向于輸入和輸出預(yù)測。 拒絕采樣 他們還探索了使用拒絕采樣來過濾不正確響應(yīng)的方法,這導(dǎo)致50%的訓(xùn)練數(shù)據(jù)被刪除。然而,這造成了普遍的性能下降,表明可能損失了數(shù)據(jù)的多樣性。 作者還嘗試通過代碼執(zhí)行將所有不正確的響應(yīng),替換為正確答案(不包含思維鏈)。 這種方法在LeetCode-O和CRUXEval-O等設(shè)計用于衡量輸出預(yù)測準確性的基準測試上,確實帶來了改進,但在其他方面降低了分數(shù),導(dǎo)致平均性能下降。 當將這兩種方法與訓(xùn)練在樣本數(shù)量相當?shù)腃ODEI/O約50%子集上進行比較時,它們?nèi)匀粵]有顯示出優(yōu)勢。 因此,為了保持性能平衡,研究人員在主要實驗中保留了所有不正確的響應(yīng),不做任何修改。 不同合成模型的效果為了研究不同綜合模型的效果,作者使用DeepSeek-V2.5重新生成了350萬條WebInstruct數(shù)據(jù)集的響應(yīng),創(chuàng)建了一個更新的數(shù)據(jù)集,稱為WebInstruct-DS25。 如圖3所示,雖然WebInstruct-DS25在Qwen 2.5 Coder 7B和LLaMA 3.1 8B上,表現(xiàn)優(yōu)于原始數(shù)據(jù)集,但仍然不及CODEI/O。 這突顯了代碼中多樣化推理模式的價值,以及訓(xùn)練中任務(wù)選擇的重要性。 總的來說,這個比較表明,預(yù)測代碼的輸入和輸出能夠提升推理能力,而不僅僅是從高級模型中進行知識蒸餾。 CODEI/O的Scaling效應(yīng)研究人員還評估了CODEI/O在不同訓(xùn)練數(shù)據(jù)量下的表現(xiàn)。 通過隨機抽樣訓(xùn)練實例,圖4a揭示了一個明顯的趨勢:增加訓(xùn)練樣本數(shù)量,通常會導(dǎo)致各項基準測試的性能提升。 具體來說,使用最少量的數(shù)據(jù)在大多數(shù)基準測試中表現(xiàn)相對較弱,因為模型缺乏足夠的訓(xùn)練來有效泛化。 相比之下,在完整數(shù)據(jù)集上訓(xùn)練時,CODEI/O實現(xiàn)了最全面和穩(wěn)健的性能。 中等數(shù)量的數(shù)據(jù)產(chǎn)生的結(jié)果介于這兩個極端之間,隨著訓(xùn)練樣本的增加表現(xiàn)出逐步改善。這突顯了CODEI/O在提升推理能力方面的可擴展性和有效性。 此外,他們還在輸入-輸出對的維度上進行了數(shù)據(jù)scaling,方法是固定并使用所有唯一的原始代碼樣本,但改變每個樣本的輸入-輸出預(yù)測實例數(shù)量。 圖4b顯示了,使用的I/O對相對于完整集合的比例。 雖然scaling效應(yīng)不如訓(xùn)練樣本明顯,但仍可以觀察到明顯的益處,特別是在從1/6增加到6/6時。 這表明,某些推理模型需要多個測試用例,才能完全捕獲和學(xué)習(xí)其復(fù)雜的邏輯流程。 不同的數(shù)據(jù)格式這一部分,主要研究了如何在訓(xùn)練樣本中最佳安排查詢、參考代碼和思維鏈(CoT)。 如表3所示,將查詢和參考代碼放在提示中,而將思維鏈放在響應(yīng)中,可以在各項基準測試中實現(xiàn)最高的平均分數(shù)和最平衡的性能。 其他格式的結(jié)果顯示出,略低但相當?shù)男阅,最差的結(jié)果出現(xiàn)在查詢放在提示中,而參考代碼放在響應(yīng)中的情況。 這類似于標準的代碼生成任務(wù),但訓(xùn)練樣本要少得多。 這突顯了思維鏈和測試用例的規(guī)模對于學(xué)習(xí)可遷移推理能力的重要性。 多輪迭代基于CODEI/O(無修訂)和CODEI/O++(單輪修訂),研究人員將修訂擴展到第二輪,通過對第一輪修訂后仍然不正確的實例,重新生成預(yù)測來評估進一步的改進。 如下圖7中,可視化了每一輪中響應(yīng)類型的分布。 結(jié)果顯示,大多數(shù)正確的響應(yīng)都在初始輪中預(yù)測出來,約10%的錯誤響應(yīng)在第一輪修訂中得到糾正。 然而,第二輪產(chǎn)生的糾正顯著減少,通過檢查案例作者發(fā)現(xiàn)模型經(jīng)常重復(fù)相同的錯誤CoT,而沒有添加新的有用信息。 在整合多輪修訂后,他們在圖5中觀察到從第0輪到第1輪有持續(xù)的改進,但從第1輪到第2輪的收益很小——對LLaMA 3.1 8B顯示出輕微改進,但對Qwen 2.5 Coder 7B反而出現(xiàn)了性能下降。 因此,在主要的實驗中,研究人員停留在了單輪修訂,即CODEI/O++。 兩階段訓(xùn)練的必要性最后,研究人員通過測試單階段混合訓(xùn)練和不同數(shù)據(jù)混合的兩階段訓(xùn)練,強調(diào)了使用CODEI/O數(shù)據(jù)進行單獨訓(xùn)練階段的必要性。 如表4所示,所有兩階段變體模型的表現(xiàn)都優(yōu)于單階段訓(xùn)練。 同時,兩階段訓(xùn)練期間混合數(shù)據(jù)的效果在不同模型間有所不同。 對于Qwen 2.5 Coder 7B,最好的結(jié)果是將CODEI/O和指令微調(diào)數(shù)據(jù)完全分開,而LLaMA 3.1 8B在混合數(shù)據(jù)的情況下表現(xiàn)更好,無論是在第一階段還是第二階段。 論文作者 Junlong Li Junlong Li是上交計算機科學(xué)專業(yè)的三年級碩士生,師從Hai Zhao教授。 此前,他于2022年在上交IEEE試點班獲得計算機科學(xué)學(xué)士學(xué)位。 他曾在微軟亞洲研究院(MSRA)NLC組擔任研究實習(xí)生,在Lei Cui博士的指導(dǎo)下,參與了多個與Document AI相關(guān)的研究課題,包括網(wǎng)頁理解和文檔圖像基礎(chǔ)模型。 2023年5月至2024年2月期間,他與GAIR的Pengfei Liu教授緊密合作,主要研究LLMs的評估與對齊等方面的問題。 目前,他在Junxian He教授的指導(dǎo)下從事相關(guān)研究。 Daya Guo Daya Guo在中山大學(xué)和微軟亞洲研究院聯(lián)合培養(yǎng)下攻讀博士學(xué)位,并由Jian Yin教授和Ming Zhou博士共同指導(dǎo)。目前在DeepSeek擔任研究員。 2014年到2018年,他在中山大學(xué)取得計算機科學(xué)學(xué)士學(xué)位。2017年到2023年,他曾在微軟亞洲研究院擔任研究實習(xí)生。 他的研究主要聚焦于自然語言處理和代碼智能,旨在使計算機能夠智能地處理、理解和生成自然語言與編程語言。長期研究目標是推動AGI的發(fā)展,從而徹底改變計算機與人類的交互方式,并提升其處理復(fù)雜任務(wù)的能力。 目前,他的研究方向包括:(1)大語言模型(Large Language Model);(2)代碼智能(Code Intelligence)。 Runxin Xu(許潤昕) Runxin Xu是DeepSeek的研究科學(xué)家,曾深度參與DeepSeek系列模型的開發(fā),包括DeepSeek-R1、DeepSeek V1/V2/V3、DeepSeek Math、DeepSeek Coder、DeepSeek MoE等。 此前,他在北京大學(xué)信息科學(xué)技術(shù)學(xué)院獲得碩士學(xué)位,由Baobao Chang博士和Zhifang Sui博士指導(dǎo),并在上海交通大學(xué)完成本科學(xué)業(yè)。 他的研究興趣主要聚焦于AGI,致力于通過可擴展和高效的方法不斷推進AI智能的邊界。 Yu Wu(吳俁) Yu Wu目前是DeepSeek技術(shù)人員,負責(zé)領(lǐng)導(dǎo)LLM對齊團隊。 他曾深度參與了DeepSeek系列模型的開發(fā),包括DeepSeek V1、V2、V3、R1、DeepSeek Coder和DeepSeek Math。 在此之前,他曾在微軟亞洲研究院(MSRA)自然語言計算組任高級研究員。 他獲得了北京航空航天大學(xué)的學(xué)士學(xué)位和博士學(xué)位,師從Ming Zhou和Zhoujun Li教授。 他本人的研究生涯取得了諸多成就,包括在ACL、EMNLP、NeurIPS、AAAI、IJCAI和ICML等頂級會議和期刊上發(fā)表了80多篇論文。 他還發(fā)布了多個具有影響力的開源模型,包括WavLM、VALL-E、DeepSeek Coder、DeepSeek V3和DeepSeek R1。 Junxian He(何俊賢) Junxian He現(xiàn)任香港科技大學(xué)計算機科學(xué)與工程系助理教授(終身教職)。 他于2022年在卡內(nèi)基梅隆大學(xué)語言技術(shù)研究所獲得博士學(xué)位,由Graham Neubig和Taylor Berg-Kirkpatrick共同指導(dǎo)。他還于2017年獲得上海交通大學(xué)電子工程學(xué)士學(xué)位。 此前,Junxian He還曾在Facebook AI研究院(2019年)和Salesforce研究院(2020年)工作過一段時間。 參考資料: https://codei-o.github.io/ 本文來源:新智元 |
原創(chuàng)欄目
IT百科
網(wǎng)友評論
聚超值•精選