sponsored links

清華博士後用10分鐘講解AlphaCode背後的技術原理,原來程式設計師不是那麼容易被取代的

清華博士後用10分鐘講解AlphaCode背後的技術原理,原來程式設計師不是那麼容易被取代的


AI科技評論報道

不久前,DeepMind 的團隊釋出了一個可以自動生成競賽級程式碼的人工智慧系統——AlphaCode,號稱「媲美普通程式設計師」,一經發表就在國內外的AI圈裡引起了巨大轟動。

清華博士後用10分鐘講解AlphaCode背後的技術原理,原來程式設計師不是那麼容易被取代的


-論文地址:https://storage.googleapis.com/deepmind-media/AlphaCode/competition_level_code_generation_with_alphacode.pdf

-資料集:https://github.com/deepmind/code_contests

根據DeepMind的部落格介紹,AlphaCode 在號稱「全球最強演算法平臺」Codeforces 上的 5,000 名使用者解決的 10 項挑戰中進行了測試。AlphaCode能夠以與人類完全相同的格式在這10項挑戰中自動輸入程式碼,生成大量可能的答案,然後像人類程式設計師一樣透過執行程式碼和檢查篩選出可行答案,最終在人類程式設計師中取得了排名前 54%的好成績。

也就是說,AlphaCode的程式碼能力媲美在Codeforces上參加過測試的幾乎一半程式設計師(2300名)。按照一個初級程式設計師月薪2萬的演算法,AlphaCode有望每年替全球人類資本家省下5.52億的人力成本,使一半程式設計師失業……

不過,DeepMind團隊當時也明確指出了:AlphaCode目前只適用於競爭類程式設計比賽。

不可否認,這也是繼DeepMind釋出Alpha Go、AlphaZero與AlphaFold之後的又一研究突破,極大地增加了其Alpha系列的傳奇色彩。但與該系列的其他工作(如AlphaGo打敗世界圍棋冠軍)相比,AlphaCode的效能似乎並不突出,

目前正在清華大學朱軍門下擔任博士後研究員的Tea Pearce對AlphaCode的技術原理十分感興趣,對DeepMind的這篇31頁論文進行仔細閱讀後,製作了一個短影片發表在油管上,從系統概述、測試階段、資料集的預訓練與微調、Transformer模型的訓練過程與Transformer架構等維度對AlphaCode的細節進行了較為詳細的講解。

影片地址:https://www.youtube.com/watch?v=YjsoN5aJChA

與OpenAI之前開發的GPT-3一樣,AlphaCode也是基於Transformer模型,只不過前者側重於言生成,後者則強調對順序文字(如程式碼)的解析。

下面AI科技評論對該短影片進行了簡單整理:

1

AlphaCode的程式碼問題

當前,AlphaCode的目標編碼問題集中為特定的競賽型別,在諸如Codeforces的網站上參加編碼挑戰,其中,這些挑戰包含對一個問題的簡短描述與帶有測試案例的示例,為挑戰者提供了能與正確預期輸出相匹配的輸入。

簡而言之,這些挑戰的目標就是編寫一些程式碼,為示例的測試案例與一組隱藏測試案例提供符合預期的輸出。如果你的程式碼通過了所有測試,那麼你就解決了這個問題。

根據DeepMind的介紹,AlphaCode在Codeforces網站所舉辦的編碼挑戰中取得了與普通使用者相媲美的成功率。

2

AlphaCode系統概述

那麼,AlphaCode的工作原理究竟是怎樣的呢?

在DeepMind團隊所發表的“Competition-Level Code Generation with AlphaCode”一文中,他們給出了一個高階的概要圖(如下)。如圖所示,AlphaCode的核心元件仍然是Transformer語言模型,其餘單獨元件也是舊的。

清華博士後用10分鐘講解AlphaCode背後的技術原理,原來程式設計師不是那麼容易被取代的


圖注:AlphaCode的系統圖

3

使用的協議

我們先看看AlphaCode在測試時是如何工作的。

首先要知道的一點是,在解決寫程式碼的問題時,AlphaCode使用了一個非常具體的協議(protocol),且該協議決定了該系統的管道。根據論文顯示,DeepMind團隊獲得了使用盡可能多的示例測試案例的許可權,因為這些測試案例也包含在該問題內。

