调研27个模型后,代码生成的知识增加了

点击上方“AI遇见机器学习”,选择“星标”公众号

第一时间获取价值内容

3187c85e268f8bac8c98a26e879e3f72.gif

来源|AINLPer

卷友们好,对于NL2Code任务相信大家都不陌生。它主要目的就是将自然语言转换成可执行代码来提高开发人员的工作效率,终极目标就是干翻所有程序员,最近,随着大模型的出现,距离这一天又稍稍进了一步。基于该背景,分享中科院和微软亚洲研究院在ACL2023国际顶会上一篇文章:他们调研了NL2Code领域中的「27个大型语言模型以及相关评价指标」,分析了「LLMs的成功在于模型参数、数据质量和专家调优」,并指出了「NL2Code领域研究的5个机遇挑战」,最后作者建立了一个分享网站来跟踪LLMs在NL2Code任务上的最新进展。https://nl2code.github.io195da511bf9fdf032ae5468f39cce704.png

  背景介绍  

新手程序员,甚至是那些没有任何编程经验的程序员,是否有可能仅仅通过用自然语言描述他们的需求来创建软件?实现这一设想将对我们的生活、教育、经济和劳动力市场产生前所未有的影响。自然语言-代码(NL2Code)因其广阔的应用场景,是一项重要的研究任务,在学术界和工业界都引起了广泛的兴趣。

关于NL2Code的发展,其实和自然语言理解的发展类似,一开始,基本都是基于专家规则进行算法设计,但是此类方法需要对不同编程语言进行设计,泛化性差;随着技术发展,人们逐步开始使用静态语言模型,并使用向量空间来描述文字,此类方法在初期一般向量空间比较稀疏,不能建立长期的依赖关系;再后来,就用到了我们比较熟悉的神经网络,例如CNN、RNN、LSTM,此类方法通过标记数据进行训练来构建自然语言(NL)和代码(Code)之间的关系,但实际效果对NL2Code任务的能力有限;现在,在ChatGPT风靡全球的背景下,越来越多的大型语言模型(LLMs)如雨后春笋一样出现,通过语言指令,它们可以在零样本状况下生成代码,并在NL2Code任务上中取到了惊人的成绩。具有标志性的一个LLM模型就是Codex,它拥有120亿个参数,在Python编程任务上测试,可解决72.31%的问题,并且该模型已经商用可在实践中提高开发人员的工作效率。

  NL2Code任务与27个LLMs  

对于NL2Code任务,其主要目的是基于给定自然语言问题描述生成所需要的代码。以下是一个关于Python编程问题的示例。其中灰色块部分表示问题描述,绿色块部分表示模型生成代码,黄色块部分表示测试样例。a19f8eea9a8e21f6dcfbf8500c5e8431.png针对NL2Code任务对27个具有代表性的LLMs进行了全面调研,下表总结了每个模型的详细信息,其中主要包括:模型架构、模型大小、模型层数(L)、注意力头数量(A)、隐藏维度(H)、模型参数是否开放(P)等五个方面。3e082fa85ffba858d56271dd77365732.png为了更好地可视化,下图按时间顺序展示了这些模型,绘制了最大的模型大小。观察到的一个趋势是,随着研究领域的发展,这些大型语言模型的规模也在不断扩大。此外,只有解码器的架构更适合于规模较大的预训练模型。d1db04a8e58462ca39e33eed1dc813d7.png

  27个LLMs评估  

 上面总结了NL2Code现有的大型语言模型(LLMs),但是这些模型在架构、模型规模等方面各不相同,无法进行统一的评估。为此,作者在HumanEval基准上进行了Zero-shot统一评估,其中HumanEval基准由164个手写的Python编程问题组成,对于每个编程问题都提供了测试用例,以评估生成代码正确性。使用pass@k作为评估指标,即通过k次尝试可以正确回答的问题的比例。下表显示根据模型大小进行分组,在该测试集上的测试结果。27403c8ae7108a1ed7b447ee9a9d3ea2.png从上表可以看出,这些LLM在该数据集上的性能差异很大,尽管模型参数相似但效果差异也是很大。可以发现Codex 在各种尺寸上都处于领先地位。为什么会存在这个问题呢?影响模型效果的关键因素是啥呢?作者经过分析给出的结论有:模型大小、数据质量、专家调优。

  模型大小  

