Skip to content

Translation in progress Some entries still include text in the original language.

arXiv:后门、投毒与隐私· arXiv:2609.09865· Dongdong Zhao·Indexed by this site · Originally published

CGMIA:用成员推理攻击检测代码生成基准的数据泄漏

Keep Evaluation Fair: Detecting Data Leakage in Code Generation Benchmarks via Membership Inference Attacks

Quick read

Attacks

Based on 论文 PDF (AI 生成); refer to the original

CGMIA 用影子模型与专家+语义特征检测代码生成基准泄漏,在四模型上平均 Precision 达 0.82–0.92。

Threat modelscore-access black-box:攻击者无法访问目标 LLM 的架构、参数、梯度与训练数据,只能查询得到生成代码与 token 级 log-probabilities,用以判断基准样本是否属于其训练集。

Questions
公开代码生成基准可能进入 LLM 训练集,抬高评测分数;商业模型不公开训练数据,无法直接比对语料。作者称现有方法中仅 DetectLeak 面向完整程序生成基准,且准确率约 40–50%。
Methods
CGMIA 在 score-access black-box 下微调影子模型,把微调样本标为 member、留出样本标为 non-member,抽取 CodeBLEU、编辑距离、困惑度、测试通过率及 CodeBERT 嵌入,经对齐后送入分类器判断基准样本是否在目标训练集中。
Experiments and results
目标与影子为同一模型时,CGMIA 在四个目标模型、八个基准上的平均 Precision 为 0.89、0.89、0.92、0.82。相对各模型最强基线,平均 Precision 提升 0.05–0.16。在 StarCoder-7B 上可识别超过 65% 的 108 条已知泄漏 APPS 样本。
Limitations and future work
作者在第 6 节讨论内部、外部与构造效度威胁,包括模拟泄漏、影子模型与目标不完全匹配、以及基准规模较小。实验覆盖四个开源小模型与八个基准,并在 StarCoder-7B/APPS 上做了已知泄漏检测;重复五次取中位数。
Experimental setupQwen2.5-Coder (3B)、CodeGemma (2B) et al. · HumanEval-X (Python)、HumanEval-X (Java) et al. · Precision、Recall et al.
Evaluated models
Qwen2.5-Coder (3B)CodeGemma (2B)DeepSeek-Coder (1.3B)Phi-2 (2.7B)StarCoder-7B
Benchmarks
HumanEval-X (Python)HumanEval-X (Java)MBXP-PythonMBXP-JavaNaturalCodeBench-PythonNaturalCodeBench-JavaEvoCodeBenchClassEvalAPPS
Metrics
PrecisionRecallMCCAUCpass@1
AI summary针对代码生成基准数据泄漏导致评测虚高的问题,研究者提出 CGMIA(Code-Generation-specific Membership Inference Attack),通过在基准样本子集上微调影子模型构建成员与非成员标注数据,并融合 CodeBLEU、编辑距离、测试通过率、困惑度等专家特征与 CodeBERT 嵌入语义特征进行集成学习,判断样本是否进入目标模型训练集。在八个代码生成基准上,CGMIA 多数情况下优于八种现有成员推理方法,并有效检出 StarCoder-7B 训练数据中已知泄漏的 APPS 样本。

针对代码生成基准数据泄漏导致评测虚高的问题,研究者提出 CGMIA(Code-Generation-specific Membership Inference Attack),通过在基准样本子集上微调影子模型构建成员与非成员标注数据,并融合 CodeBLEU、编辑距离、测试通过率、困惑度等专家特征与 CodeBERT 嵌入语义特征进行集成学习,判断样本是否进入目标模型训练集。在八个代码生成基准上,CGMIA 多数情况下优于八种现有成员推理方法,并有效检出 StarCoder-7B 训练数据中已知泄漏的 APPS 样本。

Paper analysis

