高馬爾
一個信息發佈的網站

DeepSeek團隊新作:把代碼變成思維鏈,大模型推理各種能力全面提升

今天小編(袁曼雁)要和大家分享的是DeepSeek團隊新作:把代碼變成思維鏈,大模型推理各種能力全面提升,歡迎閲讀~

用代碼訓練大模型思考,其他方面的推理能力也能提升。

DeepSeek 團隊最新研究,利用 300 多萬個實例,将代碼轉換成思考過程,構建出數據集CODEI/O,對 Qwen、Llama 等模型進行了訓練。

結果,在各種類型的推理任務當中,模型性能都取得了全面提升,包括在非代碼類的推理任務上,也展現出了良好的遷移能力

研究團隊認為,在代碼當中暗含了不同類型場景的思考過程,于是想要把這種思考過程 " 提取 " 出來訓練推理模型。

他們生成了大量的訓練數據運行這些代碼,然後把代碼、輸入 / 輸出對以及功能描述輸入 DeepSeek-V2.5,從而合成自然語言形式的推理過程

在此基礎上,團隊還引入了驗證和修訂機制,形成了更高質量的CODEI/O++

從代碼中構建思維鏈

首先,作者從 CodeMix、PyEdu-R 等數據集中收集了 80 多萬份代碼檔案,涵蓋多種編程語言(以 Python 為主),任務類型多樣,并且藴含了豐富的推理模式。

但是,由于原始代碼檔案通常缺乏結構化,包含不相關的元素,難以以自包含的方式執行,作者使用 DeepSeek-V2.5 模型對其進行預處理,将其轉換為統一的格式

轉換過程中的工作主要包括把核心邏輯功能提取到函數中,添加總結整體邏輯的主入口函數,明确定義主入口函數的輸入 / 輸出,創建獨立的基于規則的輸入生成器函數,以及基于主入口函數生成簡明的問題陳述作為查詢等等。

接下來,在轉換後的每個函數上,使用輸入生成器采樣多個輸入,并通過執行代碼獲得相應的輸出,從而收集輸入 - 輸出對

這一過程中,部分代碼出現了超時、復雜度過高、不可執行或結果不确定等情況,這部分代碼被作者跳過,最終生下了 40 多萬份代碼文檔,產生了 350 萬個樣本實例。

然後,作者利用 DeepSeek-V2.5,将代碼、輸入輸出對、功能描述等信息合成為自然語言思維鏈(CoT),構建訓練樣本。

對于每一個輸入 - 輸出對,作者首先構建一個輸入提示。這個提示由幾個部分拼裝而成:

函數定義:即之前結構化和标準化後的 Python 函數代碼。

文本描述:用自然語言概括函數的功能和目的。

參考代碼:與函數定義類似,但可能包含一些額外的上下文信息或注釋。

輸入或輸出:根據是輸入預測還是輸出預測任務,提示中會包含具體的輸入或期望的輸出。

将構建好的提示輸入給 DeepSeek-V2.5 模型,模型會根據提示生成一段自然語言文本作為響應。

這段文本就是作者想要的推理過程——它需要解釋如何從給定的輸入推導出輸出,或者在給定輸出的情況下如何構造出滿足條件的輸入。

通過這種方式收集的數據集,就是 CODEI/O。

在 CODEI/O 的基礎上,作者進一步利用了代碼的可執行特性,合成了數據質量更高的CODEI/O++

作者首先對 CODEI/O 中生成的所有響應通過重新執行代碼進行正确性驗證。對于驗證為不正确的響應,作者将執行反饋追加為第二輪輸入信息,并要求模型重新生成一個響應。

執行反饋包括輸出預測的正誤、輸入預測基于錯誤輸入的執行輸出,以及代碼執行失敗的錯誤信息等。

在第二輪生成後,再次檢查新響應的正确性。

無論第二輪結果如何,最終的響應都由四個部分按順序構成:第一輪響應、第一輪反饋、第二輪響應和第二輪反饋。

對于第一輪就正确的響應,第一輪反饋簡單标記為 "Success",且沒有第二輪内容。

與 CODEI/O 一樣,所有修訂後的響應都會被保留。通過引入基于執行反饋的多輪修正所構建的增強型數據集就是 CODEI/O++。

數據集構建完成後,作者采用了兩階段訓練策略對相關模型進行訓練。

第一階段先用 CODEI/O 或 CODEI/O++ 來訓練推理能力,然後再用通用指令數據集進行微調,教會模型遵循自然語言指令、執行各種任務。

模型推理能力全面提升

為了評估 CODEI/O 或 CODEI/O++ 的效果,作者一共找來了四個模型來進行測試,分别是 Qwen 2.5-7B-Coder、Deepseek v2-Lite-Coder、Llama 3.1-8B 和 Gemma 2-27B。

測試過程中,作者共選用了 10 餘個數據集,測試了模型常識、數學、代碼、物理、工程等領網域的表現,具體數據集如下表:

CODEI/O 訓練之後,Qwen-Coder 在代碼理解任務上取得了突破性進展,并且在閲讀理解和推理任務(如 DROP)上也有明顯提升,這表明通過代碼訓練獲得的推理能力确實遷移到了其他領網域

DeepSeek-Coder 在 CODEI/O 的訓練下也展現出了均衡的進步,在各個維度上都實現了穩定的改進。

Qwen-Coder 和 DeepSeek-Coder 的表現説明,即使是已經在代碼領網域有專門訓練的模型,也能從這種結構化的推理訓練中獲益

Llama 在 LeetCode-O 上的性能提升了将近 150%,説明即使是參數量較小的模型,通過合适的訓練方法也能在特定任務上獲得較大提升。

而 Gemma 作為測試中最大的模型,展示了 CODEI/O 方法在大規模模型上的适用性,在多個關鍵領網域取得了進步。

相比于數據量更大的 WebInstruct(WI),CODEI/O 整體上取得了更好的效果;而相對于專門為某種任務設計的 OpenMathInstruct2(OMI2)、PyEdu 等方式,CODEI/O 體現了更強的通用性。

作者簡介

本文第一作者是來自上海交大的碩士生Junlong Li,目前在 DeepSeek 實習。

同時他還在香港科技大學助理教授何俊賢的指導下進行研究工作,何俊賢亦是本文的通訊作者。

此外參與了 DeepSeek V2、V3 以及 R1 研發的 DeepSeek 核心研究員、中山大學校友郭達雅也參與了這一項目。

論文地址:

https://arxiv.org/abs/2502.07316

GitHub:

https://github.com/hkust-nlp/CodeIO

數據集:

https://huggingface.co/datasets/hkust-nlp/CodeIO-PyEdu-Reasoning

關于DeepSeek團隊新作:把代碼變成思維鏈,大模型推理各種能力全面提升就分享完了,您有什麼想法可以聯系小編(袁曼雁)。