对于大模型的评估来说,benchmark 必须是模型在训练阶段从未见过的。如果模型在训练中已经接触过、甚至“背诵”了测试集的内容,那么其在评测中的高分就失去了意义。

这种现象被称为“数据污染”(Data Contamination),它不仅会错误地夸大模型的能力,导致不同模型之间不公平的比较,更会误导整个领域对技术进展的判断。数据污染的存在,使得我们难以确定模型的高性能究竟源于其强大的泛化推理能力,还是仅仅因为它记住了答案。

准确、可靠地检测数据污染,已经成为确保 LLM 评估完整性和可信度的关键环节。学术界和工业界当前已经提出了多种检测数据污染的方法,但它们普遍面临一些实际应用中的挑战:

  • 基于损失函数的标准: 这类方法的核心假设是,模型在训练集样本上的损失(loss)或困惑度(perplexity)会显著低于在未见过样本上的损失。然而,这种方法的阈值设定非常困难,一个固定的阈值往往难以适用于不同的模型和数据集。此外,一些简单、格式化的未见过数据也可能产生很低的损失,从而导致误判。
  • 需要外部参考模型或数据: 一些更先进的方法通过引入一个“参考模型”(通常是更小或更早期的模型)来校准目标模型的输出分数。这种方法虽然提升了准确性,但它依赖于一个“干净”的参考模型,而这个前提本身有时难以保证。另一些方法则需要访问与目标数据集同分布的、但确定未被污染的“留出集”(held-out data),这在很多现实场景中难以实现。

近期 NVIDIA 的论文 《Detecting Data Contamination in LLMs via In-Context Learning》提出了一个新的检测思路,利用了大模型上下文学习(In-Context Learning, ICL)的能力,来有效地区分模型“记忆”的数据和“泛化”的数据。

  • 论文标题:Detecting Data Contamination in LLMs via In-Context Learning
  • 论文链接:https://www.arxiv.org/pdf/2510.27055

1. CoDeC

CoDeC 的核心思想:对于一个给定的数据样本,模型对其预测的置信度(confidence)会因上下文中是否提供了来自同一数据分布的“提示”而发生不同的变化。这种变化的模式,恰好揭示了该样本是否是模型训练的一部分。

1.1 上下文学习对置信度的不同影响

当 LLM 处理一个任务时,我们可以通过在提示(prompt)中提供几个示例(in-context examples)来引导其输出,这就是上下文学习。CoDeC 正是利用了这一机制。

  1. 对于未见过(Unseen)的数据集:
    假设我们有一个模型,它从未在训练中见过 gsm8k 这个小学数学应用题数据集。当我们从 gsm8k 中抽取一个问题(目标样本)让模型回答时,模型会基于其通用的语言和数学能力来预测答案。现在,如果我们在提示中加入另一个同样来自 gsm8k 的问题及其解答(上下文样本),这个上下文样本就为模型提供了关于 gsm8k 数据分布的宝贵信息。模型可以从中“领悟”到这类问题的风格、格式、难度,甚至隐含的解题模式。这种额外的信息有助于模型更好地理解和预测目标样本,因此,模型对目标样本正确答案序列的置信度(通常用对数概率 log-probability 来衡量)会 上升

  2. 对于已见过(Seen)的数据集:
    现在,假设模型在训练中已经“背诵”了 ArXiv 论文摘要数据集。当我们从 ArXiv 中抽取一篇摘要(目标样本)让模型继续生成时,由于模型已经对这个数据分布了如指掌,它能够高度自信地依据其内部“记忆”来生成后续的词元(token)。此时,如果我们再从 ArXiv 中提供另一篇摘要作为上下文,情况就变得不一样了。这个上下文样本对于模型来说是冗余的,因为它没有提供任何新的、模型不知道的信息。不仅如此,这个额外的、可能同样被模型记忆过的上下文,反而可能 干扰 模型对目标样本的“记忆提取”过程。这种记忆模式的“中断”或“冲突”,会导致模型在预测目标样本时变得不那么确定,其置信度反而会 下降