不過,他們確實將自己的測試限制在了10個提交的隱藏測試傳送案例內。

4

測試階段的AlphaCode

AlphaCode的測試時間分為三個獨立的階段。

他們首先使用了一個大規模的Transformer模型,將問題描述示例測試和問題的一些元資料作為輸入,然後從模型中取樣,生成大量潛在的解決方案。之所以先生成大量的潛在解決方案,是因為大多數指令碼無法為某些人、甚至編譯器所編譯。

因此,在第二與第三階段,他們就主要針對這100萬個潛在程式碼指令碼作「減法」,選出他們認為在給定協議的前提下可能有用的10個方案。而他們的做法也很簡單,就是在示例測試案例中測試完這100萬個程式碼指令碼,然後將無法透過測試的大約99%個指令碼排除掉,這就將指令碼的數量減少到了千位數。

不過,協議要求其還要繼續縮減到10個解決方案。於是,他們又採取了一個非常聰明的方法:

他們使用了第二個Transformer模型將問題描述作為輸入,但不是嘗試生成程式碼來解決問題,而是用Transformer生成測試案例輸入,併為每個問題抽樣50個測試案例輸入。現在,他們不嘗試生成輸入與輸出對,而只是試圖產生一些與問題相關的現實輸入。所以,AlphaCode可能必須根據問題所在,生成字串、二進位制數或數字列表等。

清華博士後用10分鐘講解AlphaCode背後的技術原理,原來程式設計師不是那麼容易被取代的


圖注:Tim Pearce對AlphaCode在測試時的三個階段進行講解

為什麼這是個好主意?因為他們認為如果兩個指令碼對所有 50 個生成的測試所返回的答案是相同的,那麼它們就可能使用相同的演算法,並且可能不想浪費兩個提交來嘗試這兩個指令碼。

所以,他們在這 50 個生成的輸入上編譯並執行大約 1000 個指令碼。然後,他們根據這 50 個虛構輸入的輸出對指令碼進行聚類。接著,他們會從每個聚類中選擇一個示例指令碼。如果十個指令碼中的任何一個通過了所有隱藏測試,那麼這些指令碼就是最終的10個指令碼,他們也就成功地解決了編碼問題,否則就是失敗。這就是 AlphaCode 在測試時的工作方式。

清華博士後用10分鐘講解AlphaCode背後的技術原理,原來程式設計師不是那麼容易被取代的


這其中涉及到對Transformer模型的訓練,可以看下文。

5

對資料集進行預訓練與微調

AlphaCode 使用的是當今深度學習中相當標準的預訓練微調過程。

這裡有兩個資料集:第一個資料集是由各種程式語言組成的公共 Github 儲存庫,包含 715 GB 海量程式碼,用於預訓練階段,目的是讓Transformer學習一些非常通用的知識,比如程式碼結構和語法。

清華博士後用10分鐘講解AlphaCode背後的技術原理,原來程式設計師不是那麼容易被取代的


第二個資料集要小得多,只服務於 AlphaCode 的目標,用於微調。該資料集是從一些編碼挑戰網站上抓取的,包括Codeforces。他們稍後會在資料集上進行測試,包含問題描述測試用例和人工編寫的解決方案。這些是資料集。現在,我們該怎麼處理它們?

清華博士後用10分鐘講解AlphaCode背後的技術原理,原來程式設計師不是那麼容易被取代的


6

Transformer模型的訓練過程

首先說一下預訓練階段。

他們抓取了一些 github 程式碼,並隨機選擇所謂的樞軸點(pivot point)。

清華博士後用10分鐘講解AlphaCode背後的技術原理,原來程式設計師不是那麼容易被取代的


樞軸點之前的所有內容都會被輸入編碼器,而解碼器的目標是重建樞軸點以下的程式碼。

清華博士後用10分鐘講解AlphaCode背後的技術原理,原來程式設計師不是那麼容易被取代的


編碼器僅輸出程式碼的向量表示,可用於整個解碼過程。

