中文

猜测与草图:语言模型引导的转译

软件工程 2024-03-18 v2 机器学习 编程语言

摘要

维护遗留软件需要大量的软件与系统工程工时。汇编代码程序要求对计算机机器状态进行底层控制且没有变量名,对人类而言尤其难以分析。现有的常规程序翻译器保证正确性,但针对所涉及的源语言与目标编程语言是手工设计的。习得式转译(即代码的自动翻译)为人工重写与工程工作提供了替代方案。自动符号程序翻译方法保证正确性,但因指数级庞大的搜索空间而难以扩展到更长的程序。其僵化的基于规则的系统也限制了表达能力,因此只能对缩减后的程序空间进行推理。概率神经语言模型(LMs)对每个输入都产生看似合理的输出,但代价是无法保证正确性。在本工作中,我们在神经符号方法中利用 LMs 与符号求解器的优势,用于汇编代码的习得式转译。汇编代码是神经符号方法的合适场景,因为汇编代码可划分为较短的无分支基本块,适于使用符号方法。Guess & Sketch 从 LM 的特征中提取对齐与置信度信息,随后将其传递给符号求解器以判定转译输入与输出的语义等价性。我们在三个不同难度等级的汇编转译任务测试集上测试 Guess & Sketch,结果表明其成功转译的样例比 GPT-4 多 57.6%,比工程化转译器多 39.6%。我们还分享了该任务的训练与评估数据集。

关键词

引用

@article{arxiv.2309.14396,
  title  = {Guess & Sketch: Language Model Guided Transpilation},
  author = {Celine Lee and Abdulrahman Mahmoud and Michal Kurek and Simone Campanoni and David Brooks and Stephen Chong and Gu-Yeon Wei and Alexander M. Rush},
  journal= {arXiv preprint arXiv:2309.14396},
  year   = {2024}
}