Facebook 推出 TransCoder:能夠將一種程式語言高精度轉換為另一種程式語言的人工智慧

Facebook研究人員剛剛宣布,他們已經成功開發出一種用於人工智慧應用的程式語言轉換器。這個名為 TransCoder 的工具可以將原始碼從一種高階程式語言轉換為另一種高階程式語言。例如,從C++切換到 Java、Python,反之亦然。

TransCoder 建立在無監督學習的基礎上,在資料集中搜尋以前未發現的模式,這些模式未標記且需要最少的人工監督。根據計算,TransCoder 遠優於現有的商業工具。

Facebook 推出 TransCoder:能夠將一種程式語言高精度轉換為另一種程式語言的人工智慧

Facebook TransCoder 可以高精度地將原始程式碼從一種程式語言轉換為另一種程式語言

將使用舊語言的原始程式碼轉換為更現代、更有效的程式語言(例如Java和 C++)通常會花費大量時間和金錢。此外,從事這項工作的人需要對新舊語言有深入的了解。例如,澳洲聯邦銀行花了5年時間、耗資7.5億美元將整個系統的原始碼從COBOL轉換為Java。

理論上,程式語言轉換器可以大大支援上述過程,幫助程式設計師不必從頭開始重寫原始程式碼。然而,在實踐中,建立和完善一個轉換器是非常困難的,因為程式語言可以使用不同的語法集,依賴API平台、標準函數庫和類型不同的變數。

然而,透過使用無監督學習,Facebook 的 TransCoder 可以在 C++、Java 和 Python 之間進行高精度轉換。TransCoder 透過記錄和映射共享程式語言相同功能的相似程式碼段來進行訓練。用於訓練 TransCoder 的原始程式碼甚至用隨機程式碼片段進行掩碼,以便 TransCoder 可以根據上下文進行預測。

另一個稱為自動編碼去噪的過程將訓練 TransCoder 在提供不連貫、不清楚的輸入資料時自動產生有效的程式碼行。最後,原始碼反編譯過程允許 TransCoder 創建可用於未來訓練的平行資料系統。

TransCoder 的多語言特性進一步由一組跨程式語言的通用「錨」進一步「滋養」 ,例如通用關鍵字「for」、「while」、「if」和「try」、數字、數學運算符和英文字符串。反編譯過程也將幫助 TransCoder 隨著時間的推移提高其品質。

Facebook 研究人員在 GitHub 的公共資料集上訓練 TransCoder,該資料集包含 280 萬個開源儲存庫。此訓練過程的目標是幫助 TransCoder 在功能層級將一種程式語言轉換為另一種程式語言。在對所有可用原始程式碼進行 TransCoder 實踐後,僅對使用自動編碼和反編譯的去噪元件進行了進一步的功能訓練,其中散佈著處理 6,000 個程式語言標記的元件。

為了評估 TransCoder,研究人員從 GeeksforGeeks 中提取了來自 C++、Java 和 Python 的 852 個平行函數,GeeksforGeeks 是一個編譯程式設計問題並提供多種程式語言解決方案的線上平台。透過這種方式,他們開發了一種新的測量系統,即計算精度,以測試給定相同的輸入,假設函數是否會產生與參考相同的輸出。

Facebook 承認,即使是最好的 TransCoder 版本也無法產生許多與輸入相關的準確函數結構。但整體來說,該工具的轉換結果計算精度較高。以下是 Facebook 計算的 TransCoder 準確性統計:

  • 從 C++ 翻譯為 Java 時,TransCoder 達到了預期結果的 74.8%
  • 從 C++ 翻譯為 Python 時,TransCoder 達到了預期結果的 67.2%
  • 從 Java 翻譯為 C++ 時,TransCoder 達到了 91.6% 的預期結果
  • 從 Python 翻譯成 Java 時,TransCoder 達到了預期結果的 56.1%
  • 從 Python 翻譯為 C++ 時,TransCoder 達到了預期結果的 57.8%
  • 從 Java 翻譯為 Python 時,TransCoder 達到了預期結果的 68.7%

研究人員表示,TransCoder 表現出對每種語言的特定語法以及該語言的資料結構和方法的清晰理解。TransCoder 還可以精確地適應每種語言的庫,同時適應小的修改,例如重新命名的輸入變數。即便如此,TransCoder 尚未識別轉換過程中的某些變數。然而,研究人員仍然認為 TransCoder 優於基於專業知識手動重寫規則創建的框架。

