[论文解读] Zero-Shot Detection of Machine-Generated Codes
本文提出 DetectGPT4Code,一种零样本、无需训练的方法,通过使用代理白盒模型估算最右端标记的概率,实现对机器生成代码的检测,在 GPT-3.5、GPT-4 和 text-davinci-003 的 Python 与 Java 数据集上均达到最先进性能,其中 PolyCoder-160M 成为最有效的通用检测器。
This work proposes a training-free approach for the detection of LLMs-generated codes, mitigating the risks associated with their indiscriminate usage. To the best of our knowledge, our research is the first to investigate zero-shot detection techniques applied to code generated by advanced black-box LLMs like ChatGPT. Firstly, we find that existing training-based or zero-shot text detectors are ineffective in detecting code, likely due to the unique statistical properties found in code structures. We then modify the previous zero-shot text detection method, DetectGPT (Mitchell et al., 2023) by utilizing a surrogate white-box model to estimate the probability of the rightmost tokens, allowing us to identify code snippets generated by language models. Through extensive experiments conducted on the python codes of the CodeContest and APPS dataset, our approach demonstrates its effectiveness by achieving state-of-the-art detection results on text-davinci-003, GPT-3.5, and GPT-4 models. Moreover, our method exhibits robustness against revision attacks and generalizes well to Java codes. We also find that the smaller code language model like PolyCoder-160M performs as a universal code detector, outperforming the billion-scale counterpart. The codes will be available at https://github.com/ Xianjun-Yang/Code_detection.git
研究动机与目标
- 为应对先进 LLM(如 GPT-4 和 Codex)生成的机器生成代码日益增长的未被检测风险。
- 探究现有基于文本的检测器为何在代码上失效,原因在于其独特的统计特性(如熵较低)。
- 开发一种专为黑盒 LLM 生成代码设计的零样本检测方法,无需模型微调。
- 评估该方法在用户修改生成代码以逃避检测的修订攻击下的鲁棒性。
- 探索小型代码专用模型作为跨多种编程语言和模型的通用检测器的潜力。
提出的方法
- 通过用代理白盒模型替代原始 DetectGPT 中对输出 logits 的依赖(黑盒模型如 GPT-4 不提供该信息),适配零样本文本检测器 DetectGPT。
- 使用填空中间(FIM)任务,通过掩码可控数量的代码行(最优:8 行)生成扰动后的代码片段。
- 利用代理模型计算给定前序上下文下最右端标记的概率,其中比例 γ 控制评分窗口。
- 基于对最右端标记的概率估计对每个代码片段进行打分,并与预设阈值比较以实现检测。
- 利用代理模型在不访问原始 LLM 内部 logits 的情况下估计似然性,从而实现在黑盒设置下的检测。
- 在多样化数据集(CodeContest、APPS)和编程语言(Python、Java)上应用该方法,以评估其泛化能力和鲁棒性。
实验结果
研究问题
- RQ1现有零样本或基于训练的文本检测器能否有效检测由 GPT-3.5 和 GPT-4 等先进 LLM 生成的代码?
- RQ2代码的结构和统计特性(如熵较低)如何影响标准文本检测器的性能?
- RQ3代理白盒模型能否有效估计代码中最右端标记的似然性,从而实现在黑盒 LLM 环境下的零样本检测?
- RQ4所提出方法在用户通过修改生成代码以逃避检测的修订攻击下是否具备鲁棒性?
- RQ5小型代码专用语言模型是否在作为机器生成代码的通用检测器时优于更大的通用 LLM?
主要发现
- 现有文本检测器(包括 DetectGPT)因代码独特的统计特性(如熵较低)而无法检测由先进 LLM 生成的代码。
- 所提出的 DetectGPT4Code 方法在 APPS-GPT3 和 APPS-GPT4 上分别取得最先进 AUROC 得分 79.89 和 77.90,真阳性率(TPR)分别达到 47.82% 和 45.93%。
- 在 FIM 任务中掩码 8 行可获得最优检测性能,掩码行数过少或过多均会因扰动不足或过强导致 AUROC 和 TPR 下降。
- 该方法对修订攻击具有强鲁棒性:当在 APPS-GPT4 上修改 4 行时,AUROC 仅下降 3.09 个点,表明其具备出色的抗逃避能力。
- 出人意料的是,较小的 PolyCoder-160M 模型在所有基准测试、编程语言和 LLM 上均优于更大的模型作为代理检测器。
- 当切换到 Java 语言时,检测性能显著下降,尤其在未针对 Java 微调的模型上,表明未来工作需考虑语言特定的适配。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。