DeepSeek又出新成果:用代码也能培养模型的推理能力?

近日,DeepSeek AI团队人员又在Arxiv上发布了一篇新的论文,“CODEI/O: Condensing Reasoning Patterns via Code Input-Output Prediction”,该研究创新性地将代码输入输出预测转化为自然语言推理链,成功解耦结构化推理与代码语法的耦合,使模型能够系统化学习逻辑流规划、状态空间搜索、决策树遍历等通用推理原语。实验表明,该模型不仅在代码任务上,还在符号推理、科学推理、数学计算及常识推理等五大任务中均实现性能跃升,值得阅读。

©️【深蓝AI】编译

论文标题:CODEI/O: Condensing Reasoning Patterns via Code Input-Output Prediction

论文作者:Junlong Li,Daya Guo,Dejian Yang,Runxin Xu,Yu Wu,Junxian He

论文地址:https://arxiv.org/pdf/2502.07316v3

论文一作Junlong Li是在DeepSeek AI的实习生,二作Daya Guo则是参与了DeepSeek V2、V3以及R1等多个模型的核心研究员,虽然这篇论文没有挂上DeepSeek的官方tile,但是也从一定程度上揭示了DeepSeek研究团队的动向,值得关注与参考。

一、从代码数据中构建自然语言思维链

研究人员相信,真实世界的代码程序反映了跨多样场景的广泛推理模式的整合,这使其成为理想的训练来源,同时能最大限度地降低过拟合风险。然而,直接对原始代码进行传统的持续预训练效果欠佳,因为相关的推理信号往往隐含在数据之中且往往伴随着噪声信息。即使是直接训练模型从文本到代码生成的能力也存在挑战,因为它受限于生成代码专用语法的要求,难以泛化到非代码特定任务。

为解决这些局限性,研究人员提出将原始代码文件转化为可执行函数,并设计更直观的任务:给定函数及其对应的文本查询,模型需要以纯自然语言形式预测给定输入时的执行输出,或根据输出反推可行的输入,整个过程需呈现为思维链(CoT)推理依据。该方法旨在将核心推理流程与代码专用语法分离,同时保持逻辑严谨性。通过从多种来源收集并转换函数,最终数据集融合了各类基础推理技能,包括逻辑流程编排、状态空间探索、递归分解和决策制定。基于原始代码文件提供的多样化场景学习这些样本,使模型能反复接触这些推理过程,从而更好地内化这些技能。

▲图1|训练数据构建流程概述图©️【深蓝AI】编译

首先从多种来源收集原始代码文件,并将其转换为统一格式。随后通过执行代码生成输入-输出对,同时预测所需的自然语言思维链(CoTs)则从DeepSeek-V2.5系统中采集。经过验证的思维链可进行选择性修订,以进一步增强推理链的逻辑性和完整性。

■ 1.1. 搜集原始代码数据

研究人员选择了多样化的原始代码来源,涵盖了广泛的推理模式。为实现这一目标,研究人员重点选取了两种不同侧重的代码源:首先是CodeMix,这是一个从内部代码预训练语料库中提取的大型原始Python代码文件集合,通过过滤掉过于简单或复杂程度过高的文件来优化质量;其次是PyEdu-R(推理),该数据集源自Python-Edu(Ben Allal等人,2024)的子集,专注于STEM学科、系统建模或逻辑谜题等需要复杂推理的任务。为避免与CodeMix重叠,研究人员刻意排除了仅包含纯算法内容的文件。除上述两大来源外,还整合了来自多个高质量小型权威渠道的代码文件,包括综合性算法库、高难度数学问题集以及知名在线编程平台。通过合并这些来源,最终形成了约810.5K个代码文件的集合。

■ 1.2. 统一格式化代码数据

收集的原始代码文件通常缺乏结构性,包含无关元素,且难以以自包含的方式执行。因此,研究人员使用DeepSeek-V2.5对其进行预处理,该工具将其精炼为统一格式,强调核心逻辑功能,并使其具备可执行性,以便收集输入-输出对用于后续的预测任务。这一转换过程将数据组织为以下组成部分:

参考代码清理:通过对原始代码文件进行预处理,包括代码清洗与重构,将核心逻辑功能提取为独立函数。在此过程中,非必要元素(例如可视化相关的print、plot语句,以及文件处理相关的read、write操作)均被排除。

