Codex Demo 中,OpenAI 展示了软件如何利用自然措辞构建起大略的网站与根本游戏,以及如何在不同的编程措辞之间灵巧转译、乃至处理数据科学查询。

也便是说,用户只须要在软件中输入英文命令,例如“创建一个侧面有菜单、顶部有标题的网页”,Codex 就能将其翻译为代码

OpenAI 公司 CTO 兼联合创始人 Greg Brockman 在接管采访中表示,“我们认为,这将是一款能够放大程序员力量的主要工具。
编程紧张分为两个问题,第一个问题是负责思考问题并考试测验理解,第二个问题是把这些小片段与现有代码映射起来,包括库、函数以及 API。
”在他看来,这第二个问题呆板乏味,但这却恰好是 Codex 的专长。
“它的涌现,让专业程序员们告别了不少令人头痛的苦差事。

OpenAI 对 Codex 全面改变编程与打算办法的潜力颇有信心。
Brockman 认为,Codex 的涌现有望办理美国海内程序员短缺的问题,而 Codex 项目卖力人 Wojciech Zaremba 则将其视为编码历史演化的下一阶段。

将措辞直接翻译成代码OpenAI 内测 AI 编码器 Codex

今年 6 月末,微软、OpenAI、GitHub 联合出品了自动代码天生 AI Copilot,Copilot 能够在用户输入过程中随时供应补全代码行内容的建议。
与 Copilot 比较,Codex 的上风更为明显,它不仅能够补全代码,还可以天生新的代码。

不过当前,Codex 仍存在一些问题,比如它须要体验者保持一定耐心才能得出成果,由于有些时候,Codex 并不能理解用户的指令。

Codex 的实际利用感想熏染如何?

虽然 Codex 听起来很令人愉快,但在接管广大程序员们的实际检测之前,仍很难判断其功能的完全范围。

根据 TheVerge 的宣布,Brockman 与 Zaremba 在线上演示了 Codex,用 Codex 创建了一个大略的网站,并开拓出一款根本游戏。

在游戏演示中,Brockman 先在谷歌照片上找到一幅人像剪影,再哀求 Codex“添加页面中的人像”再粘贴 URL。
这时候剪影就涌如今屏幕上,之后 Brockman 用“把人像放大一些”命令放大了图像,又通过“利用旁边箭头键掌握图像位置”建立起位置掌握功能。

全体过程非常丝滑,人像开始在屏幕上晃来晃去,但很快碰着了新问题:图像会溜出屏幕外、彻底消逝。
为了阻挡这种情形,Brockman 又向打算机下达了额外的指令“反复检讨人像是否超出页面,如果超出,将图像放回页面内。
”这样图像确实就不会伸出页面之外了。
不过这意味着,对付更繁芜的功能来说,指定一定要十分精确才能避免缺点。

虽然图像回到了页面里,但 Codex 同时改变了图像的宽度,全体剪影犹如是被压扁在屏幕上,Brockman 和 Zermba 也阐明不了 Codex 为什么要这么做,Brockman 表示“有时候 Codex 不太能理解用户的指令。
”他又考试测验了几次,终于想出了让图像既不出屏、也不扭曲的办法。

全体演示效果不错,但也暴露出了这款程序的局限性。
当前,Codex 还没办法直接读懂人类的意思、再把每条命令转换成完美代码。
相反,人们须要寻思熟虑再加反复试验,才能让它正常起效。

也便是说,Codex 不可能在一夜之间把业余人士变成专业程序员,不过它的利用门槛确实比其他编程措辞更低。

利用 GPT-3 来创建 Codex

据理解,Codex 以 OpenAI 自家措辞天生模型 GPT-3 为根本,这套模型利用了大量互联网素材进行演习,从而具备一定的笔墨天生与解析能力。

稍早前,OpenAI 的研究职员曾在一篇论文中揭示了 Codex 的详细信息,并阐明了 OpenAI 的科学家们设法重新利用他们的旗舰措辞模型 GPT-3 来创建 Codex 的过程。

“没有免费的午餐”定理

Codex 是 GPT-3 的下一代产物。
一样平常来说,模型的学习能力随着参数的增加而增加。
GPT-3 有 1750 亿个参数,比它的前身 GPT-2(15 亿个参数)多了两个数量级。
GPT-3 的演习数据集超过 600GB,比 GPT-2 的演习数据集大 50 多倍。

除了规模上的增长外,GPT-3 的紧张创新是“few-shot 学习”,即实行没有经由演习的任务的能力。

根据 OpenAI 的新论文,各种版本的 GPT-3 都无法办理用于评估 Codex 的编码问题。
也便是说,GPT-3 的演习数据集中没有编码样本,我们不能期望它能够编码。

