写点什么

将语言直接翻译成代码,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:084625

评论 1 条评论

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

盘点 2021 征文大赛|记录你的年度闪光时刻!

InfoQ写作社区官方

盘点2021 热门活动

Java、Go 和 Rust 的比较

百度开发者中心

Java Go rust

DataPipeline与飞腾完成产品兼容性互认证,携手共建自主IT底层生态

DataPipeline数见科技

cpu 数字化转型 中间件 数据融合 数据管理

Atlassian 被 Forrester Wave 评选为企业服务管理的领导者!

Atlassian

Atlassian Jira 协作 ITSM Confluence

京东金融云,三年造五力

脑极体

从高盛的技术“开源”看金融业软件发展未来

王字 Wannz

金融科技 开源项目 开源技术 小程序框架

你未必知道的 WebRTC – 前世、今生、未来

王字 Wannz

WebRTC 音频技术 元宇宙

恒源云(GPUSHARE)_云GPU服务器如何使用Spyder?

恒源云

人工智能 #python 算力加速

决战下半场:小程序技术助力金融 APP 重回 C 位

王字 Wannz

小程序 移动应用 数字化时代 finclip

开发小程序的正确方式

王字 Wannz

小程序 小程序制作 finclip 凡泰极客 小程序框架

权威专访|对话凡泰极客联合创始人杨涛: 小程序生态市场潜力广阔

王字 Wannz

小程序 移动应用 小程序生态 凡泰极客

架构实战营第 4 期 -- 模块三作业

烈火干柴烛灭田边残月

架构实战营

架构训练营 week3 作业

红莲疾风

「架构实战营」

SIGCOMM 首篇 Multi-path QUIC 论文:阿里自研多路径传输技术XLINK

阿里巴巴终端技术

网络协议 传输协议 移动端 客户端 QUIC

CameraX入门笔记

Changing Lin

12月日更

数字化转型时代,如何让你的 App 摆脱“内卷”?

王字 Wannz

小程序 去中心化 finclip 互联网生态

小程序的昨日与今天

王字 Wannz

小程序 小程序生态 开发框架 finclip

Flink Hudi 0.10.0 发布,多项重要更新,稳定性大幅提升

Apache Flink

大数据 flink 编程 数据湖 Hudi

阿联酋区块链大会“DCS 2021 ” 闭幕 Hoo虎符成会展焦点

区块链前沿News

DCS 虎符 Hoo 虎符交易所 DCS 2021

【MongoDB学习笔记】MongoDB 快速入门

恒生LIGHT云社区

数据库 mongodb

通过元宇宙远程上班有的搞吗?

王字 Wannz

虚拟现实 元宇宙 凡泰极客

IP创作

张老蔫

28天写作

Python代码阅读(第70篇):删除列表一边的n个元素

Felix

Python 编程 Code 列表 阅读代码

语音合成(TTS)技术在有道词典笔中的应用实践

有道技术团队

人工智能 语音合成 网易有道

从零到一,我也能写小程序

王字 Wannz

小程序 小程序市场 finclip 小程序框架

微前端技术在游戏平台后台系统的实践

bilibili游戏技术

游戏

给弟弟的信第18封|除了自己,你谁也改变不了

大菠萝

28天写作

浅谈前端角色权限方案

王字 Wannz

前端 权限控制 finclip

Flink CDC 系列 - 实时抽取 Oracle 数据,排雷和调优实践

Apache Flink

大数据 flink 编程 实时计算 CDC

基于HTML5/CSS/JS响应式圣诞老人过悬崖小游戏

海拥(haiyong.site)

28天写作 12月日更

打气球

Tiger

28天写作

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