首頁(yè)>資訊 >
AlphaCode刷題“卷”走程序員?谷歌編程大牛中肯評(píng)價(jià):經(jīng)常生成無(wú)害但也無(wú)用的代碼 2022-03-17 16:57:08  來(lái)源:36氪

勝負(fù)難料的博弈:當(dāng) DeepMind “AlphaCode”對(duì)陣人類程序員。

最先進(jìn)的 AI 成果,到底能不能解決現(xiàn)實(shí)世界中的編程問(wèn)題?DeepMind 決定找出答案、以全新的視角看待編程工作,同時(shí)探索 AI 的能力邊界。

除了這個(gè)核心問(wèn)題以外,這番嘗試同樣讓我們?cè)凇笆裁纯梢宰詣?dòng)化”、“什么不能自動(dòng)化”以及對(duì)當(dāng)前數(shù)據(jù)集中錯(cuò)誤的理解方面獲益匪淺。

雖然 AI 提供的解決方案并不比人類程序員更好,但這背后隱藏的深遠(yuǎn)意義也許才是最值得我們探究的巨大寶藏。

“前途可期的競(jìng)爭(zhēng)對(duì)手”

總部位于倫敦的 DeepMind,屬于谷歌母集團(tuán) Alphabet 旗下的一家 AI 子公司。憑借著在國(guó)際象棋和圍棋領(lǐng)域的“超人類”表現(xiàn),他們已經(jīng)在 AI 研究中取得載入史冊(cè)的戰(zhàn)績(jī)。不久之前,他們又證明 AI 模型在預(yù)測(cè)蛋白質(zhì)折疊結(jié)構(gòu)方面也能比人類做得更好。

今年 2 月,DeepMind 宣布他們開(kāi)發(fā)出了一套名為 AlphaCode 的系統(tǒng),打算作為 AI 世界的代表競(jìng)逐編程比賽。它將參加編程競(jìng)賽網(wǎng)站 CodeForces 舉辦的十場(chǎng)編程比賽,與單場(chǎng)至少 5000 名人類程序員一決高下。

結(jié)果如何?DeepMind 在一篇博文中提到,AlphaCode“在競(jìng)賽選手里處于中游水平”,“這標(biāo)志著 AI 代碼生態(tài)系統(tǒng)首次在真實(shí)編程競(jìng)賽中具備一定的競(jìng)爭(zhēng)力?!?/p>

DeepMind 還指出,不少企業(yè)在招聘中也會(huì)引用競(jìng)賽中的題目,使用類似的問(wèn)題篩選進(jìn)入面試輪的求職者。

這篇博文還援引 CodeForces 網(wǎng)站創(chuàng)始人 Mike Mirzayanov 的發(fā)言稱,AlphaCode 的表現(xiàn)超出他的預(yù)期。他還補(bǔ)充道,“我剛開(kāi)始也持懷疑態(tài)度,因?yàn)榧词故亲詈?jiǎn)單的競(jìng)賽問(wèn)題也不只是要求實(shí)現(xiàn)算法,更要求參賽者能夠發(fā)明算法(這也是最困難的部分)?!薄癆lphaCode 確實(shí)成為一位前途可期的競(jìng)爭(zhēng)對(duì)手,我急切想要看到它在一路成長(zhǎng)后能達(dá)到怎樣的高度!”

DeepMind 研究人員們?cè)谝黄撐闹谐姓J(rèn),AlphaCode 的出色表現(xiàn)離不開(kāi)海量算力的支持。高性能計(jì)算領(lǐng)域常用的 petaFLOP 單位也稱千萬(wàn)億次,代表每秒執(zhí)行 1 千萬(wàn)億次浮點(diǎn)運(yùn)算。而以 24 小時(shí)為周期按這個(gè)速率不間斷運(yùn)行,那么一天之內(nèi)完成的浮點(diǎn)運(yùn)算量將高達(dá) 86400 千萬(wàn)億次。

“而我們的模型在采樣與訓(xùn)練方面共投入了幾百天,對(duì)應(yīng)的算力消耗可想而知?!?/p>

論文腳注還補(bǔ)充道,負(fù)責(zé)運(yùn)行這項(xiàng)任務(wù)的谷歌數(shù)據(jù)中心“購(gòu)買(mǎi)了等同于電力消耗量的可再生能源?!?/p>

AlphaCode 是怎么編程的?

研究人員在一篇長(zhǎng)達(dá) 73 頁(yè)的論文中解釋了自己的成果(尚未發(fā)表、也未完成同行評(píng)議)。作者們寫(xiě)道,這套系統(tǒng)首先利用公共 GitHub 存儲(chǔ)庫(kù)中的代碼進(jìn)行“預(yù)訓(xùn)練”,具體方式類似于早期 AI 驅(qū)動(dòng)型代碼建議工具 Copilot。(為了避免 Copilot 方法引發(fā)的一些爭(zhēng)議,AlphaCode 特意過(guò)濾了訓(xùn)練數(shù)據(jù)集,專門(mén)選擇許可公開(kāi)發(fā)布的代碼。)