Facebook 推出 TransCoder:能夠將一種程式語言高精度轉換為另一種程式語言的人工智慧

除了Facebook之外,許多大公司也有興趣開發能夠代表人類「編寫程式碼」的人工智慧。

Facebook 研究人員聲稱,「TransCoder 可以輕鬆推廣到任何程式語言,無需任何深入的知識。就效率而言,TransCoder 遠遠優於現有的商業解決方案」“我們的實驗結果表明,通過向解碼器添加簡單的約束以確保生成的函數在語法上正確,可以輕鬆修復 TransCoder 的許多錯誤。或者我們可以為這個問題創建專門的架構。”

除了Facebook之外,其他一些巨頭也有興趣開發能夠取代人類「編寫程式碼」的人工智慧系統。在今年稍早的 Microsoft Build 大會上,OpenAI 展示了在 GitHub 上訓練的人工智慧,能夠根據英文評論編寫功能齊全的軟體。兩年前,萊斯大學創建了一個名為 Bayou 的系統,該系統能夠透過在公開共享的程式碼行中綜合「意志」來編寫自己的軟體。

英特爾實驗室主任 Justin Gottschlich 表示:“這些人工智慧系統將有助於消除軟體開發過程中的細節。” 「他們可以幫助程式設計師透過解決錯誤來加快軟體開發速度。此外,他們還有助於增加科技業的就業機會,沒有程式設計背景的人也可以加入。這些人將承擔創造性的任務,而離開編碼部分到人工智慧。”

你對 Facebook 的這個新人工智慧有何看法?歡迎在文章下方留言區留下你的看法!

Leave a Comment

在 Windows 10 上打開設備管理器的 6 種方法

在 Windows 10 上打開設備管理器的 6 種方法

如何在 Windows 10 上打開設備管理器,獲得最佳解決方案。

歐洲將成立ChatGPT工作小組

歐洲將成立ChatGPT工作小組

聯合歐洲國家隱私監管機構的機構週四表示,已成立一個專門負責 ChatGPT 的工作小組

AI預測人類死亡時間,準確率達78%

AI預測人類死亡時間,準確率達78%

丹麥和美國科學家合作開發了一種名為 life2vec 的人工智慧系統,能夠高精度預測人類死亡時間。

AI僅透過尿液聲音預測泌尿系統疾病

AI僅透過尿液聲音預測泌尿系統疾病

一種名為 Audioflow 的人工智慧演算法可以聆聽排尿的聲音,從而有效、成功地識別患者的異常尿流和相應的健康問題。

調酒師注意了:這個機器人只要1分鐘就能調出一杯雞尾酒

調酒師注意了:這個機器人只要1分鐘就能調出一杯雞尾酒

日本的老化和人口減少導致該國缺乏大量年輕工人,特別是在服務業。

當數百人得知他們所愛的女孩是人工智慧的產物時,他們的幻想破滅了

當數百人得知他們所愛的女孩是人工智慧的產物時,他們的幻想破滅了

名為 u/LegalBeagle1966 的 Reddit 用戶是眾多迷戀 Claudia 的用戶之一,Claudia 是一個電影明星般的女孩,經常在這個平台上分享誘人的自拍照,甚至是裸體的。

又有12家潛力公司加入微軟「AI聯盟」。

又有12家潛力公司加入微軟「AI聯盟」。

微軟剛剛宣布,又有 12 家科技公司將參與其 AI for Good 計畫。

AI有血有肉再現七龍珠角色

AI有血有肉再現七龍珠角色

使用者@mortecouille92利用圖形設計工具Midjourney的力量,創建了著名龍珠角色的獨特逼真版本,如悟空、貝吉塔、布瑪和老龜。

改善 ChatGPT 反應的 7 種技巧

改善 ChatGPT 反應的 7 種技巧

只需添加一些條件或設定一些場景,ChatGPT 就可以為您的查詢提供更相關的答案。讓我們看看可以提高 ChatGPT 響應品質的一些方法。

驚嘆人工智慧繪製的精美畫作

驚嘆人工智慧繪製的精美畫作

Midjourney是一個人工智慧系統,最近在網路社群和藝術家界引起了“熱潮”,因為它的畫作極其精美,不遜色於真正的藝術家。