核心概念
本文提出了一種名為 INTERTRANS 的新型程式碼翻譯方法,該方法利用現有程式語言作為中間翻譯橋樑,以提高大型語言模型在程式碼翻譯任務中的效能。
摘要
INTERTRANS:利用遞移中間翻譯增強基於大型語言模型的程式碼翻譯
這篇研究論文介紹了 INTERTRANS,一種基於大型語言模型 (LLM) 的程式碼翻譯方法,旨在解決現有 LLM 在處理不同程式語言之間的語法和語義差異方面的局限性。
研究目標:
本研究旨在探討利用遞移中間翻譯來增強基於 LLM 的程式碼翻譯的潛力,特別是針對開源 LLM。
方法:
INTERTRANS 包含兩個主要階段:
- 程式碼翻譯樹 (ToCT) 生成:
- ToCT 是一種新穎的規劃演算法,用於識別從源程式語言到目標程式語言的所有潛在翻譯路徑,並利用預先定義的中間程式語言集和最大中間翻譯次數。
- ToCT 的順序驗證:
- 根據 ToCT 生成的翻譯路徑,INTERTRANS 使用 LLM 依序執行翻譯,並利用測試套件驗證每個翻譯路徑的正確性。
- 一旦找到成功的翻譯(即通過測試套件),演算法就會終止,從而實現早期停止。
主要發現:
- INTERTRANS 在三個基準數據集(CodeNet、HumanEval-X 和 TransCoder)上始終優於直接翻譯(無中間語言翻譯),在計算準確度 (CA) 方面取得了 18.3% 到 43.3% 的顯著提升。
- 增加中間翻譯的數量(即增加 ToCT 的深度)通常會提高 CA,但在三次翻譯後收益會遞減。
- 納入更多中間程式語言是有益的,但在包含三種語言後,收益會逐漸減少。
- 某些中間程式語言(例如,從 C++/Python 到 Java 透過 Rust,以及從 Rust 到 Go 透過 C++)在特定翻譯對中表現出更高的有效性。
主要結論:
- 研究結果表明,基於現有程式語言的中間翻譯可以顯著提高基於 LLM 的程式碼翻譯的效能。
- ToCT 演算法提供了一種有效探索和利用中間翻譯的系統方法。
- INTERTRANS 作為一種與現有程式碼翻譯方法正交的方法,為程式碼翻譯領域做出了貢獻。
意義:
這項研究強調了利用 LLM 的多語言能力來克服程式碼翻譯挑戰的潛力。INTERTRANS 及其 ToCT 演算法為開發更強大的程式碼翻譯工具提供了有價值的見解,這些工具可以簡化軟體開發流程並促進跨平台相容性。
局限性和未來研究:
- 儘管 INTERTRANS 採用了各種優化措施,但由於 ToCT 演算法探索了多個翻譯路徑,因此計算成本仍然很高。未來的研究可以探索並行化推理過程和開發路徑預測方法以提高效率。
- 需要進一步研究以深入了解特定中間程式語言在不同翻譯場景中的有效性,並開發基於特定翻譯問題推薦最佳翻譯路徑的方法。
統計資料
INTERTRANS 在三個基準數據集上與直接翻譯(CA@10)相比,計算準確度 (CA) 絕對提升了 18.3% 到 43.3%(中位數:28.6%)。
INTERTRANS 使用 Magicoder LLM 在三個基準數據集上實現了 87.3%-95.4% 的平均 CA。
平均需要 3.9 次嘗試才能成功翻譯,其中 75% 的案例在兩次嘗試內成功,而只有不到 0.1% 的案例需要 59 到 83 次嘗試。
將 maxDepth 從 1 增加到 2 會導致 Code Llama 的 CA 絕對提升 23.7%。
從中間程式語言中移除 Rust 會導致從 C++ 到 Java 的翻譯成功率降低 17.4%。
引述
"These studies found that many errors in LLM-generated code translations stem from the models’ lack of understanding of syntactic and semantic discrepancies between source and target languages, which can vary significantly across different pairs."
"Inspired by this idea, this paper explores the potential of leveraging transitive intermediate translations from a source PL into other PLs before translating to the desired target PL, an idea not previously explored in the field of automated code translation."
"Our results show that INTERTRANS consistently outperforms direct translation (i.e., without intermediate language translation) with 10 attempts, achieving an absolute Computational Accuracy (CA) improvement of 18.3% to 43.3% (median: 28.6%) across the three LLMs and datasets."