DeepMind發布AI編程系統AlphaCode,可達到競賽級編程水平

人工智能AI)的飛速發展有目共睹,如今,AI 在下圍棋、玩星際爭霸等遊戲、生成藝術作品、甚至是優化微芯片的架構等方面都達到或超過了人類的水平。接下來,AI 會在編程方面也超過人類嗎?


事實上,自動化編程已經不是一個新鮮話題。今天已經有一些功能強大的大規模語言模型,在網頁設計等簡單的編程任務中,展現出了在代碼生成方面的潛力。然而,要想讓 AI 通過編程來解決那些較為複雜且隱晦的問題,仍有很長的路要走。


而最近來自DeepMind 開發的名為 AlphaCode 的系統,可通過基於轉換器的語言模型來生成代碼,並且針對那些需要深度推理的編程問題,能夠創建新穎的解決方案。在 10 場有 5000 多名人類參與者的競賽級別的編程比賽中,AlphaCode 排名位於前 54.3%。也就是說,其已達到了平均人類水平。


近日,相關論文以《可實現完成競賽級別的代碼生成任務的 AlphaCode》(Competition-level code generation with AlphaCode)為題發表在 Science,並成為當期封面論文[1]。



圖 | AlphaCode 相關論文(來源:Science)


讓 AI 實現編程有着許多挑戰,尤其是即使對於同一個問題,可提供的解決方案也可能看起來截然不同,而如何讓 AI 對部分正確或不正確的程序進行判斷,是一項艱巨的挑戰。


此前已經有一些可完成簡單編程任務的 AI 系統,例如 Codex 可以完成簡短的敘述總結等任務。但是,當真正面對複雜的編程問題,這些 AI 系統便顯得捉襟見肘。尤其是如何讓 AI 編程,使用 C++ 或 Python 等通用編程語言來生成整個程序,來解決諸如較長的自然語言描述任務等,在這方面一直進展不多。


為解決這一問題,DeepMind 為 AlphaCode 設置了以下三個關鍵組件,使其得以在代碼生成任務中實現可以與人類競爭的水平:一是選用廣泛且簡潔的競爭性編程數據集,以便進行訓練和評估;二是採用大型、且具備高效採樣能力的架構;三是通過大規模模型抽樣來縮小探索空間,並根據程序行為對一小組提交內容進行過濾。


AlphaCode 訓練時所選擇的數據集,是競爭性的編程數據集。該數據集也正是這些複雜編程問題的代表集,AI 不僅需要理解複雜的自然語言描述,對以前未見過的問題進行推理,還要掌握範圍廣泛的算法和數據結構,並能精確地實施跨越數百行的解決方案。此外,由於每年都有全球數十萬編程者廣泛參與,因此競爭性編程問題集可以更好地確保針對問題找到最佳解決捷徑,從而提供更好的判別基準。



圖 | AlphaCode 系統的概述(來源:arXiv)


如上圖所示,是 AlphaCode 系統的概述,簡單來說系統工作主要分為以下四個過程:


首先,系統會在有着標準語言建模目標的 GitHub 代碼集上,對基於轉換器的語言模型進行預訓練。這樣模型便可實現合理地將問題在人類的編碼空間定位,從而大大減少了問題搜索範圍。


然後,系統以 GOLD 作為訓練目標,在競爭性編程數據集上進行模型的微調。這可以進一步將搜索空間縮小,並可以通過預訓練來補償少量的競爭性編程數據。


接下來,系統會為每個問題生成大量樣本。


最後,系統對這些樣本進行過濾,並獲得數量不超過 10 個的一小組候選樣本提交。然後通過使用示例測試和聚類等,對所選樣本進行隱藏的測試評估,然後根據程序的反饋來選擇樣本。


可以看出 AlphaCode 中有個獨特的設置,就是在大規模採樣後進行過濾,這大大提高了問題解決率,能夠促進更快捷、高效的採樣。


為了對 AlphaCode 的性能進行評估,研究人員將其在著名的編程競賽 Codeforces 和 CodeContests 平台上進行了評估。



圖 | AlphaCode 系統在 10 次 Codeforces 中的排名(越低越好)(來源:arXiv)


經過評估,AlphaCode 系統在 10 次 Codeforces 競賽中,平均排名可達到前 54.3%,也就是已經與平均人類編程者的水平。


概括來說,此次人工智能輔助編碼平台的開發,會顯着提高程序員的生產力。同期Science 評論中寫道:“它代表了機器學習模型向前邁出的實質性一步,該模型可以通過合成計算機程序來解決一些挑戰性問題。”另據悉,論文作者告訴媒體,雖然 AlphaCode 是從 0% 到 30% 的重要一步,但仍有很多工作要做,下一步其將繼續完善 AlphaCode。


參考資料

1.Yujia Li et al. Science 378, 6624,1092-1097(2022).DOI: 10.1126/science.abq1158