香港科技大學(xué)聯(lián)合DeepSeek-AI推出CODEI/O:讓AI學(xué)會(huì)“濃縮”推理模式
大家好,我是HxShine
今天分享一篇香港科技大學(xué)、DeepSeek-AI和上海交通大學(xué)聯(lián)合發(fā)表的文章,標(biāo)題為:CODEI/O: Condensing Reasoning Patterns via Code Input-Output Prediction(CODEI/O:通過(guò)代碼輸入輸出預(yù)測(cè)濃縮推理模式)。
這篇文章提出了一種名為 CODEI/O 的新方法,旨在 通過(guò)代碼輸入輸出預(yù)測(cè)來(lái)提煉和濃縮代碼中蘊(yùn)含的多種推理模式,從而提升大語(yǔ)言模型(LLMs)的推理能力。 該方法的核心思想是 將代碼轉(zhuǎn)換為一種輸入輸出預(yù)測(cè)任務(wù),讓模型學(xué)習(xí)在給定代碼和測(cè)試用例的情況下,預(yù)測(cè)輸入或輸出,而這些輸入輸出都以自然語(yǔ)言(思維鏈,CoT)的形式呈現(xiàn)。
該方法主要特點(diǎn)如下:
?通用性: CODEI/O 不僅能用于代碼相關(guān)的任務(wù)的推理能力, 還適用于更廣泛的推理任務(wù), 如邏輯、符號(hào)、數(shù)學(xué)、科學(xué)和常識(shí)推理等。
一、概述
?Title:CODEI/O: Condensing Reasoning Patterns via Code Input-Output Prediction
?URL:arXiv:2502.07316v3
?Authors:Junlong Li, Daya Guo, Dejian Yang, Runxin Xu, Yu Wu, Junxian He
?Code:?? https://github.com/hkust-nlp/CodeIO??
1.Motivation
? 現(xiàn)有研究主要集中于增強(qiáng)特定領(lǐng)域的技能,例如數(shù)學(xué)或代碼生成,但由于訓(xùn)練數(shù)據(jù)稀疏且分散,提高其他推理任務(wù)的性能仍然具有挑戰(zhàn)性(如何提升通用的推理能力還沒(méi)有人做的特別好!?。。?。
? 傳統(tǒng)方法在原始代碼上進(jìn)行持續(xù)預(yù)訓(xùn)練效果不佳,因?yàn)橄嚓P(guān)推理信號(hào)通常是隱式的,并且與噪聲信息交織在一起(預(yù)訓(xùn)練階段利用代碼提上推理能力時(shí)的數(shù)據(jù)質(zhì)量不太好!!!)。
? 直接訓(xùn)練文本到代碼生成也面臨挑戰(zhàn),因?yàn)樗芟抻谏商囟ùa語(yǔ)法的要求,很難推廣到代碼特定任務(wù)之外的任務(wù)(需要做到更通用,例如全部用自然語(yǔ)言來(lái)處理,方便遷移到其他任務(wù)?。。。?。
2.Methods
省流版總結(jié):
CODEI/O 將代碼轉(zhuǎn)化為輸入-輸出預(yù)測(cè)格式, 訓(xùn)練模型根據(jù)自然語(yǔ)言形式的 CoT 推理來(lái)預(yù)測(cè)給定代碼和測(cè)試用例的輸入/輸出。這樣可以將結(jié)構(gòu)化推理從特定代碼語(yǔ)法中解耦出來(lái),并保留程序的嚴(yán)謹(jǐn)性。CODEI/O 能夠?qū)W習(xí)到通用推理基礎(chǔ),如邏輯流程規(guī)劃、狀態(tài)空間搜索、決策樹遍歷和模塊化分解。
?CODEI/O方法:將原始代碼文件轉(zhuǎn)換成可執(zhí)行的函數(shù),并設(shè)計(jì)一個(gè)更直接的任務(wù):給定一個(gè)函數(shù)及其相應(yīng)的文本查詢,模型需要預(yù)測(cè)給定輸入的執(zhí)行輸出或給定輸出的可行輸入,全部以自然語(yǔ)言作為CoT理由。
?數(shù)據(jù)構(gòu)建:從各種來(lái)源收集原始代碼文件,轉(zhuǎn)換為統(tǒng)一格式,然后通過(guò)執(zhí)行代碼生成輸入-輸出對(duì),并使用DeepSeek-V2.5收集自然語(yǔ)言CoT預(yù)測(cè)。為了進(jìn)一步提升數(shù)據(jù)質(zhì)量,通過(guò)代碼執(zhí)行驗(yàn)證所有預(yù)測(cè),并對(duì)初始錯(cuò)誤的回應(yīng)進(jìn)行多輪修訂(CODEI/O++)。
?訓(xùn)練方法:采用兩階段訓(xùn)練策略,首先在CODEI/O或CODEI/O++數(shù)據(jù)集上進(jìn)行訓(xùn)練,然后在通用指令調(diào)優(yōu)數(shù)據(jù)集上進(jìn)行第二階段訓(xùn)練。
詳細(xì)方法和步驟:
數(shù)據(jù)收集 (Collecting Raw Code Files):
? 從多樣化的來(lái)源選擇原始代碼,包括CodeMix (一個(gè)大型的內(nèi)部代碼預(yù)訓(xùn)練語(yǔ)料庫(kù)) 和 PyEdu-R (Python-Edu 的一個(gè)子集,專注于復(fù)雜的推理任務(wù),如 STEM、系統(tǒng)建?;蜻壿嬛i題)。
? 為了避免與 CodeMix 重疊,PyEdu-R 特意排除了純算法中心的文件。
? 除了這兩個(gè)主要來(lái)源,還整合了來(lái)自各種小型但信譽(yù)良好的來(lái)源的高質(zhì)量代碼文件,包括綜合算法存儲(chǔ)庫(kù)、具有挑戰(zhàn)性的數(shù)學(xué)問(wèn)題和知名的在線編碼平臺(tái)。
? 總共合并了大約 810.5K 個(gè)代碼文件。
數(shù)據(jù)轉(zhuǎn)換 (Transforming to a Unified Format): 使用 DeepSeek-V2.5 對(duì)收集的原始代碼文件進(jìn)行預(yù)處理,將其精煉為統(tǒng)一的格式,強(qiáng)調(diào)主要的邏輯功能,并使其可執(zhí)行,以便收集輸入-輸出對(duì)。轉(zhuǎn)換后的數(shù)據(jù)組織成以下組件:

