OpenAI升级AI编码器Codex并启动内测,又一可能“让程序员失业”的AI编程工具Codex来了

继AI编程工具GitHub Copilot之后,又一款可能“让程序员失业”的AI编程工具Codex来了。

OpenAI 升级 AI 编码器 Codex 并推出内测

当地时间 8 月 10 日,人工智能研究公司 OpenAI 宣布其 AI 编码器 Codex 已升级并开始内测。据了解,Codex最大的亮点在于可以直接将英文翻译成代码。

在 Codex Demo 中,OpenAI 展示了该软件如何使用自然语言来构建简单的网站和基础游戏,以及如何在不同的编程语言之间灵活翻译,甚至处理数据科学查询。

即用户只需在软件中输入英文指令,如“创建一个侧面有菜单,顶部有标题的网页”,Codex就可以将其翻译成代码。

OpenAI 的 CTO 和联合创始人 Greg Brockman 在接受采访时表示,“我们认为这将是放大程序员力量的重要工具。编程主要分为两个问题网络切换代码用不了,第一个问题是仔细思考问题并尝试理解,第二个问题是将这些小片段映射到现有代码,包括库、函数和 API。” 在他看来,第二个问题很无聊,但这正是 Codex 的专长。“它的出现,让专业程序员告别了很多头疼的苦差事。”

OpenAI 对 Codex 完全改变编程和计算方式的潜力充满信心。Brockman 认为 Codex 有望解决美国程序员短缺的问题,而 Codex 项目负责人 Wojciech Zaremba 则将其视为编码历史演变的下一个阶段。

今年 6 月底,微软、OpenAI、GitHub 联合出品了自动代码生成 AI Copilot。Copilot 可以在用户输入过程中随时提供完成代码行内容的建议。与 Copilot 相比,Codex 具有更明显的优势,它不仅可以完成代码,还可以生成新的代码。

但是,目前,Codex 仍然存在一些问题。例如,它需要体验者有一定的耐心才能得到结果,因为有时,Codex 无法理解用户的指示。

Codex 是如何运作的?

尽管 Codex 听起来令人兴奋,但在经过广泛的程序员实际测试之前,仍然很难判断其功能的全部范围。

据 TheVerge 报道,Brockman 和 Zaremba 在线演示了 Codex,用 Codex 创建了一个简单的网站,并开发了一个基础游戏。

在游戏演示中,Brockman 首先在 Google Photos 上找到一个人的剪影,然后要求 Codex“将一个人添加到页面”,然后粘贴 URL。剪影现在出现在屏幕上,布罗克曼使用“放大纵向”命令放大图像,并通过“使用左右箭头键控制图像位置”来建立位置控制。

整个过程如丝般顺滑,人像开始在屏幕上晃动,但很快又遇到了一个新问题:图像会滑出屏幕,彻底消失。为了阻止这种情况,布罗克曼给计算机额外的指令“仔细检查肖像是否离开页面,如果是,将图像放回页面上。” 这样,图像就不会真正突出在页面之外。然而,这意味着对于更复杂的功能,规范必须非常精确以避免错误。

虽然图像回到了页面,但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 learning”,即无需训练即可执行任务的能力。

根据 OpenAI 的一篇新论文,各种版本的 GPT-3 都无法解决用于评估 Codex 的编码问题。也就是说,GPT-3 的训练数据集中没有编码样本,我们不能指望它进行编码。

不过,OpenAI 科学家还测试了 GPT-J,这是一个在 Pile 上训练的 60 亿参数模型。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 和 Google Calendar 等其他程序。Brockman 总结说,虽然当前的 Word 演示只是一个概念验证,但微软已经对 Codex 的性能产生了浓厚的兴趣。“总的来说网络切换代码用不了,微软对这个模型很在意,以后应该会有更多的Codex应用案例供大家参考。”

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论