中文

从合成的输入-输出对中学习程序行为模型

软件工程 2025-03-18 v2 机器学习

摘要

我们引入了Modelizer——一个新颖的框架,给定一个黑盒程序,它使用神经机器翻译算法从其输入/输出行为中学习模型。所得模型模拟原始程序:给定一个输入,该模型预测本应由程序产生的输出。然而,该模型也是可逆的——即,该模型能够预测本可产生给定输出的输入。最后,该模型是可微的,并且可以被有效地限制为仅预测程序行为的某个特定方面。Modelizer使用语法来合成输入,并使用无监督分词器来分解所得输出,从而使其能够学习令牌流之间的序列到序列关联。除了输入语法外,Modelizer仅要求具备执行该程序的能力。所得模型很小,对于Markdown或HTML等语言所需的参数少于630万;并且它们是准确的,在模拟真实世界应用时实现了高达95.4%的准确率和0.98的BLEU分数(标准误差为0.04)。由于它是从执行而非代码中进行学习和预测,Modelizer脱离了以LLM为中心的研究趋势,为完全针对单个程序进行调优的特定程序模型开辟了新机遇。确实,我们预见了这些模型的若干应用,特别是由于程序的输出可以是程序行为的任何方面。除了模拟和预测程序行为外,这些模型还可以合成可能产生特定行为(如故障或覆盖)的输入,从而辅助程序理解和维护。

关键词

引用

@article{arxiv.2407.08597,
  title  = {Learning Program Behavioral Models from Synthesized Input-Output Pairs},
  author = {Tural Mammadov and Dietrich Klakow and Alexander Koller and Andreas Zeller},
  journal= {arXiv preprint arXiv:2407.08597},
  year   = {2025}
}

备注

42 pages, 9 figures, 12 tables