50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

将语言直接翻译成代码,OpenAI 内测 AI 编码器 Codex

  • 2021-08-11
  • 本文字数:3242 字

    阅读完需:约 11 分钟

将语言直接翻译成代码,OpenAI内测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 先在谷歌照片上找到一幅人像剪影,再要求 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 应用案例供大家参考。”

2021-08-11 14:085436

评论 1 条评论

发布
用户头像
Awsome!
2021-08-16 00:49
回复
没有更多了
发现更多内容

毕业设计项目

michael

架构实战营 #架构实战营 「架构实战营」

远程办公工具分享|社区征文

如浴春风

初夏征文

NFT新的契机,多媒体NFT聚合平台OKALEIDO即将上线

股市老人

架构训练毕业设计+总结

小马

#架构训练营

一个漂亮的API文档生成工具

为自己带盐

7月月更

【愚公系列】2022年7月 Go教学课程 002-Go语言环境安装

愚公搬代码

7月月更

疫情远程办公经验分享| 社区征文

乌龟哥哥

7月月更

毕业总结

大眼喵

「架构实战营」

自动渗透测试工具核心功能简述

穿过生命散发芬芳

渗透测试 7月月更

聊聊支付流程的设计与实现逻辑

Java 架构

毕业总结

天琪实刚亮

程序员远程办公喜忧参半| 社区征文

乌龟哥哥

7月月更

透过JVM-SANDBOX源码,了解字节码增强技术原理

柠檬汁Code(binbin0325)

互联网架构 源码剖析 字节码增强 源码解读 Java’

【LeetCode】在每个树行中找最大值Java题解

Albert

LeetCode 7月月更

【安全攻防】序列化与反序列,你了解多少?

网络安全学海

黑客 网络安全 安全 信息安全 渗透测试

分布式CAP理论

源字节1号

软件开发 后端开发

资深开发人员告诉你,怎样编写出优秀的代码?

雨果

程序员 软件 开发者 代码

浅谈一篇优质的小红书文案需要具备什么

石头IT视角

毕业设计:设计秒杀电商系统

jiaoxn

「架构实战营」

线程常用的方法

zarmnosaj

7月月更

一入“远程”终不悔,几人欢喜几人愁。| 社区征文

法医

初夏征文

简述服务量化分析体系

阿泽🧸

7月月更 量化分析

架构实战营 - 第 6 期 模块九之毕业设计

乐邦

「架构实战营」

leetcode 121 Best Time to Buy and Sell Stock 买卖股票的最佳时机(简单)

okokabcd

LeetCode 动态规划 算法与数据结构

模块九作业

天琪实刚亮

牛客java选择题每日打卡Day5

京与旧铺

7月月更

分布式系统:what、why、how

javaadu

分布式系统

Java多线程案例之单例模式(懒汉,饿汉,枚举)

未见花闻

7月月更

设计电商秒杀系统

Jadedev

「架构实战营」

封装Ajax

Jason199

ajax 7月月更

将语言直接翻译成代码,OpenAI内测AI编码器Codex_AI&大模型_凌敏_InfoQ精选文章