欧美人与禽2O2O性论交,秋霞免费视频,国产美女视频免费观看网址,国产成人亚洲综合网色欲网

會寫代碼的AI開源!C語言比Codex寫得好,掌握12種編程語言丨CMU(c語言寫代碼的軟件)

會寫代碼的AI開源!C語言比Codex寫得好,掌握12種編程語言丨CMU(c語言寫代碼的軟件)

蕭簫 發(fā)自 凹非寺
量子位 | 公眾號 QbitAI

Codex還會寫C語言的AI代碼生成模型,現(xiàn)在開源了!

這段時間,用AI寫代碼可以說是大火,其中最著名的要屬OpenAI的Codex和DeepMind的AlphaCode。

會寫代碼的AI開源!C語言比Codex寫得好,掌握12種編程語言丨CMU(c語言寫代碼的軟件)

△基于Codex的Copilot

然而,這兩個AI模型,全都沒有開源:

其中AlphaCode只給出了一些測試樣例,而Codex只開放了API。

為此,來自CMU的幾個研究人員,用GPT-2搞出了一個名叫PolyCoder的AI代碼生成模型,而且還是開源的

據(jù)研究人員表示,雖然PolyCoder最大只有27億參數(shù)(相比Codex有120億參數(shù)),但它用C語言寫出來的代碼,比Codex的效果還要好。

這里面究竟有什么秘訣?

用12種編程語言代碼集訓練

首先來看訓練用的數(shù)據(jù)集,這也是PolyCoder的最大特點之一。

此前,包括Codex、CodeParrot等AI代碼生成模型,主要都是基于Python語言的代碼來訓練。

例如Codex的評估數(shù)據(jù)集之一HumanEval,評估的也是生成Python代碼的效果。

相比之下,PolyCoder采用了多種編程語言代碼集來訓練,一共有12種:

C、C#、C 、Go、Java、JavaScript、PHP、Python、Ruby、Rust、ScalaTypeScript。

會寫代碼的AI開源!C語言比Codex寫得好,掌握12種編程語言丨CMU(c語言寫代碼的軟件)

其中,C語言的代碼量是最多的,達到了221GB;而Python代碼的數(shù)據(jù)量比Codex和CodeParrot用得都要少。

這里PolyCoder用的是GitHub上的公開代碼,主要選取的是各種編程語言中比較受歡迎的庫,每個庫至少有50 Stars。

據(jù)研究人員表示,每種編程語言庫的Stars總數(shù)加起來不超過25k,以避免模型生成的代碼效果太過于傾斜最流行的編程語言(通常編程語言越流行,庫的Stars就越多)。

通過提取庫中的文件、經(jīng)過簡單處理(包括消除重復代碼)后,一共篩選出大約254GB的數(shù)據(jù)用于訓練。

然后是預訓練的方法。

語言模型的預訓練方法通常有三種。

第一種是自左向右的語言模型,根據(jù)上文預測下文,比較適用于代碼生成等;第二種是掩蔽語言模型,基于上下文預測屏蔽片段,比較適合代碼分類等;第三種是編解碼器模型,比較適用于代碼注釋等任務。

會寫代碼的AI開源!C語言比Codex寫得好,掌握12種編程語言丨CMU(c語言寫代碼的軟件)

這里PolyCoder主要采用的是第一種預訓練方法。

相比于同樣采用GPT-2訓練的CodeParrot和Codex,PolyCoder在超參數(shù)設置上也稍微有一些差異:

會寫代碼的AI開源!C語言比Codex寫得好,掌握12種編程語言丨CMU(c語言寫代碼的軟件)

PolyCoder一共提供了三種不同的模型,分別有27億參數(shù)、4億參數(shù)和1.6億參數(shù),研究人員可以根據(jù)自身需求和不同的訓練能力來選取合適的模型。

會寫代碼的AI開源!C語言比Codex寫得好,掌握12種編程語言丨CMU(c語言寫代碼的軟件)