上图直观地展示了这一现象。对于未见过的 gsm8k 样本(图 a),加入上下文后,模型对数概率的变化(绿色部分)大多为正,累积差异(蓝线)持续上升。而对于训练过的 ArXiv 样本(图 b),加入上下文后,模型对数概率的变化大多为负,累积差异持续下降。

CoDeC 正是基于这个简单而稳健的信号来判断数据污染。

1.2 CoDeC 的工作流程

CoDeC 的实现流程非常直观,可以分为以下四个步骤,其概览如下图所示。

1. 基线预测

对于待检测数据集 中的每一个数据样本 ,首先计算模型在没有提供任何额外上下文的情况下的平均对数似然(average log-likelihood)。这个值代表了模型的基线置信度。

其中, 是样本 的第 个词元。

2. 上下文预测

从数据集 中随机采样 个不同于 的样本,记为 。将这些样本拼接到 的前面,形成一个新的输入序列 。然后,再次计算模型对原始样本 部分的平均对数似然。

在论文的实验中,作者发现即使只采样一个上下文样本(即 ),也能获得非常好的效果。

3. 分数计算

计算两种预测下的置信度差异

根据前面的分析,如果 来自未见过的数据集, 倾向于为正;如果 来自已见过的数据集, 倾向于为负。

4. 聚合

对整个数据集 中的所有样本重复上述过程。最终的 CoDeC 分数被定义为数据集中 小于 0 的样本所占的百分比。

其中 是数据集 中的样本总数, 是指示函数(当条件为真时取 1,否则取 0)。

这个最终分数 非常直观:它表示数据集中有多大比例的样本在加入上下文后,模型的置信度反而下降了。一个接近 100% 的分数强烈暗示该数据集存在数据污染,而一个较低的分数则表明数据集是干净的。

1.3 CoDeC 为何有效?

除了上述直观的解释,CoDeC 的有效性还可以从以下几个更深层次的原理来理解:

  1. 数据集特有先验揭示污染: 模型在训练某个数据集时,会内化其独特的风格、结构、词汇和隐含假设,这些构成了“数据集特有的先验”(dataset-specific priors)。如果这些先验已经被模型通过训练“记忆”下来,那么通过上下文样本再次提供这些信息就是多余的。
  2. 上下文干扰记忆模式: 对于被污染的数据,模型依赖的是一种较为“僵化”的记忆模式来预测词元序列。引入的上下文样本,即使来自同一分布,也会构成一个不同的语境,这会干扰或破坏模型既有的记忆通路,导致其预测置信度降低。
  3. ICL 模拟微调动态: 上下文学习(ICL)在某种程度上可以看作是一种“即时微调”(in-the-moment finetuning)。对于未见过的数据,ICL 提供了有效的学习信号,模型能快速适应,性能提升。而对于已经见过(污染)的数据,模型已经处于“过拟合”或“饱和”状态,其学习潜力已经很小,额外的“微调”信号几乎不会带来增益,甚至可能因为扰动而产生负面效果。CoDeC 度量了模型对于特定数据集“剩余的学习容量”。
  4. 干预暴露损失曲面: 数据污染通常与过拟合相关。在损失函数的几何空间中,过拟合的样本对应着一个“狭窄而陡峭”的局部最小值。任何微小的输入扰动(例如增加上下文)都可能使模型“跌出”这个尖锐的谷底,导致损失增大(置信度降低)。相比之下,泛化良好的未见过样本对应着一个“平坦而宽阔”的区域,模型对输入的微小变化不敏感,甚至能从中受益。

2. CoDeC 的优势

