本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。
刚刚,OpenAI又玩出了一个新高度。
只输入自然语句,AI就自动做了个小游戏!
划重点:不! 用! 你! 编! 程!
来,感受一下这个feel。
第一步,“小人儿”搞里头,输入一句话就能让它按照方向键左右移动:
Now make it controllable with the left and right arrow keys.

AI在理解了需求之后,自动编程,然后小人儿就真的可以左右移动了。
第二步,“石头”搞里头,同样输入一句话,让它“从天而降”:
Now have it fall from the sky, and wrap around.

第三步,用自然语言简单再制定些规则,若小人儿被石头砸中则终止游戏。
Constantly check if the person and the boulder overlap at all, and if so, you lose.

最后还让AI生成结束提示,其中要包括一句鼓励人的话。
AI挑中的是“Try Again!”
当然,还有规则更复杂的小游戏(例如增加计分等功能),也可以用同样的方式,分分钟生成:

这是魔法吧!现在开发小游戏都靠“打字”了?!
围观直播的观众们,也是发出了同样的感慨,瞧瞧这满屏止不住的弹幕:

有网友甚至直呼道:
编程,已经变成AI自己的游戏了。

这就是OpenAI重磅发布的新品——Codex,一个能自己编程的AI。
AI编程这事并不新鲜了,像GitHub前不久闹得风风火火的Copilot,就是其中一个。
但它背后的技术,其实还是来自于OpenAI。
然而这一次,OpenAI给自己的能力升了个级,来了个新版本。
不仅如此,搞一个小游戏,仅仅是Codex能力的冰山一角罢了。
一起感受一下它更多惊艳的表现吧。
不用打字,直接语音命令它!
给AI打字“提需求”,还是略显麻烦了一些。
能不能直接说话下达命令呢?
这个还真可以有!
OpenAI这次与微软合作出了一个Word插件,便带了这种语音控制的功能。
直接对着AI下命令“把每行开头的空格去掉”,AI通过微软给的接口一顿操作,成功执行:

啪的一下,全文就左对齐了有木有。
而且AI还精准地理解了命令的含义,那些段与段之间的空行并没有改动。
来再复杂一点的。
给AI下达“每数到五行就加粗”命令,也是能轻松hold得住:

这种把任务吩咐下去,就有“人”给你完成的感觉,是不是很像老员工指挥实习生?
总之呢,是比罗永浩前几年发布的TNT系统语音办公要强上那么“亿”点点了。
除了官方的演示,这次内测用户aniakubow,还让AI表演了通过152字描述生成一个网页。

可以看出这里Codex是用Javascript操作Document对象来生成网页,可能是训练集里没有直接的HTML代码的缘故吧。
最后,除了现场演示外,OpenAI还在Arxiv上发布了Codex的论文预印版。
论文中,Codex要面对的挑战甚至有刷IOI和ACM难度的竞赛题!
Codex用对每道题生成1000种答案这种暴力方法,能做出600多道竞赛题测试集中的3.23%,并且通过全部的测试用例。
这个编程题目测试集是UC伯克利研究人员在5月份刚刚做好的。
当时测试的GPT-2、GPT-3和开源的GPT-Neo可是在竞赛难度上全军覆没,一道都没做出来。
没想到短短两个多月,专为代码而生的Codex就为前辈们洗刷了耻辱。
Codex的“魔法”,是如何实现的?
这么炫酷的能力,莫非还是像GPT-3一样堆数据,大力出奇迹吗?
不全是,这次Codex最大的一个版本是120亿参数,比起GPT-3的1750亿还是小了很多。
要了解具体情况,还要从它的开发历程说起。
最早,OpenAI研究人员拿GPT-3做各种试验,发现GPT-3能从Python注释中生成一些简单的代码。
这可把他们高兴坏了,因为GPT-3根本没特意拿代码训练过,只是看过一些博客和帖子中零星的代码片段。
想想GPT-3在自然语言上的出色表现,要是专门训练一个代码版的GPT-3,那肯定也能再次震惊业界。
于是,他们找到了GitHub,这个拥有最多开源代码的“小伙伴”来合作。
一开始是拿到了179G的Python代码,但其中不乏存在一些篇幅太长的,以及明显是自动生成的那种。
在剔除掉这些“不达标”的代码后,最后留下的代码大小为159G。
接下来当然是做预训练,把这些代码都喂给AI (Codex)。
不过这里有一个问题:
GitHub上的开源代码难免会有Bug,AI学了一堆有问题的代码可咋办?
其实这倒也好说,预训练之后不是还要微调嘛。
微调的时候,全用编程竞赛里的正确答案,以及PyPI里的靠谱开源代码就可以了。
最后,120亿参数版的Codex,能对28.81%的问题给出正确答案。
这个准确率超过之前的开源代码预训练模型GPT-Neo和GPT-J,还有基于GPT-2的代码补全工具TabNine。

这个成绩虽然不错,不过离能实际应用还是有点远了。
不过,这也难不住OpenAI的研究团队。
他们很快便想到了“突破口”:
人类编程的时候,不也经常先出一个版本,然后反复修改bug嘛~
那就让AI像人一样反复修改,改出100个版本来,从中总能挑出几个正确的来。
用上这种拿“量”堆出来的方法,Codex的最终成绩是:
77.5%!
强,但不完全强
Codex令人惊艳的表现,一度让网友们大呼:
要失业了要失业了!
有人直接在公屏上打出:再见了,计算机专业的学子们。
不过大家也不必如此担心,因为在演示过程中,其实就出现了翻车的情况。
在输入“Say Hello World with empathy”后,Codex给出的结果居然还是“Hello World with empathy”。
这也侧面说明了Codex现在还不是完美的。
OpenAI就表示:
即便是参数达到120亿的Codex 12B,它的能力可能也还不如一位编程刚刚入门的学生。
虽然Codex学习上亿行代码,但它更大程度是“记住了”这些代码,并不是真正意义上的懂编程语言。
而且Codex对长字符串的理解也比较困难。
并且随着字符数量的增加,Codex的性能表现下降得非常明显。
要不是合作方微软Azure云买了足够多的碳排放限度,Codex可能还不能和我们见面呢(手动狗头)。
此外,在理解变量和运算较多的注释时,Codex也会犯错:
在这个例子中,120亿参数版的Codex,忘记了对变量w做减法,也没有返回所有数字的乘积。
这些对于还在学习编程的新手程序员而言,非常不友好。
而且由于生成的代码准确性和正确性都还不能保证,因此在安全问题上也存在一定风险。
不仅如此,OpenAI还表示,Codex会生成带有种族歧视的内容。
在社会层面上,OpenAI还提出Codex的出现或许会冲击程序员的就业;如果被滥用,还有网络犯罪方面的隐患。
最后还有一点,就是环境方面的问题。
毕竟它作为大模型,参数量的规模不容小觑。
要不是合作方微软Azure云买了足够多的碳排放限度,Codex可能还不能和我们见面呢(手动狗头)。
如果想要试玩的话,OpenAI还准备了一个Python编程大赛,在这场比赛中Codex会作为你的搭档和你一同解题。
比赛将于北京时间8月13日凌晨一点开始,就是这时间对国内不太友好。