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

相关文章
|
4天前
|
人工智能 自然语言处理 程序员
AI 会淘汰程序员吗?
AI 会淘汰程序员吗?
AI 会淘汰程序员吗?
|
3天前
|
人工智能 缓存 Cloud Native
用 Higress AI 网关降低 AI 调用成本 - 阿里云天池云原生编程挑战赛参赛攻略
《Higress AI 网关挑战赛》正在火热进行中,Higress 社区邀请了目前位于排行榜 top5 的选手杨贝宁同学分享他的心得。本文是他整理的参赛攻略。
136 66
|
9天前
|
机器学习/深度学习 人工智能
AI训AI惨遭投毒9次大崩溃,牛津剑桥等惊天发现登Nature封面!
【8月更文挑战第11天】牛津与剑桥大学研究揭示,AI模型若反复在自身生成的数据上训练,将遭遇“模型崩溃”,即性能严重退化,甚至遗忘真实世界的数据分布。此现象在《自然》杂志刊出,警示AI进化之路暗藏风险。实验显示,随着训练代际增加,模型倾向于生成更简单内容,丢失稀有信息,最终可能导致对现实世界的误解加深。此发现对AI领域的持续发展及模型可靠性提出了新的挑战。
126 60
|
2天前
|
人工智能 程序员 知识图谱
【人工智能】AI时代的程序员:驾驭变革,铸就核心竞争力
在人工智能(AI)技术日新月异的今天,AIGC大语言模型及AI辅助编程工具的普及,正以前所未有的速度改变着程序员的工作面貌。面对这一趋势,程序员们如何在保持职业竞争力的同时,适应并引领这场技术革命,成为了亟待探讨的重要议题。
8 2
|
4天前
|
机器学习/深度学习 人工智能 算法
揭秘AI编程:从零开始的机器学习之旅
本文将带你走进人工智能的奇妙世界,一起探索机器学习的奥秘。我们将从最基础的概念入手,逐步深入到实际应用中,让你在轻松愉快的阅读过程中,对AI编程有一个全面而深刻的理解。无论你是编程新手,还是有一定基础的开发者,都能在这篇文章中找到你需要的信息和启示。让我们一起开启这场充满智慧和乐趣的旅程吧!
17 1
|
13天前
|
机器学习/深度学习 人工智能 自然语言处理
AI是如何在编程中提升效率的
在快速发展的科技时代,人工智能(AI)已从科幻概念变为现实,尤其在软件开发领域产生了深远影响。AI通过自然语言处理技术准确理解需求并自动生成初步代码框架,大幅减少需求分析与设计工作量。同时,智能代码补全、代码审查及自动化测试等工具显著提升了编码与测试效率,基于大数据分析和机器学习预测所需代码片段,自动发现并修正潜在错误,确保软件质量的同时减轻开发者负担。
|
14天前
|
存储 人工智能 自然语言处理
AI编程助手那些事儿
最近跟身边的程序员老杆子讨论需求时,惊奇的发现,他居然没使用AI编程助手。一时间有2个想法从大脑闪过,然后心里还带了一丝轻蔑。
AI编程助手那些事儿
|
1天前
|
人工智能 IDE 测试技术
Visual Studio版本的AI编程助手
Visual Studio 是一个出色的 IDE,可用于构建适用于 Windows、Mac、Linux、iOS 和 Android 的丰富、精美的跨平台应用程序。 使用一系列技术(例如 WinForms、WPF、WinUI、MAUI 或 Xamarin)构建丰富。 1、安装 点击上方工具栏拓展选项,选择管理拓展选项 接着在联机页面中搜索"FItten Code",并点击下载,下载完成后重启Visual Studio 在扩展选项中选中fitten,选择Open Chat Window进入登录界面,完成注册登录 2、智能补全 打开代码文件,输入一段代码,Fitten Code 就会为您
8 0
|
4天前
|
人工智能 安全 Java
当一家公司80%的程序员用AI写代码
当一家公司80%的程序员用AI写代码
11 0
|
14天前
|
机器学习/深度学习 人工智能 安全
AI时代:程序员如何重塑核心竞争力
【8月更文第5天】近年来,人工智能(AI)和生成式预训练模型(AIGC)的飞速发展对软件开发行业产生了深远的影响。ChatGPT、Midjourney、Claude 等大语言模型的出现,不仅极大地提高了编程效率,还改变了程序员的工作方式。随着AI辅助编程工具的日益普及,程序员们面临着前所未有的机遇与挑战。本文旨在探讨在AI时代,程序员应如何调整自己的职业路径和发展策略,以保持和提升自身的竞争力。
63 0