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-3,GPT-4,Llama-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 的训练数据中。
📝通俗解释:这个假设很直观——如果一道题在网上都能搜到,那它大概率已经被爬虫抓进训练数据里了。
可以直接使用搜索引擎来区分测试集中的样例。把所有测试样例分为三类:
- 干净样例(Clean):网络上找不到对应测试样例的题目或答案
- 题目泄漏样例(Input Contaminated):网络上能够找到原题,但答案并没有一起出现
- 题目-答案同时泄漏样例(Input-and-Label Contaminated):测试样例的原题和答案同时出现在同一网页上
📝通俗解释:这就相当于把考试题分为三类:(1)网上完全搜不到;(2)网上能找到题目但找不到答案;(3)网上题目和答案都能找到。第三种情况最危险,因为模型很可能直接背过答案了。
3.1 如何判断网络上是否有原题?
判断网络上是否有原题的标准是:有 80% 以上的字符与测试样例完全重叠(用 meteor 来测量)。
📝通俗解释:就像查重一样,如果网上有一篇文章和考试题目相似度超过80%,就认为这道题可能泄露了。
3.2 如何判断答案是否存在?
判断答案是否存在的标准是:使用完整的字符串匹配。
📝通俗解释:就是精确匹配,看看网上是不是连答案带题目一起出现了。
3.3 性能差异对比
比较模型在以上三个类别的性能差异。以 C-Eval 为例:
| Model | Average | Clean | All Dirty | Input-and-Label Contaminated |
|---|---|---|---|---|
| qwen-7b-hf | 58.73% | 56.19% (↓ 2.54%) | 61.69% (↑ 5.50%) | 62.89% (↑ 6.70%) |
| baichuan2-7b-base-hf | 55.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日