根据前面的整理用于NL2Code的LLMs时间发展图可以发现,只要模型参数越多性能就越好。为了进一步说明模型参数大小和模型效果之间的关系,作者整理了10个比较有代表性的模型,在HumanEval基准上的pass@1结果,如下图所示:3d14c3c8443a413ca3c9abc2e6249d0c.png根据上图,很明显的可以「发现较大的模型通常会产生更好的结果」。此外,「当前模型无论大小,仍然可以通过进一步增加模型参数来实现性能的提升」

  数据质量  

随着LLMs模型参数的增加,其训练数据规模也在不断的增加。这在数据选择和预处理方面也有更高的要求。早期的模型,例如CodeSearchNet、CoST、XLCoST等都是基于人工标注数据对进行训练(耗时耗力);GPT系列模型(GPT-3 、GPT-Neo、GPT-J )开始在大规模无监督数据集上进行训练,但是由于代码数据限制,并没有显示出很强的代码生成能力。由于LLMs模型的出现,它们可以在更大规模的未标记代码数据集上进行训练,最终模型效果惊人。

在惊叹于LLMs效果的同时,也要知道LLMs在训练之前通常会对数据进行预处理。为此作者调研了Codex、AlphaCode、CodeGen、InCoder和PyCodeGPT等5个强大模型的数据预处理方法。发现它们具有几个共同的特点:一是删除可能自动生成或未完成的代码文件,二是使用特定的规则来过滤不常见的代码文件。「总之,这些预处理策略的目标是实现一个不重复的、完整的、正确的、干净的和通用的代码语料库」

  专家调优  

训练一个优秀的模型需要认真考虑模型训练阶段的各个参数。通过对27个LLMs模型的研究发现,它们都有一些共同的设置,比如都应用了Adam相关优化器并在初始化阶段相差不大。除此之外,还有需要调节的超参数,如lr、batch、窗口大小、预热、梯度累积和temperature。对于学习率来说,随着模型的增大,学习率会逐步变小。如下图所示:885c065e03b7c53995cc940f762a9b62.png对于temperature,这里对比了两个模型在HumanEval任务上使用不同temperature后模型的性能。结果发现,更高的temperature产生更低的pass@1和更高的pass@100,这表明更高的temperature使LLM产生更多样化的预测,反之亦然。如下图所示:fa9dd21d84f37520bf66b595470f03a9.png此外,有研究表明窗口大小也是一个关键因素,具有大窗口的小模型会有时优于具有小窗口的大模型。此外,强大的LLMs通常主要使用两种技术在代码语料库上训练新的标记器:字节级字节对编码和sentencepece 。新的标记器可以更有效和准确地将代码内容拆分为Tokens。这些经过验证的调优技术将为培训更强大的llm提供有价值的参考。

  评估基准指标  

「对NL2Code任务的评估,高质量的基准和可靠的度量是基础和必要的」。作者总结了17个NL2Code基准测试,每个基准测试在大小、语言、复杂性和场景方面都有自己的特点,如下表所示。fc77bff1fa63d81e332adad377a73d4a.png但大多数基准测试只包含有限数量的实例。例如,HumanEval和MBPP分别有164和974个实例。这是因为这些基准通常是手写的以防数据泄露。「在大型语言模型时代,在创建新基准时避免数据泄漏至关重要」。此外,大多数当前的基准测试都有英文的问题描述和Python的代码解决方案。最近,已经提出了几个多语言基准,例如涵盖「多种编程语言的MBXP,HumanEvalX和MultiPL ,以及涵盖多种自然语言的ODEX」。多语言基准测试的详细信息如下表所示:4fc8f30cb73612d387c361e44064580d.png「手动评估生成的代码是不切实际的,这就需要自动度量」。上述基准均提供了基于执行的评估的测试用例,其中指标如 pass@k、n@k、测试用例平均值和执行精度。但是,「这种方法对测试用例的质量有严格的要求,并且只能评估可执行代码。对于不可执行的代码」,使用了 BLEU 、ROUGE 和 CodeBLEU等指标,无法准确评估代码的正确性。到目前为止,「在设计指标来评估代码的各个方面(例如漏洞、可维护性、清晰度、执行复杂性和稳定性)方面存在许多开放性挑战」

  NL2Code挑战与机遇  

大预言模型在NL2Code的应用对学术界和工业界都有相当大的影响。虽然取得了惊人的进展,但仍然有很多挑战需求解决,这也为研究人员提供了充足的机会。下面作者总结了 NL2Code任务的五个挑战和机会。

