超级编程AI登上Science封面!AlphaCode编程大赛卷趴一半程序员(2)

简介: 超级编程AI登上Science封面!AlphaCode编程大赛卷趴一半程序员

就拿这个1553D问题来说,参赛者需要找到一种方法,使用一组有限的输入将一串随机重复的s和t字母转换成另一串相同的字母。

参赛者不能只是输入新的字母,而必须使用「退格」命令删除原始字符串中的几个字母。赛题具体如下:

对此,AlphaCode给出的解决方案如下:

并且,AlphaCode的「解题思路」也不再是黑箱,它还能显示代码和注意力高亮的位置。

AlphaCode的学习系统

参加编程比赛时,AlphaCode面临的主要挑战是:

(i)需要在巨大的程序空间中搜索,(ii)只能获得约13,000个用于训练的示例任务,以及(iii)每个问题的提交数量有限。为了应对这些问题,AlphaCode整个学习系统的构建分为三个环节,预训练、微调、采样与评估,如上图所示。预训练在预训练阶段,利用在GitHub收集的715GB人类码农的代码快照,对模型进行预训练,并使用交叉熵next-token预测损失。在预训练过程中,随机地将代码文件分成两部分,将第一部分作为编码器的输入,并训练模型去掉编码器生成第二部分。这种预训练为编码学习了一个强大的先验,使随后的特定任务的微调能够在一个更小的数据集上进行。微调在微调阶段,在一个2.6GB的竞争性编程问题数据集上对模型进行了微调和评估,数据集是DeepMind创建的,命名为CodeContests公开发布。CodeContests数据集中包括问题以及测试案例。训练集包含13,328个问题,每个问题平均有922.4个提交答案。验证集和测试集分别包含117个和165个问题。在微调过程中,将自然语言的问题陈述编码为程序注释,以使其看起来与预训练期间看到的文件更加相似(其中可以包括扩展的自然语言注释),并使用相同的next-token预测损失。采样为了选出10个最好的样本进行提交,采用过滤和聚类的方法,利用问题陈述中包含的例子测试来执行样本,并删除未能通过这些测试的样本。通过过滤筛除了近99%的模型样本,再对剩下的候选样本进行聚类,在一个单独的transformer模型生成的输入上执行这些样本,并将在生成的输入上产生相同输出的程序归为一类。然后,从10个最大的聚类中各挑选一个样本进行提交。直观地说,正确的程序行为相同,并形成大的聚类,而不正确的程序的失败方式是多种多样的。评估上图所示为在10@k指标上,模型性能是如何随着更多的样本量和计算量而变化的。从对采样结果的性能评估上看,研究人员得出了以下4点结论:1. 解决率随着更大的样本量而呈对数线性扩展;2. 更好的模型在比例曲线上有更高的斜率;3. 解决率与更多的计算量呈对数线性比例;4. 样本选择对解决率的扩展至关重要。

纯粹的「数据驱动」

毫无疑问,AlphaCode的提出,代表了机器学习模型在发展上已经迈出了实质性的一步。

有趣的是,AlphaCode并不包含关于计算机代码结构的明确的内置知识。相反,它依靠一种纯粹的「数据驱动」方法来编写代码,也就是通过简单地观察大量现有代码来学习计算机程序的结构。文章地址:https://www.science.org/doi/10.1126/science.add8258从根本上说,使AlphaCode在竞争性编程任务上胜过其他系统的原因归结为两个主要属性:1. 训练数据

2. 候选解决方案的后处理

但计算机代码是一个高度结构化的媒介,程序必须遵守定义的语法,并且必须在解决方案的不同部分中产生明确的前、后条件。而AlphaCode在生成代码时采用的方法,却和生成其他文本内容时完全一样——一次一个token,并且只在整个程序写完后检查程序的正确性。鉴于适当的数据和模型的复杂性,AlphaCode可以生成连贯的结构。然而,这个顺序生成程序的最终配方被深埋在LLM的参数中,难以捉摸。不过,无论AlphaCode是否真的能「理解」编程问题,它的确在代码竞赛方面达到了人类的平均水平。

「解决编程竞赛的问题是一件非常困难的事情,需要人类具有良好的编码技能和解决问题的创造力。AlphaCode能够在这一领域取得进展,给我留下了深刻的印象,我很高兴看到,该模型如何利用其语句理解来生成代码,并引导其随机探索以创建解决方案。」                  ——Petr Mitrichev,谷歌软件工程师和世界级竞技程序员

AlphaCode在编程竞赛中名列前54%,展示了深度学习模型在需要批判性思维的任务中的潜力。这些模型优雅地利用现代机器学习,将问题的解决方案表达为代码,这就回到几十年前AI的符号推理根源。而这,仅仅是一个开始。在未来,还会诞生更多解决问题的强大AI,或许这一天已经不远了。参考资料:https://www.science.org/doi/10.1126/science.add8258https://www.science.org/doi/10.1126/science.abq1158https://www.deepmind.com/blog/competitive-programming-with-alphacode

