Skip to content

大模型测试集数据泄露问题分析

内容整理自学习笔记,仅供面试备考参考;不构成录用、培训或考试承诺。

1. 什么是 LLMs 测试集数据泄露问题?

数据泄露(Data Contamination)是指模型测试集的数据被无意地包含在了训练集中。

注意:如果是故意的(比如 train on 测试集),那就是另一个话题了。

背景说明

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

典型案例

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

在此之后,基本所有的 LLMs 在论文或 report 中都会有单独的一章 Data contamination analysis 来证明自己评测的可信性。代表性例子包括:GPT-3、GPT-4、Llama-2。

2. 如何解决 LLMs 测试集数据泄露问题?

最成熟的方法

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

典型案例:GPT-3 翻译任务

数据集BLEU Score
总体成绩43.0
未泄露样本(clean set)40.8
泄露样本(dirty set)47.4
真实翻译水平(近似)~40.3

结论:GPT-3 通过强大的记忆力在评测集上取得了额外的优势。其真实的翻译水平应接近 40.3,而不是 43 分的总分。

该方法的局限性

在实际研究或开发过程中,这种方法很难复刻:

问题说明
训练数据不公开大部分常用的基座模型(包括一众中文大模型和 Llama-2)都没有开源其训练数据
数据量庞大即使拿到训练数据,其庞大的数据量也会使整个处理过程非常耗时

示例:在 Llama-2 中为了识别测试集的数据泄露,在 PySpark 1500 核 cluster 上运行了超过 7 个小时。

3. 是否可以避开训练集来处理数据泄露问题?

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

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

类别说明
干净样例网络上找不到对应测试样例的题目或答案
题目泄漏样例网络上能够找到原题,但答案并没有一起出现
题目-答案同时泄漏样例测试样例的原题和答案同时出现在同一网页上

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

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

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

判断标准:使用完整的字符串匹配。

3.3 性能差异对比

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

  • Average:模型的总分
  • All Dirty:包含了所有在网上能找到原题的测试样例
  • Input-and-Label Contaminated:网上能同时找到原题和答案的样例

分析结论

模型总分差距clean vs 泄露差距分析
Qwen-7B vs BaichuanQwen 超越 Baichuan 整整 3%-仅看总分,差距明显
Qwen-7B-准确率超越 clean set 整整 5.5%很可能说明 Qwen 在 C-Eval 上有潜在的过拟合现象
Baichuan-clean set 和泄露样例差距仅 1.41%差距较小
Qwen vs Baichuan(clean set)仅 1.1%-模型能力的实际差距可能并没有那么大

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

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

测试集数据泄露比例来源
C-Eval超过 46.14%Common Crawl
MMLU接近 37%Common Crawl

警示:如此高比例的数据泄露意味着许多大模型评测排行榜的排名可能并不能真实反映模型能力,在解读评测结果时需谨慎对待。