超级编程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

相关文章
|
1月前
|
人工智能 自然语言处理 算法
谷歌DeepMind研究再登Nature封面,隐形水印让AI无所遁形
近日,谷歌DeepMind团队在《自然》期刊上发表了一项名为SynthID-Text的研究成果。该方法通过引入隐形水印,为大型语言模型(LLM)生成的文本添加统计签名,从而实现AI生成文本的准确识别和追踪。SynthID-Text采用独特的Tournament采样算法,在保持文本质量的同时嵌入水印,显著提高了水印检测率。实验结果显示,该方法在多个LLM中表现出色,具有广泛的应用潜力。论文地址:https://www.nature.com/articles/s41586-024-08025-4。
65 26
|
13天前
|
人工智能 搜索推荐 自动驾驶
如何抓住本世纪伟大成就AI的风口脱颖而出?AI到底会带来什么影响?AI对程序员的影响?AI对软件行业的影响?——2025年如何抓住AI的机会-成为AI工程师-程序员可成为高级AI工程师
如何抓住本世纪伟大成就AI的风口脱颖而出?AI到底会带来什么影响?AI对程序员的影响?AI对软件行业的影响?——2025年如何抓住AI的机会-成为AI工程师-程序员可成为高级AI工程师
289 55
|
30天前
|
人工智能 前端开发 程序员
通义灵码 AI 程序员全面上线,能和人类协作完成复杂开发任务
1 月 8 日消息,阿里云通义灵码 AI 程序员已全面上线,成为全球首个同时支持 VS Code、JetBrains IDEs 开发工具的 AI 程序员产品。此次上线的 AI 程序员相比传统 AI 辅助编程工具,能力更全面,可以让开发者以更高效、更沉浸的方式完成编码任务,通过全程对话协作的方式,就能完成从 0 到 1 的业务需求开发、问题修复、单元测试批量生成等复杂编码任务。
331 65
|
26天前
|
人工智能 自然语言处理 程序员
通义灵码2.0全新升级,AI程序员全面开放使用
通义灵码2.0来了,成为全球首个同时上线JetBrains和VSCode的AI 程序员产品!立即下载更新最新插件使用。
1686 27
通义灵码2.0全新升级,AI程序员全面开放使用
|
29天前
|
人工智能 前端开发 程序员
官宣!通义灵码 AI 程序员全面上线
通义灵码2.0 你的AI程序员来了!速来领取你的全新魔法搭档吧!
406 50
|
15天前
|
机器学习/深度学习 人工智能
斯坦福伯克利重磅发现DNA Scaling Law,Evo荣登Science封面!AI设计DNA/RNA/蛋白质再突破
近日,斯坦福大学和加州大学伯克利分校在《科学》杂志发表重要成果,发现DNA Scaling Law规律,揭示了DNA、RNA和蛋白质分子长度与碱基对数量之间的比例关系。该研究为AI设计生物分子带来突破,通过数据收集、模型训练和优化设计等步骤,显著提高设计效率和准确性,降低成本,并拓展应用范围。论文地址:https://www.science.org/doi/10.1126/science.ado9336。
49 26
|
2天前
|
人工智能 IDE 程序员
通义灵码 2.0 AI 程序员下载安装
通义灵码2.0 AI程序员支持JetBrains IDEs、Visual Studio Code及远程开发场景,暂不支持Visual Studio。用户可通过插件市场搜索“TONGYI Lingma”安装,确保版本升级至2.0以上。安装后登录阿里云账号即可使用,个人版和企业版均免费。新手可参考官方指南进行IDE安装配置。
137 7
|
2天前
|
人工智能 IDE 程序员
与1.0 相比,通义灵码 2.0 AI 程序员有哪些功能、亮点、优势、场景?
通义灵码2.0相比1.0新增了工程级编码任务、单元测试生成和图片多模态问答等功能,支持多文件代码修改、批量生成单元测试及根据图片内容生成代码建议。亮点包括支持主流IDE、垂直智能体覆盖更多场景、企业级检索增强和灵活对话交互体验。技术优势涵盖多模态上下文感知、快速推理、企业数据个性化及一流代码生成效果。典型应用场景有新功能开发、跨语言编程、单元测试自动生成和错误排查修复。
83 4
|
12天前
|
人工智能 程序员
现场领红包!通义灵码 AI 程序员给大家送福利啦
「AI实训营」大咖共学课新春专题来啦!巳巳如意,“福从天降”!本期为迎春节共学专题,大咖带你玩转通义灵码,0 基础带练“福从天降”小游戏!更有现场红包等你拿,速来上手通义灵码 AI 程序员!!
|
22天前
|
人工智能 Java 程序员
通义灵码AI编码助手和AI程序员背后的技术
通义灵码AI编码助手和AI程序员背后的技术,由通义实验室科学家黎槟华分享。内容涵盖三部分:1. 编码助手技术,包括构建优秀AI编码助手及代码生成补全;2. 相关的AI程序员技术,探讨AI程序员的优势、发展情况、评估方法及核心难点;3. 代码智能方向的展望,分析AI在软件开发中的角色转变,从辅助编程到成为开发主力,未来将由AI执行细节任务,开发者负责决策和审核,大幅提升开发效率。
123 12

热门文章

最新文章