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

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 超级编程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

相关文章
|
9月前
|
存储 人工智能 JSON
揭秘 Claude Code:AI 编程入门、原理和实现,以及免费替代 iFlow CLI
本文面向对 AI Coding 感兴趣的朋友介绍 Claude Code。通过此次分享,可以让没有体验过的快速体验,体验过的稍微理解其原理,以便后续更好地使用。
3582 18
揭秘 Claude Code:AI 编程入门、原理和实现,以及免费替代 iFlow CLI
|
9月前
|
人工智能 算法 架构师
AI时代程序员的生存与突围从需求分析开始
AI能3秒生成代码框架,还要程序员干什么?
1836 9
|
9月前
|
数据采集 人工智能 程序员
PHP 程序员如何为 AI 浏览器(如 ChatGPT Atlas)优化网站
OpenAI推出ChatGPT Atlas,标志AI浏览器新方向。虽未颠覆现有格局,但为开发者带来新机遇。PHP建站者需关注AI爬虫抓取特性,优化技术结构(如SSR、Schema标记)、提升内容可读性与语义清晰度,并考虑未来agent调用能力。通过robots.txt授权、结构化数据、内容集群与性能优化,提升网站在AI搜索中的可见性与引用机会,提前布局AI驱动的流量新格局。
479 8
|
9月前
|
人工智能 JSON 安全
Claude Code插件系统:重塑AI辅助编程的工作流
Anthropic为Claude Code推出插件系统与市场,支持斜杠命令、子代理、MCP服务器等功能模块,实现工作流自动化与团队协作标准化。开发者可封装常用工具或知识为插件,一键共享复用,构建个性化AI编程环境,推动AI助手从工具迈向生态化平台。
2220 1
|
9月前
|
机器学习/深度学习 人工智能 JSON
AI编程时代,对应的软件需求文档(SRS、SRD、PRD)要怎么写
对于AI编程来说,需要使用全新的面向提示词的需求文档来和AI+人类沟通,构建共同的单一事实来源文档知识库是重中之重。
1508 7
|
10月前
|
人工智能 算法 小程序
再见 Cursor,Qoder 真香!这波要改写 AI 编程格局
只需要把项目导入 Qoder,Repo Wiki 就可以详细地帮你梳理整个代码工程,甚至可以将项目的隐性知识显性化。这简直就是程序员的福音。
|
机器学习/深度学习 人工智能 算法
AI抢程序员工作:2040年AI可能代替程序员
美国橡树岭国家实验室的一些专家预测,到2040年,AI技术将会强大到足以替代程序员。不过,即使机器能够完全代替今天程序员所做的工作,但这并不意味着它们不需要人类的帮助。
3594 0
|
9月前
|
消息中间件 人工智能 安全
云原生进化论:加速构建 AI 应用
本文将和大家分享过去一年在支持企业构建 AI 应用过程的一些实践和思考。
2229 84
|
9月前
|
人工智能 运维 Kubernetes
Serverless 应用引擎 SAE:为传统应用托底,为 AI 创新加速
在容器技术持续演进与 AI 全面爆发的当下,企业既要稳健托管传统业务,又要高效落地 AI 创新,如何在复杂的基础设施与频繁的版本变化中保持敏捷、稳定与低成本,成了所有技术团队的共同挑战。阿里云 Serverless 应用引擎(SAE)正是为应对这一时代挑战而生的破局者,SAE 以“免运维、强稳定、极致降本”为核心,通过一站式的应用级托管能力,同时支撑传统应用与 AI 应用,让企业把更多精力投入到业务创新。
849 30