Skip to content

LLMs 测试集中数据泄露问题篇

来自:AiGC面试宝典

宁静致远 2024年01月27日 19:14

  • LLMs 测试集中数据泄露问题篇
    • 一、什么是 LLMs 测试集数据泄露问题?
    • 二、如何解决 LLMs 测试集数据泄露问题?
    • 三、是否可以避开训练集来处理 LLMs 测试集数据泄露问题?
      • 3.1 如何判断网络上是否有原题?
      • 3.2 如何判断答案是否存在?
      • 3.3 性能差异对比
    • 四、常见测试集有多少比例的数据泄露?
    • 致谢

一、什么是 LLMs 测试集数据泄露问题?

数据泄露(data contamination) 是指模型测试集的数据被无意地包含在了训练集中。(如果是故意的,比如直接用测试集训练,那就是另一个话题了)

这种情况在大模型时代是很难避免的。其实在 Common Crawl 刚开始被用作训练集时就有不少人意识到了这个问题。

📝通俗解释:这就相当于考试前有人把考题和答案提前告诉了学生,学生在考试时并不是真的学会了,而是提前背住了答案。这样考出来的成绩并不能反映学生的真实水平。

比如这篇论文发现,在 T5 所用的 C4 数据集中,包含了 2-50% 不等的 GLUE benchmark 的原题。导致 T5 在 GLUE 上极亮眼的表现在当时遭到了不小质疑。

在此之后,基本上所有的 LLMs 在论文或者报告中都会有单独的一章 "Data contamination analysis" 来证明自己评测的可信性。这里我附上几个具有代表性的例子:GPT-3GPT-4Llama-2

📝通俗解释:大模型公司现在都会主动做"数据污染分析",就像学生考试后会有人检查是否存在作弊一样,这是为了证明自己模型的分数是真实实力的体现。


二、如何解决 LLMs 测试集数据泄露问题?

处理数据泄露最成熟的方法是:识别测试集中的已泄露样本和未泄露样本,分别构建 dirty set(污染集)和 clean set(干净集),然后比较模型在这两个数据集上的性能差异。

📝通俗解释:就像把考试卷子分成两部分,一部分是学生做过的(dirty),一部分是学生没做过的(clean),分别打分才能看出学生的真实水平。

举例: GPT-3 在 De->En WMT16 翻译任务上获得了 43 BLEU score 的优秀总体成绩。但如果区分 dirty 和 clean set 的结果,则 GPT-3 在未泄露样本(clean)上的分数只有 40.8,而在泄露样本(dirty)上获得了 47.4 的超高分数。这说明 GPT-3 通过强大的记忆力在评测集上取得了额外的优势,其真实的翻译水平应接近 40.3,而不是 43 分的总分。

📝通俗解释:这个例子很清楚地展示了数据泄露的影响:总分看起来是43分,但去掉背过答案的题目后,真实水平其实只有40.8分,差了整整2分多!


然而,在我们实际研究或开发过程中,这种方法是很难复刻的。原因在于这种方式需要获取 base model 完整的训练集,从而识别测试集里的干净和泄漏样本。

我们大部分常用的基座模型,包括一众中文大模型和 Llama-2,都没有开源其训练数据。

📝通俗解释:这就相当于你想检查学生有没有作弊,但你拿不到学生用过的教材和复习资料,根本没办法对比。

即使拿到训练数据,其庞大的数据量也会使整个处理过程非常耗时。例如,在 Llama-2 中为了识别测试集的数据泄露,在 PySpark 1500 核 cluster 运行了超过 7 个小时。


三、是否可以避开训练集来处理 LLMs 测试集数据泄露问题?

针对该问题,我们做出了一个假设:任何在网络上能够找到的测试集题目,都有很大的风险被包含在 LLMs 的训练数据中

📝通俗解释:这个假设很直观——如果一道题在网上都能搜到,那它大概率已经被爬虫抓进训练数据里了。

可以直接使用搜索引擎来区分测试集中的样例。把所有测试样例分为三类:

  1. 干净样例(Clean):网络上找不到对应测试样例的题目或答案
  2. 题目泄漏样例(Input Contaminated):网络上能够找到原题,但答案并没有一起出现
  3. 题目-答案同时泄漏样例(Input-and-Label Contaminated):测试样例的原题和答案同时出现在同一网页上

📝通俗解释:这就相当于把考试题分为三类:(1)网上完全搜不到;(2)网上能找到题目但找不到答案;(3)网上题目和答案都能找到。第三种情况最危险,因为模型很可能直接背过答案了。

3.1 如何判断网络上是否有原题?

判断网络上是否有原题的标准是:有 80% 以上的字符与测试样例完全重叠(用 meteor 来测量)。

📝通俗解释:就像查重一样,如果网上有一篇文章和考试题目相似度超过80%,就认为这道题可能泄露了。

3.2 如何判断答案是否存在?

判断答案是否存在的标准是:使用完整的字符串匹配

📝通俗解释:就是精确匹配,看看网上是不是连答案带题目一起出现了。

3.3 性能差异对比

比较模型在以上三个类别的性能差异。以 C-Eval 为例:

ModelAverageCleanAll DirtyInput-and-Label Contaminated
qwen-7b-hf58.73%56.19% (↓ 2.54%)61.69% (↑ 5.50%)62.89% (↑ 6.70%)
baichuan2-7b-base-hf55.73%55.08% (↓ 0.65%)56.49% (↑ 1.41%)58.87% (↑ 3.79%)

📝通俗解释:这个表格很直观地展示了数据泄露的影响:

  • Qwen-7B 总分 58.73%,看起来比 Baichuan 的 55.73% 高了 3%
  • 但在干净样例(Clean)上,Qwen 是 56.19%,Baichuan 是 55.08%,差距只有 1.1%
  • Qwen 在网上能找到原题的样例上准确率飙升到 61.69%,比干净样例高出 5.5%!这说明 Qwen 很可能是"背题"了
  • Baichuan 的差距只有 1.41%,相对更稳定

这里 Average 是模型的总分,All Dirty 包含了所有在网上能找到原题的测试样例,而 Input-and-Label Contaminated 则是网上能同时找到原题和答案的样例。

如果只看总分(Average),那么 Qwen-7B 在 C-Eval 上超越了 Baichuan 整整 3%。

然而,模型能力的实际差距可能并没有那么大。结果显示 Qwen 在处理网上有原题的样本时性能格外出色,其准确率超越了 clean set 整整 5.5%。如此差距很可能说明 Qwen 在 C-Eval 上有潜在的过拟合现象。

相比之下,Baichuan 在 clean set 和泄露样例两者之间的差距则小的多,只有 1.41%。

如果只关注 Qwen 和 Baichuan 在 clean set 上的性能,那么两个模型实际上的差距只有 1.1%。

📝通俗解释:这个分析非常有价值!它告诉我们:看模型排行榜不能只看总分,一定要看它在"干净"题目上的表现,否则可能被"背题型"选手误导。


四、常见测试集有多少比例的数据泄露?

仔细观察下来,常见的 LLMs 测试集均有很严重的数据泄露现象。

例如:

  • C-Eval 有超过 46.14% 的测试样例能够直接在 Common Crawl 里找到原题
  • MMLU 也有接近 37% 的测试样例完整地出现在 Common Crawl 里

📝通俗解释:这个数据很惊人!意味着 C-Eval 将近一半的题目模型可能都"见过",MMLU 也有超过三分之一的题目可能被训练数据包含了。这给模型评测的可信度带来了很大挑战。


致谢

感谢以下资源提供的内容:


整理日期:2024年8月11日

基于 MIT 许可发布