作为一个实用的检测工具,CoDeC 具备多项使其易于部署和推广的优良特性:

  • 分数直观易懂: CoDeC 输出的是一个 0% 到 100% 的百分比分数,直接对应“受负面影响样本的比例”。这比那些输出无界、任意尺度分数的传统方法更容易解释和使用,研究人员可以据此设定相对明确的判断标准。
  • 模型与数据集无关性: 该方法不依赖于任何特定的模型架构或数据集类型。只要模型能够输出词元的对数概率(即所谓的“灰盒访问”权限),并且数据集可以表示为一组文本序列,就可以应用 CoDeC。这使得它可以广泛适用于 Transformer、RNN、Mamba 等不同架构的模型,以及代码、问答、对话、书籍等各种形式的数据。
  • 无需参数调优: CoDeC 是一个即插即用的方法,不需要像许多成员推断攻击(MIA)方法那样,针对不同的模型和数据集去调整分类阈值。
  • 计算高效: 相对于需要额外训练(如影子模型)或多次迭代的方法,CoDeC 的计算开销很小。对于每个样本,它只需要两次前向传播(forward pass)。实验表明,即使在只有几百个样本的小型基准测试集上,CoDeC 也能给出稳定可靠的分数。
  • 对文本裁剪的鲁棒性: CoDeC 的分数在使用训练样本的部分片段时仍然保持稳定。这一特性在评估长文本(如书籍、文章)时尤其有用,因为我们可以将长文本分割成多个片段来构成一个数据集。
  • 对格式变化的敏感性: 有趣的是,CoDeC 对文本格式的变化(如添加"Question:"、"Answer:"等标签)很敏感。如果上下文中的格式与模型训练时见过的格式不符,会降低污染分数。这提醒使用者,在进行评测时,应专注于那些保证在训练中出现过的核心文本内容,而剥离那些不确定的格式化指令。

3. 实验

为了系统性地证明 CoDeC 的有效性、可靠性及其在不同场景下的行为特性,作者进行了一系列详尽且层层深入的实验。这些实验的核心优势在于,作者特意选用了一系列具有公开训练数据的模型家族(如 Pythia, GPT-Neo, RWKV, OLMo, Nemotron 等)。这使得他们能够明确地区分哪些数据集是模型“见过”的(训练内),哪些是“未见过”的(训练外),从而在一个有确切答案(ground-truth)的环境下对 CoDeC 的性能进行严格的验证。

3.1. 主实验验证

实验的第一步,是将 CoDeC 与当前领域中常用的数据污染检测方法进行直接的性能比较。作者选择了三种代表性的基线方法:

  • Vanilla Loss:最直接的思路,基于模型在训练样本上的损失(loss)通常更低的假设,使用样本的平均损失作为分数。
  • Min-K% :一种改进的损失方法,认为训练样本的关键特征是没有极低概率的词元,因此该方法只关注样本中 K% 最难预测(损失最高)的词元的损失。
  • Zlib Ratio:该方法旨在解决损失方法无法区分“被污染的简单数据”和“未被污染的简单数据”的问题。它通过 Zlib 压缩率来估计样本的内在信息熵,并用其对模型的困惑度进行归一化。

实验结果如上图所示,图中每个点代表一个(模型,数据集)对的污染分数,红色代表训练内数据,蓝色代表未见过数据。结果对比非常鲜明:

  • CoDeC (ours) 的表现十分出色。它在训练数据(红色)和未见数据(蓝色)之间画出了一条近乎完美的分界线。所有训练数据集的分数都高度集中在接近 100% 的区域,而所有未见数据集的分数都清晰地分布在较低的区间,两者之间几乎没有重叠。
  • 相比之下,所有三种基线方法都表现不佳。它们的训练数据分数和未见数据分数存在大面积的重叠区域。这意味着,对于这些基线方法,我们无法设定一个有效的通用阈值来可靠地区分一个数据集是否被污染。

从定量的 AUC(Area Under the Curve)指标来看,CoDeC 的优势更加明显。在区分见过与未见过数据集这一任务上,CoDeC 取得了 高达 99.9% 的数据集级 AUC,接近理想分类器的表现。而基线方法的 AUC 分数则显著较低,这充分证明了 CoDeC 在准确性上的巨大优势。

此外,作者还分析了 CoDeC 分数在不同模型间的稳定性。

