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

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

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

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

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

“前途可期的競爭對手”

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

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

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

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

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

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

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

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

AlphaCode 是怎么編程的?

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

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

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

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

DeepMind 在博文中指出,為了做好參與編程挑戰(zhàn)賽的準(zhǔn)備,“我們針對每個(gè)問題創(chuàng)建了大量 C++ 與 Python 程序?!薄爸螅覀儼堰@些答案過濾、聚類并重排為一套包含 10 個(gè)備選程序的小型集合,專門用于外部評估。”

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

AI 不會搶走你的開發(fā)飯碗

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

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

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

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

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

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

關(guān)鍵詞:

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