解碼器以自迴歸方式執行:首先預測程式碼的第一個標記。然後,損失函式只是預測的 softmax 輸出和真實令牌(token)之間的交叉熵。第一個真正的令牌會成為解碼器的輸入,然後預測第二個令牌,並且當要求解碼器預測程式碼令牌的意外結束時,重複此過程直到程式碼結束。

現在,這些損失透過解碼器和編碼器反向傳播,儘管事實證明:只為編碼器新增第二個損失很重要。

這被稱為掩碼語言,可以高效地建模損失。將輸入到編碼器中的一些令牌清空。作為一種輔助任務,編碼器嘗試預測哪個令牌被遮蔽。一旦預訓練任務完成,我們就進入微調任務。

在這裡,我們將問題描述的元資料和示例輸入投餵到編碼器中,並嘗試使用解碼器生成人工編寫的程式碼。這時,你可以看到這與編碼器-解碼器架構強制執行的結構非常自然地吻合,損失與預訓練任務完全相同。

還有一個生成測試輸入的Transformer。這也是從同一個 github 預訓練任務初始化而來的,但它是經過微調來生成測試輸入,而不是生成程式碼。

7

Transformer架構

DeepMind 團隊對各種大小的模型進行了實驗。經實驗,較大規模的模型往往表現更好。編碼器和解碼器本身由多頭注意力層組成,且這些層非常標準。

清華博士後用10分鐘講解AlphaCode背後的技術原理,原來程式設計師不是那麼容易被取代的


8

其他技巧

該論文有許多進步之處。在這裡,我不打算全部介紹,只想強調一個我認為很酷炫的點,就是標籤和評級增強,以及問題描述。

清華博士後用10分鐘講解AlphaCode背後的技術原理,原來程式設計師不是那麼容易被取代的


我們總是將元資料作為Transformer的輸入。這包括問題的程式語言難度等級。一些問題的標籤與解決方案在訓練時是否正確?他們顯然知道這些欄位的值是什麼,但是在測試時他們並不知道什麼是酷炫的,那就是他們實際上可以在測試時將不同的內容輸入到這些欄位中以影響生成的程式碼。例如,你可以控制系統將生成的程式語言,甚至影響這種解決方案。

它嘗試生成比如是否嘗試動態程式設計方法或進行詳盡搜尋的答案。他們在測試時發現有幫助的是,當他們對 100 萬個解決方案的初始池進行抽樣時,是將其中的許多欄位隨機化。透過在這個初始池中擁有更多的多樣性,其中一個程式碼指令碼更有可能是正確的。

9

結語

以上就是 Tea Pearce 對 AlphaCode 工作原理的講解。

從AlphaCode的工作出發,他談到自己的思考:為什麼DeepMind團隊在這些編碼問題上實現的效能水平比在圍棋(AlphaGo)或星際爭霸(AlphaZero)遊戲中的超人水平系統要低得多呢?

Tea Pearce的分析是,從自然語言描述中編寫程式碼本質上就比玩遊戲要困難得多,但這也可能是因為遊戲中可用的資料少得多。你可以根據需要模擬儘可能多的資料,而編碼問題的數量是有限的。

最後,Tea Pearce丟擲問題:AI寫程式碼之所以難的原因可能是什麼?在未來,AI的程式碼水平要怎樣才能超越人類最優水平?

歡迎在評論區留言討論。

參考連結:

1. https://www.youtube.com/watch?v=YjsoN5aJChA

2. https://www.reddit.com/r/MachineLearning/comments/slwh69/p_alphacode_explained/

3. https://storage.googleapis.com/deepmind-media/AlphaCode/competition_level_code_generation_with_alphacode.pdf

4. https://www.deepmind.com/blog/article/Competitive-programming-with-AlphaCode

清華博士後用10分鐘講解AlphaCode背後的技術原理,原來程式設計師不是那麼容易被取代的


雷峰網雷峰網

分類: 財經
時間: 2022-02-10

相關文章

日本養老基金掉入恆大深坑,快要虧完了?日本網友:恆大還錢

