當(dāng)前位置:首頁(yè) > 芯聞號(hào) > 充電吧
[導(dǎo)讀]從舊式編程語(yǔ)言(例如COBOL)到現(xiàn)代語(yǔ)言(例如Java或C ++)的代碼庫(kù)遷移是一項(xiàng)艱巨的任務(wù),需要源語(yǔ)言和目標(biāo)語(yǔ)言方面的專業(yè)知識(shí)。 例如,COBOL至今仍在全球大型機(jī)系統(tǒng)中廣泛使用,因此公司,政府

從舊式編程語(yǔ)言(例如COBOL)到現(xiàn)代語(yǔ)言(例如Java或C ++)的代碼庫(kù)遷移是一項(xiàng)艱巨的任務(wù),需要源語(yǔ)言和目標(biāo)語(yǔ)言方面的專業(yè)知識(shí)。

例如,COBOL至今仍在全球大型機(jī)系統(tǒng)中廣泛使用,因此公司,政府和其他組織通常必須選擇,是手動(dòng)翻譯其代碼庫(kù),還是致力于維護(hù)使用可追溯到1950年代的語(yǔ)言編寫(xiě)的代碼。

Facebook AI開(kāi)發(fā)了Transcoder,可以使代碼遷移變得更加輕松和高效。Facebook AI的方法能夠?qū)⒋a從一種編程語(yǔ)言轉(zhuǎn)換為另一種編程語(yǔ)言,而無(wú)需數(shù)據(jù)進(jìn)行訓(xùn)練的AI系統(tǒng)。

Facebook AI已經(jīng)證明TransCoder可以成功地在C ++,Java和Python之間完成語(yǔ)言轉(zhuǎn)換。TransCoder的性能優(yōu)于開(kāi)放源代碼的且基于商業(yè)規(guī)則的翻譯程序。在Facebook AI的評(píng)估中,該模型正確地將90%以上的Java函數(shù)轉(zhuǎn)換為C ++,將74.8%的C ++函數(shù)轉(zhuǎn)換為Java,并將68.7%的函數(shù)從Java轉(zhuǎn)換為Python。

相比之下,市售工具只能正確地將61.0%的功能從C ++轉(zhuǎn)換為Java,而開(kāi)源翻譯器僅準(zhǔn)確地轉(zhuǎn)換了38.3%的Java函數(shù)轉(zhuǎn)換為C ++。

自我監(jiān)督的培訓(xùn)對(duì)于在編程語(yǔ)言轉(zhuǎn)換中特別重要。傳統(tǒng)的監(jiān)督學(xué)習(xí)方法依賴于大規(guī)模并行數(shù)據(jù)集的訓(xùn)練,但是對(duì)于從COBOL到C ++或從C ++到Python來(lái)說(shuō),并不適用。

TransCoder完全依賴僅用一種編程語(yǔ)言編寫(xiě)的源代碼。它不需要編程語(yǔ)言方面的專業(yè)知識(shí),并且很容易推廣到其他編程語(yǔ)言。

TransCoder對(duì)于將遺留代碼庫(kù)更新為現(xiàn)代編程語(yǔ)言很有用,現(xiàn)代編程語(yǔ)言通常更高效且易于維護(hù)。它還顯示了如何將神經(jīng)機(jī)器翻譯技術(shù)應(yīng)用于新領(lǐng)域。

seq2seq模型發(fā)揮了大作用

在自然語(yǔ)言中,即使在越來(lái)越依賴自動(dòng)化機(jī)器翻譯系統(tǒng)的專業(yè)翻譯人員中,神經(jīng)機(jī)器翻譯的最新進(jìn)展也被廣泛接受。但是,由于該領(lǐng)域中并行數(shù)據(jù)的稀缺性,它們?cè)诖a轉(zhuǎn)換中的應(yīng)用受到了限制。程序員仍然依賴基于規(guī)則的代碼轉(zhuǎn)換器,這需要專家審查和調(diào)試輸出,或者他們只是手動(dòng)翻譯代碼。TransCoder通過(guò)利用無(wú)監(jiān)督機(jī)器翻譯到編程語(yǔ)言方面的最新進(jìn)展來(lái)克服這些挑戰(zhàn)。