「1、理解能力」:人类能够理解不同抽象层次的各种描述, 相比之下,当前的 LLM 往往对给定的上下文敏感,这可能会导致性能下降。作者认为探索LLM的理解能力是一个重要的研究方向。

「2、判断能力」:人类能够判定一个编程问题是否被解决。当前模型不论输入什么都会给出答案,而且该答案正确与否都不能确定,这在实际应用中会存在一定的问题。目前为了提高LLM的判断能力,需要根据用户反馈采用强化学习的方式进行调优。作者认为探索LLM自我判断能力,也是一个比较重要的研究方向。

「3、解释能力」:人类开发人员能够解释他们编写的代码,这对教育的和软件维护至关重要。最近的研究表明,LLM 具有自动生成代码解释的潜力。作者认为针对该能力也需要进一步的研究和探索,以充分发挥LLM在这方面的潜力。

「4、自适应能力」:当前的大型语言模型与人类之间的一个根本区别是它们适应新知识和更新知识的能力。人类开发人员能够根据文档资料实现API的快速开发,而LLM需要大量的知识和训练。作者认为如何提高LLM快速自学习能力也是一个比较大挑战。

「5、多任务处理能力」:LLM在多任务处理方面与人类存在较大差异。人类可以在任务之间无缝切换,而LLM可能需要复杂的提示工程。为此作者任务提升LLM多任务能力同样是一个重要的研究方向。

8fd2d81f751ee8ccbb9b9abb471202cc.jpeg

欢迎大家加入我的这个”AIGC与GPT“知识星球,价格便宜,目前已有近120人

作为一个大厂算法工程师和机器学习技术博主,我希望这个星球可以:

  • 【最全免费资源】免费chatgpt-API,最新AIGC和GPT相关pdf报告和手册。

  • 【最专业算法知识】Transformer、RLHF方法、多模态解读及其论文分享。

  • 【最新变现姿势】如何结合ChatGPT应用落地,各种可以作为副业的AIGC变现方式,打好这个信息差。

  • 【最有趣AICG】ChatGPT+midjourney拍电影,制作壁纸,漫画等等有趣的AICG内 容分享。

一些截图:

303ced76ae26b14134dacad552ddf287.png

4156b1cedab4659ae548c3596e7aa3af.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/69552.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

符尧:我想为 MOSS 正名

点击上方“AI遇见机器学习”,选择“星标”公众号 第一时间获取价值内容 知乎: Franx链接: https://www.zhihu.com/question/596908242/answer/2996276211编辑: 深度学习自然语言处理 公众号 我是符尧,是先前《拆解追溯 GPT-3.5 各项能力的起源》这篇文章…

inscode评测

文章目录 项目介绍首页使用反馈语言模板编辑AI模板​编辑网站模板编辑图形模板 编辑器使用反馈使用场景1---函数定位改进建议: 使用场景2---项目创建改进建议: 使用场景3---文件上传改进建议: 视觉反馈模板使用一些BUG反馈创建项目会较频繁出…

谷歌20年老员工叛逃,创立第二个OpenAI?

来源:新智元 硅谷独角兽,又来震撼世界了! 这支名叫Character Technologies的独角兽的核心力量,来自前谷歌LaMDA团队。 他们的新产品在移动端上线不到一周,下载量就达到了170万,直接碾压了ChatGPT&#xff0…

技术无关性别,IT 界的“她”力量也能撬动半边天!

作者 | 朱珂欣 出品 | CSDN程序人生(ID:coder_life) 职业本无性别之分,但提到 IT 界的“程序员”,大家脑海中总会先浮现“格子衫、牛仔裤、戴眼镜”的模样,而并非人数比重较少的“程序媛”。据拉勾招聘数…

电脑同时登录多个微信

现在很多人手上都有多个手机号以及多个微信号,但我们发现,当我们想在电脑上同时登录多个微信,好像每次双击打开,都是跳出当前这一个,和QQ有很大的区别。 那我们可以通过bat文件来试试,通过执行bat文件里的…

电脑上同时登陆多个微信

