当前位置:网站首页>【AI4Code最终章】AlphaCode:《Competition-Level Code Generation with AlphaCode》(DeepMind)
【AI4Code最终章】AlphaCode:《Competition-Level Code Generation with AlphaCode》(DeepMind)
2022-07-25 11:11:00 【chad_lee】
AlphaCode——宏观上的推荐(DeepMind)

14位共同一作,74页论文。
认为CodeX只是做了一个简单的 自然语言-程序语言 的翻译任务,AlphaCode要做一个更难的。输入输出为:

方法
流程

模型训练分为预训练和微调,然后预测阶段先大规模采样(召回)得到一百万,然后聚类和过滤得到1000个(粗排),然后选出10个提交(精排)。
数据集

先在Github收集开源代码,经过预处理和清洗后715GB,作为预训练数据集;然后用CodeContests 数据集微调,格式如上图。
模型结构

没有模型图。不同于CodeX的GPT,只用Transformer的decoder,这里用的是完整的Transformer,既有encoder也有decoder。最小模型3亿参数,最大模型4000亿参数。
这里值得多说一点的是这里的multi-head attention只有多个query,KV都是同一个。
Fine-tuning
encoder输入是题目的描述(也包括:题目的tags、solution使用的语言、题目中的样例),decoder的输出对应的ground-truth是一个solution,可以是对的,也可以是错的。
Sampling & Evaluation:海量试错

- Step1: 将题目描述输入到模型1,从模型1中采样出100万个输出代码。
- Step2: 显然采样出的这100万个代码中99%都是不能运行的、错误的代码,用题目中自带的test case,先过滤掉这些无效、错误代码,仍然剩下1000个可以运行的代码。(召回:百万~千)
- Step3: AlphaCode引入一个额外模型2,模型2也是用的模型1的预训练模型,但是fine-tuning的目的是输入题目描述,输出test case。模型2自动生成的test case并不保证准确性,只是为了接下来聚类用的。模型2为当前问题生成了50个 test inputs。
- Step4: 将生成的50个 test inputs分别输入到 1000个代码中,如果一些代码的生成结果近乎一样,说明这些代码背后的算法或逻辑相似,可被归为一类。经过聚类之后,留下10类代码,先从数目较大的类中选出代码去提交,更有胜算。(精排:千~10)
实验结果
竞赛成绩
在10次程序竞赛的成绩。没有实际参加,而是估计的排名,因为竞赛有罚时,所以这个罚时只能预估一下。AlphaCode基本是在Codeforce竞赛中的中等水平。

评测指标
- [email protected]:Step1 采样召回K个代码,然后聚类后选10个提交。
- [email protected]:采样出k个代码,有一个对的就算命中。
采样数量的影响

Step1采样召回的代码数量越多,效果越好。左右图对比可以看出,经过过滤、聚类选出的代码,基本就是最优的。特别是下面这个图的对比:

随机从K个采样中选完全没有用;聚类又比单独过滤好一点;聚类+过滤和 oracle还差一点。
钱的影响

训的越长,采的越多,效果越好。
安全性讨论
只有一页(文章74页),基本是CodeX的子集。
边栏推荐
- [high concurrency] a lock faster than read-write lock in high concurrency scenarios. I'm completely convinced after reading it!! (recommended Collection)
- LeetCode第303场周赛(20220724)
- OSPF综合实验
- JS data types and mutual conversion
- JS数据类型以及相互转换
- A beautiful gift for girls from programmers, H5 cube, beautiful, exquisite, HD
- W5500 adjusts the brightness of LED light band through upper computer control
- 阿里云技术专家秦隆:可靠性保障必备——云上如何进行混沌工程
- Start with the development of wechat official account
- [leetcode brush questions]
猜你喜欢

OneNET平台控制W5500开发板LED灯

JS流程控制

return 和 finally的执行顺序 ?各位大佬请看过来,

Onenet platform control w5500 development board LED light

JS data types and mutual conversion

LeetCode第303场周赛(20220724)

brpc源码解析(八)—— 基础类EventDispatcher详解

图神经网络用于推荐系统问题(IMP-GCN,LR-GCN)

【6篇文章串讲ScalableGNN】围绕WWW 2022 best paper《PaSca》

【多模态】《HiT: Hierarchical Transformer with Momentum Contrast for Video-Text Retrieval》ICCV 2021
随机推荐
创新突破!亚信科技助力中国移动某省完成核心账务数据库自主可控改造
OneNET平台控制W5500开发板LED灯
Eigenvalues and eigenvectors of matrices
JS interview question: handwriting throttle function
【多模态】《HiT: Hierarchical Transformer with Momentum Contrast for Video-Text Retrieval》ICCV 2021
【GCN多模态RS】《Pre-training Representations of Multi-modal Multi-query E-commerce Search》 KDD 2022
JS data types and mutual conversion
11. Reading rumors spread with deep learning
PL/SQL入门,非常详细的笔记
Go 垃圾回收器指南
LeetCode 50. Pow(x,n)
图神经网络用于推荐系统问题(IMP-GCN,LR-GCN)
JS运算符
Menu bar + status bar + toolbar ==pyqt5
dirReader. Readentries compatibility issues. Exception error domexception
Miidock Brief
LeetCode 50. Pow(x,n)
Introduction to redis
阿里云技术专家秦隆:可靠性保障必备——云上如何进行混沌工程
Brpc source code analysis (VII) -- worker bthread scheduling based on parkinglot