Improving Code Translation with Syntax-Guided and Semantic-aware Preference Optimization

📄 arXiv: 2605.13229v1 📥 PDF

作者: Yuhan Wu, Huan Zhang, Wei Cheng, Chen Shen, Jingyue Yang, Wei Hu

分类: cs.AI, cs.SE

发布日期: 2026-05-13

备注: Accepted in the 35th International Joint Conference on Artificial Intelligence (IJCAI 2016)


💡 一句话要点

提出CTO,利用语法引导和语义感知偏好优化提升代码翻译质量

🎯 匹配领域: 支柱二:RL算法与架构 (RL & Architecture)

关键词: 代码翻译 大型语言模型 偏好优化 语义一致性 句法正确性 对比学习 跨语言语义模型

📋 核心要点

  1. 现有代码翻译方法难以同时保证句法正确性和语义一致性,尤其是在语义奖励信号不可靠的情况下。
  2. CTO通过对比学习训练跨语言语义模型,直接评估源和翻译代码的功能等价性,提供更鲁棒的语义信号。
  3. CTO将代码翻译视为多目标优化问题,在直接偏好优化框架中融合语义信号和编译器句法反馈,提升翻译质量。

📝 摘要(中文)

大型语言模型在代码翻译方面展现了巨大的潜力,但它们常常难以保证句法正确性和语义一致性。虽然基于偏好的学习提供了一种有希望的对齐策略,但它受到来自稀疏测试用例或限制性参考翻译的不可靠语义奖励的阻碍。我们认为,代码翻译的鲁棒语义奖励必须直接从源代码中获得。在本文中,我们提出了CTO,通过语法引导和语义感知的偏好优化来改进代码翻译。通过对比学习,我们训练了一个跨语言语义模型,以直接评估源代码和翻译代码之间的功能等价性。通过将代码翻译公式化为一个多目标优化问题,这种鲁棒的语义信号在直接偏好优化框架内与基于编译器的句法反馈无缝统一。在C++、Java和Python翻译的大量实验表明,CTO显著优于现有的基线方法和替代的偏好优化策略。

🔬 方法详解

问题定义:代码翻译任务旨在将一种编程语言的代码自动转换为另一种编程语言的代码。现有的方法,特别是基于大型语言模型的方法,虽然在代码翻译方面取得了显著进展,但仍然面临着句法正确性和语义一致性难以兼顾的问题。传统的基于偏好学习的方法依赖于稀疏的测试用例或受限的参考翻译来获取语义奖励,这些奖励信号往往不可靠,导致翻译结果的质量不高。

核心思路:CTO的核心思路是直接从源代码中提取鲁棒的语义信息,并将其与句法信息相结合,用于指导代码翻译过程。通过训练一个跨语言的语义模型,CTO能够直接评估源程序和翻译程序在功能上的等价性,从而提供更准确、更可靠的语义奖励。这种方法避免了对稀疏测试用例或不完整参考翻译的依赖,提高了翻译的准确性和鲁棒性。

技术框架:CTO的技术框架主要包括三个关键模块:1) 跨语言语义模型训练模块,该模块使用对比学习方法训练一个能够评估不同语言代码语义等价性的模型;2) 句法反馈模块,该模块利用编译器提供的句法信息,确保翻译后的代码在句法上是正确的;3) 直接偏好优化模块,该模块将语义奖励和句法反馈整合到偏好优化框架中,指导代码翻译模型的训练。整个流程首先使用对比学习训练语义模型,然后利用该模型和编译器反馈来优化翻译模型。

关键创新:CTO最关键的创新在于它提出了一种直接从源代码中提取鲁棒语义信号的方法。与传统的依赖测试用例或参考翻译的方法不同,CTO通过对比学习训练跨语言语义模型,能够更准确地评估源程序和翻译程序的功能等价性。此外,CTO将语义信号和句法反馈无缝地整合到直接偏好优化框架中,实现了多目标优化,从而提高了代码翻译的质量。

关键设计:在跨语言语义模型训练中,CTO使用了对比学习损失函数,鼓励语义等价的代码在嵌入空间中更接近,而语义不同的代码则更远离。在直接偏好优化中,CTO将语义奖励和句法反馈作为优化目标,通过调整翻译模型的参数,使其生成的代码既满足句法要求,又在语义上与源程序等价。具体的网络结构和参数设置在论文中有详细描述,例如使用了Transformer架构作为翻译模型的基础。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

实验结果表明,CTO在C++、Java和Python的代码翻译任务中显著优于现有的基线方法。例如,在某些测试集上,CTO的性能比最佳基线提高了10%以上。此外,CTO还优于其他偏好优化策略,证明了其在代码翻译任务中的有效性和优越性。这些结果表明,CTO能够生成更准确、更可靠的代码翻译结果。

🎯 应用场景

CTO在软件开发、代码迁移、程序理解等领域具有广泛的应用前景。它可以帮助开发者更高效地进行跨平台开发,降低代码维护成本,并促进不同编程语言之间的互操作性。此外,CTO还可以应用于自动化代码审查和漏洞检测,提高软件的质量和安全性。未来,CTO有望成为构建更智能、更可靠的软件系统的关键技术。

📄 摘要(原文)

LLMs have shown immense potential for code translation, yet they often struggle to ensure both syntactic correctness and semantic consistency. While preference-based learning offers a promising alignment strategy, it is hindered by unreliable semantic rewards derived from sparse test cases or restrictive reference translations. We argue that a robust semantic reward for code translation must be derived directly from the source code. In this paper, we propose CTO to improve code translation with syntax-guided and semantic-aware preference optimization. Through contrastive learning, we train a cross-lingual semantic model to directly assess functional equivalence between source and translated code. By formulating code translation as a multi-objective optimization problem, this robust semantic signal is seamlessly unified with compiler-based syntactic feedback within the direct preference optimization framework. Extensive experiments on C++, Java, and Python translations demonstrate that CTO significantly outperforms existing baselines and alternative preference optimization strategies.