DeepMind的NS论文又新添一篇。|ai编程登上science封面:三分之二赛题一遍过( 二 )


整体来说 , 在Codeforces平台举办的编程比赛模拟评估中 , AlphaCode在超过5000名参与者的比赛中平均排名前54.3%——击败了一半的选手 。
并且第一次提交就通过的概率达到了66% 。 AlphaCode是如何读题写码的
所以 , AlphaCode究竟是凭借什么原理达成这一“战果”的呢?
它仍然基于预训练-微调的范式打造 , 采用Transformer架构 , 其中编码器具备“解读能力” , 解码器则具备“写码能力” 。
这次发表在Science上的论文 , 也给出了更直观的原理图 , 并以Python作为案例 , 讲解具体训练的过程 。
在预训练(pre-training)时 , 研究人员会先整理出GitHub上的各种代码集 , 并“喂”给AlphaCode上的编码器和解码器 。
以Python上的print(“hello”)为例 , 这里print()是一个常见的函数 , 即“打印输出” , ”hello”则是具体需要打印输出的内容 。
DeepMind的NS论文又新添一篇。|ai编程登上science封面:三分之二赛题一遍过
文章图片
经过预训练后的模型 , 就具备了基本的“按指令完成任务”的要求 , 其中编码器负责生成指令 , 解码器则负责填充剩余的部分 。
在微调(fine-tuning)环节 , 研究人员会整理出竞争性编程竞赛的数据集 , 包括问题和解决思路两部分 , 并以GOLD与tempering作为训练目标 , 进一步减少搜索空间 。
其中 , 问题以注释#的形式交给编码器“学习” , 解决思路则交给解码器来尝试理解:
DeepMind的NS论文又新添一篇。|ai编程登上science封面:三分之二赛题一遍过
文章图片
微调完成后 , 解码器就懂得通过编码器生成注释的内容 , 来尝试输出对应的代码 。
经过预训练-微调后 , 就来到了最终的评测环节 。
Codeforces的题目会被直接以注释的形式交给编码器 , 解码器则尝试输出数百万个不同的程序 , 对它们进行过滤和聚类(cluster)之后 , 提交其中的10个程序来解决问题 。
(当然前面也提到 , 有不少问题在第一次提交后就通过了)
DeepMind的NS论文又新添一篇。|ai编程登上science封面:三分之二赛题一遍过
文章图片
对于AlphaCode的出现 , 有程序员调侃称“可以在艺术家旁边排队等领救济粮了 。 ”
DeepMind的NS论文又新添一篇。|ai编程登上science封面:三分之二赛题一遍过
文章图片
不过 , DeepMind官方对于AlphaCode的定调并非“AI版程序员” , 而是希望它作为一个辅助的角色出现在编程工作中:
我们希望它能作为软件开发者的助手 , 尤其是为0编程基础的人提供写代码的机会 。
DeepMind的NS论文又新添一篇。|ai编程登上science封面:三分之二赛题一遍过
文章图片