新学期开学,王老师遇到一件头疼事:学校发现,上一届期末考试卷提前泄露了,而泄露源头竟然是“学生平时用的练习册”!原来,练习册和期末卷出自同一个题库,学生们刷练习册时,早把期末原题背得滚瓜烂熟。结果全班平均分暴涨12分,可一进入升学实战,真实水平立刻露馅。 这和我们训练 AI 模型几乎一模一样。模型的训练数据就像“练习册”,评测集就像“期末试卷”。如果训练数据里不小心混进了评测集的题目,模型在评测时的分数就会虚高——它不是在“会做”,而是“见过答案”。好消息是,王老师想出了一套“考前安检”方案:第一道安检,把试卷题目和练习册逐字对照;第二道安检,揪出“换了说法但意思一样”的改写;第三道安检,寻找题目里残留的关键短语雷同。这套方案,就是 AI 领域的“评测数据泄露检测”。
掌握数据泄露检测,是守护 AI 评测公平性的守门人技能。它能帮你识破模型“刷分假象”,确保评测结果真实可信,是所有 AI 评测工程师与模型质量负责人的基本功。
可视化演示
展示三种数据泄露检测方法:精确匹配、语义相似度与n-gram重叠,扫描训练集与评测集之间的数据污染。
本节配有交互动效(进入视口后自动加载,约 3KB)。
精确匹配检测 逐项比对训练集与评测集,完全相同的样本标记为泄露 精确度高但无法检测改写、paraphrase等变体泄露 leak(x)=1 if ∃y∈Train: hash(x)=hash(y) 适用于检测完全复制的数据污染
泄露背景认知
王老师翻看去年期末试卷时发现,卷子上好几道大题,竟然和练习册里的题目一字不差。她又翻了几本练习册,发现类似“撞题”多达十几处。这个发现让她意识到:班级平均分虚高,不是因为教得好,而是因为“泄题”了。真正要评估教学水平,必须先把“泄题”这件事管住。
在 AI 世界里,所谓评测数据泄露(Data Leakage),指的是训练数据中混入了评测集的样本。模型在训练阶段就“见过答案”,等到评测时自然表现出众。更麻烦的是,这种泄露往往是无意中发生的:互联网爬虫抓取语料时,把公开的评测数据集一并抓走;或者团队复用了历史公开数据,而某份评测集恰好也来自其中。一旦泄露,模型的真实能力就被高估,后续的模型对比、版本选择全都会被带偏。
我们可以用一句形式化的语言描述“一个样本是否泄露”:
王老师想,光知道“卷子可能泄了”还不够,她需要一套方法,把练习册和试卷逐题比对,找出所有“撞题”。于是,第一道安检关卡诞生了。
- 评测样本 q试卷上的一道待检题目,来自评测集。
- 训练集合 D_train模型见过的全部“练习册”,即训练语料。
- 属于符号 ∈判断 q 是否被包含在训练集合内。
- 指示函数 1[·]条件为真时返回 1,为假时返回 0。
- 泄露标记 L(q)输出 1 表示该评测样本已泄露,需要处理。
精确匹配检测
王老师的第一招,是把试卷和练习册摆在一起,逐字逐句地对照。哪道题在练习册里出现过,而且一字不差,就判定为“原题泄露”。这个方法听起来笨,但执行起来最直接,也最不容易误伤。
在数据检测中,这种“一字不差”的比对叫精确匹配。直接比较整段文本速度太慢,工程师们用了一个巧思:哈希函数。哈希函数就像给每段文本盖一个独一无二的“指纹章”——无论多长的话,都能压成一串固定长度的乱码数字,内容只要改一个字,指纹就完全不同。检测时,先给训练集所有文档盖上指纹,存进一个“指纹库”;再把评测题目也盖个指纹,进库一查,立刻就知道有没有重复。判定过程可写成:
精确匹配的实现非常轻量:把训练集所有文档的哈希指纹放入一个集合,查询时只需要一次 O(1) 的查找。但它有个致命弱点——只要题目被改写一个词,或者被插入一个换行符、一段空白,指纹就完全不同,检测立刻失效。
王老师很快发现,有些学生背的并不是原题,而是“变了个说法”的答案。光靠对答案,根本抓不到这些人。于是她请来经验丰富的语文老师帮忙做“阅读理解”——第二道安检关卡,要判断两份内容“是不是一个意思”。
- 哈希函数 h(·)把任意文本压缩成固定长度的“指纹”,内容一变指纹就变。
- 评测样本 q试卷上的一道题目,等待被检查。
- 训练文档 d练习册里的某一篇文本,来自训练集。
- 指纹相等判定两个哈希值逐位相同,视为同一段文本。
- 指示函数输出 M相同输出 1,否则输出 0。
语义相似检测
语文老师看了几道“改编题”后说:题目虽然字面变了,但核心的意思完全可以比较出来。比如“中国的首都是北京”和“北京是中国的首都”,谁都看得出是一个意思。这靠的是人对语义的理解。那机器怎么做到“理解”呢?
答案是把文本变成“语义向量”。你可以把一段话想象成地图上的一个坐标点,几百个数字排成一串,这串数字就是“语义向量”。语义相近的文本,坐标点也彼此靠近。判断两个坐标有多近,常用余弦相似度——也就是计算两个向量之间的夹角余弦:夹角越小,余弦值越接近 1,说明两句话越“同义”。
有了语义相似度,王老师就能抓“同义改写了”。但这种方法也有代价:生成语义向量需要额外的模型推理,计算量大;而且对特别短的文本,语义区分度不够,容易把不相干的两句话误判成相似。
王老师正高兴着,语文老师又提了个醒:有些改编题连意思都换了不少,却总有几个关键短语原文保留着,比如“三只小猪”“砖房子”“大灰狼”。这种“局部雷同”该怎么抓?于是,第三道安检关卡来了。
- 语义向量 v_q把评测题目编码成一串数字坐标,由嵌入模型(如 word2vec、BERT)生成。
- 语义向量 v_d把训练文档编码成同样维度的坐标串。
- 点积运算两个向量对应位置相乘再累加,衡量方向上的对齐程度。
- 向量模长向量的“长度”,由每个分量的平方和开根号得到。
- 余弦相似度 Sim点积除以两个模长的乘积,取值范围在 -1 到 1 之间。
n-gram重叠检测
第三道关卡的做法,是把文本拆成“连续 n 个小积木”,也就是 n-gram。比如“三只小猪搬进砖房子”这句话,按三连词切分,可以得到“三只小猪”“小猪搬进”“搬进砖房”等一组组连续片段。只要评测题目和训练文档之间出现了相同的 n-gram 小积木,就说明它们之间存在“局部雷同”。
检测时,先把题目切成 n-gram 集合,再看这个集合中有多大比例能在训练样本中找到“复制品”。这个比例叫 n-gram 重叠率:
n 的选择很讲究:n 越小(比如 unigram)越敏感,但也越容易把正常共现的常用词误判成泄露;n 越大(比如 5-gram)越严格,但漏掉短片段重复。实践中 trigram(n=3)最常用,因为三连词串已经能体现较强的文本特征。这一道关卡恰好弥补了精确匹配和语义相似度的盲区:它能抓住“原话片段残留”,即使整个句子已经面目全非。
三道安检关卡齐全了,王老师却有了新的烦恼:每个关卡都有误判的可能,该怎么知道整套安检系统靠不靠谱?是宁可错拦十个,还是宁可放过一个?这就要说到评测指标设计了。
- n-gram 集合 G_n(q)把题目 q 切成连续 n 个词/字组成的小组块,去重后放进集合。
- n-gram 集合 G_n(d)对训练文档 d 做同样的切分操作。
- 交集 ∩找出题目和文档共有的 n-gram 小组块。
- 集合大小 |·|统计交集里有多少个小组块。
- 重叠率计算交集数量除以题目自身 n-gram 总数,得到 0 到 1 的重叠比例。
评测指标设计
想象一下,王老师让保安大叔在考场门口查学生有没有带小抄。保安大叔很严格,见谁都拦下来翻书包,结果是拦下了很多根本没带小抄的好学生——这叫“误报”;但反过来,如果保安大叔太宽松,真正带小抄的倒混进去了几个——这叫“漏报”。检测器好不好,不能只看态度,要看数据。
在泄露检测中,我们通常用三个指标来衡量检测器:精确率(Precision)、召回率(Recall)和 F1 值。精确率回答“被判定为泄露的样本里,有多少是真的泄露”;召回率回答“所有真实泄露样本里,有多少被我们抓住了”。两者往往互相牵制,所以用 F1 把它们合成一个综合分数:
在实际工程里,“放跑泄露”和“误删数据”会造成不同的代价:漏掉泄露,评测结果虚高,上线后翻车;误删太多,则浪费了宝贵的训练数据。因此,团队会结合业务风险调阈值——宁可误报多一点,还是宁可漏报多一点,都要用 P/R/F1 来量化决策。
王老师终于把三道安检关卡都装好了,但她不想每次考试前都手忙脚乱地临时查。她决定把整个流程固定下来,做成一份标准操作手册——这就是检测实施流程。
- 真正例 TP确实泄露、且被检测器发现的样本数。
- 假正例 FP没有泄露、却被误报的干净样本数,对应“冤枉好人”。
- 假负例 FN确实泄露、却没被发现的样本数,对应“放过坏人”。
- 精确率 P预测为泄露的样本中,真正泄露的比例。
- 召回率 R所有真实泄露样本中,被成功找出的比例。
- F1 综合分P 和 R 的调和平均,只有两者都高时 F1 才会高。
检测实施流程
王老师把手写了一套“考前安检 SOP”:第一步,先把练习册里明显残缺、重复的内容清理掉,这叫数据清洗;第二步,把整理好的练习册和试卷依次送过三道安检关卡,从最快最便宜的精确匹配开始,筛掉一批;再对没把握的样本做语义相似和 n-gram 精细扫描;第三步,每一个被标记的样本都要登记在案,记录它的指纹、命中的关卡和判定结果,方便日后复查。
整套流程的判定逻辑,可以归纳为一个带阈值的决策规则:每个样本都会算出一个“可疑得分”(比如重叠率或相似度),得分超过阈值 τ 就标记为泄露,否则视为干净:
流程化之后,数据从清洗、检测到记录全部自动衔接。团队还使用数据版本管理,把每次检测的指纹清单存下来——万一以后发现评测集更新了,还能回溯旧数据,看看当时有没有放过“漏网之鱼”。
王老师的 SOP 让每次考前检查都井井有条。但她心里还有一个更大的愿望:与其每次都费劲查,能不能从根本上让“泄题”不发生?于是她开始琢磨防泄漏策略。
- 可疑得分 s_i第 i 个样本经检测得到的分数,例如语义相似度或 n-gram 重叠率。
- 阈值 τ团队的安检灵敏度设定值,由标注样本调优得到。
- 比较运算分数与阈值比大小,决定样本去向。
- 判定标签 ŷ_i输出“泄露”或“干净”两个结果之一。
- 阈值调优利用带标注的测试集,观察不同 τ 下的 P/R/F1,选出最合适的值。
防泄漏策略
王老师最终意识到,查得再仔细,也是事后补救。真正稳妥的做法,是让练习册和期末试卷从一开始就不放在同一个柜子里——源头隔离。她向学校申请了两个独立保险柜,一个锁练习册,一个锁试卷,两把钥匙分别由不同老师保管。这样,即使有人想泄题,也无从下手。
对应到 AI 工程,防泄漏策略有三层:第一层是源头隔离,评测集在权限管理、存储和访问上严格独立,禁止训练同学接触;第二层是训练前过滤,在大规模训练前,用精确匹配 + n-gram 检测把训练语料中与评测集重叠的片段批量剔除;第三层是持续监控,每当新增训练数据或更换评测集时,自动重新执行检测管线。我们可以用一个指标衡量清洗工作的成效——污染清除率:
有了源头隔离和持续监控,评测的公平性才真正有了保障。王老师的“考前安检”故事也画上了句号:先认识泄题危害,再用三道关卡层层设防,用指标校准灵敏度,把流程固化下来,最后从源头杜绝问题。这才是科学的评测数据治理路径。
- 原始数据量 D_raw采集到的训练语料总规模,可能包含污染样本。
- 干净数据量 D_clean经过清洗和检测后,保留下来可以放心训练的数据量。
- 保留比例清洗后数据占原始数据的份额。
- 清除率 ρ1 减去保留比例,得到被移除的部分占比。
- 工程解读ρ 越接近 1,说明被清除的污染数据越多,训练语料越干净。
AI 应用场景
大模型预训练数据清洗
阶段:数据治理
解决的问题:互联网爬取的预训练语料动辄万亿 token,其中可能混入后续发布的评测集片段。传统做法靠人工抽样检查,效率低且覆盖不全,模型很容易在“背题”状态下拿到虚高分数。
具体案例:某团队训练大语言模型前,借鉴“三道安检”思路,先对全量语料做哈希精确匹配,快速剔除与 MMLU、C-Eval 等基准集完全重复的段落;再用 n-gram 重叠检测扫出部分复制的片段;最后对可疑样本做语义相似度二次确认,生成一份“污染数据清洗报告”,成功把评测集重叠率降到 0.2% 以下。
第三方模型评测防作弊
阶段:评测执行
解决的问题:第三方厂商宣称模型在公开基准上刷出高分,但评测机构怀疑其偷偷把评测集塞进了训练数据。仅凭模型输出很难直接判断,需要一套独立的泄露检测流程来审计。
具体案例:某评测机构对送测模型执行“评测集泄露审计”:将模型训练数据(或接口返回的高频相似片段)与评测集做语义相似度比对,输出命中率分布。若某评测科目命中率显著高于背景基线,就判定存在“刷分嫌疑”,要求厂商补充说明数据来源,否则撤销认证成绩。
MLOps 流水线持续监控
阶段:模型迭代监控
解决的问题:模型经过多轮微调和增量训练后,新引入的数据可能意外包含评测集。人工检查不现实,且问题往往在模型上线后才发现,代价极大。
具体案例:某公司把泄露检测封装成 MLOps 流水线中的一个“安检节点”。每次训练任务提交时,系统自动对新数据跑一遍“精确匹配 → n-gram → 语义相似”三级检测,命中即拦截训练任务并触发告警,同时输出清洗建议。半年来,该流水线拦截了 7 次潜在泄露,保障了线上评测指标的真实性。
Python 演示
"""评测数据泄露检测 Demo: 精确匹配 + 语义相似 + n-gram 重叠"""import hashlibimport refrom collections import Counter def sha1_fingerprint(text): """生成文本指纹, 用于一字不差的精确比对""" return hashlib.sha1(text.strip().encode("utf-8")).hexdigest() def tokenize(text): """切分中英文词元, 用于向量与 n-gram 计算""" return re.findall("[a-zA-Z0-9\u4e00-\u9fa5]+", text.lower()) def ngrams(words, n=3): """把词元序列切成连续 n 元组""" return [tuple(words[i:i+n]) for i in range(len(words)-n+1)] class LeakDetector: """三道 '考前安检': 对答案(精确)、找改写(语义)、找雷同(n-gram)""" def __init__(self, train_docs, n=3): self.fingerprints = set() # 精确指纹库 self.doc_ngrams = [] # 训练文档的 n-gram 集合 self.doc_vectors = [] # 训练文档的词频向量 self.n = n for doc in train_docs: self.fingerprints.add(sha1_fingerprint(doc)) words = tokenize(doc) self.doc_ngrams.append(set(ngrams(words, n))) self.doc_vectors.append(Counter(words)) def exact_match(self, sample): """关卡 1: 指纹完全一致才算命中""" return sha1_fingerprint(sample) in self.fingerprints def cosine_sim(self, sample): """关卡 2: 两句话语义向量夹角越小越相似""" vec = Counter(tokenize(sample)) best = 0.0 for train_vec in self.doc_vectors: common = sum(vec[k] * train_vec[k] for k in vec.keys() & train_vec.keys()) norm_v = sum(v*v for v in vec.values()) ** 0.5 norm_t = sum(v*v for v in train_vec.values()) ** 0.5 if norm_v and norm_t: best = max(best, common / (norm_v * norm_t)) return best def ngram_overlap(self, sample): """关卡 3: 共享 n-gram 占评测样本的比例""" sample_grams = set(ngrams(tokenize(sample), self.n)) if not sample_grams: return 0.0 best = 0.0 for train_grams in self.doc_ngrams: overlap = len(sample_grams & train_grams) / len(sample_grams) best = max(best, overlap) return best def detect(self, sample, sim_th=0.6, ngram_th=0.4): leaks = [] if self.exact_match(sample): leaks.append("exact(原题)") if self.cosine_sim(sample) >= sim_th: leaks.append("semantic(改写)") if self.ngram_overlap(sample) >= ngram_th: leaks.append("ngram(雷同)") return leaks if leaks else ["clean(干净)"] def main(): train_docs = [ "北京是中国的首都,也是历史文化名城。", "机器学习是人工智能的核心方向之一。", "三只小猪搬进砖房子躲避大灰狼。", ] samples = [ "北京是中国的首都,也是历史文化名城。", "中国的首都是北京,一座古老的历史文化名城。", "机器学习是AI的焦点领域,属于人工智能方向。", "今天天气很好,适合去公园散步。", ] detector = LeakDetector(train_docs) for sample in samples: print(detector.detect(sample), "|", sample[:12] + "...") if __name__ == "__main__": main()
self.fingerprints.add(sha1_fingerprint(doc))给训练文档盖“指纹章”,存进集合,后续查重只需一次哈希查找,对应精确匹配关卡。self.doc_ngrams.append(set(ngrams(words, n)))把每篇训练文档切成 n-gram 集合,供重叠率计算使用。return sha1_fingerprint(sample) in self.fingerprints评测样本的指纹能在训练指纹库中查到,就判为“原题泄露”。common = sum(vec[k] * train_vec[k] for k in vec.keys() & train_vec.keys())同时出现在两个向量里的词,对应位置相乘累加,得到点积。best = max(best, common / (norm_v * norm_t))用点积除以两个向量的模长,得到余弦相似度并保留最大值。overlap = len(sample_grams & train_grams) / len(sample_grams)共享 n-gram 数量除以样本自身 n-gram 总数,得到重叠率。if self.cosine_sim(sample) >= sim_th:相似度越过阈值就标记为“改写”,这是语义关卡的判定开关。return leaks if leaks else ["clean(干净)"]三道关卡都没命中,才安心地给样本盖上“干净”的印章。
常见误区
误区我一直觉得检测数据泄露就是找完全相同的文本,只要改几个词、换一种说法,就不算泄露了。所以平时做数据清洗,只做精确去重就够了。
正解精确匹配只是第一道安检,就像对答案只能抓住死记硬背的学生。训练样本经过同义改写后,语义相似度依然很高,会被“语义安检”抓住;即使句子大改,残留的三连词短语也会被“n-gram 安检”发现。三道关卡是互补关系,缺一不可。
为何常见:精确匹配最直观、最容易实现,人脑天然先想到“查重”,而在没有完整方法论时,很容易把“最简单的方法”当成“全部方法”。
误区我跑完 n-gram 检测,发现有一段文本和训练样本的重叠率高达 60%,这肯定就是泄露了,直接删掉准没错。
正解自然语言中存在大量高频短语(比如“在世界上”“与此同时”),这些短语的正常共现也会造成重叠。必须做两个动作:一是去掉停用词和高频套话后再算重叠;二是对比背景分布——如果普通样本的重叠率基线就有 30%,那么 60% 未必异常。孤立的数值没有意义,要放到分布里看。
为何常见:人容易把“数字高”等同于“证据确凿”,忽略了语言本身的先验概率差异,也忽略了阈值需要在标注样本上校准。
误区我们在训练前做了一遍泄露检测,全部通过,那以后就不用再管了,评测集和训练数据都是静态的。
正解训练数据是持续累积的,评测集也会随版本更新。今天干净的数据,明天可能因为新增评测集而变得不干净。正确做法是建立持续监控机制:每次引入新数据、新模型版本或新评测集,都自动重跑检测管线,并把指纹记录在案以便追溯。
为何常见:把检测理解成“一次性体检”,而不是“持续的健康管理”,忽略了数据生态是动态变化的事实。
误区我调低了阈值,结果检测出的泄露样本比原来多了几百个,说明我的检测器变强了,清洗效果也更好了。
正解检出数量多可能只是因为阈值过松,把大量干净样本误标成了泄露(误报飙升)。误删干净数据同样会导致训练语料质量下降。衡量检测器要用精确率、召回率、F1 综合判断,并且结合业务代价选择阈值——有时候“宁缺毋滥”,有时候“宁错杀不放过”。
为何常见:把“输出数量”误当“能力指标”,忽视了误报对数据资源的实际破坏,也缺少对 P/R 权衡的系统认知。
面试题
Q1. 评测数据泄露最直接的危害是什么?
- A.模型参数量变大
- B.评测结果虚高失真← 正确答案
- C.模型训练时间变长
- D.模型部署成本上升
答案:B。泄露的实质是训练数据混入了评测集,模型“见过答案”,于是评测分数虚高,真实能力被高估。这就像学生提前背了期末原题,分数好看但真水平没变。参数量、训练时间和部署成本都与泄露没有直接关系。
Q2. 精确匹配检测的核心手段是什么?
- A.训练语义神经网络
- B.哈希函数指纹比对← 正确答案
- C.人工逐条校对文本
- D.随机采样抽查语料
答案:B。精确匹配把每段文本通过哈希函数压成固定长度“指纹”,再比对指纹是否一致。哈希计算快、存储省,适合海量数据查重。人工校对太慢,随机抽查覆盖率低,语义网络虽能理解改写但并非“精确匹配”的核心手段。
Q3. 语义相似度检测依赖的核心表示是什么?
- A.字符串哈希指纹
- B.文本语义向量← 正确答案
- C.压缩包体积大小
- D.单词字母倒序表
答案:B。语义相似度先把文本编码成语义向量(一串数字坐标),再用余弦相似度衡量向量夹角。哈希指纹适合精确匹配,不能表达语义远近;文件体积、字母倒序都与语义无关。
Q4. 在 n-gram 检测中,trigram 指的是什么?
- A.连续三个词单元← 正确答案
- B.三倍哈希计算
- C.三组评测样本
- D.三角分布概率
答案:A。trigram 就是把文本按“连续三个词/字”切成小组块,比如“三只小猪”可以切成“三只小猪”“只小猪搬”等三连元组。它是 n=3 的特殊情况,与哈希倍数、样本分组、概率分布都没有关系。
Q5. 哪些方法能检测“换了个说法但意思相同”的泄露?(多选)
- A.精确文本比对
- B.语义相似方法← 正确答案
- C.n-gram重叠法← 正确答案
- D.倒序字符串工具
答案:BC。同义改写后字面完全不同,精确匹配会失效;但语义相似度能从向量空间判断“意思一样”,n-gram 重叠法能抓住改写后残留的关键短语片段。倒序字符串只是翻转文本,对语义改写毫无检测能力。
Q6. 检测器的精确率(Precision)中,分母是什么?
- A.被检样本总数
- B.预测泄露样本数← 正确答案
- C.真实泄露样本数
- D.训练样本总数
答案:B。精确率 P = TP / (TP + FP),分母是“所有被预测为泄露的样本数”,回答“查出来的里面有多少是真的”。这与被检样本总数、真实泄露总数和训练总数都不同,别和召回率混淆。
Q7. 完全相同的文本在精确匹配中,可能因什么原因发生漏检?
- A.训练集样本量过大
- B.评测样本被插入噪声← 正确答案
- C.评测集样本数太少
- D.模型隐藏层数量多
答案:B。哈希指纹对内容高度敏感,插入一个空格、换行或 HTML 标签,指纹就完全不同。所以原题在采集过程中被加了噪声,精确匹配就会漏掉。训练集大小、评测集大小、模型结构都不影响哈希指纹比对。
Q8. 关于哈希碰撞对精确匹配检测的影响,下列说法正确的是?
- A.理论存在但工程概率极低← 正确答案
- B.碰撞必然导致大规模漏检
- C.碰撞会导致模型参数爆炸
- D.碰撞与 n 无法避免相关
答案:A。哈希函数把无限文本映射到有限指纹空间,理论上存在碰撞(不同文本同指纹),但现代哈希(如 SHA-1)碰撞概率极低,工程上可以忽略。用 128 位以上指纹时,随机碰撞的可能性远小于硬件故障,因此说“必然漏检”是错误的。
Q9. 防止评测数据泄露的工程手段有哪些?(多选)
- A.训练前全量检测剔除← 正确答案
- B.严格隔离评测集权限← 正确答案
- C.无限扩大训练集规模
- D.只依赖人工抽样检查
答案:AB。训练前用精确匹配 + n-gram 检测剔除重叠样本是主动防御;严格隔离评测集的访问权限是从源头切断泄露途径。扩大训练集只会增加污染概率,人工抽样覆盖面不足,都不是可靠的防泄漏手段。
Q10. 把检测阈值 τ 调高,可能出现哪些后果?(多选)
- A.漏掉更多真实泄露样本← 正确答案
- B.误报样本数量下降← 正确答案
- C.哈希计算速度变快
- D.评测可靠性反而降低← 正确答案
答案:ABD。阈值调高意味着“宁可放过,不可错杀”,之前刚够线被标记的泄露样本会被放过去(漏报增加),同时误报减少。哈希速度只与算法有关,与阈值无关。漏报增多会让泄露样本混入评测,导致模型分数虚高,可靠性下降。