1)Cleaned Reference Code:通過(guò)清理和重構(gòu)代碼,提取核心邏輯功能到函數(shù)中,排除可視化和文件處理等非必要元素。
2)Input Generator:創(chuàng)建一個(gè)獨(dú)立的、基于規(guī)則的 Python 輸入生成器函數(shù),返回遵循主入口函數(shù)要求的非平凡輸入。應(yīng)用隨機(jī)性以實(shí)現(xiàn)可擴(kuò)展的數(shù)據(jù)生成。
3)Query:基于主入口函數(shù)生成簡(jiǎn)潔的問(wèn)題陳述,作為描述代碼預(yù)期功能的查詢。
這里有一個(gè)完整的example:

收集輸入和輸出對(duì) (Collecting Input and Output Pairs): 對(duì)于每個(gè)轉(zhuǎn)換后的函數(shù),使用輸入生成器采樣多個(gè)輸入,并通過(guò)執(zhí)行代碼獲得相應(yīng)的輸出。

構(gòu)建輸入-輸出預(yù)測(cè)樣本 (Building Samples for Input-Output Prediction):
? 將收集的輸入-輸出對(duì)和轉(zhuǎn)換后的函數(shù)組合成可訓(xùn)練的格式。
? 對(duì)于監(jiān)督微調(diào)過(guò)程,為每個(gè)訓(xùn)練樣本構(gòu)建一個(gè) prompt 和 response。Prompt 模板結(jié)合了函數(shù)、查詢、參考代碼以及特定的輸入或輸出。Response 理想情況下是自然語(yǔ)言 CoT,解釋如何推導(dǎo)出正確的輸出或可行的輸入。
? 提供了兩種構(gòu)建 CoT response 的方法:
1)Direct Prompting – CODEI/O:使用 DeepSeek-V2.5 合成所有期望的 response,因?yàn)槠湫阅軆?yōu)越且成本極低。
2)Making Full Use of Code – CODEI/O++:對(duì)于預(yù)測(cè)不正確的 response,將反饋附加為第二輪輸入消息,并要求 DeepSeek-V2.5 重新生成另一個(gè) response。最終的 response 通過(guò)連接所有四個(gè)組件(第一輪 response + 第一輪反饋 + 第二輪 response + 第二輪反饋)構(gòu)建。一個(gè)revise的example如下:

訓(xùn)練設(shè)置 (Training Setups): 采用兩階段訓(xùn)練策略:第一階段在 CODEI/O 或 CODEI/O++ 數(shù)據(jù)集上訓(xùn)練 (加強(qiáng)推理能力),第二階段進(jìn)行通用指令調(diào)優(yōu) (提升通用能力)。
3.Conclusion
?CODEI/O 方法有效提升了模型的推理能力。通過(guò)在 CODEI/O 數(shù)據(jù)集上訓(xùn)練,模型在各種推理任務(wù)上都取得了顯著且普遍的性能提升,包括符號(hào)推理、科學(xué)推理、邏輯推理、數(shù)學(xué)推理和常識(shí)推理。
?CODEI/O 方法具有通用性和泛化能力。盡管 CODEI/O 使用的代碼中心數(shù)據(jù)進(jìn)行訓(xùn)練,但它不僅提升了代碼相關(guān)任務(wù)的性能,也提升了更廣泛的通用推理任務(wù)的性能,表明其學(xué)習(xí)到的推理模式具有良好的泛化能力。
4.Limitation
? 本文主要驗(yàn)證了 CODEI/O 方法在提高模型推理能力上的有效性,但對(duì)于模型規(guī)模、推理成本等方面未進(jìn)行深入探討,未來(lái)可以進(jìn)一步探索如何將其應(yīng)用于更廣泛的場(chǎng)景,并降低推理成本。
二、詳細(xì)內(nèi)容
1.不同基座模型使用 CODEI/O 和 CODEI/O++ 在多個(gè)推理 benchmark 上的結(jié)果

總結(jié)1:CODEI/O 和 CODEI/O++ 不僅取得了更高的平均分?jǐn)?shù),而且性能更加均衡,在幾乎所有 benchmark 上都實(shí)現(xiàn)了性能提升,展示了其平衡且可泛化的推理能力。
總結(jié)2:與使用完整數(shù)據(jù)集訓(xùn)練的 WI (Full) 和 OMI2 (Full) 相比,使用 3.5M 子集的 CODEI/O 和 CODEI/O++ 在 Qwen 2.5 Coder 7B 上仍然取得了更具競(jìng)爭(zhēng)力的結(jié)果,表明 CODEI/O 具有更好的數(shù)據(jù)效率。
2.消融實(shí)驗(yàn):推理需要學(xué)習(xí)推理Pattern,最終答案反而不重要

說(shuō)明:分別評(píng)估了僅進(jìn)行輸入預(yù)測(cè) (I. Pred. only)、僅進(jìn)行輸出預(yù)測(cè) (O. Pred. only) 以及去除 rejection sampling 的效果。
總結(jié)1:結(jié)果表明,輸入預(yù)測(cè)和輸出預(yù)測(cè)的效果大致相似,但輸入預(yù)測(cè)在 KorBench 上表現(xiàn)更優(yōu),而輸出預(yù)測(cè)在 BBH 等符號(hào)推理任務(wù)上表現(xiàn)更好。
總結(jié)2:去除 rejection sampling (過(guò)濾掉錯(cuò)誤的數(shù)據(jù)或者更換成正確的數(shù)據(jù))會(huì)導(dǎo)致性能普遍下降,表明 rejection sampling 雖然減少了訓(xùn)練數(shù)據(jù),但損失了數(shù)據(jù)多樣性,反而降低了性能 (重點(diǎn)是要學(xué)習(xí)更多pattern,答案是否正確對(duì)結(jié)果影響不大!!!)。DDdDd
3.CODEI/O 的 scaling effect

說(shuō)明:a)展示了隨著隨機(jī)采樣訓(xùn)練數(shù)據(jù)量增加,模型在各個(gè) benchmark 上的性能變化趨勢(shì)。 b) 展示了隨著每個(gè)樣本輸入-輸出對(duì)數(shù)量比例變化,模型性能的變化。
總結(jié)1:增加訓(xùn)練樣本數(shù)量通常會(huì)提升各個(gè) benchmark 的性能,表明 CODEI/O 具有良好的可擴(kuò)展性??偨Y(jié)2:Figure 4b 表明,增加每個(gè)樣本的輸入-輸出對(duì)數(shù)量比例,也能帶來(lái)性能提升,尤其是在從 1/6 增加到 6/6 時(shí),表明某些推理模式需要多個(gè)測(cè)試用例才能充分捕獲和學(xué)習(xí)其復(fù)雜的邏輯流程。
4.不同 revision turns 下對(duì)訓(xùn)練結(jié)果的影響

說(shuō)明:Figure 5 展示了在不同 revision turns 下(修正錯(cuò)誤結(jié)果的次數(shù)),模型在 benchmark 上的平均分?jǐn)?shù)變化。總結(jié)1:從 turn 0 到 turn 1,模型性能有顯著提升,表明單輪修訂能夠有效提高數(shù)據(jù)質(zhì)量。總結(jié)2:但從 turn 1 到 turn 2,性能提升微乎其微,甚至在 Qwen 2.5 Coder 7B 上出現(xiàn)下降,表明進(jìn)一步修訂帶來(lái)的收益迅速遞減。(推理 長(zhǎng)度影響比較大,可能影響了其他正常的推理)
5.不同數(shù)據(jù)格式對(duì)模型性能的影響

