当前位置:网站首页>【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的子集。
边栏推荐
- 【RS采样】A Gain-Tuning Dynamic Negative Sampler for Recommendation (WWW 2022)
- return 和 finally的执行顺序 ?各位大佬请看过来,
- Review in the middle of 2022 | understand the latest progress of pre training model
- Teach you how to configure S2E as the working mode of TCP client through MCU
- 程序员送给女孩子的精美礼物,H5立方体,唯美,精致,高清
- JS scope and pre parsing
- brpc源码解析(一)—— rpc服务添加以及服务器启动主要过程
- Pycharm connects to the remote server SSH -u reports an error: no such file or directory
- LeetCode 50. Pow(x,n)
- 【GCN-RS】Region or Global? A Principle for Negative Sampling in Graph-based Recommendation (TKDE‘22)
猜你喜欢

【对比学习】Understanding the Behaviour of Contrastive Loss (CVPR‘21)

Solutions to the failure of winddowns planning task execution bat to execute PHP files

brpc源码解析(六)—— 基础类socket详解

【CTR】《Towards Universal Sequence Representation Learning for Recommender Systems》 (KDD‘22)

Innovation and breakthrough! AsiaInfo technology helped a province of China Mobile complete the independent and controllable transformation of its core accounting database

PHP curl post x-www-form-urlencoded

【多模态】《TransRec: Learning Transferable Recommendation from Mixture-of-Modality Feedback》 Arxiv‘22

知识图谱用于推荐系统问题(MVIN,KERL,CKAN,KRED,GAEAT)

brpc源码解析(三)—— 请求其他服务器以及往socket写数据的机制

toString()与new String()用法区别
随机推荐
What is the global event bus?
W5500通过上位机控制实现调节LED灯带的亮度
Hardware connection server TCP communication protocol gateway
Signal and slot mechanism ==pyqt5
php 一台服务器传图片到另一台上 curl post file_get_contents保存图片
Risks in software testing phase
The applet image cannot display Base64 pictures. The solution is valid
Objects in JS
Hardware peripherals =maixpy3
Teach you how to configure S2E as the working mode of TCP server through MCU
LeetCode第303场周赛(20220724)
brpc源码解析(五)—— 基础类resource pool详解
【高并发】高并发场景下一种比读写锁更快的锁,看完我彻底折服了!!(建议收藏)
对比学习的应用(LCGNN,VideoMoCo,GraphCL,XMC-GAN)
Go 垃圾回收器指南
已解决 Files‘ name is invalid or does not exist (1205)
Layout management ==pyqt5
Intelligent information retrieval(智能信息检索综述)
brpc源码解析(二)—— brpc收到请求的处理过程
程序员送给女孩子的精美礼物,H5立方体,唯美,精致,高清