Facebook AI特別注意構(gòu)建了一個(gè)seq2seq模型,該模型由具有變壓器架構(gòu)的編碼器和解碼器組成。TransCoder使用單個(gè)共享模型,部分基于Facebook AI在XLM上的先前工作,適用于所有編程語(yǔ)言。Facebook AI按照無(wú)監(jiān)督機(jī)器翻譯的三個(gè)原則:初始化,語(yǔ)言建模和反向翻譯。

此圖顯示了TransCoder如何利用無(wú)監(jiān)督機(jī)器翻譯的三個(gè)原理

Facebook AI首先利用開(kāi)源GitHub項(xiàng)目中的源代碼,使用MLM目標(biāo)對(duì)Facebook AI的模型進(jìn)行了預(yù)訓(xùn)練。就像在自然語(yǔ)言處理的上下文中一樣,這種預(yù)訓(xùn)練會(huì)創(chuàng)建跨語(yǔ)言的嵌入:在相似上下文中使用的來(lái)自不同編程語(yǔ)言的關(guān)鍵字在嵌入空間中非常接近(例如catch和except)。

這些嵌入的跨語(yǔ)言性質(zhì)來(lái)自存在于多種語(yǔ)言中的大量通用令牌。令牌的示例包括C ++,Java和Python通用的關(guān)鍵字(例如,for,while,if,try),以及源代碼中出現(xiàn)的數(shù)學(xué)運(yùn)算符,數(shù)字和英文字符串。

使用MLM進(jìn)行預(yù)訓(xùn)練使TransCoder可以生成輸入序列的高質(zhì)量表示。然而,解碼器缺乏翻譯能力,因?yàn)閺奈从?xùn)練過(guò)解碼器,基于源表示對(duì)序列進(jìn)行解碼。為了解決此問(wèn)題,F(xiàn)acebook AI訓(xùn)練了該模型以使用降噪自動(dòng)編碼(DAE)目標(biāo)對(duì)序列進(jìn)行編碼和解碼。

DAE的工作方式類(lèi)似于監(jiān)督機(jī)器翻譯算法,其中訓(xùn)練模型以在給定序列的損壞版本的情況下預(yù)測(cè)令牌序列。在測(cè)試時(shí),該模型可以對(duì)Python序列進(jìn)行編碼,并使用C ++起始符號(hào)對(duì)其進(jìn)行解碼以生成C ++轉(zhuǎn)換。

視頻顯示了具有相似功能的關(guān)鍵字如何組合在一起。

僅跨語(yǔ)言模型預(yù)訓(xùn)練和自動(dòng)降噪就足以生成翻譯。但是,這些翻譯的質(zhì)量往往很低,因?yàn)閺奈从?xùn)練過(guò)該模型以使其在測(cè)試時(shí)可以完成預(yù)期的工作,即將功能從一種語(yǔ)言翻譯為另一種語(yǔ)言。

為了解決此問(wèn)題,F(xiàn)acebook AI使用反向翻譯,這是在弱監(jiān)督的情況下利用單語(yǔ)數(shù)據(jù)的最有效方法之一。對(duì)于每種目標(biāo)語(yǔ)言,F(xiàn)acebook AI使用一個(gè)模型和一個(gè)不同的開(kāi)始標(biāo)記。它經(jīng)過(guò)訓(xùn)練可以從源到目標(biāo)以及從目標(biāo)到源并行轉(zhuǎn)換。

然后可以以弱監(jiān)督的方式訓(xùn)練模型,以從嘈雜的源序列中重建目標(biāo)序列,并學(xué)習(xí)從源到目標(biāo)的轉(zhuǎn)換。并行訓(xùn)練目標(biāo)到源版本和源到目標(biāo)版本,直到收斂為止。

