偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

IBM開源了5億行代碼數(shù)據(jù)集,里面最多的編程語言卻不是Python

新聞 人工智能
近日,IBM 研究院發(fā)布了一個名為 CodeNet 的數(shù)據(jù)集,該數(shù)據(jù)集包含 1400 萬個代碼樣本,用于訓練面向編程任務的機器學習模型。

谷歌服務包含 20 億行代碼,一輛汽車的系統(tǒng)包含 1 億行代碼——寫代碼、debug 這么大的工作量不交給 AI 來做能行?

讓 AI 自動生成代碼,是很多開發(fā)者的夢想,近些年來,有關這一方面的研究屢見不鮮。但要想訓練一個好用的 AI,最重要的工作或許就是找到優(yōu)質數(shù)據(jù)。

近日,IBM 研究院發(fā)布了一個名為 CodeNet 的數(shù)據(jù)集,該數(shù)據(jù)集包含 1400 萬個代碼樣本,用于訓練面向編程任務的機器學習模型。該數(shù)據(jù)集的主要特點包括:

  • 迄今為止最大的編碼數(shù)據(jù)集,其中包含 4000 個問題,1400 萬個代碼樣本,50 + 種編程語言;
  • 該數(shù)據(jù)集添加了注釋,包括問題描述、內存 / 時間限制、語言、代碼通過 / error 等。

IBM 希望 CodeNet 仿效大型圖像數(shù)據(jù)集 ImageNet,并成為教軟件理解軟件開發(fā)藍圖的領先數(shù)據(jù)集。IBM 希望 CodeNet 可以用于訓練具有如下功能的開發(fā)工具:

  • 從一種編程語言轉換到另一種編程語言;
  • 代碼推薦與補全;
  • 代碼優(yōu)化;
  • 搜索應用程序和庫來源以查找所需例程;
  • 將一種語言轉換成另一種語言;
  • 識別錯誤 / 正確的實現(xiàn)機制。

利用深度學習進行自動化編程

近年來,機器學習領域取得了令人矚目的進步,AI 讓多種工作任務實現(xiàn)了自動化,包括編程。但是 AI 在軟件開發(fā)中的滲透卻遇到了極大的困難。

人們在編程時通常會使用大量的有意識和潛意識思維機制發(fā)現(xiàn)新的問題并探索不同的解決方案。相比之下,大多數(shù)機器學習算法都需要定義明確的問題和大量帶有注釋的數(shù)據(jù)才能夠開發(fā)出解決相同編程問題的模型。

為了解決這一難題,研究者與開發(fā)者們已經(jīng)做出了很多努力,包括創(chuàng)建數(shù)據(jù)集和基準,以開發(fā)和評估「用于編程的 AI」系統(tǒng)。但是,鑒于軟件開發(fā)的創(chuàng)造性和開放性,很難為編程創(chuàng)建完美的數(shù)據(jù)集。

IBM 的研究人員試圖創(chuàng)建一個多用途的數(shù)據(jù)集,可用于訓練各種任務的機器學習模型。CodeNet 的創(chuàng)建者將其描述為「非常大規(guī)模,多樣且高質量的數(shù)據(jù)集,能夠加快使用 AI 編程的步伐」。該數(shù)據(jù)集包含 1400 萬個代碼樣本,共有用 55 種編程語言編寫的 5 億行代碼,其中 C++ 是樣本中使用最多的語言,Python 位居第二。這些代碼樣本是從提交給在線編程平臺 AIZU 和 AtCoder 上的近 4,000 項挑戰(zhàn)的提交中獲得的,代碼樣本包括這些挑戰(zhàn)的正確答案和錯誤答案。

CodeNet 項目地址:https://github.com/IBM/Project_CodeNet

CodeNet 的主要特點之一是代碼樣本中添加了注釋。數(shù)據(jù)集中包含的每個編程挑戰(zhàn)都有一個文本說明以及 CPU 時間和內存限制。每個代碼提交都包含十幾條信息,包括語言,提交日期,內存占用大小,執(zhí)行時間,接受和 error 類型。為了確保該數(shù)據(jù)集在編程語言,接受和 error 類型等多個維度上保持平衡,IBM 的研究人員付出了巨大的努力。

機器學習編程任務

CodeNet 并不是訓練機器學習模型來執(zhí)行編程任務的唯一數(shù)據(jù)集。相比于其他數(shù)據(jù)集,CodeNet 具有以下特點:首先是數(shù)據(jù)集的規(guī)模,包括樣本數(shù)量和語言的多樣性;但更重要的是編碼樣本附帶的元數(shù)據(jù)。CodeNet 中添加的豐富注釋使其能夠適用于多種任務,不再只是用于特定編程任務。

