【Codex】Evaluating Large Language Models Trained on Code

这篇文章来解读最近比较有意思的 Transformer 预训练模型在自动生成代码方面的应用,
Paper Link: Evaluating Large Language Models Trained on Code

自动生成Code系列文章解读
AlphaCodeCompetition-Level Code Generation with AlphaCode

Abstract

我们提出了Codex模型,基于GPT的模型架构,在GItHub上微调,可以用来编写Python代码。在HumanEval这个验证集上,可以解决28.8%的问题,GPT-3解决了0%,GPT-J解决了11.4%。进一步发现,从模型中重复采样,对于解困难问题是个高效的策略。基于这种方法,我们采样每个问题的100个解可以达到70.2%的完成率。

Introduction

模型大小和通过率的关系。如果每个问题只选一个样本提交,GPT-12B没有完成一个问题,微调后的Codex的通过率为28.8%,Codex-S的通过率为37.7%。
在这里插入图片描述
Codex生成的代码示例:
在这里插入图片描述

Evaluation Framework

评估指标:pass@k,k表示从每个问题中生成的样本解,k中的任何一个解通过单元测试,即表示这个问题被解决。用这种方法评估的话,方差会比较大,所以提出来替代方法。生成n个样本解(n>=k),然后统计可通过单元测试的解的个数c,然后用下式计算出通过率的无偏估计:
在这里插入图片描述

Code Fine-Tuning

基于GPT模型,在GitHub上微调模型,模型参数量 120亿。
数据集:截止到20年5月份GitHub上开源的项目库,只用了Python文件,数据量级179GB,过滤后159GB。

有意思的一点是:作者团队首先在GPT-3上微调模型,发现效果并不好,原因可能是微调数据集太大了。然而,在GPT上微调后的模型收敛非常快,效果也不错。

Results

模型的非嵌入参数量级和测试集上的损失 基本服从幂律分布,如下图:
在这里插入图片描述
样本集k的数量和Temperature这个超参数,对通过率的影响很大。一般来说,越大的k,就需要更大的Temperature。如下图:
在这里插入图片描述
对于pass@1pass@100,最好的T分别是0.2和0.8;在对应的最好的T下,这两个的通过率随着模型大小的变化,曲线是比较平滑的。
在这里插入图片描述
BLEU 得分情况:
在这里插入图片描述

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NLP_wendi

谢谢您的支持。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值