為了評(píng)估他們的模型,以前的大多數(shù)源代碼翻譯研究都依賴于自然語(yǔ)言中使用的度量標(biāo)準(zhǔn),例如BLEU分?jǐn)?shù)或其他基于標(biāo)記之間相對(duì)重疊的方法。但是,這些類(lèi)型的指標(biāo)不太適合編程語(yǔ)言。語(yǔ)法差異小的兩個(gè)程序在執(zhí)行代碼時(shí)可能會(huì)獲得很高的BLEU分?jǐn)?shù),同時(shí)仍然產(chǎn)生非常不同的結(jié)果。相反,具有不同實(shí)現(xiàn)方式的語(yǔ)義等效程序,將具有較低的BLEU分?jǐn)?shù)。

另一種度量標(biāo)準(zhǔn)是參考匹配,或與實(shí)地參考完全匹配的翻譯百分比,但這通常會(huì)低估翻譯質(zhì)量,因?yàn)樗鼰o(wú)法識(shí)別語(yǔ)義上等效的代碼。

為了更好地衡量TransCoder和其他代碼轉(zhuǎn)換技術(shù)的性能,F(xiàn)acebook AI創(chuàng)建了一個(gè)稱為計(jì)算精度的新指標(biāo),該指標(biāo)評(píng)估假設(shè)函數(shù)在給定相同輸入時(shí)是否生成與參考相同的輸出。Facebook AI還將發(fā)布測(cè)試集以及用于計(jì)算該指標(biāo)的腳本和單元測(cè)試。

下面的示例顯示了TransCoder如何將示例代碼從Python轉(zhuǎn)換為C ++。Facebook AI使用以下代碼作為模型輸入:

TransCoder成功將Python輸入函數(shù)SumOfKsubArray轉(zhuǎn)換為C ++。它還可以推斷參數(shù)的類(lèi)型,返回類(lèi)型和函數(shù)的參數(shù)。該模型將Python dequeue()容器附加到C ++實(shí)現(xiàn)dequeue <>。這是C ++中模型的輸出:

編程語(yǔ)言轉(zhuǎn)換讓實(shí)際應(yīng)用受益

自動(dòng)代碼翻譯有可能使程序員在公司或開(kāi)源項(xiàng)目中工作的程序員更加高效,因?yàn)樗麄兛梢愿p松地集成公司內(nèi)其他團(tuán)隊(duì)或其他開(kāi)源項(xiàng)目的各種代碼。它還可以大大減少更新用古老語(yǔ)言編寫(xiě)的舊代碼庫(kù)的工作量和開(kāi)銷(xiāo)。

反編譯的進(jìn)步可能會(huì)促使公司和其他機(jī)構(gòu)更新到最新的語(yǔ)言并促進(jìn)未來(lái)的創(chuàng)新,這可能讓使用服務(wù)的人們以及機(jī)構(gòu)本身受益。編程語(yǔ)言機(jī)器翻譯的進(jìn)步也可以幫助那些沒(méi)有時(shí)間或負(fù)擔(dān)不起學(xué)習(xí)多種語(yǔ)言編程的人。

更廣泛地說(shuō),人工智能有潛力幫助其他編程任務(wù)。例如,F(xiàn)acebook AI以前共享了神經(jīng)代碼搜索的工具,這些工具可學(xué)習(xí)自動(dòng)為編碼錯(cuò)誤提供建議修復(fù)。雖然TransCoder并非旨在幫助調(diào)試或提高代碼質(zhì)量,但它有潛力幫助工程師遷移舊代碼庫(kù)或使用以其他語(yǔ)言編寫(xiě)的外部代碼。

為了促進(jìn)有關(guān)使用深度學(xué)習(xí)進(jìn)行代碼翻譯的未來(lái)研究,F(xiàn)acebook AI還發(fā)布了一個(gè)測(cè)試集,該測(cè)試集使其他研究人員可以使用計(jì)算精度而不是語(yǔ)義盲模型來(lái)評(píng)估代碼翻譯模型。

Facebook AI期待看到其他人在和TransCoder的合作基礎(chǔ)上繼續(xù)前進(jìn),并為新的翻譯任務(wù)推進(jìn)自我監(jiān)督學(xué)習(xí)。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