但是,OpenAI 的科学家们也测试了 GPT-J,一个在 the Pile 上演习的 60 亿个参数的模型。
the Pile 是一个 800GB 的数据集,个中包括 95GB 的 GitHub 和 32GB 的 StackExchange 数据。
GPT-J 办理了 11.4% 的编码问题。
Codex 是 GPT-3 120 亿个参数的一个版本,在 GitHub 的 159GB 代码示例上进行了微调,办理了 28.8% 的问题。
Codex 的另一个版本 Codex- s,通过监督学习进行了优化,将性能提高到了 37.7%(其他 GPT 和 Codex 模型都是通过无监督学习进行演习的)。

Codex 可以办理大量的编码寻衅,利用监督学习 (Codex-S) 微调的模型版本进一步提高了性能。

Codex 证明了机器学习仍旧受制于“没有免费的午餐”定理(NFL),这意味着泛化因此捐躯性能为代价的。
换句话说,当机器学习模型旨在办理一个特定问题时,它们会更加准确;另一方面,当他们的问题域扩大时,他们的表现就会低落。

Codex 可以以较差的自然措辞处理能力为代价,高精度地实行一项专门任务(将功能描述和署名转换为源代码)。
另一方面,GPT-3 是一种通用措辞模型,它可以天生关于许多主题(包括繁芜的编程观点)的像样的文本,但不能编写一行代码。

天生与理解代码

OpenAI 的科学家们在论文中表示,Codex“演习样本效率不高”,并且“纵然是履历丰富的开拓职员,在他们的职业生涯中也不会碰着这么多代码”。

他们进一步补充说,“一个完成了打算机科学入门课程的精良学生,估量能够办理比 Codex-12B 更大比例的问题。
”“我们从 Codex 中对令牌进行抽样,直到碰着以下停滞序列之一:' \nclass ', ' \ndef ', ' \n# ', ' \nif ',或' \nprint ',由于模型将连续天生其他函数或语句。

这意味着 Codex 将盲目地连续天生代码,纵然它已经完成理解决提示中所述问题的部分。

当你想要办理反复涌现的大略问题时,这种方案非常有效。
但是当你缩小并试图编写一个大型程序来办理一个必须通过多个步骤来办理的问题时,Codex 的局限性就变得明显了。

OpenAI 的科学家们创造,随着功能描述中组件数量的增加,模型的性能呈指数级低落。

研究职员在他们的论文中写道:“这种行为不是人类程序员的特色,如果一个人能够精确地为一个长度为 2 的链实行程序,那么他就该当能够精确地为一个任意长度的链实行程序。

OpenAI 的 Codex 无法办理须要综合多个组件的编码问题

论文也进一步暴露了 Codex 对程序构造和代码缺少理解。
“Codex 可以推举语法禁绝确或未定义的代码,可以调用未定义或超出代码库范围的函数、变量和属性”。
实际上,这意味着在某些情形下,纵然它们并不适宜在一起,机器学习模型会将之前见过的不同代码片段拼接在一起。

在论文中,研究职员还谈论了 Codex 中的“错位”问题,即该模型可以办理一个特定的问题,但由于各种缺点而不能这样做。
研究职员警告说,如果你的代码包含奇妙的缺点,Codex 可能“故意”建议代码表面上看起来很好,但实际上是禁绝确的。

OpenAI 的科学家不雅观察到,在目前的状态下,Codex“可能会通过提高程序员的生产力,在一定程度上降落生产软件的本钱”,但它不会取代软件开拓职员常常做的其他任务,例如“与同事协商,编写设计规范,并升级现有的软件堆栈。

将 Codex 误认为程序员也会导致“过度依赖”,即程序员盲目地批准模型天生的任何代码,而没有对其进行修正。
鉴于 Codex 可能犯的明显和奇妙的缺点,忽略这一威胁可能会带来质量和安全风险。
“安全利用 Codex 等代码天生系统须要人工监督和当心,”OpenAI 的研究职员在他们的论文中警告说。

值得一提的是,如果能够得到成功,Codex 不仅会成为程序员们的好帮手,也有望成为用户与打算机之间的全新界面。

OpenAI 公司指出,他们通过测试确定 Codex 不仅能够掌握 Word,也完备可以操作 Spotify 及谷歌日历等其他程序。
Brockman 总结道,虽然目前的 Word 演示只是一种观点验证,但微软已经对 Codex 的表现抱有浓厚兴趣。
“总体来讲,微软对这套模型颇为关注,未来该当会有更多 Codex 运用案例供大家参考。