论文笔记--Evaluating Large Language Models Trained on Code

news/2025/2/12 17:59:25/

论文笔记--Evaluating Large Language Models Trained on Code

  • 1. 文章简介
  • 2. 文章概括
  • 3 文章重点技术
    • 3.1 评估
    • 3.2 模型训练--Codex
    • 3.3 微调模型--Codex-S
    • 3.4 微调模型--Codex-D
  • 4. 文章亮点
  • 5. 原文传送门
  • 6. References

1. 文章简介

  • 标题:Evaluating Large Language Models Trained on Code
  • 作者:Chen, Mark, et al.
  • 日期:2021
  • 期刊:arxiv preprint

2. 文章概括

  现存的GPT系列语言模型在自然语言中取得了不俗的表现,但实验表明其在代码方面的生成能力十分有限。本文提出了Codex,Codex-S和Codex-D三个大语言模型,在多个代码生成任务上表现远超GPT-3[1]。

3 文章重点技术

3.1 评估

  评估代码性能的方法大致分为两种:基于匹配的方法和函数正确率方法。比如BLEU就是一种基于匹配的方法,但文章数值实验证明,BLEU不能总是捕捉到函数的功能正确:分数很高的代码可能不正确。为此文章选择用函数正确率方法
  一种常用的评估函数正确率的指标叫pass@k指标,即模型随机生成k个回答(代码块),通过unit test(单元测试)的回答个数。但这样计算的指标方差很高,故文章每次生成 n ≥ k n\ge k nk个回答,其中通过测试的回答个数为 c c c,我们计算 p a s s @ k = E p r o b l e m [ 1 − ( n − c k ) ( n k ) ] pass@k = \mathbb{E}_{problem} \left[1 - \frac {\binom {n-c}k}{\binom nk}\right] pass@k=Eproblem[1(kn)(knc)]
  为了自动评估代码性能,文章手动构建了164个手写的编程问题,称为HumanEval数据集。每个问题都包含一个签名(返回)、说明、主题和几个单元测试。文章选择手动构建的原因是不希望训练语料库中包含HumanEval中的问题。
  下面给出了HumanEval中的三个问题示例,全部数据可在网址https://www.github.com/openai/human-eval 查看使用。
HumanEval
  评估时,只需要将上述问题转化成一个包含header、signature、docstring的prompt即可。

3.2 模型训练–Codex

  文章选择从GPT-3上微调得到代码模型,这样做虽然没有显著提升模型表现,但是加快了模型的收敛。文章从Github中收集了54million的公共库,包含1MB以下的Python文件共计179GB。为了保证训练集的质量,文章过滤了自动生成的文件、平均行数大于100的文件或仅包含一小部分字符数字的文件,过滤后的文件总计159GB。微调后的模型记作Codex模型(其中最大的模型为Codex-12B)。
  自动评估阶段,我们每次生成k个样例,然后评估其中通过单元测试的样例个数,得到pass@k;实际应用时,我们每次生成k个样例,选择其中mean token log-proba最大的输出即可。
  实验表明,Codex系列模型效果远超GPT-3。300M以上的Codex模型效果已经优于GPT-J 6B:
exp-Codex

3.3 微调模型–Codex-S

  文章发现Github上很多代码包含很多类、说明等,会造成数据集不纯粹。为此,我们构建了一个训练数据集并使用它对Codex模型进行微调。
  训练数据集来自编程竞赛、面试准备网站和PyPI中的持续集成问题。为了过滤其中模糊的、太复杂的问题,我们首先用Codex-12B对上述问题进行回答,每个问题生成100个答案,如果没有一个答案通过单元测试,则认为该问题太难或太模糊,将其从微调数据集中移除。
  最后我们在上述数据集上微调Codex模型:将上述问题转化成标准代码格式,将prompt中的token掩码,最小化参考答案的负对数似然。
  评估结果显示Codex-S的性能超过Codex,且Codex-S的pass@1,即通过最大似然筛选出来的单个样例准确率高于Codex的pass@100。
