Beyond BLEU: A Semantic Evaluation Method for Code Translation
本文提出了一种利用编译器测试来衡量执行正确性的新颖代码翻译语义评估方法,证明了基于大语言模型的反编译器显著优于启发式方法,而像 BLEU 这样的传统语法指标则与功能准确性缺乏相关性。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你正试图将一份外语食谱翻译成英文。
旧方法:数单词
传统上,当计算机检查翻译质量时,会使用一种名为BLEU的方法。这就像一位老师通过简单计算有多少单词与原文匹配来给翻译打分,而完全忽略含义。
- 问题所在: 如果原文食谱写着“加一撮盐”,而翻译写的是“加一点点盐”,计算机就会认为它们差异巨大,因为单词并不完全匹配。
- 更大的问题: 如果原文写着“在 350°F 下烘烤”,而翻译不小心写成了“在 500°F 下烘烤”,计算机可能仍会给它们打高分,因为单词看起来相似。结果呢?你得到了一块烤焦的蛋糕,但计算机却说:“干得漂亮!”
本文作者认为,对于计算机代码而言,这种“数单词”的方法毫无用处。两个程序在页面上可能看起来截然不同,却做着完全相同的事情(就像用两种不同的方式系鞋带)。反之,两个程序看起来几乎一模一样,却做着完全不同的事情(就像一份食谱写着“加糖”与另一份写着“加盐”)。
新方法:味觉测试
作者提出了一种“味觉测试”方法,不再仅仅关注单词,而是想看看翻译后的代码是否真的以与原文相同的方式运行。
以下是他们新方法的运作方式,使用了一个富有创意的类比:
- 生成器(厨师): 他们使用一种名为Csmith的工具,自动生成成千上万个随机的、简单的计算机程序。这就像一位机器人厨师制作成千上万个随机的、微小的菜肴。
- 参考菜肴: 他们运行这些原始程序,并测量结果的特定“风味特征”(一种数学校验和)。这是他们的基准。
- 翻译: 他们将原始代码输入翻译器(可以是类人 AI 或传统的基于规则的工具),以获得“翻译后”的代码。
- 重做: 他们拿翻译后的代码再次运行,并测量新的“风味特征”。
- 裁决: 如果风味特征完全匹配,则该翻译在语义上是正确的。这意味着代码做着完全相同的工作,即使单词看起来不同。如果风味不匹配,则翻译失败,即使单词看起来相似。
他们的发现
他们在两种类型的翻译器上测试了这种方法:
- 老派(启发式): 这些是遵循严格规则的传统工具。
- 新 AI(大语言模型): 一个经过训练用于翻译代码的大型语言模型。
结果:
- AI 获胜: 与旧的基于规则的工具相比,AI 翻译器在保持代码的“风味”(即实际功能)方面要出色得多。
- 旧指标已失效: 当他们查看“单词匹配”分数(BLEU)时,发现其与代码是否实际运行毫无关联。
- 有时 AI 的单词匹配分数很低,但代码运行完美。
- 有时 AI 的单词匹配分数很高,但代码却已损坏。
结论
本文得出结论,我们需要停止根据代码翻译在多大程度上看起来像原文来对其进行评分。相反,我们必须根据它们是否表现得像原文来评分。旧的数单词方法就像通过一辆车看起来有多像法拉利来评判它,而新方法则是实际驾驶它,看看它是否能跑。作者表明,“驾驶测试”揭示了 AI 在此任务上正变得更好,而“外观相似”测试正在误导我们。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。