清华博士后用10分钟讲解AlphaCode背后的技术原理,原来程序员不是那么容易被取代的!...

cf46ac427bfea769f928e09ed272ee2a.png

来源:AI科技评论

不久前,DeepMind 的团队发布了一个可以自动生成竞赛级代码的人工智能系统——AlphaCode,号称「媲美普通程序员」,一经发表就在国内外的AI圈里引起了巨大轰动。 

7b2a905ae128ee0a3e331a8975b14981.png

-论文地址:https://storage.googleapis.com/deepmind-media/AlphaCode/competition_level_code_generation_with_alphacode.pdf

-数据集:https://github.com/deepmind/code_contests

根据DeepMind的博客介绍,AlphaCode 在号称「全球最强算法平台」Codeforces 上的 5,000 名用户解决的 10 项挑战中进行了测试。AlphaCode能够以与人类完全相同的格式在这10项挑战中自动输入代码,生成大量可能的答案,然后像人类程序员一样通过运行代码和检查筛选出可行答案,最终在人类程序员中取得了排名前 54%的好成绩。

也就是说,AlphaCode的代码能力媲美在Codeforces上参加过测试的几乎一半程序员(2300名)。按照一个初级程序员月薪2万的算法,AlphaCode有望每年替全球人类资本家省下5.52亿的人力成本,使一半程序员失业…… 

不过,DeepMind团队当时也明确指出了:AlphaCode目前只适用于竞争类编程比赛。 

不可否认,这也是继DeepMind发布Alpha Go、AlphaZero与AlphaFold之后的又一研究突破,极大地增加了其Alpha系列的传奇色彩。但与该系列的其他工作(如AlphaGo打败世界围棋冠军)相比,AlphaCode的性能似乎并不突出,

目前正在清华大学朱军门下担任博士后研究员的Tea Pearce对AlphaCode的技术原理十分感兴趣,对DeepMind的这篇31页论文进行仔细阅读后,制作了一个短视频发表在油管上,从系统概述、测试阶段、数据集的预训练与微调、Transformer模型的训练过程与Transformer架构等维度对AlphaCode的细节进行了较为详细的讲解。 

视频地址:https://www.youtube.com/watch?v=YjsoN5aJChA

与OpenAI之前开发的GPT-3一样,AlphaCode也是基于Transformer模型,只不过前者侧重于言生成,后者则强调对顺序文本(如代码)的解析。

下面AI科技评论对该短视频进行了简单整理:

1

AlphaCode的代码问题 

当前,AlphaCode的目标编码问题集中为特定的竞赛类型,在诸如Codeforces的网站上参加编码挑战,其中,这些挑战包含对一个问题的简短描述与带有测试案例的示例,为挑战者提供了能与正确预期输出相匹配的输入。

简而言之,这些挑战的目标就是编写一些代码,为示例的测试案例与一组隐藏测试案例提供符合预期的输出。如果你的代码通过了所有测试,那么你就解决了这个问题。

根据DeepMind的介绍,AlphaCode在Codeforces网站所举办的编码挑战中取得了与普通用户相媲美的成功率。

2

AlphaCode系统概述

那么,AlphaCode的工作原理究竟是怎样的呢?

在DeepMind团队所发表的“Competition-Level Code Generation with AlphaCode”一文中,他们给出了一个高级的概要图(如下)。如图所示,AlphaCode的核心组件仍然是Transformer语言模型,其余单独组件也是旧的。 

075e4fa7a5a2a7ad0478ba4e64e34f39.png

图注:AlphaCode的系统图

3

使用的协议 

我们先看看AlphaCode在测试时是如何工作的。

首先要知道的一点是,在解决写代码的问题时,AlphaCode使用了一个非常具体的协议(protocol),且该协议决定了该系统的管道。根据论文显示,DeepMind团队获得了使用尽可能多的示例测试案例的权限,因为这些测试案例也包含在该问题内。

不过,他们确实将自己的测试限制在了10个提交的隐藏测试发送案例内。

4

测试阶段的AlphaCode

AlphaCode的测试时间分为三个独立的阶段。

他们首先使用了一个大规模的Transformer模型,将问题描述示例测试和问题的一些元数据作为输入,然后从模型中取样,生成大量潜在的解决方案。之所以先生成大量的潜在解决方案,是因为大多数脚本无法为某些人、甚至编译器所编译。

