Facebook研究人員表示他們已經(jīng)開發(fā)出了一種名為TransCoder AI的神經(jīng)編譯器

來(lái)源:匯世界網(wǎng)
作者:Facebook
時(shí)間:2020-06-30
3096
將現(xiàn)有的代碼庫(kù)遷移到更現(xiàn)代或更高效的語(yǔ)言需要大量的資源,包括財(cái)務(wù)和人力。譬如,澳大利亞聯(lián)邦銀行在5年的時(shí)間里花費(fèi)了大約7.5億澳元,將其平臺(tái)從COBOL轉(zhuǎn)換為Java。而從理論上講,轉(zhuǎn)編譯器可以則幫助消除從頭重寫代碼所需的費(fèi)用。但是,由于源語(yǔ)言和目標(biāo)語(yǔ)言都具有不同的語(yǔ)法、變量類型、標(biāo)準(zhǔn)庫(kù)函數(shù)和平臺(tái)API,因此這個(gè)在實(shí)踐中其實(shí)很難構(gòu)建。

將現(xiàn)有的代碼庫(kù)遷移到更現(xiàn)代或更高效的語(yǔ)言需要大量的資源,包括財(cái)務(wù)和人力。譬如,澳大利亞聯(lián)邦銀行在5年的時(shí)間里花費(fèi)了大約7.5億澳元,將其平臺(tái)從COBOL轉(zhuǎn)換為Java。而從理論上講,轉(zhuǎn)編譯器可以則幫助消除從頭重寫代碼所需的費(fèi)用。但是,由于源語(yǔ)言和目標(biāo)語(yǔ)言都具有不同的語(yǔ)法、變量類型、標(biāo)準(zhǔn)庫(kù)函數(shù)和平臺(tái)API,因此這個(gè)在實(shí)踐中其實(shí)很難構(gòu)建。

20200615032853800.png

據(jù)介紹,F(xiàn)acebook的TransCoder AI則采用了一種無(wú)監(jiān)督的學(xué)習(xí)方法來(lái)應(yīng)對(duì)這些挑戰(zhàn)。它可以在無(wú)人監(jiān)督的情況下不受監(jiān)督地運(yùn)行,從而在沒(méi)有標(biāo)簽的情況下在數(shù)據(jù)集中找到未檢測(cè)到的模式,比基于規(guī)則數(shù)據(jù)集的模型要高效得多。

無(wú)論使用哪種編程語(yǔ)言,神經(jīng)編譯器都可以將代表相同指令的代碼段映射到相同代碼段。一位共同作者寫道:“TransCoder可以輕松地推廣到任何編程語(yǔ)言,不需要任何專業(yè)知識(shí)就可以將代碼從一種編程語(yǔ)言轉(zhuǎn)換為另一種編程語(yǔ)言,并且在很大程度上優(yōu)于商業(yè)解決方案。我們的結(jié)果表明,通過(guò)向解碼器添加簡(jiǎn)單的約束以確保生成的函數(shù)在語(yǔ)法上是正確的,或者通過(guò)使用專用架構(gòu),可以輕松解決該模型所犯的許多錯(cuò)誤?!?/span>

TransCoder AI的準(zhǔn)確性

Facebook研究人員在超過(guò)280萬(wàn)個(gè)開源存儲(chǔ)庫(kù)中的公開代碼上對(duì)TransCoder AI進(jìn)行了訓(xùn)練,以專注于功能級(jí)別的代碼轉(zhuǎn)換。

為了評(píng)估TransCoder AI的性能,他們從GeeksforGeeks中選擇了852個(gè)C++、Java和Python并行函數(shù)。GeeksforGeeks是一個(gè)在線平臺(tái),用于收集編寫代碼時(shí)的問(wèn)題,并提供多種編程語(yǔ)言的解決方案。

利用以上兩個(gè)數(shù)據(jù),他們開發(fā)了一個(gè)名為"計(jì)算精度(computational accuracy)"的新指標(biāo),用于檢查翻譯后的函數(shù)在輸入相同的情況下是否會(huì)產(chǎn)生與源語(yǔ)言相同的輸出。

結(jié)果

這是AI從以下位置轉(zhuǎn)換代碼時(shí)獲得的結(jié)果的準(zhǔn)確性水平:

C++to Java:74.8%

C++to Python:67.2%

Java to C++:91.6%

Java to Python:68.7%

Python to Java:56.1%

Python to C++:57.8%

研究人員表示,TransCoder AI已經(jīng)展示出對(duì)每種語(yǔ)言(Java、Python和C++)的語(yǔ)法及其數(shù)據(jù)結(jié)構(gòu)的理解。它甚至能夠正確地調(diào)整每種語(yǔ)言的庫(kù),同時(shí)適應(yīng)小的修改--例如,重命名輸入中的一個(gè)變量。盡管Transcoder并非十分完美,無(wú)法在代碼生成過(guò)程中考慮某些變量類型。但是,它的性能確實(shí)優(yōu)于已有的利用專家知識(shí)手動(dòng)構(gòu)建的框架。

原文鏈接:點(diǎn)擊前往 >
版權(quán)說(shuō)明:本文內(nèi)容來(lái)自于匯世界網(wǎng),本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請(qǐng)聯(lián)系管理員(zzx@kchuhai.com)刪除!
個(gè)人VIP
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家