彈幕炸了!OpenAI直播大秀語(yǔ)音指揮AI自動(dòng)編程,也就比老羅TNT強(qiáng)億點(diǎn)點(diǎn)
分分鐘給你搞出個(gè)小游戲
金磊 夢(mèng)晨 明敏 發(fā)自 凹非寺
量子位 報(bào)道 | 公眾號(hào) QbitAI
剛剛,OpenAI又玩出了一個(gè)新高度。
只輸入自然語(yǔ)句,AI就自動(dòng)做了個(gè)小游戲!
劃重點(diǎn):不!?用!?你!?編!?程!
來(lái),感受一下這個(gè)feel。
第一步,“小人兒”搞里頭,輸入一句話就能讓它按照方向鍵左右移動(dòng):
Now make it controllable with the left and right arrow keys.

AI在理解了需求之后,自動(dòng)編程,然后小人兒就真的可以左右移動(dòng)了。
第二步,“石頭”搞里頭,同樣輸入一句話,讓它“從天而降”:
Now have it fall from the sky, and wrap around.

第三步,用自然語(yǔ)言簡(jiǎn)單再制定些規(guī)則,若小人兒被石頭砸中則終止游戲。
Constantly check if the person and the boulder overlap at all, and if so, you lose.

最后還讓AI生成結(jié)束提示,其中要包括一句鼓勵(lì)人的話。
AI挑中的是“Try Again!”
當(dāng)然,還有規(guī)則更復(fù)雜的小游戲(例如增加計(jì)分等功能),也可以用同樣的方式,分分鐘生成:

這是魔法吧!現(xiàn)在開發(fā)小游戲都靠“打字”了?!
圍觀直播的觀眾們,也是發(fā)出了同樣的感慨,瞧瞧這滿屏止不住的彈幕:

有網(wǎng)友甚至直呼道:
編程,已經(jīng)變成AI自己的游戲了。

這就是OpenAI重磅發(fā)布的新品——Codex,一個(gè)能自己編程的AI。
AI編程這事并不新鮮了,像GitHub前不久鬧得風(fēng)風(fēng)火火的Copilot,就是其中一個(gè)。
但它背后的技術(shù),其實(shí)還是來(lái)自于OpenAI。
然而這一次,OpenAI給自己的能力升了個(gè)級(jí),來(lái)了個(gè)新版本。
不僅如此,搞一個(gè)小游戲,僅僅是Codex能力的冰山一角罷了。
一起感受一下它更多驚艷的表現(xiàn)吧。
不用打字,直接語(yǔ)音命令它!
給AI打字“提需求”,還是略顯麻煩了一些。
能不能直接說(shuō)話下達(dá)命令呢?
這個(gè)還真可以有!
OpenAI這次與微軟合作出了一個(gè)Word插件,便帶了這種語(yǔ)音控制的功能。
直接對(duì)著AI下命令“把每行開頭的空格去掉”,AI通過(guò)微軟給的接口一頓操作,成功執(zhí)行:

啪的一下,全文就左對(duì)齊了有木有。
而且AI還精準(zhǔn)地理解了命令的含義,那些段與段之間的空行并沒有改動(dòng)。
來(lái)再?gòu)?fù)雜一點(diǎn)的。
給AI下達(dá)“每數(shù)到五行就加粗”命令,也是能輕松hold得住:

這種把任務(wù)吩咐下去,就有“人”給你完成的感覺,是不是很像老員工指揮實(shí)習(xí)生?
總之呢,是比羅永浩前幾年發(fā)布的TNT系統(tǒng)語(yǔ)音辦公要強(qiáng)上那么“億”點(diǎn)點(diǎn)了。
除了官方的演示,這次內(nèi)測(cè)用戶aniakubow,還讓AI表演了通過(guò)152字描述生成一個(gè)網(wǎng)頁(yè)。

可以看出這里Codex是用Javascript操作Document對(duì)象來(lái)生成網(wǎng)頁(yè),可能是訓(xùn)練集里沒有直接的HTML代碼的緣故吧。
最后,除了現(xiàn)場(chǎng)演示外,OpenAI還在Arxiv上發(fā)布了Codex的論文預(yù)印版。
論文中,Codex要面對(duì)的挑戰(zhàn)甚至有刷IOI和ACM難度的競(jìng)賽題!
Codex用對(duì)每道題生成1000種答案這種暴力方法,能做出600多道競(jìng)賽題測(cè)試集中的3.23%,并且通過(guò)全部的測(cè)試用例。
這個(gè)編程題目測(cè)試集是UC伯克利研究人員在5月份剛剛做好的。
當(dāng)時(shí)測(cè)試的GPT-2、GPT-3和開源的GPT-Neo可是在競(jìng)賽難度上全軍覆沒,一道都沒做出來(lái)。
沒想到短短兩個(gè)多月,專為代碼而生的Codex就為前輩們洗刷了恥辱。
Codex的“魔法”,是如何實(shí)現(xiàn)的?
這么炫酷的能力,莫非還是像GPT-3一樣堆數(shù)據(jù),大力出奇跡嗎?
不全是,這次Codex最大的一個(gè)版本是120億參數(shù),比起GPT-3的1750億還是小了很多。
要了解具體情況,還要從它的開發(fā)歷程說(shuō)起。
最早,OpenAI研究人員拿GPT-3做各種試驗(yàn),發(fā)現(xiàn)GPT-3能從Python注釋中生成一些簡(jiǎn)單的代碼。
這可把他們高興壞了,因?yàn)镚PT-3根本沒特意拿代碼訓(xùn)練過(guò),只是看過(guò)一些博客和帖子中零星的代碼片段。
想想GPT-3在自然語(yǔ)言上的出色表現(xiàn),要是專門訓(xùn)練一個(gè)代碼版的GPT-3,那肯定也能再次震驚業(yè)界。
于是,他們找到了GitHub,這個(gè)擁有最多開源代碼的“小伙伴”來(lái)合作。
一開始是拿到了179G的Python代碼,但其中不乏存在一些篇幅太長(zhǎng)的,以及明顯是自動(dòng)生成的那種。
在剔除掉這些“不達(dá)標(biāo)”的代碼后,最后留下的代碼大小為159G。
接下來(lái)當(dāng)然是做預(yù)訓(xùn)練,把這些代碼都喂給AI?(Codex)。
不過(guò)這里有一個(gè)問題:
GitHub上的開源代碼難免會(huì)有Bug,AI學(xué)了一堆有問題的代碼可咋辦?
其實(shí)這倒也好說(shuō),預(yù)訓(xùn)練之后不是還要微調(diào)嘛。
微調(diào)的時(shí)候,全用編程競(jìng)賽里的正確答案,以及PyPI里的靠譜開源代碼就可以了。
最后,120億參數(shù)版的Codex,能對(duì)28.81%的問題給出正確答案。
這個(gè)準(zhǔn)確率超過(guò)之前的開源代碼預(yù)訓(xùn)練模型GPT-Neo和GPT-J,還有基于GPT-2的代碼補(bǔ)全工具TabNine。