主入口函数设计:通过添加主入口函数来整合代码的整体逻辑框架。该函数具备调用其他函数或引入外部库的能力,其参数列表必须包含非空输入项,并需返回具有明确语义的输出结果。所有输入参数和返回值均需满足JSON序列化要求,以便于后续处理流程的自动化操作。

输入输出描述:该函数的输入与输出参数需进行明确定义,具体涵盖以下要素:数据类型声明、约束条件(如输出值域范围)以及复合型约束要求(如字典数据结构中的键值规范)。所有参数特征均需通过结构化形式予以完整表述。

输入生成器:并非直接生成测试用例,而是创建了一个独立的基于规则的Python输入生成器函数。该生成器会返回符合主入口函数要求的非简单输入。在约束条件下应用随机性,从而能够生成可扩展的数据。

查询:基于主入口函数生成简洁的问题陈述,作为描述代码预期功能的查询。

■ 1.3. 收集输入输出对

在将收集的原始代码文件转换为统一格式后,使用输入生成器为每个函数采样多个输入,并通过执行代码获取相应输出。为确保输出具有确定性,跳过了所有包含随机性的函数(例如使用import random的代码)。在执行过程中,对运行时间及输入/输出对象的复杂度设置了一系列限制。

对于每个转换后的函数,根据其来源采样多个输入-输出对。经过过滤不可执行代码、超时样本及复杂度超标的输入-输出对后,最终从454,900个原始代码文件中获得了350万条有效实例。输入预测和输出预测实例的分布比例大致平衡,各占50%。

■ 1.4. 构建输入输出用例

在收集输入-输出对及转换后的函数后,需要将其组装为可训练的格式。针对所采用的监督微调过程,每个训练样本都需要一个提示(prompt)和一个响应(response)。由于目标是实现输入-输出预测任务,通过设计的模板将函数、查询语句、参考代码以及特定输入或输出组合起来构建提示。理想的响应应是以自然语言表达的思维链(Chain-of-Thought),用于推理如何得出正确的输出或可行的输入。总体而言,采用以下两种方式构建所需的思维链响应:

直接提示(Direct Prompting CODEI/O): 尽管从理论上讲,拥有完全可执行的代码可以生成可靠的执行过程作为回复,但面临两个挑战:1) 从输入中预测得到确定性的逆函数是不切实际的;2) 自动构建的过程受限于预先设计的模板,缺乏自由形式自然语言推理的表达能力和泛化性。因此,研究人员采用完全基于大语言模型的方法,利用DeepSeekV2.5合成所有期望的回复,因为该模型具备顶尖性能且成本极低。此处生成的数据集称为CODEI/O。在图2中提供了两个收集到的回复示例。

▲图2|收集到的数据示例©️【深蓝AI】编译

充分利用代码(Making Full Use of Code – CODEI/O++ ):提升数据质量的常见方法是拒绝采样,即丢弃不正确的预测结果。虽然这种方法特别适用于CODEI/O场景(因为可以通过重新执行代码来验证所有响应),但研究人员发现这种方法会导致次优的性能表现。因此,研究人员采用了一种替代的方法来充分利用参考代码的执行反馈。对于预测错误的响应,将反馈信息作为第二回合的输入信息,并要求DeepSeek-V2.5重新生成响应。

在实际操作中,研究人员捕获了多种类型的反馈:

输出预测:直接告知模型其生成的答案不正确;

输入预测:额外提供基于错误输入执行后的输出;

代码执行失败(如格式错误、参数不匹配或其他运行时错误):明确引入包含这些错误反馈的数据。

在第二轮处理后,研究人员会重新检查新生成响应的正确性。随后通过拼接四个组成部分构建最终响应:第一轮响应 + 第一轮反馈 + 第二轮响应 + 第二轮反馈。对于第一轮中已正确的响应,其反馈仅标记为"Success"且不包含第二轮内容。数据显示,首轮处理中50%的响应是正确的,而10%的错误响应能在第二轮被成功修正。与CODEI/O方法类似,在修正后仍保留所有响应(无论正确与否),由此构建的数据集命名为CODEI/O++。

