成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

清華博士后用10分鐘講解AlphaCode背后的技術(shù)原理,原來程序員不是那么容易被取代的!

人工智能 機器學(xué)習(xí) 新聞
AlphaCode的代碼能力媲美在Codeforces上參加過測試的幾乎一半程序員(2300名)。照一個初級程序員月薪2萬的算法,AlphaCode有望每年替全球人類資本家省下5.52億的人力成本,使一半程序員失業(yè)……

本文轉(zhuǎn)自雷鋒網(wǎng),如需轉(zhuǎn)載請至雷鋒網(wǎng)官網(wǎng)申請授權(quán)。

不久前,DeepMind 的團隊發(fā)布了一個可以自動生成競賽級代碼的人工智能系統(tǒng)——AlphaCode,號稱「媲美普通程序員」,一經(jīng)發(fā)表就在國內(nèi)外的AI圈里引起了巨大轟動。 

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

-數(shù)據(jù)集:https://github.com/deepmind/code_contests

根據(jù)DeepMind的博客介紹,AlphaCode 在號稱「全球最強算法平臺」Codeforces 上的 5,000 名用戶解決的 10 項挑戰(zhàn)中進行了測試。AlphaCode能夠以與人類完全相同的格式在這10項挑戰(zhàn)中自動輸入代碼,生成大量可能的答案,然后像人類程序員一樣通過運行代碼和檢查篩選出可行答案,最終在人類程序員中取得了排名前 54%的好成績。

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

不過,DeepMind團隊當(dāng)時也明確指出了:AlphaCode目前只適用于競爭類編程比賽。 

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

目前正在清華大學(xué)朱軍門下?lián)尾┦亢笱芯繂T的Tea Pearce對AlphaCode的技術(shù)原理十分感興趣,對DeepMind的這篇31頁論文進行仔細閱讀后,制作了一個短視頻發(fā)表在油管上,從系統(tǒng)概述、測試階段、數(shù)據(jù)集的預(yù)訓(xùn)練與微調(diào)、Transformer模型的訓(xùn)練過程與Transformer架構(gòu)等維度對AlphaCode的細節(jié)進行了較為詳細的講解。 

視頻地址:https://www.youtube.com/watch?v=YjsoN5aJChA

與OpenAI之前開發(fā)的GPT-3一樣,AlphaCode也是基于Transformer模型,只不過前者側(cè)重于言生成,后者則強調(diào)對順序文本(如代碼)的解析。

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

AlphaCode的代碼問題 

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

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

根據(jù)DeepMind的介紹,AlphaCode在Codeforces網(wǎng)站所舉辦的編碼挑戰(zhàn)中取得了與普通用戶相媲美的成功率。

AlphaCode系統(tǒng)概述

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

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

圖注:AlphaCode的系統(tǒng)圖

使用的協(xié)議 

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

首先要知道的一點是,在解決寫代碼的問題時,AlphaCode使用了一個非常具體的協(xié)議(protocol),且該協(xié)議決定了該系統(tǒng)的管道。根據(jù)論文顯示,DeepMind團隊獲得了使用盡可能多的示例測試案例的權(quán)限,因為這些測試案例也包含在該問題內(nèi)。

不過,他們確實將自己的測試限制在了10個提交的隱藏測試發(fā)送案例內(nèi)。

測試階段的AlphaCode

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

他們首先使用了一個大規(guī)模的Transformer模型,將問題描述示例測試和問題的一些元數(shù)據(jù)作為輸入,然后從模型中取樣,生成大量潛在的解決方案。之所以先生成大量的潛在解決方案,是因為大多數(shù)腳本無法為某些人、甚至編譯器所編譯。

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

不過,協(xié)議要求其還要繼續(xù)縮減到10個解決方案。于是,他們又采取了一個非常聰明的方法:

他們使用了第二個Transformer模型將問題描述作為輸入,但不是嘗試生成代碼來解決問題,而是用Transformer生成測試案例輸入,并為每個問題抽樣50個測試案例輸入。現(xiàn)在,他們不嘗試生成輸入與輸出對,而只是試圖產(chǎn)生一些與問題相關(guān)的現(xiàn)實輸入。所以,AlphaCode可能必須根據(jù)問題所在,生成字符串、二進制數(shù)或數(shù)字列表等。  

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

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

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

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

對數(shù)據(jù)集進行預(yù)訓(xùn)練與微調(diào)

AlphaCode 使用的是當(dāng)今深度學(xué)習(xí)中相當(dāng)標準的預(yù)訓(xùn)練微調(diào)過程。

這里有兩個數(shù)據(jù)集:第一個數(shù)據(jù)集是由各種編程語言組成的公共 Github 存儲庫,包含 715 GB 海量代碼,用于預(yù)訓(xùn)練階段,目的是讓Transformer學(xué)習(xí)一些非常通用的知識,比如代碼結(jié)構(gòu)和語法。

第二個數(shù)據(jù)集要小得多,只服務(wù)于 AlphaCode 的目標,用于微調(diào)。該數(shù)據(jù)集是從一些編碼挑戰(zhàn)網(wǎng)站上抓取的,包括Codeforces。他們稍后會在數(shù)據(jù)集上進行測試,包含問題描述測試用例和人工編寫的解決方案。這些是數(shù)據(jù)集。現(xiàn)在,我們該怎么處理它們?

Transformer模型的訓(xùn)練過程

首先說一下預(yù)訓(xùn)練階段。

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

樞軸點之前的所有內(nèi)容都會被輸入編碼器,而解碼器的目標是重建樞軸點以下的代碼。 

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

