LLMSniffer: Detecting LLM-Generated Code via GraphCodeBERT and Supervised Contrastive Learning

📄 arXiv: 2604.16058v1 📥 PDF

作者: Mahir Labib Dihan, Abir Muhtasim

分类: cs.SE, cs.CL

发布日期: 2026-04-17


💡 一句话要点

LLMSniffer:利用GraphCodeBERT和监督对比学习检测LLM生成的代码

🎯 匹配领域: 支柱二:RL算法与架构 (RL & Architecture) 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 代码生成检测 大型语言模型 GraphCodeBERT 监督对比学习 代码质量保证

📋 核心要点

  1. 区分LLM生成的代码和人工编写的代码日益重要,但现有方法在准确性和泛化性方面存在不足。
  2. LLMSniffer通过结合GraphCodeBERT、监督对比学习和特定预处理,提升了代码生成来源的判别能力。
  3. 实验表明,LLMSniffer在两个基准数据集上显著优于现有方法,准确率和F1值均有提升。

📝 摘要(中文)

大型语言模型(LLM)在软件开发中的迅速普及,使得区分AI生成的代码和人工编写的代码成为一项关键挑战,它关系到学术诚信、代码质量保证和软件安全。我们提出了LLMSniffer,一个检测框架,它使用两阶段监督对比学习流程对GraphCodeBERT进行微调,并结合了去除注释的预处理和一个MLP分类器。在GPTSniffer和Whodunit两个基准数据集上的评估表明,LLMSniffer相比之前的基线方法取得了显著的改进:在GPTSniffer上的准确率从70%提高到78%(F1值从68%提高到78%),在Whodunit上的准确率从91%提高到94.65%(F1值从91%提高到94.64%)。t-SNE可视化证实,对比微调产生了良好分离且紧凑的嵌入。我们发布了我们的模型检查点、数据集、代码和一个实时交互演示,以促进进一步的研究。

🔬 方法详解

问题定义:论文旨在解决如何准确区分由大型语言模型(LLM)自动生成的代码和人工编写的代码这一问题。现有方法在区分这两种代码时,准确率较低,难以满足学术诚信、代码质量保证和软件安全等方面的需求。现有方法可能无法充分利用代码的结构信息,或者缺乏有效的特征表示学习机制。

核心思路:论文的核心思路是利用GraphCodeBERT模型学习代码的结构化表示,并通过监督对比学习,使得LLM生成的代码和人工编写的代码在嵌入空间中尽可能分离。通过去除注释的预处理,减少代码风格对模型的影响,从而提高模型的泛化能力。

技术框架:LLMSniffer的整体框架包括以下几个主要步骤:1) 数据预处理:去除代码中的注释,以减少代码风格对模型的影响。2) 特征提取:使用GraphCodeBERT模型将代码转换为向量表示。3) 对比学习:使用监督对比学习方法,对GraphCodeBERT进行微调,使得LLM生成的代码和人工编写的代码在嵌入空间中尽可能分离。4) 分类:使用一个MLP分类器,根据代码的向量表示,判断代码是由LLM生成还是人工编写。

关键创新:该论文的关键创新在于:1) 采用了GraphCodeBERT模型,能够有效利用代码的结构信息。2) 提出了一个两阶段的监督对比学习流程,能够有效地学习区分LLM生成代码和人工编写代码的特征表示。3) 结合了去除注释的预处理步骤,提高了模型的泛化能力。

关键设计:在对比学习阶段,使用了监督对比损失函数,该损失函数旨在最小化同一类别样本之间的距离,同时最大化不同类别样本之间的距离。具体来说,对于每个样本,选择同一类别中的其他样本作为正样本,选择不同类别中的样本作为负样本。通过调整对比学习的温度参数,可以控制正负样本之间的距离。MLP分类器的结构包括多个全连接层,并使用ReLU激活函数。训练过程中,使用了Adam优化器和交叉熵损失函数。

🖼️ 关键图片

fig_0
fig_1

📊 实验亮点

LLMSniffer在GPTSniffer数据集上将准确率从70%提升至78%(F1值从68%提升至78%),在Whodunit数据集上将准确率从91%提升至94.65%(F1值从91%提升至94.64%)。t-SNE可视化结果表明,对比微调能够产生良好分离且紧凑的嵌入,验证了该方法的有效性。

🎯 应用场景

LLMSniffer可应用于学术诚信检测,帮助识别学生提交的作业中是否存在由AI生成的代码。在软件开发领域,它可以用于代码质量保证,帮助识别潜在的低质量或不安全的代码。此外,该技术还可以用于软件安全领域,检测恶意代码是否由AI生成,从而提高安全防护能力。

📄 摘要(原文)

The rapid proliferation of Large Language Models (LLMs) in software development has made distinguishing AI-generated code from human-written code a critical challenge with implications for academic integrity, code quality assurance, and software security. We present LLMSniffer, a detection framework that fine-tunes GraphCodeBERT using a two-stage supervised contrastive learning pipeline augmented with comment removal preprocessing and an MLP classifier. Evaluated on two benchmark datasets - GPTSniffer and Whodunit - LLMSniffer achieves substantial improvements over prior baselines: accuracy increases from 70% to 78% on GPTSniffer (F1: 68% to 78%) and from 91% to 94.65% on Whodunit (F1: 91% to 94.64%). t-SNE visualizations confirm that contrastive fine-tuning yields well-separated, compact embeddings. We release our model checkpoints, datasets, codes and a live interactive demo to facilitate further research.