导语
OpenAI在上一年从前运用Github上一切揭露的Python代码练习了一个code版本的GPT-3,在其时曾引发广泛争议,本文简要记录对该模型的学习笔记。
- 会议: arxiv
- 链接: arxiv.org/pdf/2107.03…
- 学习材料:OpenAI Codex 论文精读【论文精读】,跟李沐学AI,哔哩哔哩
1 简介
本文主要介绍一种在code语料库上进行预练习的GPT-3模型。单纯的GPT-3在代码生成使命上表现性能为0,为此,作者设计了CodeX模型,它主要有三个不同的类别:
- CodeX:在一切Github上揭露的Python文件上进行练习,由docstring生成对应的函数;
- CodeX-S:在CodeX基础上,选取了一些高质量、独立的函数模型进行Fine-tune,也是做由docstring生成对应的Python函数代码的使命;
- CodeX-D:与CodeX使命相反,由Python函数代码生成docstring。
2 评价结构
主流的Seq2seq使命的评价结构是BLEU score,然而,这是一种含糊匹配的相似度衡量,关于代码生成使命,哪怕错一个字符,就会带来完全不同的成果,因此,作者提出了一种用于评价Python代码生成的目标,即Pass@K,其界说如下:
大概意思是在生成的k个答案中,只要有一个能够履行正确就算对。而且,在验证时,作者手工进行书写标注了一个新的数据集,这是因为网上的数据很有或许都在练习会集,下图举了几个自己标注的数据集示例:
3 Code Fine-tuning
作者从Github一切揭露的Python文件中经过爬取过滤后得到了终究159GB的练习数据,之后运用这些数据来练习GPT-3。这儿作者发现:运用原始GPT-3的weight并不会对终究成果带来提高,但能够加速收敛速度。
因为终究是有k个输出样例,那么最理想的情况便是这k个样例悉数运转一遍,找到最正确的那个作为终究输出,这个便是Oracle的那条性能曲线。
然而,现实中,悉数运转k个样例或许是价值很大的,所以作者采用了一种最简略的策略,即对decoder每个时刻步生成的token的prob进行log后求和,取最大的那个作为终究输出,这个便是图中赤色的去心啊,能够阿看到效果也还能够。
终究的试验成果如下表所示;
4 Supervised Fine-Tuning
因为之前练习的数据中许多都是一些项目中的文件,还有许多配置文件等,所以这儿作者又通过在编程网站和项目集成中的单元提交数据中收集了40000个高质量的数据,将3中得到的模型继续进行Fine-tune,得到所谓的CodeX-S模型,
能够看到,比较于CodeX,性能又有了很大提高。
5 Docstring Generation
终究,作者还进行了CodeX的反向练习,即通过输入模型Python函数代码,让模型生成docstring,这个模型命名为CodeX-D。
在评价时,作者又将这些docstring输入回3中的CodeX,假如能够猜测正确,则表示生成的质量还能够。
能够看到,经过这样验证后,实际上准确率是有所下降的。
6 局限性
只能处理简略问题,练习价值巨大,文档越长生成效果越差等问题。
7 更广泛的影响
- 过度依赖;
- 与实际需求不匹配;
- 男性成见(Github男性用户居多);
- 程序员赋闲;
- 安全隐患(用来写病毒程序);
- 环境影响(练习耗电);
- 法律问题(照抄别人的商业代码毫不知情)。
8 相关工作
略
9 总结
CodeX出来之后,引发的争议就一向不断,目前看到相关的运用也比较少