摘要
arXiv:2505.03818v1 内容类型:交叉领域
摘要:大规模语言模型(LLMs)可以在日常编码任务中取得优异性能,但在需要对程序语义进行非平凡推理的复杂任务上可能会失败。找到训练示例来教LLMs解决这些任务可能是具有挑战性的。
在这项工作中,我们探索了一种基于语义不等价游戏SInQ的方法来合成生成代码推理训练数据:生成器代理创建具有语义差异的程序变体,这些变体源自真实世界的编程任务数据集,而评估器代理则需要识别会导致原始程序和生成变体在行为上发生分歧的输入示例,代理之间通过半对抗的方式进行训练。我们证明,这种设置在理论上可以通过自我对弈无限提高,在无限计算资源的情况下尤为明显。
我们使用多种代码生成和理解基准测试评估了我们的方法,包括跨语言漏洞检测基准(Lu et al., 2021),在仅使用Python代码进行训练的情况下,我们的方法在C/C++代码中提高了漏洞检测能力,并且还在具有挑战性的Python内置标识符交换基准测试(Miceli-Barone et al., 2023)中显示出显著的改进,尽管现代LLMs在这一基准测试中仍然存在困难。
我们发布了可重现实验所需的代码以及生成的合成数据,这些数据可以用来微调LLMs。