解碼器以自回歸方式運行:首先預(yù)測代碼的第一個標記。然后,損失函數(shù)只是預(yù)測的 softmax 輸出和真實令牌(token)之間的交叉熵。第一個真正的令牌會成為解碼器的輸入,然后預(yù)測第二個令牌,并且當(dāng)要求解碼器預(yù)測代碼令牌的意外結(jié)束時,重復(fù)此過程直到代碼結(jié)束。

現(xiàn)在,這些損失通過解碼器和編碼器反向傳播,盡管事實證明:只為編碼器添加第二個損失很重要。

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

在這里,我們將問題描述的元數(shù)據(jù)和示例輸入投喂到編碼器中,并嘗試使用解碼器生成人工編寫的代碼。這時,你可以看到這與編碼器-解碼器架構(gòu)強制執(zhí)行的結(jié)構(gòu)非常自然地吻合,損失與預(yù)訓(xùn)練任務(wù)完全相同。 

還有一個生成測試輸入的Transformer。這也是從同一個 github 預(yù)訓(xùn)練任務(wù)初始化而來的,但它是經(jīng)過微調(diào)來生成測試輸入,而不是生成代碼。

Transformer架構(gòu)

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

其他技巧

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

我們總是將元數(shù)據(jù)作為Transformer的輸入。這包括問題的編程語言難度等級。一些問題的標簽與解決方案在訓(xùn)練時是否正確?他們顯然知道這些字段的值是什么,但是在測試時他們并不知道什么是酷炫的,那就是他們實際上可以在測試時將不同的內(nèi)容輸入到這些字段中以影響生成的代碼。例如,你可以控制系統(tǒng)將生成的編程語言,甚至影響這種解決方案。

它嘗試生成比如是否嘗試動態(tài)編程方法或進行詳盡搜索的答案。他們在測試時發(fā)現(xiàn)有幫助的是,當(dāng)他們對 100 萬個解決方案的初始池進行抽樣時,是將其中的許多字段隨機化。通過在這個初始池中擁有更多的多樣性,其中一個代碼腳本更有可能是正確的。 

結(jié)語

以上就是 Tea Pearce 對 AlphaCode 工作原理的講解。從AlphaCode的工作出發(fā),他談到自己的思考:為什么DeepMind團隊在這些編碼問題上實現(xiàn)的性能水平比在圍棋(AlphaGo)或星際爭霸(AlphaZero)游戲中的超人水平系統(tǒng)要低得多呢? Tea Pearce的分析是,從自然語言描述中編寫代碼本質(zhì)上就比玩游戲要困難得多,但這也可能是因為游戲中可用的數(shù)據(jù)少得多。你可以根據(jù)需要模擬盡可能多的數(shù)據(jù),而編碼問題的數(shù)量是有限的。最后,Tea Pearce拋出問題:AI寫代碼之所以難的原因可能是什么?在未來,AI的代碼水平要怎樣才能超越人類最優(yōu)水平? 

責(zé)任編輯:張燕妮 來源: 雷鋒網(wǎng)
相關(guān)推薦

2012-02-07 10:11:46

程序員

2009-05-21 16:23:23

程序員法則職場

2020-01-07 13:09:39

區(qū)塊鏈比特幣技術(shù)

2015-11-27 08:55:03

培訓(xùn)機構(gòu)程序員

2015-11-26 10:14:08

程序員歧視背后邏輯

2025-03-31 08:15:00

LLM大型語言模型人工智能

2015-12-01 14:33:58

移動·開發(fā)技術(shù)周刊

2020-10-29 08:28:42

Java NIO異步非阻塞

2023-11-23 19:26:43

2018-09-29 16:10:02

編程語言Java程序員

2025-04-16 08:20:00

LinuxELF文件

2019-11-11 21:24:42

HadoopHbase分布式

2023-08-14 09:43:55

程序員開發(fā)

2018-10-15 09:50:07

程序員高薪淘汰

2020-07-17 09:55:11

程序員技能開發(fā)者

2022-01-26 10:12:56

程序員工具技術(shù)

2021-07-15 06:43:11

Bash調(diào)試腳本

2013-04-28 11:03:41

編程語言程序員私有云

2013-09-13 14:08:01

2021-01-27 18:15:01

Docker底層宿主機
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 色悠悠久 | 久久人人网| 日韩高清av| 色先锋影音 | 97成人在线 | 日本不卡一区二区三区 | 国产一区二区电影网 | 一级毛片视频 | 亚洲一区在线日韩在线深爱 | 久久久婷婷 | 午夜视频免费在线观看 | 亚洲精品 在线播放 | 精品一区二区电影 | 日韩成人中文字幕 | 三级av在线| 成人午夜精品 | 久久精品成人热国产成 | 国产精品一区在线观看你懂的 | 欧美8一10sex性hd | 中文字幕av亚洲精品一部二部 | 日本不卡一区二区三区 | 精品久久99 | 欧美激情在线播放 | 中文字幕人成人 | 日韩精品一区在线 | 日韩欧美三级 | 成人午夜精品一区二区三区 | 久久99深爱久久99精品 | 天天插天天狠天天透 | 国产色在线| 成人综合视频在线观看 | 午夜免费| 欧美精品一区二区在线观看 | 国产激情视频 | 日韩精品一区二区久久 | 欧美日韩在线观看视频网站 | 亚洲精品久久久久久下一站 | 精品96久久久久久中文字幕无 | 欧美精品乱码久久久久久按摩 | 亚洲精品一区中文字幕乱码 | 91久久久久久久久久久 |