因此,在第二与第三阶段,他们就主要针对这100万个潜在代码脚本作「减法」,选出他们认为在给定协议的前提下可能有用的10个方案。而他们的做法也很简单,就是在示例测试案例中测试完这100万个代码脚本,然后将无法通过测试的大约99%个脚本排除掉,这就将脚本的数量减少到了千位数。 

不过,协议要求其还要继续缩减到10个解决方案。于是,他们又采取了一个非常聪明的方法:

他们使用了第二个Transformer模型将问题描述作为输入,但不是尝试生成代码来解决问题,而是用Transformer生成测试案例输入,并为每个问题抽样50个测试案例输入。现在,他们不尝试生成输入与输出对,而只是试图产生一些与问题相关的现实输入。所以,AlphaCode可能必须根据问题所在,生成字符串、二进制数或数字列表等。  

59ff5082431f6e44a91262b5c044131b.png

图注:Tim Pearce对AlphaCode在测试时的三个阶段进行讲解

为什么这是个好主意?因为他们认为如果两个脚本对所有 50 个生成的测试所返回的答案是相同的,那么它们就可能使用相同的算法,并且可能不想浪费两个提交来尝试这两个脚本。 

所以,他们在这 50 个生成的输入上编译并运行大约 1000 个脚本。然后,他们根据这 50 个虚构输入的输出对脚本进行聚类。接着,他们会从每个聚类中选择一个示例脚本。如果十个脚本中的任何一个通过了所有隐藏测试,那么这些脚本就是最终的10个脚本,他们也就成功地解决了编码问题,否则就是失败。这就是 AlphaCode 在测试时的工作方式。 

b241345258d1f476fe7d3106b7680d0c.png

这其中涉及到对Transformer模型的训练,可以看下文。

5

对数据集进行预训练与微调

AlphaCode 使用的是当今深度学习中相当标准的预训练微调过程。

这里有两个数据集:第一个数据集是由各种编程语言组成的公共 Github 存储库,包含 715 GB 海量代码,用于预训练阶段,目的是让Transformer学习一些非常通用的知识,比如代码结构和语法。

40ff2c6e9a0acf5c29ea013a1219e8ca.png

第二个数据集要小得多,只服务于 AlphaCode 的目标,用于微调。该数据集是从一些编码挑战网站上抓取的,包括Codeforces。他们稍后会在数据集上进行测试,包含问题描述测试用例和人工编写的解决方案。这些是数据集。现在,我们该怎么处理它们?

b6edc37c2e6be3aed339621d79ecaf59.png

6

Transformer模型的训练过程

首先说一下预训练阶段。

他们抓取了一些 github 代码,并随机选择所谓的枢轴点(pivot point)。

2cf893ffb3c038738dfd74247e714acd.png

枢轴点之前的所有内容都会被输入编码器,而解码器的目标是重建枢轴点以下的代码。 

cd48c4199dd553b3806045f9c5c51651.png

编码器仅输出代码的向量表示,可用于整个解码过程。

解码器以自回归方式运行:首先预测代码的第一个标记。然后,损失函数只是预测的 softmax 输出和真实令牌(token)之间的交叉熵。第一个真正的令牌会成为解码器的输入,然后预测第二个令牌,并且当要求解码器预测代码令牌的意外结束时,重复此过程直到代码结束。

现在,这些损失通过解码器和编码器反向传播,尽管事实证明:只为编码器添加第二个损失很重要。

这被称为掩码语言,可以高效地建模损失。将输入到编码器中的一些令牌清空。作为一种辅助任务,编码器尝试预测哪个令牌被屏蔽。一旦预训练任务完成,我们就进入微调任务。

在这里,我们将问题描述的元数据和示例输入投喂到编码器中,并尝试使用解码器生成人工编写的代码。这时,你可以看到这与编码器-解码器架构强制执行的结构非常自然地吻合,损失与预训练任务完全相同。 

还有一个生成测试输入的Transformer。这也是从同一个 github 预训练任务初始化而来的,但它是经过微调来生成测试输入,而不是生成代码。

7

Transformer架构

DeepMind 团队对各种大小的模型进行了实验。经实验,较大规模的模型往往表现更好。编码器和解码器本身由多头注意力层组成,且这些层非常标准。 

7c9dc2925774108046455a96fdbb4962.png

8

其他技巧

该论文有许多进步之处。在这里,我不打算全部介绍,只想强调一个我认为很酷炫的点,就是标签和评级增强,以及问题描述。 

93a58f57ab01b50bfb0b1a3d6d6d6831.png