6 questions; open one to read the full answer

  1. What problem does this paper attempt to solve?

    公开代码生成基准可能泄入训练集,CGMIA 在黑盒下做成员推断以检测泄漏。

    如何在无法访问训练语料时,判断代码生成基准样本是否已进入目标 LLM 的训练集,从而避免评测被记忆抬高。

    • 场景与重要性:作者称 LLM 常在含 GitHub 等代码的大规模语料上预训练,公开基准可能被无意纳入;Zhou 等发现 APPS 的 108 条样本出现在 StarCoder-7B 预训练数据中,其 pass@1 为未确认样本的 4.9 倍。作者还指出开发者可能故意混入基准以抬高榜单,而商业模型不公开训练数据,直接比对语料不可行。
    • 现有方法不足:作者称据其所知,DetectLeak 是目前唯一专门检测代码生成基准泄漏的方法,只依赖困惑度,对复杂或罕见样本表现差,检测准确率约 40–50%,甚至低于随机猜测。Gotcha、CodeMI、TraWiC、Buzzer 面向版权保护中的局部补全或掩码预测,未充分利用功能正确性。
    • 核心观察:作者假设泄漏并被记忆的样本,其生成代码更接近参考解,测试通过率更高;困惑度、编辑距离、BLEU 与 Pass@k 都可作为记忆信号。
    • 本文提出:提出 CGMIA(Code-Generation-specific Membership Inference Attack),用影子模型构造 member/non-member 标签,融合专家特征与 CodeBERT 语义特征训练成员推断分类器。作者称据其所知,这是首次把 MIA 用于代码生成基准的数据泄漏检测。
    • 威胁模型:
      • 目标:判断基准样本 (x, y) 是否属于目标模型 M 的训练集 D_train。
      • 知识:架构、参数、梯度与训练数据均不可访问,作者称为 query-based, score-access black-box。
      • 能力:给定代码生成提示 x,可得到生成结果 ŷ=M(x) 及 token 级 log-probabilities,用于计算困惑度。
      • 受害系统:被评测的代码生成 LLM;训练数据可能无意或有意包含基准 D_bench 中的样本。
  2. What related research exists?

    相关工作分代码域分类器型 MIA、度量型 MIA,以及基准泄漏中被忽略的功能正确性。

    论文在第 2 节按分类器型与度量型组织代码域成员推断,并指出它们与完整程序生成基准的差距。

    • 分类器型代码 MIA(版权保护)
      • Gotcha(Yang 等):在目标训练数据的已知子集上微调影子模型做代码补全,用 CodeBERT 编码 (输入代码, 补全代码, 参考) 训练神经分类器。
      • CodeMI:用多个影子模型,把输出转为排序概率向量,训练神经成员分类器,同样面向代码补全。
      • TraWiC:掩码标识符后做精确匹配与模糊匹配,用匹配率训练随机森林。作者称这三篇面向局部补全或掩码预测,并不完全适用于完整程序基准。
    • 度量型 MIA
      • 通用文献:Min-k% Prob Attack 用输出置信度;Loss Attack 用交叉熵损失判断成员。
      • Buzzer:对输入做大小写等扰动,比较 [CLS] 嵌入变化,假设成员更敏感。作者称 LLM 对轻微扰动较稳健,该方法区分效果有限。
      • DetectLeak(Zhou 等, 2025):作者称它是唯一专门检测代码生成基准泄漏的方法,用生成代码的困惑度,低困惑度视为更可能被记忆;但困惑度主要反映对常见模式的熟悉程度,复杂或罕见样本上差,准确率约 40–50%,且阈值选择不当会带来高误报或漏报。
    • 功能正确性信号:作者称上述工作常忽略基准自带测试用例;Zhou 等观察到泄漏样本通过率异常高。
    • 基线与基准:实验基线为 DetectLeak、Gotcha、CodeMI,以及在四项专家特征上训练的 LR、RF(附录另有 SVM、NB、DT、MLP),和只从生成代码与参考解学习语义的 CNN、LSTM、Transformer。TraWiC 与 Buzzer 因任务不兼容被排除。基准为 HumanEval-X(Python/Java)、MBXP(Python/Java)、NaturalCodeBench(Python/Java)、EvoCodeBench、ClassEval;已知泄漏验证用 Zhou 等报告的 APPS 样本与 StarCoder-7B。

    作者将本文定位为面向完整程序代码生成基准的 MIA:同时使用正确性、与参考解的相似度、困惑度和语义特征,而不是只做补全或只看单一度量。

  3. How does the paper address this problem?

    影子模型构造标签,融合四项专家特征与 CodeBERT 嵌入训练成员分类器。

    CGMIA 先用可控影子模型模仿目标模型在 member 与 non-member 上的行为,再把专家特征与语义特征融合,训练分类器 F。

    问题设定与形式化

    • 判定目标:给定提示 x、参考解 y 与生成代码 ŷ=M(x),分类器输出该样本是否在 D_train 中。公式为 F(x, y, ŷ)=1 当且仅当 (x,y)∈ Dtrain,否则为 0。
    • 访问假设:score-access black-box。作者举例称 OpenAI、Google Vertex AI 以及 vLLM、TensorRT-LLM、llama.cpp 可暴露 token 级 log-probabilities。
    • 两阶段:先在影子模型上训练分类器,再查询目标模型并预测。

    影子模型与标签构造

    • 正负样本:从 D_bench 随机抽 p 条微调影子模型 S,记为 member;其余 q 条为 non-member。为避免不平衡,设 p=q。查询 S 得到 (x, y, ŷ) 三元组。
    • 攻击阶段:用目标模型 M 对基准样本生成 ŷ,将三元组送入已训练的 F。
    • 模拟泄漏划分:实验把 D_bench 随机均分为互斥的四份。目标模型在 D_bench1 上微调,D_bench1 为 member、D_bench2 为 non-member;影子模型在 D_bench3 上微调,D_bench3/D_bench4 分别为分类器的正负样本。影子与目标的 member/non-member 不重叠,以维持对目标的黑盒访问。

    特征提取

    • 专家特征(每条样本 20 维):每个提示用 nucleus sampling(top-p=0.95,temperature=0.8)采 5 个输出,每个输出算四项特征。CodeBLEU 衡量与参考解的语义与句法相似;编辑距离为把 ŷ 变成 y 的归一化 token 级最少编辑次数;困惑度由 token 级 log-probabilities 计算,越低表示生成越可预测;测试通过率为二元值,全部测试通过为 1,否则为 0。
    • 语义特征:用冻结的 CodeBERT 编码 5 个生成结果和参考解。超过长度限制时按最多 510 个代码 token、stride 256 的滑动窗口切块,取 [CLS] 后对块表示取平均,得到 768 维序列嵌入,共 6 个向量。

    融合与分类器

    • 对齐:五条生成代码嵌入经一维 CNN 压成 768 维;20 维专家特征先标准化,再线性投影到 2048 维。与参考解的 768 维拼接后得到 3584 维向量。CNN 与专家特征投影在初始化后冻结,不随成员标签更新;作者称这借鉴固定特征变换以减少可训练参数与过拟合风险。
    • 分类器:三层前馈网络,3584→1024→512→2,softmax 后用交叉熵训练。优化器 Adam,学习率 1e-4,batch size 100,50 epochs。
    • 微调设置:目标与影子均用 LoRA,rank 8,α=32,dropout 0.04,作用于注意力的 Q/K/V 与 FFN 线性层;AdamW,学习率 2e-5,20 epochs,batch size 2,最大序列长度 2048。
    • 跨基准训练:因部分基准数据量有限,用八个基准合并的训练集训练一个分类器,再分别在各基准上预测;重复五次,取中位数。深度学习基线将 40% 训练集划为验证集。

    成功判定

    • 指标:Precision、Recall、MCC(−1 到 1,0 相当于随机)、AUC。主实验中评测集 member 占 50%;DetectLeak 把困惑度最低的一半标为 member。
    • 显著性:以每个基准为一个配对观测,对八个基准做 Wilcoxon signed-rank 检验,BH 校正,α=0.05,并用 Cliff's δ 划分效应量。
  4. What experiments did the paper conduct?

    同模型影子下 CGMIA 平均 Precision 0.82–0.92,并检出逾 65% 已知泄漏 APPS 样本。

    实验设置

    • 被测模型:Qwen2.5-Coder (3B)、CodeGemma (2B)、DeepSeek-Coder (1.3B)、Phi-2 (2.7B),既作目标也作影子。作者称这些模型发布时已对 HumanEval、MBPP 等做过去重。已知泄漏实验另用 StarCoder-7B。
    • 基准与规模:HumanEval-X Python/Java 各 164;MBXP-Python 974、MBXP-Java 966;NaturalCodeBench Python/Java 各 70;EvoCodeBench 275;ClassEval 100(Table 2)。语言为 Python 与 Java。已知泄漏为 Zhou 等报告的 APPS 中 108 条。
    • 基线:Gotcha、DetectLeak、CodeMI、RF、LR、CNN、LSTM、Transformer;附录另报 SVM、NB、DT、MLP。TraWiC、Buzzer 因与代码生成不兼容未纳入。
    • 指标与检验:Precision、Recall、MCC、AUC。Wilcoxon signed-rank + BH,α=0.05,Cliff's δ。每个基准先在全部测试样本上算指标,再跨八个基准比较。
    • 协议:四等分互斥子集模拟泄漏;主实验(RQ1)目标与影子为同一 LLM,成员比例 50%。因数据量有限,八基准合并训练一个分类器,再分基准预测;重复五次取中位数。生成使用 top-p=0.95、temperature=0.8,每提示 5 个样本。
    • 微调前后 pass@1:Table 2 中四模型顺序为 Qwen2.5-Coder、CodeGemma、DeepSeek-Coder、Phi-2。例如 HumanEval-X(Python) 微调前 48.7/20.7/59.7/30.5,微调后 60.4/32.9/68.2/48.8。八基准微调前 pass@1 范围为 0%–59.7%(EvoCodeBench 上 CodeGemma 为 0)。

    主结果

    RQ1 中目标与影子为同一模型。下表为八基准平均 Precision / Recall / MCC / AUC(Table 3–6 的 AVG 行及第 5.1 节)。

    Swipe horizontally to read the table

    目标=影子PrecisionRecallMCCAUC
    Qwen2.5-Coder0.890.890.750.95
    CodeGemma0.890.850.810.94
    DeepSeek-Coder0.920.830.730.95
    Phi-20.820.840.630.89
    • 相对最强基线的平均绝对增益:Precision 分别为 0.07、0.05、0.11、0.16;Recall 为 0.11、0.08、0.06、0.11;MCC 为 0.17、0.26、0.18、0.21;AUC 为 0.10、0.09、0.09、0.13(顺序同为 Qwen2.5-Coder、CodeGemma、DeepSeek-Coder、Phi-2)。作者称 RF 与 CNN 在基线中 Precision、MCC、AUC 次优;LSTM 与 CNN 的 Recall 次优。
    • 相对 DetectLeak:在已知成员比例这一有利设置下,按八基准平均,CGMIA 仍高出 Precision 0.12–0.23、Recall 0.21–0.64、MCC 0.23–0.36、AUC 0.18–0.58。作者称分类器不需要按流行率手设阈值。
    • 显著性:8 个基线 × 4 个模型 × 4 个指标共 128 组中,99 组 BH 校正后 p<0.05,29 组(23%)p≥0.05。作者称参考解长度为 152–1347 tokens,RQ1 性能与长度无明显相关。Table 3 中存在 CGMIA 未居首的格子,例如 Qwen2.5-Coder 的 HumanEval-X(Python) 上 DetectLeak Precision 为 1.00、CGMIA 为 0.90;NaturalCodeBench-Python 上 DetectLeak Precision 为 0.00。

    特征组合(RQ2)

    • 测了什么:在语义特征之外,穷举 CodeBLEU、编辑距离、困惑度、测试通过率的 16 种组合(含无专家特征)。
    • 结果:论文正文在第 5.2 节讨论组合层级;由于中间表格在文本转换中列对齐不完整,这里不转抄无法对齐到具体组合的逐格数字。作者要回答的是四项专家特征如何影响 CGMIA。
    • 作者的解读:作者把组合按所用专家特征个数分成五档,用于比较表面记忆信号与仅用语义特征的差别。

    影子模型不匹配与真实泄漏

    • 影子不匹配(RQ3):作者称将换用不同架构的影子模型,分析架构差异对 CGMIA 的影响。具体逐格结果在转换文本中列错位,不在此填数。
    • 已知泄漏(贡献 3 与摘要):在 StarCoder-7B 上,CGMIA 能识别 Zhou 等报告的 108 条已知泄漏 APPS 样本中的超过 65%。这是目标模型不是实验中那四个微调模型、且泄漏来自既有报告而非本次模拟划分的设置。
    • 类别不平衡:贡献中称还分析了 class imbalance;正文给出的主协议为 p=q、评测集 member 占 50%。

    其他消融与分析

    • 附录传统分类器:Table 13 给出 SVM、NB、DT、MLP 的 AUC。例如 Qwen2.5-Coder 上八基准平均 AUC:SVM 0.66、NB 0.53、DT 0.54、MLP 0.57;CodeGemma 上 SVM 平均 AUC 为 0.50。这些低于 Table 6 正文中 CGMIA 的 0.89–0.95。
    • DetectLeak 的阈值:成员比例已知时取困惑度最低的 50% 为 member;作者认为真实部署中该比例通常未知。
    • 微调抬高性能:Table 2 显示四模型在八个基准上微调后 pass@1 均高于微调前(EvoCodeBench 上 CodeGemma 从 0 到 2.9)。
    • W/D/L:Table 3 Precision 上,Phi-2 对八个基线多为 7/0/1 或 8/0/0;Qwen2.5-Coder 对 DetectLeak 为 4/0/4,p=0.95。
    • 统计例外:作者明确写出与 DetectLeak、LSTM 在 Qwen2.5-Coder、CodeGemma、DeepSeek-Coder 上的 Precision 比较,以及若干 Transformer、RF 情形,并未都达到显著。
    • 实现细节:分类器 50 epochs、学习率 1e-4;LoRA 微调 20 epochs、学习率 2e-5。深度学习基线的 epoch 与学习率与 CGMIA 一致,并用 40% 训练集作验证集。
  5. What are some points that can be further explored?

    第 6 节讨论模拟泄漏与影子不匹配等效度威胁;实验重复五次取中位数。

    作者指出的局限与后续方向

    • 第 6 节标题为 threats to validity,论文把局限放在内部、外部与构造效度中讨论,而不是单独的 Future Work 清单。组织说明写明 Section 6 讨论潜在的效度威胁,Section 7 为结论。转换文本在第 5.2 节之后大段缺失,第 6 节的逐条原句未能完整读到,因此不把实验讨论改写成作者的局限清单。
    • 第 4.1 节已写明的验证困难:对闭源或不完全公开训练集的模型,即使 CGMIA 推断出泄漏,也因没有训练数据真值而无法核实,作者称这会削弱对真实场景有效性的评估,因此实验采用模拟泄漏。
    • 作者计划或未完成事项:论文未在已读部分把代码发布写成已完成;未见明确的 future work 条目可逐句核对。
    • 其余若只出现在缺失正文中的局限陈述,此处不补写。

    实验覆盖范围

    • 模型:主实验目标与影子为 Qwen2.5-Coder (3B)、CodeGemma (2B)、DeepSeek-Coder (1.3B)、Phi-2 (2.7B) 共四个;另在 StarCoder-7B 上检测 108 条已知泄漏 APPS 样本(摘要与第 1.2 节)。
    • 基准:八个基准,规模见 Table 2(70–974 条任务),语言为 Python 与 Java;任务从算法题到类级、仓库级。已知泄漏验证使用 APPS。
    • 基线:八个主基线(DetectLeak、Gotcha、CodeMI、LR、RF、CNN、LSTM、Transformer);附录 Table 13 另有 SVM、NB、DT、MLP 的 AUC。TraWiC 与 Buzzer 被作者说明因任务不兼容而未比较(第 4.4 节)。
    • 协议:每个基准随机分成四份互斥子集;RQ1 中目标与影子为同一模型,评测集 member 占 50%;八基准合并训练一个分类器后分基准预测;重复五次取中位数(第 4.1 节)。论文报告了 Wilcoxon + BH 与 Cliff's δ。
    • 论文未报告:已读正文未给出 StarCoder-7B 实验的精确检出条数(只写 over 65%),也未在摘要中给出查询次数或耗时。RQ2 的 16 种特征组合与 RQ3 的跨架构影子结果,因转换文本列错位,无法逐格核对。
  6. Summarize the main content of the paper

    CGMIA 融合相似度、通过率、困惑度与 CodeBERT,在模拟泄漏上优于八个 MIA 基线。

    CGMIA 用成员推断检测代码生成基准是否泄入 LLM 训练集,使评测不依赖对训练语料的直接访问。

    • 问题:公开基准可能进入爬取语料或被故意混入。Zhou 等发现 APPS 的 108 条在 StarCoder-7B 预训练数据中,pass@1 为未确认样本的 4.9 倍。作者称 DetectLeak 只看困惑度,准确率约 40–50%,且是其所知唯一面向完整程序基准的方法。
    • 方法:score-access black-box 下,用基准的一份子集微调影子模型作 member,留出部分作 non-member。每个提示采样 5 次,抽取 CodeBLEU、编辑距离、困惑度、测试通过率,并与冻结 CodeBERT 的 [CLS] 嵌入对齐融合,训练三层分类器。主实验把基准四等分,使影子与目标的成员集不重叠。
    • 主结果:目标与影子同为 Qwen2.5-Coder、CodeGemma、DeepSeek-Coder、Phi-2 时,八基准平均 Precision 为 0.89、0.89、0.92、0.82,平均 AUC 为 0.95、0.94、0.95、0.89。相对各模型最强基线,平均 Precision 提高 0.05–0.16,MCC 提高 0.17–0.26。128 组比较中 99 组校正后 p<0.05。并非每个基准都高于所有基线,例如若干格上 DetectLeak 的 Precision 更高或为 0。
    • 外部核对:作者报告 CGMIA 能识别 StarCoder-7B 训练数据中超过 65% 的 108 条已知泄漏 APPS 样本。Table 2 中四模型微调后 pass@1 高于微调前。
    • 作者结论:作者认为 CGMIA 在绝大多数情况下优于其他 MIA,分类器不必按成员流行率手设阈值,因而更适合真实评测中成员比例未知的泄漏检测。
Read originalarxiv.org