DeepSeek 团队新作:把代码变成思维链,大模型推理各种能力全面提升

xxn 阅读:19127 2025-02-17 16:03:55 评论:0

编程训练不仅可以提高大型模型的思维能力,还可以增强其他推理技能。

近期,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++的效果,作者对四个模型进行了测试,分别是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的核心研究员、中山大学校友郭达雅也参与了DeepSeek V2、V3以及R1的研发。

论文地址:

  • https://arxiv.org/abs/2502.07316

GitHub:

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

数据集:

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

本文来自微信公众号:量子位(ID:QbitAI),作者:克雷西

广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考。

声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

搜索
排行榜
关注我们

扫一扫关注我们,了解最新精彩内容