說(shuō)明:評(píng)估了將 query+code 放在 prompt 中,CoT 放在 response 中 (Q+Code COT) 以及其他不同組合方式的效果??偨Y(jié)1:結(jié)果表明,將 query 和 reference code 放在 prompt 中,CoT 放在 response 中的格式 (Q+Code COT) 取得了最高的平均分?jǐn)?shù)和最均衡的性能,表明這種格式最有利于模型學(xué)習(xí)可遷移的推理能力。總結(jié)2:將 query 放在 prompt 中,reference code 放在 response 中的格式 (Q Code) 效果最差,這可能是因?yàn)檫@種格式類似于標(biāo)準(zhǔn)的代碼生成任務(wù),但訓(xùn)練樣本量遠(yuǎn)少于標(biāo)準(zhǔn)的代碼生成數(shù)據(jù)集。
6.多階段微調(diào)的影響

說(shuō)明:Table 4 展示了不同訓(xùn)練策略下的平均 benchmark 分?jǐn)?shù)。對(duì)比了單階段指令調(diào)優(yōu) (IT)、兩階段訓(xùn)練 (CODEI/O+IT, CODEI/O++IT) 以及不同數(shù)據(jù)混合方式的效果??偨Y(jié)1:結(jié)果表明,所有兩階段訓(xùn)練變體都優(yōu)于單階段訓(xùn)練,說(shuō)明使用 CODEI/O 數(shù)據(jù)進(jìn)行獨(dú)立訓(xùn)練能提升推理效果。總結(jié)2:對(duì)于 Qwen 2.5 Coder 7B,保持 CODEI/O 和指令調(diào)優(yōu)數(shù)據(jù)完全分離的效果最佳,而對(duì)于 LLAMA 3.1 8B,混合數(shù)據(jù)效果更好。論文為了簡(jiǎn)化方法,主要實(shí)驗(yàn)采用了完全分離的數(shù)據(jù)。
三、總結(jié)
結(jié)論1: CODEI/O 是一種有效提升大型語(yǔ)言模型通用推理能力的方法。 通過(guò)將原始代碼轉(zhuǎn)換為輸入-輸出預(yù)測(cè)任務(wù),并利用自然語(yǔ)言 CoT 進(jìn)行訓(xùn)練,CODEI/O 使得模型能夠?qū)W習(xí)代碼中蘊(yùn)含的多樣化推理模式,并在各種推理 benchmark 上取得顯著且均衡的性能提升。
結(jié)論2: CODEI/O++ 通過(guò)執(zhí)行反饋和多輪修訂進(jìn)一步增強(qiáng)了模型性能。 基于執(zhí)行反饋的修訂策略能夠提高數(shù)據(jù)質(zhì)量,并使模型在各種推理領(lǐng)域都獲得更優(yōu)的表現(xiàn)。
結(jié)論3: CODEI/O 方法具有良好的通用性和泛化能力。 盡管使用代碼數(shù)據(jù)進(jìn)行訓(xùn)練,CODEI/O 不僅提升了代碼相關(guān)任務(wù)的性能,也顯著提升了其他通用推理任務(wù)的性能,表明其學(xué)習(xí)到的推理模式具有廣泛的適用性。
結(jié)論4: CODEI/O 在數(shù)據(jù)效率和性能方面都優(yōu)于其他基線方法。 實(shí)驗(yàn)表明,CODEI/O 即使使用相對(duì)較小的數(shù)據(jù)集,也能超越使用更大規(guī)模數(shù)據(jù)集的其他方法,展現(xiàn)了其數(shù)據(jù)效率和卓越的性能。
產(chǎn)業(yè)應(yīng)用價(jià)值:
?提升通用人工智能模型的推理能力: CODEI/O 提供了一種新的訓(xùn)練方法,可以有效提升大型語(yǔ)言模型的通用推理能力,使其在更廣泛的應(yīng)用場(chǎng)景中表現(xiàn)更出色。
?降低數(shù)據(jù)標(biāo)注成本: CODEI/O 利用代碼的結(jié)構(gòu)化特性自動(dòng)生成訓(xùn)練數(shù)據(jù),無(wú)需大量人工標(biāo)注,降低了數(shù)據(jù)獲取和標(biāo)注的成本。
?增強(qiáng)模型的魯棒性和泛化性: CODEI/O 訓(xùn)練的模型在各種推理任務(wù)上都表現(xiàn)出均衡且優(yōu)異的性能,表明其具有良好的魯棒性和泛化性,可以應(yīng)用于更復(fù)雜和多樣的實(shí)際場(chǎng)景。
?為代碼相關(guān)應(yīng)用提供更強(qiáng)大的基礎(chǔ)模型: CODEI/O 使用代碼數(shù)據(jù)進(jìn)行訓(xùn)練,可以為代碼生成、代碼理解、代碼缺陷檢測(cè)等代碼相關(guān)應(yīng)用提供更強(qiáng)大的基礎(chǔ)模型。

