上图展示了多个数据集在所有基于 The Pile 语料库训练的模型上的 CoDeC 分数分布。可以观察到,对于大多数数据集,其分数在不同模型间表现出高度的一致性,通常聚集在一个很窄的范围内。这种稳定性表明 CoDeC 捕获的是数据集本身的某种固有属性与模型记忆之间的关系,而非模型间的随机差异。更重要的是,这种稳定性也意味着,如果某个模型在特定数据集上的分数显著偏离了这个稳定区间,形成一个“异常值”,那么这就是一个非常可疑的、指示着潜在污染的强烈信号。

3.2. 训练过程中的污染过程

CoDeC 不仅能检测最终成型模型的污染,更强大的能力在于它可以在训练过程中动态追踪污染的形成。作者以 OLMo 7B 模型为例,记录了其从初始化到训练完成的整个过程中,对各个数据集的 CoDeC 分数变化。

上图揭示了一个关键的演化过程:

  • 在训练的初始阶段(例如 1k 步之前),模型尚未形成有效的记忆,其行为接近随机。此时,所有数据集的 CoDeC 分数都在 50% 附近徘徊,这符合随机涨落的预期。
  • 一个关键的转变发生在 1k 到 10k 训练步之间。这个阶段仅占总训练过程的约 2%,但在此期间,训练数据集(红色和橙色线)的 CoDeC 分数急剧上升并迅速接近其最终值,而未见数据集(蓝色线)的分数则稳定在较低水平。
  • 在此之后,直到训练结束(约 477k 步),各个数据集的分数都保持相对稳定,没有发生大的变化。

这一发现的意义重大:它表明数据污染在训练的极早期阶段就已经形成并固化,并且可以被 CoDeC 捕捉到。这为模型开发者提供了一个强大的过程监控工具,可以在开发迭代中尽早发现并阻止基准测试集的意外泄漏,从而保障模型评估的长期公正性。

3.3. 可控实验

为了进行最严格的因果验证,作者设计了一系列可控实验:他们选取干净的模型,在某些确认为未见过的数据集上进行短暂的微调(finetuning),以此来“手动”和“确定地”引入污染。

结果如上图所示,在对 Pythia、GPT-Neo、OLMo 甚至未公开训练数据的 Qwen3 等多个模型进行微调后,目标数据集的 CoDeC 分数无一例外地从一个较低的初始值迅速攀升至 90% 以上。这个实验证明了:当一个模型确实接触并学习了某个数据集后,CoDeC 能够捕捉到这一变化

污染的迁移效应

数据污染不仅限于对原始数据的逐字记忆。训练在与基准测试高度相关或相似的数据上,同样会影响评测的公正性。CoDeC 是否能捕捉到这种“污染迁移”呢?作者围绕 MMLU 数据集进行了深入探索。

实验结果表明:

  • 污染会适度迁移至相关任务:在一个模型上微调 MMLU 数据集,会适度提高其他 QA 数据集(如 GPQA, GSM8K)的 CoDeC 分数,但不会影响不相关的文本(如古腾堡书籍)。这是因为不同的 QA 数据集共享相似的格式、风格和结构。
  • CoDeC 无法被简单的数据增强“欺骗”:一个重要的发现是,即使对数据进行简单的增强(如随机裁剪部分文本),CoDeC 依然能检测到原始数据集的污染。这说明,试图通过简单的文本变换来掩盖污染是行不通的。

这些实验证明了 CoDeC 不仅能检测直接的成员身份,还能捕捉到由相关数据分布训练导致的更广泛的污染效应,其检测能力超越了简单的 n-gram 匹配。

上下文学习与过拟合的联系

CoDeC 的工作机制与模型的过拟合现象密切相关。作者通过实验发现,上下文学习(ICL)和模型微调在影响模型置信度上存在惊人的相似性。

