点击上方“CSDN精品课”,选择“置顶公众号”

第一时间获取精品编程教程

在自然语言处理领域,常用语言模型(LMs)可以实现为字符(tokens)序列分配概率。

最近,LMs 还在对编程语言编写的源代码进行建模方面表现出强大的性能,擅长从自然语言描述中完成和生成代码。

在基于人工智能的编程支持下,目前最先进的大型语言模型的编写代码能力已经有了巨大改进。

AI 自动写代码的潜力


代码生成 AI 模型的好处是显而易见的,它可以降低开发成本,同时允许编码人员专注于创造性的、重复性较低的任务。也正因如此,越来越多的组织正在探索代码生成人工智能。

Codex 是其中之一。它是 OpenAI 推出的新的深度学习驱动平台,可自动编写能够正常工作的软件代码。该系统以大量公开代码作为语料库进行了训练,是 GitHub Copilot 上的一个功能,可帮助程序员自动改进或更新软件。

DeepMind 出品的 AlphaCode 也是最早与人类程序员竞争的代码生成系统之一。编程竞赛平台 Codeforces 上举办的编程竞赛中,DeepMind 表示,与 5000 多名程序员竞争,AlphaCode 的平均排名在前 54.3% 之内。

目前,OpenAI 和 Alphabet 支持的 DeepMind 等机构已经开发出强大的代码生成 AI,但这些最强大的系统并没有开源。例如,Codex 只允许在收费情况下,通过黑箱 API 调用模型的输出,但不允许访问模型的权重或训练数据。

也就是说,尽管语言模型在编码方面取得了巨大的成功,但由于性能最好的语言模型没有开源,这就限制了资源缺乏的公司在该领域的研究,例如,研究人员无法对模型进行微调在源代码实现之外的任务或领域中使用。而且无法访问模型的内部结构也限制了研究人员研究模型的其他重要特性,例如可解释性、为了实现高效应用的模型蒸馏,以及引入检索等额外功能。

GPTNeo、GPT-J 和 GPT-NeoX 是三种公开可用的预训练语言模型,其规模涵盖中等到大型。通过在新闻文章、互联网论坛和少数(GitHub)软件库等大量数据上进行训练,这些语言模型能够以较快的速度生成源代码。另外还有一些仅在源代码上训练的开源语言模型,例如 CodeParrot 模型是在 180 GB 大小的 Python 代码上训练的。

由于这些模型的大小和训练策略各不相同,而且没有完善的实验比较,还不清楚建模方法和训练策略对语言模型的影响。

例如,我们无法知道 Codex 和其他自用模型训练使用的实际数据集。而且一些开源模型是在大量自然语言和代码上进行训练,而另一些(例如 CodeParrot)则只在一种编程语言的代码上训练。

不过,使用不同编程语言中相似的关键字和特征,使得多语言模型的泛化能力较强,这一点在多语言模型的实际使用中得到证明。也就是说,多语言 LMs 具有跨语言使用、优于单语言模型的优点。

PolyCoder 问世


最近,卡内基梅隆大学(Carnegie Mellon University)的研究人员发表了一篇论文 A SYSTEMATIC EVALUATION OF LARGE LANGUAGE MODELS OF CODE ,对比了现有的跨编程语言的编写代码模型——Codex、GPT-J、GPT-Neo、GPT-NeoX 和 CodeParrot。通过对多个模型的比较和分析,这个团队希望为代码建模设计决策提供更多启发。

他们首次证明了,大型的开源语言模型都不仅仅在几种编程语言的代码上进行训练。

这篇论文中,他们还提出一个基于 OpenAI 的GPT-2语言模型的模型PolyCoder。该模型在包含 249 GB 代码的数据库上进行了 12 个编程语言。

虽然 PolyCoder 在每项任务中都无法与顶级代码生成器的性能相媲美,但研究人员声称,PolyCoder 能够以比所有已知模型更高的准确度用 C 语言编写,包括 Codex 在内。

首先,该团队对 PolyCoder、开源模型和 Codex 的训练和测试设置进行对比研究。

其次,使用 HumanEval 基准研究各种模型大小、训练步骤,以及不同的温度对模型生成代码质量的影响。

最后,由于 HumanEval 只能评估自然语言到 Python 语言的生成结果,所以他们创建了一个 12 种语言的测试数据集,用来评估各种模型的性能。

研究人员发现,尽管 Codex 模型表面上只能处理 Python 语言,但它在其他编程语言中的表现也很不错,超过了在 Pile 上训练的 GPT-J 和 GPT-NeoX 模型。但是在 C 语言中,PolyCoder 模型的性能比其他所有模型(包括 Codex)的都好。

而且在 C、JavaScript、Rust、Scala 和 TypeScript 语言中,PolyCoder 比同样大小的开源模型 GPT-Neo 2.7B 相比性能更好。

但在 C 语言之外的 11 种语言上,其他的开源模型,包括 Polycoder 的表现低于 Codex。这是因为 Polycoder 是在数据不平衡的混合语言上训练的,而且 C++和 C 语言是有相关性、且在训练语料中最普遍的两种语言。所以 C 语言的数据量更大,PolyCoder 模型就认为 C 是“首选”的编程语言。但 C++语言更为复杂,并且 Codex 拥有更大的上下文窗口(4096 vs. PolyCoder 的 2048),或者因为 Codex 是在更多的 C++训练数据上训练出来的,所以导致 Codex 在 C++上的表现优于 PolyCoder。