使用 CodeNet 開發(fā)用于編程任務的機器學習模型包括以下方式:

  • CodeNet 可以用來進行語言翻譯任務。由于數(shù)據(jù)集中包含的每個編程挑戰(zhàn)都包含不同編程語言的提交,因此數(shù)據(jù)科學家們可以用它來創(chuàng)建機器學習模型,將代碼從一種語言轉換成另一種語言。對于希望將舊代碼移植成新語言、使新一代程序員能夠訪問并使用新型開發(fā)工具進行維護的人們而言,這可能很方便;
  • CodeNet 還可以用來開發(fā)完成代碼推薦任務的機器學習模型開發(fā)。推薦工具既可以像完成當前代碼行的自動完成樣式模型一樣簡單,也可以是編寫完整函數(shù)或代碼塊的更復雜系統(tǒng)。

由于 CodeNet 擁有大量關于內存和執(zhí)行時間指標的元數(shù)據(jù),數(shù)據(jù)科學家也可以使用它來開發(fā)代碼優(yōu)化系統(tǒng)?;蛘?,可以使用 error 類型的元數(shù)據(jù)來訓練機器學習系統(tǒng),以標記源代碼中的潛在缺陷。

CodeNet 更高級的用例是代碼生成。CodeNet 是一個豐富的問題文本描述庫,并包含對應的源代碼。已經(jīng)有開發(fā)人員使用高級語言模型(如 GPT-3)從自然語言描述生成代碼,CodeNet 或許能夠幫助微調這些語言模型,使其在代碼生成中更加一致。

IBM 的研究人員已經(jīng)對 CodeNet 進行了一些實驗,這些實驗包括代碼分類、代碼相似性評估和代碼補全。使用的深度學習體系架構包括簡單的多層感知器、卷積神經(jīng)網(wǎng)絡、圖神經(jīng)網(wǎng)絡、Transformer。

IBM 和 MIT-IBM Watson AI 實驗室團隊聯(lián)合開發(fā)了該數(shù)據(jù)集,研究中的實驗結果顯示大多數(shù)任務都能獲得90%以上的準確率。

論文地址:https://github.com/IBM/Project_CodeNet/blob/main/ProjectCodeNet.pdf

建立高效的機器學習系統(tǒng),需付出巨大努力

IBM 的工程師們進行了大量的工作來管理 CodeNet 數(shù)據(jù)集并開發(fā)其輔助工具。

首先,研究團隊需要從 AIZU 和 AtCoder 收集代碼樣本。二者中只有一個平臺有應用程序接口(API),可以很容易地獲取代碼,而另一個平臺沒有易于訪問的接口,研究團隊需要開發(fā)新工具,從平臺的網(wǎng)頁上抓取數(shù)據(jù),并將其分解成表格格式。然后研究者們需要手動將兩個數(shù)據(jù)集合并到一個統(tǒng)一的模式中。

接下來,研究團隊需要開發(fā)用于識別和刪除重復代碼和樣本(包含大量無效代碼,運行時未執(zhí)行的源代碼)的工具,以清除無用數(shù)據(jù)。

此外,該研究團隊還開發(fā)了預處理工具,使得在 CodeNet 語料庫上訓練機器學習模型變得更容易,包括用于不同編程語言的 tokenizer、分析樹(parse tree)和用于圖神經(jīng)網(wǎng)絡的圖表征生成器。

所有這些都提醒我們,要創(chuàng)建高效的機器學習系統(tǒng),需要付出巨大的努力。人工智能要取代程序員還有很長的路要走。

 【責任編輯:張燕妮 TEL:(010)68476606】

 

 

責任編輯:張燕妮 來源: 機器之心
相關推薦

2021-05-21 10:46:55

AI 代碼人工智能

2023-03-26 19:38:09

2015-07-16 17:23:27

2018-05-08 10:28:53

Oracle云轉型Adobe

2021-12-29 21:36:12

微信支付寶移動支付

2020-07-17 10:09:44

程序員技術開發(fā)

2024-12-19 07:50:00

2013-04-11 09:37:51

編程語言

2023-07-18 18:10:04

2022-03-09 07:29:55

AI開源C語言

2011-09-23 09:47:48

編程

2009-04-27 12:42:54

技術周刊收購Oracle

2021-11-02 15:49:46

低代碼編程Power Fx微軟

2022-05-26 07:53:33

Python代碼編程語言

2021-05-14 13:05:20

AI 數(shù)據(jù)人工智能

2018-11-25 20:29:24

編程語言PythonJava

2013-08-23 11:06:34

編程語言

2021-06-08 16:31:51

黑客數(shù)據(jù)泄露網(wǎng)絡安全

2018-10-29 17:37:55

2021-03-04 08:41:02

微軟Powr Fx低代碼
點贊
收藏

51CTO技術棧公眾號