二、实验结果

该研究在科学、数学、逻辑、常识及代码理解等多领域评估模型推理能力,采用包括GSM8K、MATH、BBH、LiveBench等十余个主流基准测试,涵盖跨语言(中/英/韩)与动态更新任务。大部分评估使用零样本贪婪解码,仅BBH任务采用3样本提示,数学类测试结合思维链技术,以全面检验模型复杂推理、多步问题解决及抗数据污染能力。

研究人员选取了四个高质量数据集(WebInstruct、OpenMathInstruct-2等)作为基线,在数学推理和代码生成任务中分别使用子集(350万样本)和完整数据集进行训练效果对比。实验特别关注Qwen 2.5 7B Coder模型在完整数据集上的表现,以评估代码预训练对模型推理能力的提升作用。

▲表1|所有基准测试的主要评估结果©️【深蓝AI】编译

WI = WebInstruct(网络教学数据集),OMI2 = OpenMathInstruct2(开放数学指导数据集2),OC-SFT-1 = OpenCoder-SFT-Stage-1(开放编码器微调第一阶段),PyEdu = PythonEdu(Python教学数据集)。研究人员同时报告了每个数据集的训练样本数量。通过颜色编码的单元格(绿色/红色)来标示相较于单阶段基线的改进或下降情况,颜色深度与分数变化幅度呈正相关。

表1展示了主要评估结果。CODEI/O在各类基准测试中均展现出普适性优势,其表现不仅超越单阶段基线模型,也优于其他数据集(包括规模更大的数据集)。尽管竞争性数据集可能在特定任务中表现突出(例如OpenMathInstruct2在数学领域),但在其他任务中会出现性能倒退(表格中绿色与红色单元格混杂),而CODEI/O则展现出持续性的改进(以绿色单元格为主)。

值得注意的是,尽管仅使用以代码为核心的数据进行训练,CODEI/O不仅提升了代码推理能力,对其他类型任务也表现出增强效果,这表明其具备良好的泛化能力。我们还观察到,相较于单阶段基线,使用原始代码文件(PythonEdu)进行训练仅带来微弱且偶尔负面的改进,其表现显著落后于CODEI/O,这表明从这类低结构度数据中学习并非最优方案。这进一步证明性能提升并非单纯依赖数据规模,而是源于精心设计的训练任务——这些任务囊括了广义思维链中多样化、结构化的推理模式。

此外,CODEI/O++系统性地优于CODEI/O,在提升整体平均得分的同时,未在单项任务上做出性能妥协。这凸显了基于执行反馈的多轮修订如何提升数据质量并增强跨领域推理能力。最重要的是,CODEI/O和CODEI/O++在不同模型规模和架构上均展现出普遍有效性。这进一步验证了我们的训练方法——通过预测代码输入和输出——能够使模型在多样化推理任务中表现优异,而无需牺牲特定基准测试的性能。

三、总结

研究人员提出了CODEI/O方法,通过训练大型语言模型以纯自然语言思维链(CoT)的形式预测代码输入和输出来增强其推理能力。该方法利用代码的结构化与可扩展特性,能够学习符号推理、逻辑推理、数学推理和常识推理等多样化推理模式。大量实验表明,CODEI/O及其增强版本CODEI/O++在各项基准测试中均显著优于现有基线方法,且未在任何领域出现性能下降,实现了跨领域的均衡性能提升,充分证明了该方法的鲁棒性与通用性。

Ref:CODEI/O: Condensing Reasoning Patterns via Code Input-Output Prediction

编译|Famcous

DeepSeek技术解析直播

最近以DeepSeek-R1为代表的大模型慢思考技术受到了较大关注,因此,我们特意邀请了中国人民大学高瓴人工智能学院的赵鑫教授(谷歌学术引用2.7万余次、曾主导研发了玉兰大语言模型、组织编写了大语言模型综述论文《A Survey of Large Language Models》。

2月24日,赵鑫教授将在深蓝学院进行一场《以DeepSeek、Kimi为例:慢思考模型的技术解析与应用》的直播分享!

欢迎更多业界同仁、老师、同学们加入:

https://mp.weixin.qq.com/s/ms-dcCl97CTVpTcRIcvzTQ

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值