自动代码Copilot背后的模型

这篇具有很好参考价值的文章主要介绍了自动代码Copilot背后的模型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

之前,我已经介绍过Github发布的自动代码Copilot的使用方法,感兴趣的可以看这篇文章:
Copilot要收费了?

今天主要介绍一下github copilot中主要用到的代码生成框架Codex。它主要是由Github和OpenAI联合开发的模型框架,具体链接如下:

https://openai.com/blog/openai-codex/?utm_campaign=Connect%20the%20dots&utm_medium=email&utm_source=Revue%20newsletter

1.引入

Codex主要利用的是GPT-3模型。同时为了评估模型的有效性,研究人员还设置了一个评估数据集:HumanEval。在这个评估数据集下,在GPT-3模型不能够解决任何一个问题,GPT-J模型能够解决11.4%的问题,而Codex模型能够解决28.8%的问题。

同时,在模型中重复采样是一种有效策略,可以为模型多次提供工作解决方案。使用这种方法,能够解决了70.2%的问题。

2.评估框架

代码的生成模型主要通过将样本与参考解进行匹配来进行基准测试,匹配可以是精确的,也可以是模糊的(如BLEU分数)。然而,最近的工作暴露了基于匹配的代码度量的缺陷。可以看出,BLUE是一个模糊匹配的过程,只要意思对了,BLUE的分数就会提高。但是编程是一个比较特殊的问题,一个小的差别可能就会带来灾难性的影响。

因此,论文中提出了自己的度量标准 p a s s @ K pass@K pass@K k k k表示从每一个问题中生成的代码样本中选择的答案。论文中,生成 n n n个代码样例,同时计算 c c c个代码能够通过单元测试:
自动代码Copilot背后的模型

3.评估数据集

论文中新构建了评估数据集,称为HumanEval,数据地址如下:
https://github.com/openai/human-eval
自动代码Copilot背后的模型

其中包含了164个手写编程问题,数据集中包含“评估语言理解”、“推理”、“算法”和“简单数学”。如下图所示:
自动代码Copilot背后的模型

每个问题包含:

  • 签名
  • 代码功能解析
  • 主体

这些编程为题都是手写而来,这是因为模型在训练的时候用到了大量的Github仓库代码,因此可能会包含很多解答方法,因此需要重新手写编程问题。

4.模型方法

  • 数据集

训练数据集于2020年5月从GitHub上托管的5400万个公共软件库中收集,其中包含179 GB的独特Python文件。删除了可能是自动生成的、平均行长度大于100、最大行长度大于1000或包含少量字母数字字符的代码文件。过滤后,最终数据集总计159GB

  • 方法

由于Codex是根据自然语言提示进行评估的,Codex直接使用GPT-3模型进行训练。

为了最大限度地利用GPT中的文本表示,论文中使用基于GPT-3文本分词器。由于GitHub代码中单词的分布与自然文本的分布不同,因此该标记器在切割代码时不是很有效。效率低下的最大来源是对空格进行编码,因此论文添加了一组额外的标记来表示不同长度的空格。这种做法,可以减少大约30%的token。

同时,在生成代码的时候,当遇到“\nclass”, “\ndef”,“\n#”,"\nif”,“\nprint”时,则停止。

5.实验结果

模型参数与损失值之间成指数关系:模型指数上涨,损失之线性下降:
自动代码Copilot背后的模型

在计算softmax的时候,会除上一个T。当T越大时,候选词语概率值较为接近。当T越小时,候选词概率值则较为远离。当在生成的代码例子抽取K个出来,K的个数越大时,T会相应变大。反过来说,如果近抽取1个例子,这个例子应该是最有代码性,概率值最大的代码例子。
自动代码Copilot背后的模型

为了验证BLUE的评估标准是否有效,论文中在评估集合上给出了正确和错误代码的BLUE分数。可以发现,正确代码和错误代码的BLUE分数值相差不大,说明BLUE分数在代码生成中没有评估效果。
自动代码Copilot背后的模型

6.总结

整体来说,Codex本质上就是使用了GPT-3模型作为预训练模型,然后进行微调。同时也人工定义了164个编程问题,作为评估数据集。同时还提出了新的评估指标 p a s s @ k pass@k pass@k,并论证了BLUE指标对代码生成的局限性。
从数据层面上,因为采集了Github上的代码,因此可能会存在潜在的代码作者的追究专利的问题。

我是leo,欢迎关注我的公众号“算法一只狗”,我们下期再见~
文章来源地址https://www.toymoban.com/news/detail-515098.html

7.参考

  1. https://zhuanlan.zhihu.com/p/527342486
  2. https://blog.csdn.net/yanguang1470/article/details/125862215
  3. Evaluating Large Language Models Trained on Code、

到了这里,关于自动代码Copilot背后的模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包