我们总是将元数据作为Transformer的输入。这包括问题的编程语言难度等级。一些问题的标签与解决方案在训练时是否正确?他们显然知道这些字段的值是什么,但是在测试时他们并不知道什么是酷炫的,那就是他们实际上可以在测试时将不同的内容输入到这些字段中以影响生成的代码。例如,你可以控制系统将生成的编程语言,甚至影响这种解决方案。

它尝试生成比如是否尝试动态编程方法或进行详尽搜索的答案。他们在测试时发现有帮助的是,当他们对 100 万个解决方案的初始池进行抽样时,是将其中的许多字段随机化。通过在这个初始池中拥有更多的多样性,其中一个代码脚本更有可能是正确的。 

9

结语

以上就是 Tea Pearce 对 AlphaCode 工作原理的讲解。

从AlphaCode的工作出发,他谈到自己的思考:为什么DeepMind团队在这些编码问题上实现的性能水平比在围棋(AlphaGo)或星际争霸(AlphaZero)游戏中的超人水平系统要低得多呢? 

Tea Pearce的分析是,从自然语言描述中编写代码本质上就比玩游戏要困难得多,但这也可能是因为游戏中可用的数据少得多。你可以根据需要模拟尽可能多的数据,而编码问题的数量是有限的。

最后,Tea Pearce抛出问题:AI写代码之所以难的原因可能是什么?在未来,AI的代码水平要怎样才能超越人类最优水平? 

欢迎在评论区留言讨论。 

参考链接:

1. https://www.youtube.com/watch?v=YjsoN5aJChA

2. https://www.reddit.com/r/MachineLearning/comments/slwh69/p_alphacode_explained/

3. https://storage.googleapis.com/deepmind-media/AlphaCode/competition_level_code_generation_with_alphacode.pdf

4. https://www.deepmind.com/blog/article/Competitive-programming-with-AlphaCode

未来智能实验室的主要工作包括:建立AI智能系统智商评测体系,开展世界人工智能智商评测;开展互联网(城市)大脑研究计划,构建互联网(城市)大脑技术和企业图谱,为提升企业,行业与城市的智能水平服务。每日推荐范围未来科技发展趋势的学习型文章。目前线上平台已收藏上千篇精华前沿科技文章和报告。

  如果您对实验室的研究感兴趣,欢迎加入未来智能实验室线上平台。扫描以下二维码或点击本文左下角“阅读原文”

ffa1878f531cb9ed660a276fbefc2640.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/482579.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

css基础选择器