之后,研究人員又使用一套包含競(jìng)爭(zhēng)性編程問(wèn)題、答案以及測(cè)試用例的小型數(shù)據(jù)集對(duì)系統(tǒng)開(kāi)展進(jìn)一步“調(diào)優(yōu)”,其中不少素材就是從 CodeForces 平臺(tái)上直接抓取的。

結(jié)果就是,目前網(wǎng)上發(fā)布的編程競(jìng)賽問(wèn)題和答案數(shù)據(jù)集中存在問(wèn)題。在已經(jīng)通過(guò)測(cè)試用例的程序中,至少有 30% 其實(shí)并不正確。

于是乎,研究人員們建立了一套包含更多測(cè)試用例的數(shù)據(jù)集,希望更嚴(yán)格地控制產(chǎn)出正確性。他們認(rèn)為這將大大減少能通過(guò)測(cè)試,但實(shí)際上并不正確的程序數(shù)據(jù) —— 最終,這一比例從 30% 下降到僅 4%。

DeepMind 在博文中指出,為了做好參與編程挑戰(zhàn)賽的準(zhǔn)備,“我們針對(duì)每個(gè)問(wèn)題創(chuàng)建了大量 C++ 與 Python 程序?!薄爸?,我們把這些答案過(guò)濾、聚類并重排為一套包含 10 個(gè)備選程序的小型集合,專門(mén)用于外部評(píng)估?!?/p>

DeepMind 的博文提到,“必須承認(rèn),現(xiàn)有 AI 系統(tǒng)的能力還不足以在這些比賽中出色解決各項(xiàng)問(wèn)題。大規(guī)模 transformer 模型雖然展現(xiàn)出了生成良好代碼的可能性”,但仍然需要配合“大規(guī)模采樣與過(guò)濾”。

博文解釋道,研究人員的發(fā)現(xiàn)證明了深度學(xué)習(xí)的潛力,看起來(lái)這項(xiàng)技術(shù)有望完成需要批判性思維的任務(wù) —— 具體到這次試驗(yàn),就是以代碼形式為給定問(wèn)題給出解決方案。DeepMind 在博文中將這套系統(tǒng)描述為公司“破解智能”這一重大使命的重要一步,公司網(wǎng)站則把這項(xiàng)使命描述為“開(kāi)發(fā)出更通用、能力更強(qiáng)的問(wèn)題解決系統(tǒng)”,也就是傳說(shuō)中的“通用人工智能”。

博文最后補(bǔ)充道,“我們希望這樣的結(jié)果能夠給競(jìng)爭(zhēng)激烈的編程社區(qū)帶來(lái)啟發(fā)?!?/p>

人類程序員的反應(yīng)

DeepMind 的博文還引用了谷歌軟件工程師、“世界級(jí)”杰出程序員 Petr Mitrichev 的評(píng)論。

AlphaCode 在編程領(lǐng)域取得的進(jìn)展給他留下了深刻印象。Mitrichev 點(diǎn)評(píng)道,“解決競(jìng)爭(zhēng)性編程問(wèn)題是個(gè)極為艱難的挑戰(zhàn),這要求參賽選手擁有良好的編碼技能與創(chuàng)造性的問(wèn)題解決能力。”

Mitrichev 還對(duì) AlphaCode 生成的六個(gè)解決方案做出評(píng)論,指出提交內(nèi)容中包含一些“無(wú)害、但也無(wú)用”的代碼片段。

在其中一項(xiàng)提交中,AlphaCode 聲明了一個(gè)名為 x 的整數(shù)類型變量,但之后卻一次也沒(méi)用過(guò)。在另一項(xiàng)圖遍歷提交中,AlphaCode 上來(lái)就按圖內(nèi)深度對(duì)所有相鄰頂點(diǎn)進(jìn)行了一輪排序,最后證明這個(gè)操作也完全沒(méi)必要。還有一個(gè)需要計(jì)算密集型“暴力”解決的問(wèn)題,AlphaCode 寫(xiě)下太多額外代碼,導(dǎo)致其解決方案的計(jì)算用時(shí)高達(dá)人類選手的 32 倍。

Mitrichev 寫(xiě)道,事實(shí)上,AlphaCode 就是直接實(shí)現(xiàn)了一套大規(guī)模暴力解決方案,幾乎沒(méi)有使用任何調(diào)優(yōu)技巧。

而且這套 AI 系統(tǒng)也跟人類程序員一樣,會(huì)遇上解決不了的問(wèn)題。Mitrichev 從一項(xiàng)提交中看出,如果實(shí)在找不到解決方案,AlphaCode“表現(xiàn)得就像個(gè)絕望的人類程序員?!彼_(kāi)始重復(fù)問(wèn)題中的示例場(chǎng)景,“徒勞地想把示例轉(zhuǎn)化成問(wèn)題的答案。”

