自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

成熟的AI應(yīng)該自己寫代碼,IBM發(fā)布5億行代碼數(shù)據(jù)集,包含55種語言

新聞 人工智能
1400萬個編程項目,5億行代碼,超過55種的不同編碼語言。研究人員希望這一數(shù)據(jù)集能為編碼自動化領(lǐng)域(比如大型項目代碼的調(diào)試、維護(hù)和遷移)帶來便利。

[[400902]]

本文經(jīng)AI新媒體量子位(公眾號ID:QbitAI)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請聯(lián)系出處。

 在ImageNet頻頻出現(xiàn)在計算機(jī)視覺研究的今天,IBM也為智能編碼(AI for Code)帶來了它的專屬數(shù)據(jù)集——CodeNet。

1400萬個編程項目,5億行代碼,超過55種的不同編碼語言。研究人員希望這一數(shù)據(jù)集能為編碼自動化領(lǐng)域(比如大型項目代碼的調(diào)試、維護(hù)和遷移)帶來便利。

△下載鏈接見文末

獨(dú)一無二的數(shù)據(jù)基礎(chǔ)

CodeNet的數(shù)據(jù)基礎(chǔ)來自兩個OJ(Online Judge)平臺AIZU和AtCoder所提交的實(shí)例。

△大聲告訴我世界上最好的語言是什么?

在這種在線編程平臺上提交的解決方案,除了大規(guī)模的代碼數(shù)據(jù)之外,還有許多高質(zhì)量的元數(shù)據(jù)(Metadata)和注釋。

比如對于OJ平臺的問題,就有如問題描述、內(nèi)存限制、問題難度等信息。

用戶提交的案例也一樣:

而在平臺自動審查機(jī)制下,提交的解決方案的不同狀態(tài)同樣也可以作為重要參考數(shù)據(jù)。

CodeNet能做什么?

基準(zhǔn)測試

當(dāng)在CodeNet-1K(C++ 1000基準(zhǔn))與最大的公開數(shù)據(jù)集之一GCJ-297上訓(xùn)練相同的MISIM模型,并在第三個獨(dú)立的數(shù)據(jù)集POJ-104上測試這兩個訓(xùn)練好的模型時:

△模型在CodeNet-1K上訓(xùn)練時的POJ-104測試分?jǐn)?shù)比在GCJ-297上的高12%

這表明了CodeNet-1K擁有更好的泛化能力。

而分別使用MLP、CNN、C-BERT、GNN在CodeNet的幾個基準(zhǔn)上進(jìn)行了代碼分類、代碼相似性評估和代碼完成等實(shí)驗(yàn)后,大多數(shù)任務(wù)都獲得了90%以上的準(zhǔn)確率。

實(shí)際應(yīng)用

基于不同編程語言間的規(guī)則,將幾段代碼轉(zhuǎn)換成其他語言,對AI來說并非難事。

但如果是上千上萬行,甚至是一個大型項目,其代碼語義就會涉及到上下文,而上下文又可能牽扯到多個代碼庫。在這樣的復(fù)雜語境下的語言翻譯可是個不小的挑戰(zhàn)。

在以前,通常先由機(jī)器完成程序50%~60%的遷移,涉及復(fù)雜規(guī)則的部分再由人力負(fù)責(zé),非常棘手且費(fèi)事費(fèi)力。

可就在不久前,IBM通過基于CodeNet的AI for Code成功將一位大型汽車客戶的持續(xù)代碼遷移過程(多代Java技術(shù)開發(fā)的3500個Java文件,超一百萬行代碼),從一年縮短到了四星期。

因?yàn)樵贑odeNet的數(shù)據(jù)基礎(chǔ)中,90%以上的問題的描述、輸入格式說明、輸出格式說明,以及50%以上的提交代碼的輸入和輸出樣本,就是確定不同語言間的代碼等價與否的關(guān)鍵。