exp-Codex-S

3.4 微调模型–Codex-D

  另一方面,文章探索了从代码生成文本说明的反向过程。类似上一节中的微调方法,我们修改训练目标为“掩码代码(包括signature、header、body)部分,最小化说明(docstring)的负对数似然。得到的模型称为Codex-D。

4. 文章亮点

  文章给出了代码大语言模型Codex,Codex-S和Codex-D,可帮助开发者,尤其是初学者自动生成代码。但文章论证了Codex系列模型的局限性,现有模型还存在一些不正确的结论和misalianment(即模型有这个能力但是没回答)现象,同时模型可能存在一些敏感话题风险,后续可通过指令微调进行控制。

5. 原文传送门

Evaluating Large Language Models Trained on Code
HumanEval数据集

6. References

[1] 论文笔记–Language Models are Few-Shot Learners


http://www.ppmy.cn/news/235846.html

相关文章

西门子PLC1200码垛机程序和1200立体库码垛机带注释

西门子PLC1200码垛机程序和1200立体库码垛机带注释 ,程序及到变频器,触摸屏,工业机器人,相机的程序控制.modbus tcp通讯,SCL编程,支持博图13及以上版本 ID:698654927568653

机器视觉简介,建议学PLC和上位机的工程师看完

机器视觉是利用机器代替人眼来识别、判断和测量目标物体,主要研究利用计算机来模拟人类的视觉功能。 机器视觉技术包括目标物体的图像采集、图像信息处理以及目标物体的测量和识别。 机器视觉系统主要由视觉感知单元、图像信息处理与识别单元、结果显示单元和视觉…

奥西tds300服务器维修,奥西Océ TDS300 驱动

这是奥西Oc TDS300 驱动,是为同名复合机推出的驱动程序,是复合机正常工作的必备程序,也是复合机与电脑之间建立通信的重要桥梁,若您的复合机无法正常工作,欢迎您来本站下载该驱动来解决问题! 驱动介绍 奥西…

工业机器人喷涂工作站

ZNH-PT06型 工业机器人喷涂工作站 一、概述 ZNH-PT06型 工业机器人喷涂工作站主要由ZNH-JR612(可选)工业机器人其附属装置,INteRobot机器人离线编程软件、solidwork或CAD 3D软件、油漆压力桶、油漆流量控制阀、喷枪、转盘式喷涂台、喷漆房、气…

全球十大工程机械大盘点

咳咳,不过不要想多了哦,我们现在说的是机械。在你的印象中,航母够大了吧~看看甲板上的工作人数,看看停在甲板上的飞机数,都非常明显的展示了航母的体积。但如果你以为航母是世界上体积最大的工程机械的话,那…

十五天学会Autodesk Inventor,看完这一系列就够了(十一),放样和螺旋扫掠(绘弹簧)

众所周知,Autocad是一款用于二维绘图、详细绘制、设计文档和基本三维设计,现已经成为国际上广为流行的绘图工具。Autodesk Inventor软件也是美国AutoDesk公司推出的三维可视化实体模拟软件。因为很多人都熟悉Autocad,所以再学习Inventor&…

挖掘机技术哪家强

题目描述 为了用事实说明挖据机技术到底哪家强,PAT组织了一场挖据机技能大赛。请根据比赛结果统计出技术最强的那个学校。 输入格式 在第1行给出不超过10的正整数N,即参赛人数。随后N行,每行给出一位参赛者的信息和成绩,包括其所代表的学校的编号(从1开始连续编号)及其比赛成…

挖掘机械施工合同

绵阳市游仙区科学城快速通道项目道路建设工程一期 (******-******段)挖掘机械施工合同 承租方(甲方):科学城快速通道项目******* 出租方(乙方): 合同双方在平等、自愿和协商一致的基…