Detection of LLM-Generated Java Code Using Discretized Nested Bigrams

📄 arXiv: 2502.15740v1 📥 PDF

作者: Timothy Paek, Chilukuri Mohan

分类: cs.SE, cs.AI, cs.CL, cs.LG

发布日期: 2025-02-07

备注: This preprint precedes the final peer-reviewed version, which will be published in Springer's CSCI 2024 proceedings


💡 一句话要点

提出离散化嵌套Bigram频率特征,用于检测LLM生成的Java代码

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: LLM代码检测 代码作者身份识别 离散化特征 嵌套Bigram Java代码分析

📋 核心要点

  1. 现有方法在检测LLM生成的代码方面存在不足,尤其是在处理大规模数据集和区分不同LLM生成代码时。
  2. 论文提出离散化嵌套Bigram频率特征,通过将稀疏信息映射到密集成员箱中,提高特征的表达能力。
  3. 实验结果表明,该方法在检测GPT生成的Java代码方面显著优于现有方法,并在大规模数据集上表现出良好的可扩展性。

📝 摘要(中文)

大型语言模型(LLM)目前被广泛用于生成代码,无论是专业人士还是学生,这促使了检测LLM生成代码的工具的开发,以应用于学术诚信和网络安全等领域。我们将此作者身份归属问题视为一个二元分类任务,同时进行特征识别和提取。我们提出了一种新的离散化嵌套Bigram频率特征,用于处理各种大小的源代码组。与先前的工作相比,通过在密集成员箱中表示稀疏信息,获得了改进。实验评估表明,我们的方法显著优于常用的GPT代码检测API和基线特征,在使用12个特征检测GPT 3.5和GPT4重写的976个Java代码片段时,准确率超过96%,而GPT代码检测API和基线特征的准确率分别为72%和79%。在一个包含40个作者的数据集中,我们的方法也优于三项先前的代码作者识别工作。我们的方法可以很好地扩展到更大的数据集,并且在使用227个特征处理来自GPT 4o的76,089个文件和超过1,000个作者的数据集时,我们实现了99%的准确率和0.999的AUC。

🔬 方法详解

问题定义:论文旨在解决如何准确检测由大型语言模型(LLM)生成的Java代码的问题。现有的方法,如直接使用GPT代码检测API或传统的特征工程方法,在准确性和可扩展性方面存在局限性,难以有效区分LLM生成的代码和人工编写的代码,尤其是在大规模数据集上。

核心思路:论文的核心思路是利用离散化嵌套Bigram频率特征来捕捉LLM生成代码的独特模式。通过将源代码分解为嵌套的Bigram,并将其频率信息离散化到不同的成员箱中,可以有效地表示代码的结构和风格特征,从而提高检测的准确性。

技术框架:该方法主要包括以下几个阶段:1) 源代码预处理:对输入的Java源代码进行清洗和标准化处理。2) Bigram提取:将源代码分解为嵌套的Bigram序列。3) 频率统计:统计每个Bigram在代码中的出现频率。4) 离散化:将Bigram频率离散化到预定义的成员箱中。5) 特征向量构建:将离散化后的频率信息组合成特征向量。6) 分类器训练:使用机器学习分类器(如支持向量机或随机森林)对特征向量进行训练,以区分LLM生成的代码和人工编写的代码。

关键创新:该方法最重要的技术创新点在于提出了离散化嵌套Bigram频率特征。与传统的n-gram特征相比,嵌套Bigram能够更好地捕捉代码的结构信息;与直接使用Bigram频率相比,离散化能够有效地处理稀疏数据,并提高特征的鲁棒性。这种特征表示方法能够更有效地捕捉LLM生成代码的独特模式,从而提高检测的准确性。

关键设计:论文中关键的设计包括:1) 成员箱的数量和边界:需要根据数据集的特点进行调整,以平衡特征的表达能力和计算复杂度。2) 嵌套Bigram的深度:需要根据代码的复杂程度进行选择,以捕捉不同层次的结构信息。3) 分类器的选择和参数调优:需要根据数据集的特点进行选择和调优,以获得最佳的分类性能。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

实验结果表明,该方法在检测GPT 3.5和GPT4重写的Java代码片段时,准确率超过96%,显著优于常用的GPT代码检测API(72%)和基线特征(79%)。在大规模数据集(76,089个文件,超过1,000个作者)上,该方法使用GPT 4o实现了99%的准确率和0.999的AUC,表明其具有良好的可扩展性。

🎯 应用场景

该研究成果可应用于学术诚信检测,防止学生使用LLM生成代码进行作弊;也可应用于网络安全领域,检测恶意代码是否由LLM生成,从而提高安全防护能力。此外,该技术还可用于代码作者身份识别,帮助确定代码的来源和归属,具有重要的实际价值和潜在的应用前景。

📄 摘要(原文)

Large Language Models (LLMs) are currently used extensively to generate code by professionals and students, motivating the development of tools to detect LLM-generated code for applications such as academic integrity and cybersecurity. We address this authorship attribution problem as a binary classification task along with feature identification and extraction. We propose new Discretized Nested Bigram Frequency features on source code groups of various sizes. Compared to prior work, improvements are obtained by representing sparse information in dense membership bins. Experimental evaluation demonstrated that our approach significantly outperformed a commonly used GPT code-detection API and baseline features, with accuracy exceeding 96% compared to 72% and 79% respectively in detecting GPT-rewritten Java code fragments for 976 files with GPT 3.5 and GPT4 using 12 features. We also outperformed three prior works on code author identification in a 40-author dataset. Our approach scales well to larger data sets, and we achieved 99% accuracy and 0.999 AUC for 76,089 files and over 1,000 authors with GPT 4o using 227 features.