OpenAI数十亿代码训出Codex:能将英语翻译成代码,给四句话就能写个神经网络
OpenAI准备抢程序员的饭碗了。
编程从某种意义来说,是人类是将想法变为计算机可以理解和执行的指令的过程,这一过程需要程序员融入自己的算法思路,并且用固定的语法将程序写出来。
这一过程并不容易,门槛也并不低。但是OpenAI正在用AI简化这一过程,最近,OpenAI发布的一种AI工具Codex的升级版本,它可以将英语翻译成代码,甚至支持语音录入。
这意味着,你只要说出来你想要的效果,Codex可以直接帮你完成整个编程的过程。
比如下面这个示例,一个经典的‘接球’小游戏,就是Codex根据语言描述自己编程制作出来的,这个过程中人类没有输入一行代码。
这只是一个小项目,Codex究竟可以做到什么程度呢?文摘菌也很好奇,于是查询了一番,发现已经有人开始验证Codex的极限了——用Codex制作一个AI!
嗯,用自动编程AI创造AI,有点那味了!
数十亿行代码训练!这个AI将解放程序员双手
在这里文摘菌还是先要唠叨一下Codex的简单情况,熟悉的小伙伴可以直接跳过。
正如OpenAI的CTO和联合创始人Greg Brockman所说,编程包括两步:
1、认真思考一个问题并试图理解它
2、将这些小片段映射到现有的代码中,不管它是一个库、一个函数还是一个API。
Codex的出现就是为了解决第二步,解放程序员的双手,让他们在第一部分上花费更多时间。
要让AI完成第二步,也需要两步,一是让AI能够理解程序员的想法,二是让AI能够将理解到的需求转化为可执行的代码。
这两点对OpenAI来说都不陌生,他们开发的GPT-3已经大获成功,在自然语言理解和生成上都有很强的技术积累,在创作方面,从完整的博客文章到歌曲、食谱,GPT-3都不在话下。
因此,只要有足够的语料库数据,就可以运用类似的原理训练出可以自动写代码的Codex(事实上Codex就是GPT-3的后代),显然,存放了无数优秀代码的GitHub就是一个现成的语料库。
7月,OpenAI和GitHub合作开发了GitHub Copilot,这个功能可帮助程序员自动改进或更新软件,在这个基础上,借助GitHub上数十亿行代码,Codex最终获得了将英语翻译成代码的能力。
在对不同语言模型的编码挑战能力的专门测试APPS中,120亿参数版的Codex取得了远超GPT-Neo和GPT-J的能力,能够对28.81%的问题给出正确答案。
测试很完美,实用性也不错,缺点也存在
无论是演示一个‘接球’游戏,还是一个‘飞船’游戏,Codex都能完成很好。
比如官方演示的‘飞船’游戏,在调整火箭速度时,演示人员告诉Codex:
‘when the rocket is clicked, temporarily display some text saying ‘fire thruster! ' in white on the current location——and temporarily speed up by 4x for 0.25 second’
(“当火箭被点击,暂时显示一些白色文字说“火焰推进器!”,并暂时加速4倍,持续0.25秒”)
Codex就会自动将相关代码写出来。
那么Codex对于一些现实任务的解决能力如何呢?Thomas Smith在Codex推出一周后应邀进行了Beta测试,他测试了一些现实任务。
比如一个在加州非常接地气的项目:根据邮编获取空气质量指数(Air Quality Index),判断是否存在山火。
他给Codex的任务描述是:
#Use the airnow API to to find and print the current AQI for zip code 94549
Codex给出的代码是:
import urllib2
import json
api_key = "E722A2CA-9D39–4CDD-943B-8BAD9A298E0B"
url ="http://www.airnowapi.org/aq/observation/zipCode/current/?format=application/json&zipCode=94549&distance=25&API_KEY="+ api_key
request = urllib2.Request(url)
response = urllib2.urlopen(request)
data = json.load(response)
print data[0]['AQI']
完成地非常好!Codex根据文本描述中提到的Airnow API,找出了API的URL,还提供了必要的参数,以获得输出。并且,还正确地判断出了 AQI 的含义,并编写了一个URL字符串,接受邮编94595作为输入,查找该邮编的当前情况,并返回AQI。
Thomas Smith还测试了另一个例子,指示 Codex 获取当前的比特币价格,然后格式化输出,任务描述是:
Get the current price of Bitcoin using Coindesk’sAPI and display it as giant red letters in the middle of a webpage.
Codex生成了相应的JavaScript代码,还还生成了一个简单的网站,精确地实现了要求的功能:
除此之外,Codex还能完成代码翻译、编写代码文档等其他枯燥但重要的编码工作,这些可以在将来帮助程序员做很多繁琐的事项。
那程序员是否需要担心Codex会抢走他们的工作呢?目前来看,这样的担忧是没有必要的,Thomas表示,Codex目前还不完美。
第一,根据 OpenAI 的说法,当前版本的Codex第一次就能编写完美代码的成功;率只有37%。要让该系统真正起作用,依然需要人类程序员去审查代码,评测其输出是否正常工作,并进行 Codex 做不到的微调和更新。
第二,编写代码只是编程工作中的一小部分,程序员最重要的工作是理解问题,并将其转换成计算机能理解的格式。定义问题、归约到最基本的组成部分,再将这些组成部分翻译成指令,这些工作占据了经验丰富的程序员的大部分时间。
另外,OpenAI也指出Codex存在过度依赖生成的输出的问题,并且大规模参数量还会产生大量碳足迹。
用Codex自动写一个AI,效果如何?
最后,看看大佬用Codex怎么套娃吧!
YouTube博主@Edan Meyer用Codex创造了一个手写数字分类器,整个过程只是给Codex输入了四句话。
下载数据集 用Pytorch实现一个前馈神经网络 训练模型 测试模型
https://www.youtube.com/watch?v=Zm9B-DvwOgw&t=248s
https://openai.com/blog/openai-codex/
https://www.youtube.com/watch?v=6yJWMuUWcxY
https://www.youtube.com/watch?v=FC962DmVfSU
https://www.pcgamer.com/this-ai-tries-to-code-whatever-you-tell-it-to-even-videogames/
https://betterprogramming.pub/i-beta-tested-openais-codex-and-the-results-are-spooky-good-e282a1874c79