“人有時(shí)候也會(huì)這么做,但答案怎么可能就在題干里呢?從這個(gè)角度看,AI 跟人還挺像的?!盇lphaCode 在這場(chǎng)比賽中的表現(xiàn)平平無(wú)奇、乏善可陳。https://t.co/WMq7oHNZ5s

— Hacker News (@newsycombinator) 2022 年 2 月 6 日

那么,AlphaCode 的比賽成績(jī)究竟如何?根據(jù) CodeForce 計(jì)算得出的程序員評(píng)分(使用與棋手排名相同的標(biāo)準(zhǔn) Elo 評(píng)分系統(tǒng)),AlphaCode 的最終成績(jī)?yōu)?1238 分。

但更有趣的是,我們可以用這個(gè)分?jǐn)?shù)跟過(guò)去六個(gè)月以來(lái)參與 CodeForce 競(jìng)賽的所有程序員進(jìn)行對(duì)比。研究人員在論文中指出,AlphaCode 的評(píng)分“在所有用戶中排名前 28%?!?/strong>

但也有人對(duì)這樣的結(jié)果一笑置之。

蒙特利爾麥吉爾大學(xué) AI 研究員、兼職教授 Dzmitry Bahdanau 在推文中提到,CodeForce 中的大部分參與者都是高中生或者大學(xué)生;而且考慮到預(yù)訓(xùn)練 AI 系統(tǒng)背后的超強(qiáng)算力支持,“作答時(shí)間”這個(gè)關(guān)鍵指標(biāo)對(duì) AI 選手的影響其實(shí)很小。

不過(guò)最重要的是,AlphaCode 的作答過(guò)程涉及對(duì)大量 AI 生成代碼進(jìn)行過(guò)濾,從中找到真正能夠解決問(wèn)題的部分。所以換個(gè)角度看,這意味著“AlphaCode 生成的絕大多數(shù)程序都是錯(cuò)的?!?/p>

所以,盡管這確實(shí)是個(gè)很有希望的探索方向,但 Bahdanau 并不覺(jué)得 AlphaCode 算得上是編程里程碑:“它達(dá)不到舉世無(wú)雙的棋手 AlphaGo,或者顛覆了整個(gè)科學(xué)領(lǐng)域的 AlphaFold 那樣的高度。我們還有很多工作要做。

AI 不會(huì)搶走你的開(kāi)發(fā)飯碗

但 AlphaCode 的橫空出世,總不會(huì)毫無(wú)影響吧?在論文最末尾,AlphaCode 的研究人員們寫(xiě)下兩句話,認(rèn)為這種代碼生成能力“有望在系統(tǒng)內(nèi)實(shí)現(xiàn)可遞歸編寫(xiě)與自我改進(jìn)功能,意味著系統(tǒng)可以通過(guò)自我迭代變得越來(lái)越先進(jìn)”。好可怕——此言一出,種種反烏托邦場(chǎng)景已經(jīng)浮現(xiàn)在我們的腦海當(dāng)中。

他們還在論文中提到另一個(gè)恐怖的可能性:“類程序員的供應(yīng)量可能持續(xù)增加,但需求也許將逐漸減少。

好在歷史上的不少先例給我們吃下了定心丸,論文認(rèn)為“以往某些自動(dòng)化編程實(shí)例(例如編譯器和 IDE)只是把程序員推向更高的抽象層級(jí),同時(shí)降低了編程工作的準(zhǔn)入門(mén)檻。”這其實(shí)是好事。

但少數(shù)比較警覺(jué)的程序員已經(jīng)開(kāi)始關(guān)注 AlphaCode 的動(dòng)向。最近,Hacker News 上的一名編程學(xué)生就表示自己出現(xiàn)了“AlphaCode 焦慮癥”,“現(xiàn)在我覺(jué)得自己就像在跟時(shí)間賽跑,特別害怕自己為之付出一切的職業(yè)突然就徹底消失了?!?/p>

面對(duì) CodeForces 發(fā)表的一篇宣稱“未來(lái)已來(lái)”的博文時(shí),一位憂心忡忡的程序員甚至舉起了倒退的大旗,堅(jiān)稱“人類的自動(dòng)化探索應(yīng)該有其限度?!边@位程序員還尖銳地補(bǔ)充道,“DeepMind 那幫負(fù)責(zé)開(kāi)發(fā) AlphaCode 的程序員肯定“以為自己是不可替代的;錯(cuò),他們將是第一批被取代的家伙。”

以上這些人明顯是覺(jué)得 AlphaCode 的表現(xiàn)太強(qiáng)了,但也有人自信滿滿、覺(jué)得這套 AI 系統(tǒng)成績(jī)太差。第一位評(píng)論者的態(tài)度就非常明確,“這 AI 也太菜了?!?/p>

關(guān)鍵詞:

相關(guān)閱讀:
熱點(diǎn)
圖片 圖片