那么,最終訓練出來的AI模型,代碼生成效果如何?

C語言寫得尤其好,但Python不行

研究人員將PolyCoder與已有的AI代碼生成模型進行了對比。

由于AlphaCode不好比較(接口沒開放),所以研究人員主要分析了下面這些模型,包括GPT-Neo、CodeParrot和Codex等。

其中藍色的是開源的,橙色的是沒開源的:

會寫代碼的AI開源!C語言比Codex寫得好,掌握12種編程語言丨CMU(c語言寫代碼的軟件)

從參數(shù)量來看,PolyCoder并不是最頂尖的,最大的27億參數(shù)模型也只有Codex的四分之一不到。

研究人員先是用語言模型評估常用的困惑度對一系列模型進行了比較。

困惑度(Perplexity),用于衡量語言模型(LM)的好壞。困惑度越低,語言模型面對代碼感到困惑的程度就越低,模型生成效果越好。

從圖中來看,PolyCoder在C語言中意外取得了最好的效果(困惑度最低)。

用大量C語言訓練PolyCoder的結果說明,即使模型整體原理不變(基于GPT-2),單純改變訓練用的代碼集,也能訓練出擅長不同語言風格的AI代碼生成模型。

可惜的是,從其他語言來看,生成的效果就完全沒辦法和Codex相比了:

會寫代碼的AI開源!C語言比Codex寫得好,掌握12種編程語言丨CMU(c語言寫代碼的軟件)

例如,在主要用于評估Python代碼的HumanEval上,PolyCoder的能力遠不如Codex好:

會寫代碼的AI開源!C語言比Codex寫得好,掌握12種編程語言丨CMU(c語言寫代碼的軟件)

據(jù)論文分析,這可能是Python代碼數(shù)據(jù)量、模型參數(shù)量不足等原因導致的。

此外,作者們也提到,做出PolyCoder的目的主要還是為了開源一個AI代碼生成模型,讓更多人參與研究和使用。

目前代碼已經(jīng)開源,無論是直接拿來用,還是試著在它的基礎上開發(fā)新模型都可以。

感興趣的小伙伴可以上手一試了~

作者介紹

會寫代碼的AI開源!C語言比Codex寫得好,掌握12種編程語言丨CMU(c語言寫代碼的軟件)

一作許方正(Frank Xu),目前在CMU讀博,研究方向是NLP、信息抽取等,發(fā)表過多篇頂會論文,包括ICLR、ACL和EMNLP等。本碩畢業(yè)于上海交通大學,師從朱其立教授。

會寫代碼的AI開源!C語言比Codex寫得好,掌握12種編程語言丨CMU(c語言寫代碼的軟件)

Uri Alon,在CMU進行博士后工作,研究方向是編程語言處理PLP、NLP和深度學習。

會寫代碼的AI開源!C語言比Codex寫得好,掌握12種編程語言丨CMU(c語言寫代碼的軟件)

Graham Neubig,CMU助理教授,研究方向是NLP、機器翻譯和基于機器學習的自然語言理解。

會寫代碼的AI開源!C語言比Codex寫得好,掌握12種編程語言丨CMU(c語言寫代碼的軟件)

Vincent J. Hellendoorn,CMU計算機助理教授,主要研究方向是軟件工程和機器學習,致力于利用智能方法幫助軟件開發(fā)人員減少代碼調(diào)試、程序優(yōu)化等繁瑣工作的時間。

不知道作者們是否已經(jīng)在用這個AI擼代碼了(手動狗頭)

項目地址:
https://github.com/VHellendoorn/Code-LMs

論文地址:
https://arxiv.org/abs/2202.13169

— 完 —

量子位 QbitAI · 頭條號簽約

關注我們,第一時間獲知前沿科技動態(tài)

相關新聞

聯(lián)系我們
聯(lián)系我們
公眾號
公眾號
在線咨詢
分享本頁
返回頂部