這就極大地推動了代碼翻譯的強(qiáng)化學(xué)習(xí)技術(shù)。

而大量于內(nèi)存限制、執(zhí)行時間、錯誤類型的元數(shù)據(jù),也可以用來標(biāo)記源代碼中的潛在缺陷,并進(jìn)一步訓(xùn)練開發(fā)代碼優(yōu)化系統(tǒng)。

CodeNet數(shù)據(jù)集提供了一套利于理解和使用的技術(shù),在協(xié)助廣大開發(fā)者和研究者開發(fā)算法,推進(jìn)AI編碼的同時,也為企業(yè)開啟IT現(xiàn)代化帶來了持續(xù)不斷的商業(yè)價值。

技術(shù)上如何實(shí)現(xiàn)

在統(tǒng)計數(shù)據(jù)時,研究者們組織所有數(shù)據(jù)成為一個嚴(yán)格的目錄結(jié)構(gòu):最上層是Project CodeNet目錄,下方的子目錄分別為:

*數(shù)據(jù)

細(xì)分為每個問題中源碼、腳本語言。

*元數(shù)據(jù)

存放所有問題的problem_list.csv文件和提交案例的csv文件。

*問題描述

存放問題的HTML文件,包含文本的廣泛描述。

然后使用命令行工具或像ls和grep這樣的應(yīng)用程序來提取,對csv文件可使用csvkit組件(如csvstat)。

對于數(shù)據(jù)集則采用bash腳本進(jìn)行訪問選擇:

△腳本已給出。

最后通過標(biāo)記器產(chǎn)生標(biāo)記流、AST生成解析到抽象語法樹、構(gòu)建數(shù)據(jù)流圖以分析代碼,最終將代碼樣本轉(zhuǎn)換為可被AI算法識別和使用的表現(xiàn)形式:

△處理過程所用到的工具。

編程自動化的未來

IBM的研究者們還在不斷地改進(jìn)和開發(fā)CodeNet,期望它能夠加速AI編程的算法進(jìn)步。

而隨著機(jī)器學(xué)習(xí)領(lǐng)域的不斷發(fā)展,不僅是代碼的“實(shí)現(xiàn)”,連“設(shè)計”也開始向計算機(jī)一側(cè)傾靠(比如GAN通過對抗學(xué)習(xí)尋找最優(yōu)解)。

未來真的可以像DNA的自我編輯那樣,實(shí)現(xiàn)完全的自動編程嗎?

建議先封裝幾個人類程序員,來幫計算機(jī)完成算法第一步的“精確描述問題需求”。

 

責(zé)任編輯:張燕妮 來源: 量子位
相關(guān)推薦

2021-05-19 09:26:03

代碼開源IBM

2023-02-03 17:25:31

自動化代碼審查開發(fā)

2025-04-28 09:06:00

2015-08-20 09:06:48

程序員

2021-06-10 13:50:55

代碼開發(fā)數(shù)據(jù)庫

2009-12-15 19:18:39

Ruby源代碼

2025-02-24 08:20:00

AI代碼生成

2019-06-05 15:00:28

Java代碼區(qū)塊鏈

2014-10-20 10:35:15

程序員

2014-11-10 09:40:56

程序員

2019-04-23 09:58:22

Windows 10語言代碼

2021-02-18 00:02:53

數(shù)據(jù)庫工具低代碼

2018-03-13 09:34:30

人工智能編程語言Python

2020-07-14 08:16:13

代碼互聯(lián)網(wǎng) PC

2014-03-13 09:29:30

程序員碼農(nóng)

2024-01-29 12:42:37

AI訓(xùn)練

2018-06-03 08:22:55

Oracle云計算開源

2015-09-21 09:36:54

20 億代碼谷歌

2015-09-18 11:47:45

代碼Google管理

2024-02-19 13:09:21

代碼數(shù)據(jù)Copilot
點(diǎn)贊
收藏

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