Detecting Data Contamination in LLMs via In-Context Learning


TL;DR

本文提出了一种名为 CoDeC 的新方法,通过衡量上下文学习(In-Context Learning)对模型置信度的影响,来有效检测和量化大语言模型中的训练数据污染问题。

关键定义

本文主要提出了一个核心概念:

相关工作

目前,检测大语言模型(LLM)中的数据污染对于确保评估的公正性至关重要。现有的方法主要包括:

这些传统方法存在诸多瓶DE颈,例如:通常需要访问模型的训练数据、需要进行繁琐的参数调优、计算成本高昂(如训练影子模型),并且对于现代的大型语言模型,其结果往往不够可靠和直观。尤其是在模型仅训练一个轮次(epoch)的情况下,许多早期方法会失效。

本文旨在解决上述问题,提出一种无需访问训练数据、无需参数调优、模型和数据类型无关、可扩展且能提供直观可解释结果的自动化数据污染检测方法。

本文方法

核心思想

本文方法 CoDeC 的核心思想基于一个关键观察:大语言模型(LLM)对于是否见过的数据,在接收上下文示例(In-Context Examples)时的反应截然不同。

因此,通过比较模型在有无上下文示例两种情况下对同一数据样本的预测置信度变化,就可以有效地区分模型是在泛化还是在记忆,进而判断数据污染的程度。

CoDeC 方法示意图

CoDeC 流水线

如上图所示,CoDeC 的具体执行步骤如下:

  1. 计算基线置信度:对于待检测数据集 $\mathcal{D}$ 中的每一个样本 $x$,计算模型 $M$ 对其序列中所有Token的平均对数似然概率,记为 $\text{logprob}_{\text{baseline}}(x)$。
  2. 计算上下文置信度:从数据集 $\mathcal{D}$ 中(除去样本 $x$ 本身)随机抽取 $n$ 个其他样本 $x_1, \dots, x_n$,将它们拼接在 $x$ 的前面,形成一个新的输入序列 $x_1 \mid \dots \mid x_n \mid x$。然后,再次计算模型 $M$ 对 $x$ 部分的平均对数似然概率,记为 $\text{logprob}_{\text{in-context}}(x)$。
  3. 计算置信度差异:计算两种情况下的置信度差异 $\Delta(x) = \text{logprob}_{\text{in-context}}(x) - \text{logprob}_{\text{baseline}}(x)$。
  4. 计算污染分数:对数据集中所有样本重复以上步骤。最终的污染分数 $S_{\text{CoDeC}}(\mathcal{D})$ 定义为置信度差异小于零的样本所占的比例:

    \[S_{\text{CoDeC}}(\mathcal{D})=\frac{1}{N}\sum_{i=1}^{N}\mathds{1}[\Delta(x_{i})<0]\]

    其中 $\mathds{1}$ 是指示函数。这个分数直观地表示了“因加入上下文而导致模型更不自信”的样本比例。

创新点

优点

CoDeC 的有效性源于几个核心原理:

  1. 信息冗余与干扰:对于已记忆的数据,上下文是冗余信息;更甚者,上下文中的记忆模式会干扰模型对目标样本的既有记忆通路,导致预测混乱和置信度下降。
  2. 衡量学习潜力:CoDeC 实际上在衡量模型对于特定数据集还有多少“学习空间”。受污染的模型类似于接近饱和的微调模型,额外信息(上下文)带来的增益极小甚至为负。
  3. 与过拟合的关联:污染通常与过拟合相关。过拟合的模型处在损失曲面一个狭窄而陡峭的局部最小值中,容易被上下文等微小扰动破坏稳定性。而未见过的数据对应于更平坦、更稳定的损失区域,上下文信息能引导模型做出更稳健的预测。

实验结论

本文通过广泛的实验验证了 CoDeC 方法的有效性、稳定性和实用性。

主要验证结果

主要验证

模型 CoDeC Loss Min-K% Zlib
Pythia-2.8B 100.0 71.3 68.3 75.8
OLMo-1.7B 100.0 86.6 76.5 87.6
OLMo-7B 100.0 90.9 82.2 87.2
Nemotron-v2-8B 97.0 72.8 66.8 63.8
Nemotron-H-8B 100.0 92.5 86.8 84.1

训练过程中 CoDeC 分数的变化

训练过程中的污染检测

通过微调引入污染

通过微调验证污染检测

消融研究

上下文大小的影响 数据集大小的影响

结论