电脑版微信默认只能登录一个微信,其实这里有个小技巧,无需安装任何软件,就能实现微信多开。 第一种方法: 按住键盘上的Shift键不要松手,然后鼠标快速多次点击微信图标,即可实现多开。(这种方法…

电脑,从多人一台到一人多台

最早接触电脑是中学时,当时应该是APPLE-Ⅱ,固化的Basic,仅仅算是打了个照面,印象最深的就是空调机房,还有地毯,拖鞋(当时还没有鞋套),功能倒是没有太多的概念。 到了大学…

19、两台电脑怎么就能互相通信了

今天的内容非常有趣,绝对让你涨知识~ 不知道大家是否好奇过这样一个问题,那就是,两台电脑怎么就能互相传递信息了呢?可能你觉得这是一件很正常的事情,就那样一发一接不就ok了嘛?可是真的让你说出个所以然,那绝对是触碰到你的知识盲区了~ 也许你学过之前的内容知道,这需…

多用户使用一台计算机 可设置,如何设置才能让一台计算机可以多个用户同时登陆?...

满意答案 adnx88234 2013.02.26 采纳率:55% 等级:13 已帮助:13511人 第一:共享的前提工作: 1.更改不同的计算机名,设置相同的工作组! 2.我的电脑右键-管理-计算机管理…

chatgpt赋能python:Python数学建模:将数据转化为答案的利器

Python数学建模:将数据转化为答案的利器 随着数据时代的到来,数据的价值越来越受到人们的关注。但是单纯的数据没有意义,只有将他们转化成有意义的答案才有意义。在这个过程中,数学建模是一个非常重要的工具,而Python…

开发者藏经阁——超全阿里系电子书大合集(打包下载)

小白寻思着给大家发点福利,就整理了一下,阿里系电子书,有近80本,分享给大家,均可免费下载。 覆盖 Java、物联网、云原生、前端、大数据、开源、AI 等技术领域,深度分享阿里工程师实践精华,顶级…

阿里副总裁玄难:藏经阁计划研发大规模知识构建技术首次披露

导读:2018年4月,阿里联合清华大学、浙江大学、中科院自动化所、中科院软件所、苏州大学等五家机构,联合发布藏经阁(知识引擎)研究计划,同时还宣布打算用一年时间初步建成首个开放的知识引擎服务平台&#x…

互联网券商行业公司

中国券商在向互联网金融方向的拓展呈现了百花齐放的特点。对各个券商来说,在互联网证券业务方面在一定程度上尚缺乏或未来需要比较明确的长远目标。或者说,目前大家还都在摸着石头过河。但是,在中国大市场和互联网经济推动下,前途…

1元体验京东云服务器

1元体验京东云服务器 在大神鸿洋和郭霖的微信公众号推送文章发现了这个好消息,第一时间注册了账号,申请下了订单,毕竟数量有限。尽管两位大神讲的很详细,无奈没有接错过CentOS、Ubuntu、WindowsServer这些服务器系统的小白&#…

java简单代码运行内存图

java中主要的三块内存空间: 1.栈内存(stack):在方法别调用时,栈内存会给方法分配内存(压栈),主 要存储的是局部变量。方法调用结束后,该方法所占用的内存释放&#xff…

大厂程序员能力修炼手册,从筑基到化神要多久?

刚入行: 就是干 入行两年:熟知各种设计模式,信手拈来 入行三年:阅码无数,心中已无设计模式 入行五年:就是干 大家好,我是安酱。今天来跟大家聊聊程序员的能力进阶道路。 相信许多小伙伴都知道…

我的周刊(第001期)

我的信息周刊,记录这周我看到的有价值的信息,主要针对计算机领域,内容主题极大程度被我个人喜好主导。这个项目核心目的在于记录让自己有印象的信息做一个留存以及共享。 项目 image-to-latex[1] 可以将数学公式截图然后自动解析成LaTex输出&…

程序性能优化入门锦集--设计+代码+JVM调优+数据库优化策略

关于优化是一项很大的内容。本文结合菜鸟结算项目优化点分析以及书籍《JAVA程序性能优化》阅读心得,给出个人觉得可供参考的优化思路,共涉及四个方面,分别是:设计篇、代码优化篇、JVM内存调优和数据库操作优化。若文中理解有误之处…

阿里巴巴藏经阁,快来学习起来

阿里巴巴藏经阁 其中约有七千多本作品供大家免费下载,在线阅读! 地址 https://developer.aliyun.com/ebook/?spma2c6h.26392459.ebook-detail.2.5ea12039WsHOsc

[导入]文章藏金阁

在网上用www.gougou.com订阅了很多RSS,但RSS保存功能又非常弱,我保存下来的文章全部统统放到一个目录下去了,时间长了,里面乱七八糟的.删除了吧...突然哪天想起原来看过一篇文章,却寻觅不着.用365key吧,我又经常用firefox.郁闷了郁闷了...先暂时自己建个文章藏金阁吧~~ 数据…