微信扫一扫,关注公众号

  • 科技行者

  • 算力行者

见证连接与计算的「力量」

首页 北航团队突破:让AI不用任何外部数据就能学会编程

北航团队突破:让AI不用任何外部数据就能学会编程

2025-12-25 13:04
分享至:
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-
2025-12-25 13:04 科技行者

这项由北航(北京航空航天大学)的吴家俊、杨健等研究团队与华为联合完成的研究,发表于2025年12月19日的arXiv预印本平台(论文编号:arXiv:2512.17385v1)。这项工作首次实现了让大语言模型完全依靠自己内部的知识来学习编程,无需任何外部数据或人工标注,为AI编程能力的提升开辟了全新路径。

想象你是一个刚刚学会基础语言的孩子,突然有一天你不需要任何老师、课本或外界帮助,仅凭自己大脑中已有的知识就能学会复杂的数学和写作技巧。这听起来不可思议,但北航的研究团队就是让AI做到了类似的事情。他们开发的UCoder系统能够让大语言模型完全依靠自身内部已有的编程知识,通过一套巧妙的"自我训练"机制,在不依赖任何外部代码库、教学样例或人工标注的情况下,自主提升编程能力。

传统的AI编程训练就像是让学生反复做老师精心准备的练习题。研究人员需要花费大量时间和精力收集编程题目,编写标准答案,然后让AI模型学习这些人工准备的材料。这个过程不仅成本高昂,而且非常耗时。更重要的是,随着AI模型能力的不断提升,准备高质量训练数据的难度也在急剧增加,就像是需要不断出更难的题目来挑战越来越聪明的学生。

北航团队提出的解决方案可以比作让AI成为自己的老师。他们设计了一套名为IPC(Internal Probing of LLMs for Code generation)的框架,这个框架能够探测和利用大语言模型内部已经存在的编程知识。这就好比发现一个人其实已经掌握了很多技能,只是需要一个合适的方法来激发和整理这些潜在能力。

这套系统的工作原理可以用一个生动的比喻来理解。设想AI模型的大脑就像一个巨大的图书馆,里面存放着通过预训练获得的各种编程知识,但这些知识就像散落在不同角落的书籍,没有得到很好的整理和利用。UCoder系统就像一位聪明的图书管理员,能够系统性地整理这些知识,并创造出一套让AI自我学习和提升的机制。

具体来说,这个过程分为六个相互关联的阶段,就像是一个完整的自我训练循环。首先是"问题空间探索"阶段,AI模型需要自己生成编程问题。这不是简单的复制粘贴,而是真正创造性的工作。模型需要设计出具有完整功能规范的算法问题,包括清晰的问题描述、输入输出示例,甚至是解题提示。这个过程就像是让AI成为出题老师,需要深入理解各种编程概念和算法思维。

接下来是"质量评估"阶段,AI需要对自己生成的问题进行评分和分类。这个步骤类似于让AI担任阅卷老师的角色,需要判断问题的质量、难度和完整性。然后是"接口综合"阶段,AI会为每个问题生成相应的解决方案框架,包括函数签名、文档说明和基本的实现结构。

第四个阶段是"测试理解探索",这个环节特别有趣。AI需要为每个编程问题生成大约100个测试用例,这些测试用例要能够充分验证解决方案的正确性,包括边界条件和特殊情况。这就像是让AI成为质量检测员,需要想出各种可能的情况来测试程序的可靠性。

核心的第五阶段是"解决方案空间探索"。在这个阶段,AI会为每个问题生成128个不同的解决方案候选,这些解决方案在实现方法和代码结构上都有所不同。然后系统会运用一种巧妙的"执行驱动共识聚类"机制来识别正确的解决方案。这个机制基于一个重要的观察:正确的程序实现虽然代码可能不同,但它们在面对相同测试用例时会产生相同的输出结果,而错误的实现往往会产生各不相同的错误结果。

这种共识机制就像是在茫茫人海中寻找志同道合的朋友。当很多不同的解决方案都给出相同的正确答案时,我们就可以相信这些解决方案很可能是正确的。反之,如果某个解决方案给出的答案与大多数不同,那它很可能存在错误。通过这种方式,系统能够在没有标准答案的情况下,自动识别出高质量的解决方案。

最后的第六阶段是"知识巩固和强化"。系统会将通过共识机制筛选出的高质量解决方案作为新的训练数据,对AI模型进行进一步的有监督微调。这个过程会不断重复,形成一个正向反馈循环:改进后的模型能够生成更高质量的候选解决方案,从而产生更可靠的训练信号,进一步提升模型性能。

研究团队在多个标准编程基准测试上验证了UCoder的效果,结果令人印象深刻。在HumanEval这个经典的Python编程测试中,UCoder-7B模型达到了83.5%的通过率,UCoder-14B达到87.8%,UCoder-32B更是达到89.0%。这些数字意味着什么呢?简单来说,就是AI能够正确解决大部分常见的编程问题,其表现已经接近甚至超越了一些需要大量人工标注数据训练的传统模型。

