Improving Code Translation with Syntax-Guided and Semantic-aware Preference Optimization
本文介绍了 CTO,这是一个新颖的框架,它通过在直接偏好优化设置中利用对比学习,将语法引导的编译器反馈与源自源代码的鲁棒语义奖励相结合,以增强代码翻译能力,从而克服现有方法在确保语法正确性和语义一致性方面的局限性。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象你是一位资深翻译,正试图将一份法语食谱转换为仅懂英语的厨师能使用的食谱。你希望新食谱完美实现两点:
- 遵循英语语法规则(语法):句子结构必须正确,以免厨师因语言本身而产生困惑。
- 保持完全相同的含义(语义):你最终烹饪出的菜肴必须尝起来与原版法式菜肴完全一致,而不仅仅是在纸面上看起来相似。
这篇题为《通过语法引导与语义感知偏好优化改进代码翻译》的论文,介绍了一种名为CTO的新方法,旨在帮助 AI 翻译器更好地完成此项工作。
以下是该论文如何用简单的类比解释问题及其解决方案:
问题:当前 AI 翻译器的“陷阱”
目前,试图翻译代码(例如将 Python 代码转换为 C++)的 AI 模型经常陷入陷阱。论文使用了一个巧妙的例子来说明原因:
- “幸运猜测”陷阱(奖励黑客):想象一位翻译写了一份语法完美但使用了错误食材的食谱。然而,由于纯粹的运气,他们被给予的特定测试用例(例如“用 1 个鸡蛋做蛋糕”)成功了,因为错误的食材碰巧适用于那一个特定的鸡蛋。AI 因此获得“通过”,并认为自己做得很好,尽管该食谱在任何其他情况下都是无效的。这被称为奖励黑客。
- “含义完美但语法破碎”陷阱:想象另一位翻译写了一份描述完全正确菜肴的食谱(完美的语义),但书写方式违反了英语语法规则。厨师甚至无法阅读它,因此计算机判定“失败”,尽管其想法是绝妙的。
现有方法难以区分“幸运猜测”和“破碎的想法”。它们通常依赖:
- 稀疏测试用例:就像只给翻译员一个特定的测试来通过。如果他们为了通过那一个测试而作弊,他们就会获胜。
- 参考比较:将新代码与“黄金标准”示例进行比较。但如果黄金标准略有缺陷,或者新代码写法不同但含义相同,AI 就会感到困惑。
解决方案:CTO(“双重检查”系统)
作者提出了CTO,它充当一名严格的两步质量控制检查员。CTO 不再仅仅询问“它通过了测试吗?”,而是同时提出两个不同的问题:
1. 语法检查(Syntax)
这是较简单的部分。系统通过编译器(一种检查代码是否符合语言规则的工具)运行翻译后的代码。
- 类比:将其想象为拼写检查器。如果句子有拼写错误或缺少句号,则自动判定为“失败”。这部分是 100% 可靠的,因为计算机非常擅长检查规则。
2. 含义检查(Semantics)
这是较难的部分。如何在不依赖幸运测试用例的情况下检查含义是否正确?
- 创新点:作者使用一种称为对比学习的技术,训练了一个特殊的“含义检测器”(语义模型)。
- 类比:想象你有一位主厨(源代码)和一名新学徒(翻译后的代码)。含义检测器不仅仅品尝最终菜肴,而是观察食材的本质和烹饪逻辑。它学会说:“尽管这份食谱使用了不同的词汇,但它描述的味道特征与主厨的食谱完全相同。”
- 训练方式:他们选取了正确的食谱,并让 AI 制造微小的、隐蔽的错误,这些错误改变了含义但保持了语法完美。检测器通过比较原始版本和缺陷版本,学会了识别这些“隐蔽的错误”。
CTO 如何工作:“平衡计分卡”
一旦系统拥有这两项检查,它就使用一种称为偏好优化的方法。
- 旧方法:AI 会尝试最大化单一分数。如果语法错误,即使含义完美,整个分数也会归零。
- CTO 方法:它将翻译视为一个多目标游戏。它创建一张“计分卡”,其中:
- 语法获得通过/失败分数。
- 含义根据与原始“风味”的接近程度获得分数。
- 随后,AI 被训练去寻找代码既语法正确又语义准确的“最佳平衡点”。
论文认为,通过结合这两个信号,AI 不再利用幸运测试用例“作弊”,也不再因想法完美但语法糟糕而被拒绝。
结果:它有效吗?
作者在三种流行语言(C++、Java 和 Python)之间的代码翻译上测试了 CTO。
- 竞争对手:他们将 CTO 与其他顶级方法进行了比较,包括使用强化学习(可能不稳定)的方法以及仅依赖标准文本相似性的方法。
- 结果:CTO consistently 获胜。
- 根据模型大小和数据集的不同,它将翻译准确率提高了3.66% 至 6.70%。
- 它特别擅长解决“幸运猜测”问题,确保翻译后的代码确实按预期工作,而不仅仅是在某一个特定测试中有效。
总结
将CTO想象为一位不仅关心拼写(语法)或不仅关心故事(语义)的翻译。它是一位拥有严格编辑检查语法、睿智评论家检查故事的翻译,两者协同工作,确保最终翻译既可读又忠实于原文。这使得 AI 能够更可靠地翻译代码,从而更安全地将软件从一种语言迁移到另一种语言。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。