论文

站在巨人肩上:面向跨语言代码克隆检测的稳定化知识蒸馏

Standing on the Shoulders of Giants: Stabilized Knowledge Distillation for Cross--Language Code Clone Detection

摘要

跨语言代码克隆检测(X-CCD)具有挑战性:不同语言编写的语义等价程序往往少有表面相似性。尽管大语言模型(LLM)在语义克隆检测上展现出前景,但其黑盒使用引发成本、可复现性、隐私与输出格式不可靠的担忧。特别是紧凑开源模型常难以遵循面向推理的提示,也难产出可稳定映射为二分类克隆标签的输出。为解决这些局限,我们提出知识蒸馏框架:把DeepSeek-R1的推理能力迁移到用于X-CCD的紧凑开源学生模型。用来自Project CodeNet的跨语言代码对构建面向推理的合成训练数据,以LoRA适配器微调Phi3与Qwen-Coder。我们进一步引入响应稳定化方法——强制结论提示、二分类头与对比分类头——并以预测指标与响应率双口径评估模型行为。在Python-Java、Rust-Java、Rust-Python与Rust-Ruby上的实验显示,知识蒸馏一致提升紧凑模型的可靠性并常改善预测性能,尤其在分布偏移下;分类头变体较生成式推理大幅缩短推理时间。总体而言,面向推理的蒸馏加响应稳定化让紧凑开源模型在X-CCD检测上更实用可靠。

站在巨人肩上:面向跨语言代码克隆检测的稳定化知识蒸馏:论文配图
图 1. 知识蒸馏和微调方法:种子数据集是从 Project CodeNet 数据集生成的,其中每个样本由 code1、code2 和一个指示该对是克隆 (1) 还是非克隆 (0) 的标签组成。模板生成器将每个样本嵌入到用于查询 DeepSeek R1 教师模型的用户提示中。教师输出包括推理和结论组件,这些组件由模板引擎处理,以使用两个用户提示变体和三个系统提示配置(推理、结论或两者)创建多个知识蒸馏训练集。生成的训练集用于使用 X-CCD 的 LoRA 适配器微调小型语言模型(Phi3 和 Qwen-Coder)。