相关文章
|
14天前
|
机器学习/深度学习 人工智能 自然语言处理
构建智能化编程环境:AI 与代码编辑器的融合
在人工智能的推动下,未来的代码编辑器将转变为智能化编程环境,具备智能代码补全、自动化错误检测与修复、个性化学习支持及自动化代码审查等功能。本文探讨了其核心功能、技术实现(包括机器学习、自然语言处理、深度学习及知识图谱)及应用场景,如辅助新手开发者、提升高级开发者效率和优化团队协作。随着AI技术进步,智能化编程环境将成为软件开发的重要趋势,变革开发者工作方式,提升效率,降低编程门槛,并推动行业创新。
|
12天前
|
人工智能 IDE 程序员
通义灵码 AI 程序员正式上线!
在云栖大会上,阿里云云原生应用平台负责人丁宇宣布,「通义灵码」完成全面升级,并正式发布 AI 程序员。
124 4
|
17天前
|
人工智能 架构师 IDE
阿里云通义灵码重磅升级,能自主修BUG、开发应用的AI程序员来了
通义灵码AI编程能力再进化,说几句话就能开发网页
|
13天前
|
人工智能 IDE 程序员
期盼已久!通义灵码 AI 程序员开启邀测,全流程开发仅用几分钟
在云栖大会上,阿里云云原生应用平台负责人丁宇宣布,「通义灵码」完成全面升级,并正式发布 AI 程序员。
|
16天前
|
人工智能 算法 程序员
程序员为何容易爱上AI?MIT学者诊断:智性恋浓度过高!
【9月更文挑战第20天】近日,一篇由MIT学者撰写的论文在网络上引发热议,探讨了程序员为何易对AI产生深厚情感,即“智性恋”。论文指出,程序员在开发和使用AI时,因对其智能和能力的钦佩而形成依赖与认同,但这可能导致过度依赖AI,忽视自身价值或其局限性,甚至引发不健康的竞争。论文链接:https://arxiv.org/pdf/2407.14933。
31 5
|
1月前
|
机器学习/深度学习 人工智能
AI模型提早5年预警乳腺癌,MIT研究登Science获LeCun转发
【9月更文挑战第1天】麻省理工学院(MIT)研究人员开发的深度学习AI模型,在乳腺癌早期预警方面取得突破性进展,相比传统方法提前5年预警癌症,准确率超过90%。此成果不仅在医学界引起轰动,还获得了人工智能领域知名学者Yann LeCun的高度评价。尽管面临准确性和可解释性的挑战,但该研究展示了AI在医疗领域的巨大潜力,有望革新乳腺癌的早期筛查和诊断方式。论文详情见[链接]。
32 3
|
2月前
|
机器学习/深度学习 人工智能 Android开发
揭秘AI编程:从零开始构建你的第一个机器学习模型移动应用开发之旅:从新手到专家
【8月更文挑战第29天】本文将带你走进人工智能的奇妙世界,一起探索如何从零开始构建一个机器学习模型。我们将一步步解析整个过程,包括数据收集、预处理、模型选择、训练和测试等步骤,让你对AI编程有一个全面而深入的理解。无论你是AI初学者,还是有一定基础的开发者,都能在这篇文章中找到你需要的信息和启示。让我们一起开启这段激动人心的AI编程之旅吧! 【8月更文挑战第29天】在这篇文章中,我们将探索移动应用开发的奇妙世界。无论你是刚刚踏入这个领域的新手,还是已经有一定经验的开发者,这篇文章都将为你提供有价值的信息和指导。我们将从基础开始,逐步深入到更复杂的主题,包括移动操作系统的选择、开发工具的使用、
|
21天前
|
机器学习/深度学习 人工智能 自然语言处理
构建智能化编程助手:AI 在软件开发中的新角色
随着AI技术的发展,智能化编程助手正逐渐改变软件开发方式。本文介绍其核心功能,如代码自动补全、智能错误检测等,并探讨如何利用机器学习、自然语言处理及知识图谱等技术构建高效、易用的编程助手,提升开发效率与代码质量,同时讨论面临的技术挑战与未来前景。
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
探索AI的魔法:从基础到高级编程
【8月更文挑战第31天】在这篇文章中,我们将深入探讨人工智能(AI)的奇妙世界。我们将从AI的基本概念开始,然后逐步深入到更复杂的主题,如机器学习和深度学习。我们将通过实际的代码示例,展示如何使用Python编程语言实现这些概念。无论你是AI新手,还是有一定经验的开发者,这篇文章都将为你提供有价值的信息和知识。
|
9天前
|
机器学习/深度学习 数据采集 人工智能
探索AI技术在文本生成中的应用与挑战
【9月更文挑战第26天】本文深入探讨了AI技术在文本生成领域的应用,并分析了其面临的挑战。通过介绍AI文本生成的基本原理、应用场景以及未来发展趋势,帮助读者全面了解该技术的潜力和局限性。同时,文章还提供了代码示例,展示了如何使用Python和相关库实现简单的文本生成模型。
34 9

热门文章

最新文章

下一篇
无影云桌面