日本養老基金掉入恆大深坑,快要虧完了?日本網友:恆大還錢
近日,恆大集團負債高達2萬多億的新聞在網路上鬧得沸沸揚揚.在各種負面因素影響下,恆大股票暴跌90%.而不久前恆大領導層又跑出來宣佈,恆大2000多億的債券延期兌現.這一系列的騷操作把投資者們看傻了,紛 ...

買了恆大的期房怎麼辦

買了恆大的期房怎麼辦
幸福裡百科詞條:如果房款已經付清全款了,這意味著恆大已經收了全款.但恆大還沒有交房.那麼,沒有網籤備案的,要求網籤,要房產證,如果遭到拒絕,只能趕快起訴. 一般來講,未交房的房子,有四個可能的權利方, ...

揭密:恆大1300億戰略投資者,有人“逃出生天”,有人非死即傷

揭密:恆大1300億戰略投資者,有人“逃出生天”,有人非死即傷
自從恆大進入前所未有的困局以來,已經吸引了太多人的目光. 圍繞著恆大生意的上下游,包括拿著無法兌付的商票的供應商,付了房款交樓無望的準業主,還有恆大金融的出借人,透過各種渠道發聲,形成了一個喧囂嘈雜的 ...

從恆大之困,看房市未來發展趨勢

從恆大之困,看房市未來發展趨勢
恆大最近很難.導致這個困難的最根本原因是銀行.銀行對於購房者的按揭放款卡得很緊,現在基本超過6個月了,這直接導致房產行業資金鍊斷流.年初國家約談了一個又一個城市,透過約談透過銀行所釋放出來的訊號就是房 ...

假如恆大倒了 購買恆大房產的人會怎麼樣

假如恆大倒了 購買恆大房產的人會怎麼樣
現在恆大很難,恆大房產只是整個恆大鏈條的一個環節,和恆大購房者比起來,在恆大買了金融理財產品的人可能更揪心.雖然許家印信誓旦旦,寧可自己一無所有,也不讓恆大的投資者一無所有.但是結果真不好說. 那麼恆 ...

恆大“危機前夜”,杭州業主驚險一幕:拖延2年半拿到房產證

恆大“危機前夜”,杭州業主驚險一幕:拖延2年半拿到房產證
文 | <地產小王子>主編 蘇陽 01 "激動!終於拿到了房產證,心裡的大石頭落地了!" 小佳同學到現在還能回憶起,3個月前拿到房子不動產權證書的心情.彷彿<少年 ...

拆解恆大2萬億債務:始於16年與監管背道而馳 許家印十年套現500億

拆解恆大2萬億債務:始於16年與監管背道而馳 許家印十年套現500億
鳳凰網<風暴眼>出品 作者:張三丰 文超 朱楊 核心提示: 1 讓恆大陷入危機的債務擴張之路,始於2016年:2016年恆大債務規模突破萬億,驟增5000多億:而正是這一年監管政策開始了去 ...

恆大破產帶來的後果你敢想象嗎?恆大挺住

恆大破產帶來的後果你敢想象嗎?恆大挺住
目前對恆大來說,資金壓力,負債繁重,已成為群眾熟悉的話題. 顯然這不可能是外界傳說的,恆大不只僅是負債過高,而是事實上的高負債運營. 很多網友熱議:假設恆大地產真的倒下了,可能招致的最嚴重結果是什麼? ...

人民銀行、銀保監會約談恆大集團!小米要接盤恆大汽車?恆大發布公告回應

人民銀行、銀保監會約談恆大集團!小米要接盤恆大汽車?恆大發布公告回應
一波未平一波又起,恆大集團近期"煩惱"纏身,陷多事之"秋". 人民銀行.銀保監會約談恆大集團 2021年8月19日,人民銀行.銀保監會相關部門負責同志約談恆大集 ...

許家印比賈躍亭玩得更大?恆大很窮,但許家印很富有

許家印比賈躍亭玩得更大?恆大很窮,但許家印很富有
賈躍亭出走美國已經4年多了,至今仍然有資產被執行.據瞭解,賈躍亭累計被執行金額達94.8億元,接近100億元.賈躍亭到底還欠多少錢,沒有一個具體數字,但前段時間,在他創立的汽車公司FF上市時,賈躍亭表 ...

