code82别克故障代码 code

-论文地址:https://storage.googleapis.com/deepmind-media/AlphaCode/competition_level_code_generation_with_alphacode.pdf
根据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科技评论对该短视频进行了简单整理:


当前 , AlphaCode的目标编码问题集中为特定的竞赛类型 , 在诸如Codeforces的网站上参加编码挑战 , 其中 , 这些挑战包含对一个问题的简短描述与带有测试案例的示例 , 为挑战者提供了能与正确预期输出相匹配的输入 。
简而言之 , 这些挑战的目标就是编写一些代码 , 为示例的测试案例与一组隐藏测试案例提供符合预期的输出 。如果你的代码通过了所有测试 , 那么你就解决了这个问题 。
根据DeepMind的介绍 , AlphaCode在Codeforces网站所举办的编码挑战中取得了与普通用户相媲美的成功率 。


那么 , AlphaCode的工作原理究竟是怎样的呢?
在DeepMind团队所发表的“Competition-Level Code Generation with AlphaCode”一文中 , 他们给出了一个高级的概要图(如下) 。如图所示 , AlphaCode的核心组件仍然是Transformer语言模型 , 其余单独组件也是旧的 。
图注:AlphaCode的系统图


我们先看看AlphaCode在测试时是如何工作的 。
首先要知道的一点是 , 在解决写代码的问题时 , AlphaCode使用了一个非常具体的协议(protocol) , 且该协议决定了该系统的管道 。根据论文显示 , DeepMind团队获得了使用尽可能多的示例测试案例的权限 , 因为这些测试案例也包含在该问题内 。
不过 , 他们确实将自己的测试限制在了10个提交的隐藏测试发送案例内 。


AlphaCode的测试时间分为三个独立的阶段 。
他们首先使用了一个大规模的Transformer模型 , 将问题描述示例测试和问题的一些元数据作为输入 , 然后从模型中取样 , 生成大量潜在的解决方案 。之所以先生成大量的潜在解决方案 , 是因为大多数脚本无法为某些人、甚至编译器所编译 。
因此 , 在第二与第三阶段 , 他们就主要针对这100万个潜在代码脚本作「减法」 , 选出他们认为在给定协议的前提下可能有用的10个方案 。而他们的做法也很简单 , 就是在示例测试案例中测试完这100万个代码脚本 , 然后将无法通过测试的大约99%个脚本排除掉 , 这就将脚本的数量减少到了千位数 。

秒懂生活扩展阅读