新聞 > 科教 > 正文

改變世界的重磅產品! DeepMind 推出 AlphaCode

最近,世界著名的編程競賽網站Codeforces發布了一篇名為《AlphaCode(DeepMind) Solves Programming Problems on CodeForce》的文章,將 AlphaCode(阿爾法扣)帶入人們的視野,更讓 DeepMind再次霸榜各大媒體的頭條,這也是 DeepMind在2015年成功推出阿爾法狗(AlphaGo),擊敗人類最強圍棋選手之後,再次推出改變世界的重榜產品。

最近,世界著名的編程競賽網站Codeforces發布了一篇名為《AlphaCode(DeepMind) Solves Programming Problems on CodeForce》的文章,將 AlphaCode(阿爾法扣)帶入人們的視野,更讓 DeepMind再次霸榜各大媒體的頭條,這也是 DeepMind在2015年成功推出阿爾法狗(AlphaGo),擊敗人類最強圍棋選手之後,再次推出改變世界的重榜產品。

擊敗一半人類參賽程式設計師的 AlphaCode

據 DeepMind官網介紹,AlphaCode是由谷歌在英國的 AI部門發明的一種人工智慧工具,該工具可以像真實參加競賽的程式設計師一樣,參加各大編程競賽,並且還可以結合批判性思維、邏輯、算法、編碼和自然語言理解的新問題來提供解決方案。在正式登場之前, DeepMind已在編程競賽中測試了 AlphaCode的真實「水平」。

Codeforces每周都會舉辦一到兩次算法比賽,並且具有獨特的天梯排名上分系統,AlphaCode默默參加 Codeforces最近舉行的10場編程比賽之後,獲得了超過了一半人類程式設計師的好成績,最終排名前54.3%,Elo評分1238。

就連 Codeforces創始人 Mikhail Mirzayanov也親自下場為 AlphaCode打Call,除了一些 Codeforces的表現遠超預期等客套話,Mirzayanov的一個重要觀點就是 AlphaCode似乎表現出了比較強的創造性,這點很不尋常。

這次 DeepMind給 AlphaCode選擇的編程網站 Codeforces很有必要向大家介紹一下的,與目前日趨商業化的力扣(LeetCode)不同,Codeforces最大的特點就是代碼和題解的公開。所有人都可以隨意查看其它大牛的代碼,非常符合開源的調性,而且 Codeforces題目一般都不是那種傳統科班的考察項目,往往會在題目中設置比較多的思維陷阱,而對於數據結構以及經典算法的相對沒有那麼側重。

突破輔助編程 AlphaCode還有多遠的路要走?

在去年的8月底,微軟旗下的兩個大牌機構 OpenAI與 GitHub聯合,推出了基於 AI技術的自動輔助編程工具 Copilot,並基於 VS Code的 MarketPlace發布了預覽版,結果預覽版一經問世就取得了驚世效果。

Copilot基於 GPT-3模型,是針對編程任務適配版本,它以部分完成的代碼及注釋作為輸入,輸出完整的代碼建議。Copilot的官方網站將其定位為「程式設計師結對編程實踐中的AI對手」,筆者看到不少開始使用 Copilot的網友都提到,大多數情況下只要一個簡單的函數簽名,Copilot就可以完成整個函數的代碼編寫好,甚至有時只需要一句簡單的注釋,Copilot就能把整個功能模塊全部搞定。

雖然 Copilot和 AlphaCode使用的技術類似,從本質上講 Copilot是定位於輔助編程的,不過輔助編程技術在前年 GPT-3剛剛推出時就已經比較成熟,比如由界面需求描述,直接轉化成代碼的 debuild.co,但這些輔助編程工具本質上都是對人類已有的實現進行模仿甚至是照搬。

這些輔助編程工具與 AlphaCode AI程式設計師的定位是完全不同的,阿爾法扣這位 AI程式設計師還需要不斷完善,但它的出現卻提供了一個關於 AI編程未來發展的思路,當 AI學到了足夠多的代碼之後,是否會展示出相應的創造力,而 AI的這種創造力是否意味著程式設計師群體將在未來會被 AI取代,這些都引發了筆者深深的思考。