文章目录css简介css语法规范css代码风格:css选择器的作用css基础选择器标签选择器:类选择器多类名选择器id选择器:id选择器和类选择器的区别:通配符选择器:选择器总结css简介 ​ CSS 是层叠样式表 ( Cascading Style …

深度学习模型模拟大脑地形图,有助于回答大脑不同部分如何协同工作

来源:ScienceAI编辑:凯霞大脑中处理视觉信息的部分——颞下(IT)皮层——受损可能是毁灭性的,尤其是对成年人而言。那些受影响的人可能会失去阅读能力(一种称为失读症的疾病)或辨认面孔&#xff…

深度学习再登Science:万物皆可做神经网络处理器,你甚至可以用锅碗瓢盆

来源:机器学习研究组订阅想象一下,你周围的任何东西,比如一个煎锅、一个玻璃镇纸,都可以用来当成神经网络的中央处理器,那是什么感觉?神经网络简单来说,是一种模仿大脑执行复杂任务的只能系统&a…

css目标

第一天 第二天

Gotta Catch Em All!——三元环计数

传送: https://vjudge.net/problem/Kattis-gottacatchemall 前置知识: 三元环计数 https://www.cnblogs.com/Dance-Of-Faith/p/9759794.html 思路: 首先去重边,记每个点的度数为n,三元环个数为m,答案为(∑…

【前瞻】机器人领域十项前沿技术

来源:工业互联网观察 机器人大讲堂近些年来,机器人行业发展迅速,机器人被广泛应用于各个领域尤其是工业领域,不难看出其巨大潜力。与此同时,我们也必须认识到机器人行业的蓬勃发展,离不开先进的科研进步和…

day27 网络编程一

网络编程 基础 一 软件开发架构 # c/s架构(client/server) c:客户端 / s:服务端 # b/s架构(browser/server) b:浏览器 / s:服务器 ps:bs架构本质也是cs架构 手机端看上去cs架构比较火,实际上bs已经在崛起,微信支付宝都在做一件事:统一接口,手机端之后肯定也是bs比较火 未来应用…

不止摩尔定律,计算领域值得学习的定律还有哪些?

来源:新智元当下,计算机领域最受欢迎的两大定律是:摩尔定律和梅特卡夫定律。摩尔定律,是以Intel(英特尔)联合创始人Gordon Moore(戈登•摩尔)为命名,摩尔定律预言,芯片上…

世界一流大学如何建设人工智能学科

来源:光明日报作者:李锋亮 庞雅然 人工智能人才培养是变革核心人工智能、基因工程、纳米科学并列为21世纪三大尖端技术,是工业革命4.0的变革核心。其中,人工智能涉及广泛的知识领域,包括技术体系内的数学基础、技术基础…

机器学习获量子加速!物理学家与计算科学家「自然联姻」

来源:新智元AI和量子计算的碰撞,会产生什么神奇的火花?IBM团队的一项研究表明,在机器学习任务上,已经找到了量子计算能够加速数据分类的证据,远超传统算法。未来,基于量子的机器学习加速器可能就…

day28 socket网络编程

一 socket 套接字 二 粘包问题 一 socket 套接字 1.1 为何学习socket一定要先学习互联网协议: 1.首先:网络编程目标就是教会你如何基于socket编程,来开发一款自己的C/S架构软件 2.其次:C/S架构的软件(软件属于应用层…

2022年值得关注的8个人工智能趋势

来源:AI前线作者:Michael Spencer译者:Sambodhi策划:凌敏1. AI-on-5G2022 年,工业 AI 和 AI-on-5G 物联网应用将会成为主流。想象一下,当我们以元宇宙为目标的时候,我们对物理空间的升级方式同样…

我国科学家首次揭示“时空”记忆在猕猴大脑中表征的几何结构

来源:央视新闻客户端作者:帅俊全 2月11日,国际学术期刊《科学》以长文形式发表了题为《序列工作记忆在猕猴前额叶表征的几何结构》的研究论文。近日,中国科学院脑科学与智能技术卓越创新中心与国内多家单位合作,发现神…

智源学术顾问David Harel:经典建模与AI的联姻,如何攻破机器学习的可解释性?| 大师讲座...

来源:智源社区讲者:David Harel整理:熊宇轩编辑:李梦佳导读:设想一下,现在我们要建造一种工厂机器人,能移动物体、组装零件、抬起物体。机器学习专家自然会采用深度学习、神经网络一类的AI技术&…

重磅突发!全球首富40颗卫星遭摧毁

来源:中国基金报在上周最新发射的49颗卫星中,有40颗卫星遭地磁风暴“摧毁”——全球首富、特斯拉CEO马斯克旗下SpaceX公司的星链计划遭遇挫折。此外,美国国家航空航天局(NASA)、亚马逊均表示,对于SpaceX星链计划还要新部署约3万颗…

扩散模型就是自动编码器!DeepMind研究学者提出新观点并论证

来源:明敏 发自 凹非寺量子位 | 公众号 QbitAI由于在图像生成效果上可以与GAN媲美,扩散模型最近成为了AI界关注的焦点。谷歌、OpenAI过去一年都提出了自家的扩散模型,效果也都非常惊艳。另一边,剑桥大学的学者David Krueger提出&a…

2019已悄然过半

2019过半,不知不觉已进入秋天,今年上海夏天格外凉爽,没感觉热就结束了。上半年总体感觉归于平淡,但是平平淡淡才是真嘛。年初制定的个人计划基本完成,关键是难度系数都不高,下半年有两项重要考核正在等着&a…

关于欧盟的芯片法案,ASML是这样看的!

来源:光电汇OESHOW近日,欧盟发布了一个芯片法案,ASML随后便公开表示了他们对这个答案的看法。内容如下:塑造我们生活的智能互联世界的全球大趋势正在推动对微芯片的需求显著增长。最近的芯片短缺凸显了复杂的全球半导体生态系统中…

万字长文!DeepMind科学家总结2021年的15个高能研究

来源:新智元2021年ML和NLP依然发展迅速,DeepMind科学家最近总结了过去一年的十五项亮点研究方向,快来看看哪个方向适合做你的新坑!最近,DeepMind科学家Sebastian Ruder总结了15个过去一年里高能、有启发性的研究领域&a…

情人节特刊| 爱的神经机制

来源:浙江大学学术委员会文:周炜1在哺乳动物的物种中,仅有不到10%的物种能够形成基于一夫一妻制的配对关系。随着时间的推移,通过选择性地寻找伴侣和与伴侣互动,夫妻关系得以维持和加强。大多数实验室啮齿动物包括大小…