恆大是如何欠下1.57億負債的
恆大集團陷入如今牆倒眾人推的地步,主要是資金鍊問題.去年開始,因為三道紅線出現,恆大的資金就開始緊張了.但今年以來可謂問題纏身,先是有銀行向法院申請凍結恆大資產:接著很多地方恆大在建樓盤出現停工,為了 ...

過去十年,許老闆家族從恆大分紅多少錢?

過去十年,許老闆家族從恆大分紅多少錢?
過去十年,國內房地產公司的幾家龍頭企業中,恆大每年現金分紅比例一直高於其他幾家公司,從2013年以來分紅率一直在50%左右,而近十年保利.融創.碧桂園.萬科平均現金分紅比例僅分別為26%.20%.33 ...

記者:數國腳微信詢問恆大目前情況,足協出面安撫其情緒
虎撲09月22日訊 據記者裴力報道,由於長期封閉訓練,國足球員正逐漸進入到一個心理疲勞期,廣州隊面臨的生存危機,更讓來自廣州隊的7名國腳為自己的前途和命運感到擔心. 相比其他國腳,來自廣州隊的7名國腳 ...

恆大集團:恆大財富已完成首期10%兌付,款項已發放相應投資人賬戶
9月30日晚間,恆大集團在官網公告稱,根據此前公佈的<恆大財富投資產品兌付方案>,針對9月份到期的投資產品,旗下恆大金融財富管理(深圳)有限公司已於9月30日完成首期10%的兌付,相關款項 ...

恆大6折的房子現在還能買嗎

恆大6折的房子現在還能買嗎
‬你還敢買恆大的房子嗎 前段時間,恆大部分樓盤推出6-7折全款買房優惠活動,具體的操作方式是先全款收房,後返還3成購房款,但網籤備案將延後.聽起來是不是很值? 雖然往年的恆大7折買房廣告鋪天蓋地,但往 ...

孫宏斌這次還能拯救恆大?

孫宏斌這次還能拯救恆大?
最近,恆大危機掃蕩了各大財經版面頭條.網上有不少人戲言:只有地產圈享有盛譽的"白衣騎士"-融創孫老闆出手,才能挽恆大狂瀾之既倒. 十來天前,融創半年報業績彙報會的有關情況我仔細研究 ...

歐足壇一夜冷門不斷!10支歐冠勁旅未贏球,4大勁旅遭首敗

歐足壇一夜冷門不斷!10支歐冠勁旅未贏球,4大勁旅遭首敗
昨晚今晨,歐洲五大聯賽進行了多場比賽,結果從始至終冷門不斷,由於連續一週雙賽加上下週中有歐冠比賽導致分心,多支出戰的歐冠豪門都遇到了麻煩,3大領頭羊切爾西.利物浦(並列).皇馬均未贏球,國米.多特蒙德 ...

恆大拋售166億資產,下一步還賣股權!盈利超百億,房地產業務竟虧41億,啥情況?

恆大拋售166億資產,下一步還賣股權!盈利超百億,房地產業務竟虧41億,啥情況?
恆大終於披露了上半年成績單. 8月31日,中國恆大發布半年報,今年上半年實現營業收入2226.9億元,同比下降16.5%:淨利潤104.99億元,同比下降28.87%.其中,房地產開發業務虧損41億元 ...

恆大暴雷,房子還能買嗎?
近期報出五家房企負債過萬億,恆大集團以1.95萬億的數額榮登負債榜榜首.至此,光鮮亮麗的房地產鍋蓋被掀開,鍋裡的螞蟻.臭蟲.蒼蠅.蚊子.豬糞.牛糞等等一下顯現了出來.這讓整個房地產業從百姓眼中的香餑餑 ...

不還錢就退賽!恆大孤注一擲,足協左右為難,受傷的還是中國足球

不還錢就退賽!恆大孤注一擲,足協左右為難,受傷的還是中國足球
從中超8冠和亞冠2冠的亞洲第一豪門,走到現在瀕臨解散,廣州隊(前廣州恆大)的現狀讓廣大球迷感到可惜!但是,根據阿龍盤球的瞭解,其實從恆大集團入主廣州隊開始,就已經註定了這樣的結局,因為廣州隊並沒有自我 ...