总而言之,这项研究中研究人员对大量语言模型的编码能力进行了全面实验。一般来说,更大的模型和更多的训练时间有利于提高模型性能。GPT-superior Neo 模型在某些语言中的性能表明,对自然语言文本和代码的训练有助于对代码进行建模。

而 PolyCoder 则是用于编码的大规模开源语言模型,在 12 种不同的编程语言代码上训练而得,它的发布有助于未来在该领域的研究。虽然 PolyCoder 在每项任务中的性能都无法与顶级代码生成器相媲美,但研究人员声称,PolyCoder 能够以比包括 Codex 在内的所有已知模型以更高的准确度用 C 语言编写代码。

论文:

https://arxiv.org/pdf/2202.13169.pdf

Github:

https://github.com/vhellendoorn/code-lms

作者 | 张雨嘉

转载来源 | 数据实战派

点分享点收藏点点赞点在看

12种编程语言训练,开源的AI “程序员”来了,CMU出品相关推荐

  1. 会写代码的AI开源了!C语言写得比Codex还要好,掌握12种编程语言丨CMU

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 萧箫 发自 凹非寺 量子位 | 公众号 QbitAI 比Codex还 ...

  2. 20140417本人分别用12种编程语言编写的MasterSeeker热键辅助工具软件[晓亮原创]

    20140417本人分别用12种编程语言编写的MasterSeeker热键辅助工具软件[晓亮原创] 20140417本人分别用12种编程语言编写的MasterSeeker热键辅助工具软件[晓亮原创] ...

  3. 开发的AI程序员“抄”代码,被骂惨的GitHub到底冤不冤?

    荣伟 发自 凹非寺 量子位 报道 | 公众号 QbitAI Copilot"抄袭"风波,大家想必瓜吃得够饱了. 这回我们来聊点严肃的. GitHub在没有版权持有者许可的情况下,用 ...

  4. 程序员要被革命了,微软推出自己会编程的“AI 程序员”插件

    这几天微软和 GitHub 推出了一款 AI 程序员智能插件,它自己会编程,会自动生成代码,有人说: 软件开发领域的「第三次工业革命」似乎正缓缓揭开序幕. 01 到底怎么回事? GitHub.Open ...

  5. 可怕!程序员要被革命了,微软推出自己会编程的 “AI 程序员” 插件

    loonggg 读完需要 7 分钟 速读仅需 3 分钟 大家好,我是校长. 这几天微软和 GitHub 推出了一款 AI 程序员智能插件,它自己会编程,会自动生成代码,有人说: 软件开发领域的「第三次 ...

  6. 82年 AI程序员征婚启示火了!年薪百万,女生神回复

    最近在某社区,一则程序员征婚启示火了! 很多女生在评论区表示"全中",想交流看看.然后评论区就炸了,有人恶意说yp,有人说看中了楼主的钱. 笔者一翻,发现楼主果然无意中透露了百万年 ...

  7. GitHub的AI程序员“抄袭”算法大神代码,连原版注释都抄上了

    晓查 发自 凹非寺  量子位 报道 | 公众号 QbitAI 本周GitHub官方和OpenAI联合发布了一款代码神器AI--GitHub Copilot,只需输入注释,即可自动生成代码,堪称一位&q ...

  8. python是通用编程语言吗-2020年,编程语言将不再只属于程序员,尤其是这门语言...

    原标题:2020年,编程语言将不再只属于程序员,尤其是这门语言 "学python,那不就是去做程序员吗?" 一提到python,许多同学第一反应会觉得,这是要去做程序员才需要学的技 ...

  9. AI程序员,所有码农的梦想

    https://www.toutiao.com/a6641804001950040590/ 2019-01-02 15:51:40 目前为止,人工智能还不算成熟,还没有特别优秀的人工智能产品进入百姓生 ...

最新文章

  1. python 执行vba脚本_用python批量执行VBA代码
  2. StringBuilder类与String类的区别
  3. Xtreme ToolkitPro 编译过程详解
  4. HDLBits答案(1)_Verilog语法基础
  5. mysql 选择前4个_mysql从4个表中选择
  6. Hawq超过最大允许连接数
  7. 系统架构师学习笔记-分布式系统
  8. canal实现mysql数据实时同步es
  9. 阿狸心形表白html,2013qq情侣分组心形一对 心心相印的地久天长
  10. Windows Phone 8.1 应用商店将于 12 月 16 日关闭
  11. 【javascript闭包】转载一篇不错的解释,也有几个大牛的链接
  12. C#进制转换(二进制转十进制 十进制转16进制等)
  13. 谷歌火狐等浏览器Flash安装失败,安装后进入网站仍提示未安装Flash
  14. R语言绘图—一键添加显著性
  15. 移动端身份证件OCR识别
  16. 正则Regester
  17. 以教育行业为例,教产品经理如何做行业分析
  18. 如何评价微软在数据中心使用FPGA代替传统CPU的做法?
  19. 买上空气净化器了,真好... ...
  20. 软件设计师认证 -如何画数据流图

热门文章

  1. X509和CA的关系
  2. 网易新闻详情页排版实现思路
  3. 鸿蒙系统专利申请,华为在欧盟申请HarmonyOS专利 或为鸿蒙系统的英文名称
  4. urho3D 运动逆解Inverse Kinematics
  5. clipboard剪切板
  6. 让女人无法抗拒的30句表白【实用】
  7. 高德地图开发(二)加载瓦片数据
  8. HTML5+CSS3期末大作业——城市简介
  9. 电商运营从哪些方面做数据分析?
  10. 我的世界服务器额外植物学bug修复,[1.12.2-1.7.10][AnotherCommonBugFix——通用Bug修复]——可修复服务器常见的BUG...