更有趣的是,研究团队发现了一个"反向缩放"现象。通常我们认为更大的模型会从训练中获得更大的收益,但在这个自我训练框架中,较小的模型反而能够获得更显著的性能提升。7B参数的小模型通过6轮迭代训练,在某些测试中的性能提升超过13个百分点,而32B的大模型提升幅度相对较小。这个现象可能是因为较小的模型在预训练阶段获得的编程知识还不够充分,因此有更大的改进空间,而自我训练恰好能够帮助它们更好地整理和利用这些潜在知识。

为了验证系统生成内容的质量和多样性,研究团队进行了详细的分析。他们发现,AI生成的16867个编程问题在词汇、语义和结构上都展现出了丰富的多样性。从词汇角度看,这些问题的平均信息熵达到3.64比特,接近自然语言的变化程度,说明AI没有简单地重复模板,而是真正创造出了多样化的问题描述。

从语义覆盖面来看,生成的问题涵盖了七个主要领域:数据结构(占18.3%)、算法设计(14.8%)、字符串处理(11.4%)等,没有任何单一类别占主导地位,体现了良好的领域平衡性。更重要的是,这些问题包含了229个领域特定的技术术语,如"dijkstra"、"greedy"、"traversal"等,表明AI确实理解了具体的算法概念,而不是在泛泛而谈。

在解决方案的多样性方面,系统生成的260万个代码样本在抽象语法树结构上覆盖了15种不同的语法构造,总计超过2.1亿个语法节点。这些解决方案在复杂度和代码长度上也表现出广泛的分布,平均复杂度为2.7,平均代码长度为22.4行,显示出实现方法的丰富性。

执行驱动共识机制的有效性也得到了充分验证。研究团队分析了9700个解决方案候选的质量分布,发现代码质量与其困惑度(一种衡量代码流畅性的指标)之间存在明显的分层关系。高质量的解决方案(执行成功率80%以上)主要集中在困惑度1.05以下的区间,而低质量解决方案的困惑度则明显更高。这种清晰的分层为自动质量识别提供了可靠的信号。

通过对比实验,研究团队证明了基于共识的选择策略确实优于其他替代方案。与随机选择、基于聚类、选择最低困惑度或基于执行成功率等策略相比,共识机制在所有测试基准上都取得了最佳或接近最佳的性能。特别是在FullStackBench这样的综合性测试中,共识方法比随机选择的优势随着模型规模增大而扩大,在32B模型上的优势达到13.9个百分点。

这项研究的理论基础也十分扎实。研究团队提出了一个重要的理论保证:在满足一定条件的情况下,最大共识聚类包含正确实现的概率至少为1-δ-n?p^|T|,其中δ是错误概率的上界,n是候选数量,p是错误实现产生相同输出的概率,|T|是测试用例数量。这个公式告诉我们,只要测试用例足够多,错误实现很难"串通"产生相同的错误输出,因此共识机制能够可靠地识别正确的解决方案。

从实际应用的角度来看,这项研究具有重要的意义。首先,它大大降低了训练高质量AI编程助手的门槛。传统方法需要大量人工标注的训练数据,成本高昂且耗时。而UCoder只需要基础的预训练模型,就能够自主提升编程能力,这为资源受限的研究机构和企业提供了新的可能性。

其次,这种自我改进的能力意味着AI编程助手能够持续学习和适应新的编程挑战,而不需要频繁的人工干预和数据更新。这对于快速变化的软件开发环境来说特别有价值。

不过,这项研究也存在一些局限性。目前的实验主要集中在Python编程任务上,对于其他编程语言和更复杂的软件工程场景,还需要进一步验证。另外,系统的有效性依赖于可执行的测试用例,对于一些难以形式化验证的编程任务(如用户界面设计、代码可维护性等),可能需要额外的质量评估机制。

此外,为每个问题生成128个候选解决方案的计算成本仍然不小,虽然比收集和标注大量训练数据要经济得多,但在资源严重受限的环境中可能仍然是一个考虑因素。研究团队也注意到,迭代训练过程在一定轮次后会出现收益递减的现象,需要通过验证性能来确定最佳的停止点。

总的来说,这项研究为AI编程能力的提升提供了一个全新的思路。它证明了大语言模型内部已经蕴含了丰富的编程知识,关键在于如何有效地激发和利用这些知识。通过巧妙的自我训练机制,AI能够在没有外部监督的情况下持续改进自己的编程能力,这不仅是技术上的突破,也为我们理解AI学习机制提供了新的视角。