這個(gè)成績(jī)雖然不錯(cuò),不過(guò)離能實(shí)際應(yīng)用還是有點(diǎn)遠(yuǎn)了。
不過(guò),這也難不住OpenAI的研究團(tuán)隊(duì)。
他們很快便想到了“突破口”:
人類編程的時(shí)候,不也經(jīng)常先出一個(gè)版本,然后反復(fù)修改bug嘛~
那就讓AI像人一樣反復(fù)修改,改出100個(gè)版本來(lái),從中總能挑出幾個(gè)正確的來(lái)。
用上這種拿“量”堆出來(lái)的方法,Codex的最終成績(jī)是:
77.5%!
強(qiáng),但不完全強(qiáng)
Codex令人驚艷的表現(xiàn),一度讓網(wǎng)友們大呼:
要失業(yè)了要失業(yè)了!
有人直接在公屏上打出:再見了,計(jì)算機(jī)專業(yè)的學(xué)子們。

不過(guò)大家也不必如此擔(dān)心,因?yàn)樵谘菔具^(guò)程中,其實(shí)就出現(xiàn)了翻車的情況。

在輸入“Say Hello World with empathy”后,Codex給出的結(jié)果居然還是“Hello World with empathy”。
這也側(cè)面說(shuō)明了Codex現(xiàn)在還不是完美的。
OpenAI就表示:
即便是參數(shù)達(dá)到120億的Codex 12B,它的能力可能也還不如一位編程剛剛?cè)腴T的學(xué)生。
雖然Codex學(xué)習(xí)上億行代碼,但它更大程度是“記住了”這些代碼,并不是真正意義上的懂編程語(yǔ)言。
而且Codex對(duì)長(zhǎng)字符串的理解也比較困難。
并且隨著字符數(shù)量的增加,Codex的性能表現(xiàn)下降得非常明顯。

在這種情況下,Codex就不能很好地理解用戶的意圖,結(jié)果可想而知,給出的代碼可能就是完全錯(cuò)誤的了。
此外,在理解變量和運(yùn)算較多的注釋時(shí),Codex也會(huì)犯錯(cuò):

在這個(gè)例子中,120億參數(shù)版的Codex,忘記了對(duì)變量w做減法,也沒有返回所有數(shù)字的乘積。
這些對(duì)于還在學(xué)習(xí)編程的新手程序員而言,非常不友好。
而且由于生成的代碼準(zhǔn)確性和正確性都還不能保證,因此在安全問題上也存在一定風(fēng)險(xiǎn)。
不僅如此,OpenAI還表示,Codex會(huì)生成帶有種族歧視的內(nèi)容。
在社會(huì)層面上,OpenAI還提出Codex的出現(xiàn)或許會(huì)沖擊程序員的就業(yè);如果被濫用,還有網(wǎng)絡(luò)犯罪方面的隱患。
最后還有一點(diǎn),就是環(huán)境方面的問題。
畢竟它作為大模型,參數(shù)量的規(guī)模不容小覷。
要不是合作方微軟Azure云買了足夠多的碳排放限度,Codex可能還不能和我們見面呢(手動(dòng)狗頭)。
如果想要試玩的話,OpenAI還準(zhǔn)備了一個(gè)Python編程大賽,在這場(chǎng)比賽中Codex會(huì)作為你的搭檔和你一同解題。

比賽將于北京時(shí)間8月13日凌晨一點(diǎn)開始,就是這時(shí)間對(duì)國(guó)內(nèi)不太友好。
大賽報(bào)名地址:
https://openai.com/blog/openai-codex/
參考鏈接:
[1]https://www.twitch.tv/openai
[2]https://www.youtube.com/watch?v=hP5nOFi5HOw
[3]https://twitter.com/OpenAI/status/1422967522890973185
[4]https://arxiv.org/pdf/2107.03374.pdf