讀書破萬卷,下筆如有神,代碼學多了,是否能質變?

從 DeepMind官方博客上看, AlphaCode的訓練集還是基於 GitHub和CodeForce建立的,這與阿爾法狗初始態下也是基於人類棋譜構建訓練數據是比較一致的。

我們知道初代的阿爾法狗還沒有那麼高的統治力,在拋棄人類棋譜,兩隻阿爾法狗對局,並不斷進化之後,人類棋手在面對AI時才會顯得那麼無能為力。

不過好消息是圍棋的規則是長時間不變的,但是在編程方面技術的進步卻是日新月異,也就是 AlphaCode所面對的數據集是要動態調整的,這可能使兩個 AlphaCode相互結對編程,並取得質變的可能性並沒有想像當中那麼大,因此 AlphaCode想達到高級程式設計師的水平在短期看來不太可能,不過隨著 AlphaCode能夠普遍達到中級程式設計師的水平之後,IT行業35歲即失業的現象恐怕會更加嚴重,因為 AI程式設計師不能獨立工作,而帶領 AI編程團隊需要更加精深的技術實力而非管理能力,這可能會給很多走上技術管理崗的程式設計師帶來一定壓力。

跨越之前,問題不少

雖然 AI編程的發展已經形成趨勢,但從 AlphaCode的工作原理等方面分析,在 AlphaCode升級成為貝塔扣,伽馬扣之前,還有很多坑要老老實實的填平:

錯誤解答,反而拖後腿:據 DeepMind官方博客顯示 Alph aCode首先要進行的工作是通過 NLP系統,試圖理解需求的意思,但是與人類的理解不同, Alph aCode的理解的語義雖然大部分時候有效,但也存在一定完全理解不了的可能性,如果你所給出題目的問題描述完全不符合Codeforce之前題目文風的話,那麼也很有可能得到一些完全沒有意義的代碼,也就是說在 Alph aCode能正常給出答案時,它的效率可能比人類程式設計師高得多,但一旦 Alph aCode不能工作,那麼對不起它錯的也會比一般人類程式設計師離譜,因此 Alph aCode至少要搭建一名初級程式設計師幫助發現這些顯爾易見的錯誤,並遞交給高級程式設計師給出正確答案。

使用 GitHub訓練 Alph aCode到底侵不侵權?正如前文所說是基於GitHub和 Codeforce兩大編程網絡上的公開代碼進行的模型訓練,而且無論是微軟的 Codplite還是 Deepmind的 Alph aCode,都沒有按照不同的開源許可證對於代碼進行區分對待。

那麼如果未來 Alph aCode用於商業用途,那麼用那些已經明確不允許用於商業用途的代碼來訓練 Alph aCode的AI模型是否涉嫌侵權?針對這個問題網上爭論的聲音很大,筆者認為如果 AI最終給出的建議代碼與原先訓練集中的代碼一模一樣的話,那麼這種情況肯定會涉嫌侵權,但建議代碼與原訓練代碼的相似度如何判斷才是關鍵所在,當然截止目前這還依舊是個開放性問題,業界尚未形成共識。

引用老舊類庫代碼,增加安全風險:正如前文所言, Alph aCode的訓練集是 GitHub和 Codeforce上已經存在的代碼,從實操來講,Deepmind很難對如此大量的代碼進行有效標註,因此 Alph aCode生成的代碼,即使有效且能夠正常運行,也不能代表這些代碼沒有安全漏洞,這樣的特性就使得開發人員去全面檢查 AI生成的代碼變得非常重要。

但無論如何未來都將到來,面對會編程的 AI程式設計師,我們人類程式設計師們只有順勢而為,快速找到屬於自己的生態位才能力於不敗之地。

責任編輯: 李韻  來源:CSDN博文 轉載請註明作者、出處並保持完整。

本文網址:https://tw.aboluowang.com/2022/0204/1704397.html