这项工作的意义不仅局限于编程领域。它展示了一种通用的自我改进范式,可能对其他需要复杂推理和问题解决能力的AI应用产生启发。随着AI模型规模和能力的不断提升,如何有效利用模型内部的潜在知识,而不仅仅依赖外部数据的数量增长,将成为AI发展的一个重要方向。

北航团队的这项研究为我们展现了AI自主学习的巨大潜力。在这个AI技术快速发展的时代,能够让机器自己成为自己最好的老师,无疑是朝着真正智能化迈出的重要一步。对于关注AI发展的读者来说,这项研究值得深入了解和思考,有兴趣的读者可以通过论文编号arXiv:2512.17385v1查询完整的技术细节。

Q&A

Q1:UCoder是什么,它是如何工作的?

A:UCoder是北航团队开发的一个AI编程系统,它的特别之处在于能让大语言模型完全依靠自身已有的知识学会编程,不需要任何外部数据。它通过六个阶段的循环训练,让AI自己出编程题、写解决方案、验证答案,然后从正确的解决方案中学习,就像让AI成为自己的编程老师。

Q2:UCoder的编程能力有多强?

A:UCoder在多个标准测试中表现出色,7B版本在HumanEval测试中达到83.5%的通过率,14B版本达到87.8%,32B版本更是达到89.0%。这意味着它能正确解决大部分常见的编程问题,性能已经接近或超越需要大量人工数据训练的传统模型。

Q3:普通开发者能使用UCoder吗?

A:目前UCoder还是一个研究阶段的技术框架,主要证明了AI可以通过自我训练提升编程能力的可能性。虽然研究团队基于开源的Qwen2.5-Coder模型开发,但要成为普通开发者可以直接使用的工具,还需要进一步的工程化和产品化工作。

分享至
0赞

好文章,需要你的鼓励

推荐文章
  • 南方科技大学等机构联手破解AI推理训练难题:让大模型"一次思考"就学会解题

    南方科技大学等机构联手破解AI推理训练难题:让大模型"一次思考"就学会解题

    本文介绍了由南方科技大学等机构于2026年4月发表的研究(arXiv:2604.08865),提出了名为SPPO的大模型推理训练新方法。该方法将推理任务重新建模为"序列级情境赌博机",用一个轻量级价值模型预测题目难度,以单次采样替代GRPO的多次采样,解决了标准PPO的"尾部效应"问题。实验显示,SPPO在数学基准测试上超越GRPO,训练速度提升约5.9倍,配合小尺寸价值模型还能显著降低显存占用。

  • 香港科技大学数学系研究者:扩散模型原来是一个"魔法恒等式"拆成了两半

    香港科技大学数学系研究者:扩散模型原来是一个"魔法恒等式"拆成了两半

    这项由香港科技大学数学系完成的研究(arXiv:2604.10465,2026年ICLR博客论文赛道)提出了一种从朗之万动力学视角理解扩散模型的统一框架。研究指出,扩散模型的前向加噪和逆向去噪过程,本质上是朗之万动力学这一"分布恒等操作"被拆成了两半。在这个视角下,VP、VE-Karras和Flow Matching等不同参数化的模型可被精确互译,SDE与ODE版本可被统一解释,扩散模型相对VAE的理论优势得以阐明,Flow Matching与得分匹配的等价性也得到了严格论证。

  • 中国人民大学研究团队打造的"AI科学家":让机器自主完成几十小时的科研工程,它是怎么做到的?

    中国人民大学研究团队打造的"AI科学家":让机器自主完成几十小时的科研工程,它是怎么做到的?

    中国人民大学高岭人工智能学院等机构联合开发了AiScientist系统,旨在让AI自主完成机器学习研究的完整工程流程,包括读论文、搭环境、写代码、跑实验和迭代调试,全程无需人工干预。系统核心设计是"薄控制、厚状态":由轻量指挥官协调专业代理团队,通过"文件即通道"机制将所有中间成果持久化存储,使每轮工作都能建立在前一轮积累的基础上。在PaperBench和MLE-Bench Lite两个基准上,系统表现显著优于现有最强对比系统,论文发布于2026年4月。

  • 字节跳动发布GRN:像人类画家一样"边画边改"的AI图像生成新范式

    字节跳动发布GRN:像人类画家一样"边画边改"的AI图像生成新范式

    这项由字节跳动发布的研究(arXiv:2604.13030)提出了生成式精化网络(GRN),一套模仿人类画家"边画边改"直觉的视觉生成新框架。其核心包括两项创新:层级二进制量化(HBQ)通过多轮二分逼近实现近乎无损的离散图像编码,以及全局精化机制允许模型在每一步对整张图像的所有位置重新预测并随时纠错,从根本上解决了自回归模型的误差积累问题。配合基于熵值的自适应步数调度,GRN在ImageNet图像重建(rFID 0.56)和生成(gFID 1.81)上均创下新纪录,并在文本生成图像和视频任务上以20亿参数达到同等规模方法的领先水平。

----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-