上图 (a) 显示,随着上下文样本数量增加,未见数据的置信度上升,而已见数据的置信度下降。上图 (b) 显示,在微调过程中,使用合适的学习率,未见数据的置信度同样会上升,而已见数据(训练数据)的置信度在微小的更新后就会迅速下降。两条曲线的形态几乎一致,这表明 CoDeC 利用 ICL 作为一种高效的代理,模拟了微调过程中的模型行为

这可以用 loss landscape 来解释:被模型记忆(过拟合)的样本对应着一个“狭窄而陡峭”的局部最小值。任何微小的扰动,无论是来自梯度的微小更新还是来自上下文的干预,都可能使模型“跌出”这个尖锐的谷底,导致置信度降低。相反,泛化良好的未见样本对应着一个“平坦而宽阔”的区域,模型对扰动不敏感,甚至能从中受益。CoDeC 正是利用了这种对扰动的不同敏感性来区分记忆与泛化。

3.4. 消融实验

为了探究 CoDeC 方法在不同配置下的表现,并为使用者提供实际操作的指导,作者还进行了一系列消融研究(Ablation Studies)。

上下文大小 (Context Size) 的影响

实验结果如上图 (a) 所示,增加上下文样本的数量可以进一步增强训练集和未见集分数的分离度。但实验也清晰地表明,即使只有一个上下文样本,CoDeC 也已经提供了非常强的区分信号。因此,在实际应用中,使用单个上下文样本是在效率和效果之间的一个出色平衡点。

目标数据集大小 (Target Dataset Size) 的影响

另一个关键的实际问题是需要多少样本才能得到可靠的分数。上图 (b) 的结果显示 CoDeC 具有很高的样本效率:仅需约 100 个样本,CoDeC 就能给出波动性很低的稳定分数;当样本量增加到 1000 个时,分数的方差已经降至 1% 以下。这使得该方法完全适用于样本量不大的小型基准测试。

3.5. 如何应用 CoDeC 分数

基于上述全面的实验,作者为如何应用 CoDeC 分数提供了清晰的指南:

CoDeC 分数衡量的是模型预测对“记忆模式”的依赖程度,而非一个严格的布尔值。高分意味着模型的输出很可能受到了内部记忆的驱动,而不是纯粹的泛化推理。

  • 经验性阈值:

    • > 80%: 强烈的污染信号。
    • < 60%: 基本可以认为是未污染的。
    • 60% - 80%: 模糊地带,可能意味着部分污染、训练在高度相关的数据上,或数据集本身具有极高的多样性。
  • 最佳实践:
    最佳方式是将绝对阈值与相对比较相结合。将目标模型的分数与多个其他模型(尤其是公认的“干净”参考模型)在同一基准上的分数进行横向对比。如果一个模型的分数显著高于其他所有模型,形成一个“异常值”,那么这是一个比绝对阈值更可靠的污染警报。此外,在性能相近的模型中,CoDeC 分数更低者可能拥有更强的泛化能力。

4. 总结

通过利用上下文学习对模型预测置信度的不同影响,CoDeC 能够区分模型记忆的数据和泛化的数据。它无需访问模型的训练语料,无需外部参考模型,计算开销小,输出结果直观,使其成为一个理想的、易于集成的评估工具。

CoDeC 表现出色,但它也存在一些局限性:

  • 对抗性数据集: 理论上,可以构造一些对抗性的数据集来“欺骗”CoDeC。例如,一个包含大量完全相同或高度相似样本的数据集,无论是否在训练集中,都可能得到较低的 CoDeC 分数。不过,在标准的、多样化的基准测试上,这种情况基本不会发生。
  • 绕过检测的训练策略: 或许有可能设计出特殊的训练策略,使得模型既能学习数据集内容,又不会在 CoDeC 测试中表现出置信度下降。然而,如果这种策略真的存在,它本身可能就是一种促进模型泛化、抑制死记硬背的有价值的训练方法。
  • 分析粒度: CoDeC 主要是一个数据集级别的检测工具。未来的工作可以探索如何将其思想应用于更细粒度的样本级别分析,以实现精确的成员推断。