金标扩集 ≥100 — 难例不是堆数量,是造区分度
金标扩集 ≥100 — 难例不是堆数量,是造区分度
日期: 2026-08-22 阶段: Phase 3 - AML 调查 Copilot 标签: #golden-dataset #hard-cases #discriminability
核心问题
day7 周总结里钉死了一个反直觉的逻辑前提:规则基线在 66 案 v1 金标上 recall 全 1.0、FPR 5.56%——满分意味着 P3 的 LLM 版在这套金标上「最多打平」,判别力为零。于是 day7 写下:「P3 扩集(≥100 案,含贴线案件与叠加类型学)不是可选项,是让对比有判别力的必要条件。」今天兑现这张支票,回答两个问题:
-
扩集到 ≥100 案,到底在扩什么? 直觉会去扩「数量」——再生成 40 个普通 structuring/layering/mule 案凑到 106。今天要证明这个方向是错的:再多舒适区案件也不增加判别力,因为新老系统在它们上面分数都一样。扩集的目的不是样本量,是制造新老系统会打出不同分的难例——即「高方差」「贴决策边界」的案件。
-
怎么知道扩集后的金标真的有判别力? 不能凭感觉说「这些案挺难的」。要有一套可量化的判别力检验:难例必须让规则基线掉分(否则它没区分出规则的盲区),而 P3 LLM 版必须能补回这些掉的分(否则换 LLM 没意义)。
这对 AML Copilot 是「评测器有没有用」的根问题:一套全员满分的金标,是一把刻度全在同一格的尺子——量不出任何改进。
关键内容
A. 为什么「扩数量」无效,「扩难度」才增判别力
先把「金标的判别力(discriminability)」定义清楚。判别力 = 金标区分「好系统」与「坏系统」并给它们排序的能力(arXiv 2509.26619, 2025-09)。一个案件对判别力的贡献,取决于不同系统在它上面的得分方差:
- 若所有候选系统(规则基线、LLM-v1、LLM-v2…)在某案上都得满分 → 该案方差为 0,对排序毫无贡献,纯属凑数。
- 若候选系统在某案上得分分散(有的对、有的错)→ 该案方差大,是真正用来排序的信号。
Anthropic Demystifying evals for AI agents(2026-01-09)把这点讲到极致:
An eval at 100% tracks regressions but provides no signal for improvement.
满分的 eval 只能防退化(回归测试),不能指引改进——因为它已经把所有候选系统压成了同一个分。本项目 v1 金标恰恰处在这个状态:规则基线 100% recall,意味着这 66 案对「规则 vs LLM」这个排序问题贡献的方差接近 0。
把这套统计判别力翻译成扩集策略,得到一条铁律:
反直觉洞察①(扩集的目的是造区分度,不是堆数量):再生成 100 个「规则也能满分」的普通案,金标从 66 涨到 166,但判别力一点没增——因为新案的得分方差仍是 0。真正增判别力的,是专门压在规则盲区上的难例:规则在它上面会犯错(掉分),而 LLM 在它上面有机会做对(补分)。金标的价值不在案件总数,在「能让候选系统分出高下的案件」占比。 凑数案件越多,金标越钝——它会用一堆 0 方差案把少数高方差案的信号稀释掉(arXiv 2509.26619:随机子集保留粗粒度排序,但丢掉区分 Pareto 前沿的高判别力样本,2025)。
挑战集设计的四个度量(arXiv 2509.26619, 2025-09)给了扩集的验收口径:(1) 统计判别力、(2) 平均难度、(3) 系统平均分差、(4) 子集排序与全集排序的一致性。本项目用前三个作为难例验收标准(第 4 个等 P3 有 ≥2 个 LLM 候选后才能算)。
B. 三类贴线难例 + 叠加类型学:压在哪条边界上
难例必须精准压在规则的判定边界,不是泛泛地「更复杂」。本项目 v1.1 已建三类难例(generator.ts 的 HARD_CASE_RECIPE),day69 把它们的「边界压点」讲透,并按 day7 的余量原则定向补到 ≥100:
| 难例类别 | 压的边界 | 规则会怎样 | LLM 该怎样 | 制造的方差 |
|---|---|---|---|---|
| boundary_9900 | 单笔恰 $9,900,距 CTR $10,000 仅 $100(贴 STRUCT_BAND 上沿) | 规则靠固定阈值仍命中,但对「为何贴线」无解释 | LLM 能读出「连续整 $9,900、距门槛恰 $100」的意图叙述 | 解释质量维度高方差 |
| long_chain_layering | 5-6 跳内部过账(超 LAYER_MIN_CHAIN_ACCOUNTS 远) | 规则递归追链能命中,但链越长越易 off-by-one 截断 | LLM 易丢中间跳、易把分叉误当主链 | 链路完整性维度高方差 |
| mixed_struct_layer | structuring(0.4 辅) + layering(1.0 主) 信号并存 | 规则求和取 max 巧合选对,但无因果解释(见 day68) | LLM 易被 structuring 干扰带偏、或把三阶段并列报 | 类型学定性维度高方差 |
| collator_mule(新增) | 多骡 gather-scatter 网络(单账户看正常) | 单账户规则 MULE-01/02 系统性漏报(见 day68 反直觉①) | LLM 读图拓扑有机会抓住归集枢纽 | 网络级召回维度高方差 |
新增第四类 collator_mule 直接接 day68 的「钱骡网络信号在图拓扑不在单账户」——它是 day68 反直觉洞察①要守住的回归点,也是制造「规则漏报 / LLM 可补」高方差的最干净案例。
难例生成的伪代码骨架(在 generator.ts 既有 genBoundaryStructuringCase 等之上加 genCollatorMuleCase):
genCollatorMuleCase(ctx):
collector = makeSubject(opened=200d) # 枢纽账户:刻意「老户」,单账户规则不命中
mules = [makeSubject() for _ in 1..K_in] # K_in 个上游骡(各自看也正常)
cashOuts = [makeSubject() for _ in 1..K_out] # K_out 个下游套现点
for m in mules: # fan-in 阶段:各骡 → collector,小额、时间集中
emit credit(collector, from=m, amt=small, day∈[d0, d0+5])
for c in cashOuts: # fan-out 阶段:collector → 套现点,时序晚于 fan-in
emit debit(collector, to=c, amt=mid, day∈[d0+6, d0+10])
label = 'mule_network' # ground truth:网络级钱骡
hardMeta = { category:'collator_mule', # 标注「单账户规则应漏、网络级应抓」
expectRuleMiss:true } # ← 判别力验收用:规则在此案必须掉分
关键设计:collector.openedDaysAgo = 200(老户)+ 每个 mule 自身流水平衡 → MULE-01/02 单账户规则一条都不命中,规则基线在此案 recall 掉到 0。这个「规则必掉分」是判别力的来源——它把 day68 设计的 MULE-03 网络规则与未来 LLM 的图理解能力,逼到一个能分出高下的考场。
C. 难度分层标注:让金标自带「考场分区」
扩集后金标混了易、中、难三档,必须显式标注每案难度,否则三件事做不了:(1) 算「平均难度」验收(B 节度量②);(2) 分层报告 recall(易档满分不代表难档不漏);(3) 给 P3 对比提供分层 Pareto。难度分层不是主观打星,而是用「规则基线是否命中 + 是否唯一解」客观定档:
难度分层 stratify(case, ruleResult):
if ruleResult.miss: # 规则漏报 → 至少是 HARD
return HARD # (规则的盲区,最高判别力)
if case.hardMeta.category in BOUNDARY: # 贴线但规则命中 → MEDIUM
return MEDIUM # (阈值边界,解释维度有方差)
if 单类型学、舒适区金额、无叠加:
return EASY # (0 方差,回归测试用,不进判别力计数)
return MEDIUM
分层后金标结构(v1.1 80 案 → v1.2 目标 ≥100):
| 难度档 | v1 (66) | v1.1 (80) | v1.2 目标 (≥100) | 判别力角色 |
|---|---|---|---|---|
| EASY(舒适区,规则满分) | 64 | 64 | ~64 | 回归测试地板,不计入判别力 |
| MEDIUM(贴线/叠加,规则命中但有解释方差) | 1(刻意 FP) | 13 | ~22 | 解释/定性维度方差 |
| HARD(规则漏报,网络级/长链截断) | 1 | 3 | ~16 | 主判别力来源 |
| 合计 | 66 | 80 | ≥102 | — |
反直觉洞察②(金标满分是 bug 不是 feature):工程直觉把「测试全绿」当成好事。但对评测金标而言,全绿恰恰是警报——它说明这套金标对「当前系统 vs 改进系统」失去了分辨力(Anthropic 2026-01:100% 无改进信号)。day7 的规则基线满分,不该被庆祝为「规则很强」,而该被读作「金标该扩难例了」。一套健康的评测金标,应该让最好的当前系统也漏掉一部分难档——留出的那部分缺口,就是下一代系统的改进靶心。 把金标调到全绿,等于把改进的标尺锯掉。
判别力的量化自检(扩集验收,写进测试断言):
$$\text{Discrim}(\text{金标}) = \frac{|{c \in \text{金标} : \text{规则}(c) \neq \text{LLM}(c)}|}{|\text{金标}|}$$
即「规则与 LLM 给出不同结论的案件占比」。v1 金标该值 ≈ 0(规则满分、LLM 顶多打平 → 几乎处处相同);扩集后必须显著 > 0,且差异集中在 HARD/MEDIUM 档。P3 拿到 LLM 候选前,先用「规则 vs 规则关闭 MULE-03」做代理对照,验证 HARD 档确实拉开了分差。
设计要点/决策表
| 要点 | 决策 | 理由 |
|---|---|---|
| 扩集目标 | 判别力(高方差难例)而非样本量 | 0 方差案再多不增排序能力(Anthropic 2026-01) |
| 难例压点 | 精准贴规则判定边界(阈值/链长/叠加/网络) | 泛泛「更复杂」不保证落在盲区 |
| 新增第四类 | collator_mule(多骡 gather-scatter) | 制造「规则必漏 / LLM 可补」最干净的高方差 |
| 难度分层 | 用「规则是否漏报+是否唯一解」客观定档 | 避免主观打星;HARD=规则盲区 |
| 验收口径 | 统计判别力/平均难度/系统平均分差(arXiv 2509.26619) | 难例必须可量化验收,不凭感觉 |
| EASY 档处理 | 保留作回归地板,但不计入判别力计数 | 防 0 方差案稀释信号 |
对本项目的落地
- 扩展
src/aml/generator.ts的HARD_CASE_RECIPE:在boundary_9900/long_chain_layering/mixed_struct_layer三类之外新增collator_mule(B 节伪代码),count设 8-10,使 v1.2 金标达 ≥102 案。新增HardCaseCategory联合类型成员'collator_mule',并在HardCaseMeta加可选expectRuleMiss: boolean字段(标注「该难例规则应漏报」),供判别力验收测试核对——不改types.ts的AmlCase契约(向后兼容 day7 已入 CI 的 v1/v1.1)。 - 新增难度分层函数(
generator.ts或evalBaseline.ts)stratifyDifficulty(case, ruleResult) → 'EASY'|'MEDIUM'|'HARD'(C 节算法),并导出getGoldenDatasetV12()与 v1/v1.1 同模式 memoize,不动getGoldenDataset()/getGoldenDatasetV11()的既有缓存与导出。 - 判别力验收测试:在 aml 测试里断言 (1) 全部
expectRuleMiss难例上规则基线 recall 掉到预期(证明 HARD 档确实压在盲区);(2) 金标 HARD 档占比 ≥ 阈值(避免扩集退化成凑数);(3)Discrim(金标)代理值(规则开/关 MULE-03 对照)在 HARD 档显著 > 0。这把 day7 的「扩集是判别力必要条件」从一句结论,变成一条 CI 可断言的不变量。 - 诚实标注:
genCollatorMuleCase头注承袭 day68——「确定性合成、非 GNN」;难度分层基于当前规则基线的命中情况,是相对量(规则升级后某些 HARD 会降级为 MEDIUM),分层标注带「相对 vX 规则基线」的版本戳;LLM 候选尚未接入,B/C 节的「LLM 该怎样」是设计预期不是实测,P3 接入后回填真实分层 recall。
参考资料
- Anthropic — Demystifying evals for AI agents:「20-50 simple tasks drawn from real failures is a great start」「large effect size → small sample sizes suffice」「An eval at 100% tracks regressions but provides no signal for improvement」「balanced problem sets test both where a behavior should and shouldn't occur」(2026-01-09)
- Searching for Difficult-to-Translate Test Examples at Scale, arXiv 2509.26619:discriminability = 区分好坏模型并排序的能力;高方差/高难度样本排序效率更高;挑战集四度量(统计判别力/平均难度/系统平均分差/子集排序一致性);随机子集丢失区分 Pareto 前沿的高判别力样本 (2025-09)
- Hamel Husain & Shreya Shankar — LLM Evals FAQ:golden 数据集规模分层(50-100 catch obvious / 200-500 production / 1000+ mature);错误分析后定向补样本;30 分钟看 20-50 输出 (2026-01)
- GARG-AML against Smurfing: A Scalable and Interpretable Graph-Based Framework for AML, arXiv 2506.04292:smurfing/fan-in/fan-out/gather-scatter 作可查询图模式;可解释优于黑盒 GNN(分析员可追溯路径解释为何命中),强调 scalable (2026-04 版)
- 本仓库
src/aml/generator.ts(HARD_CASE_RECIPE/getGoldenDatasetV11/HardCaseMetav1.1 难例),src/aml/evalBaseline.ts(recall/FPR 聚合),docs/aipa/day7-week1-summary.md(「基线满分→扩集成必要条件」),docs/aipa/day12-targeted-hard-cases.md、docs/aipa/day68-mule-graph.md(钱骡网络/叠加仲裁)(2026-06~08)
SOTA 检查 (2026-08-22)
- 「难度/方差驱动的金标设计」是 2025-2026 评测主线:Anthropic(2026-01)「100% eval 无改进信号」、arXiv 2509.26619(2025-09)「高判别力样本而非随机子集」口径一致——评测金标的价值在「能分出系统高下的高方差案件」占比,不在总量。本日 WebSearch 未见「样本量越大越好」的反向主张成为主流。
- 图典型学扩集与本项目方向一致:GARG-AML(arXiv 2506.04292, 2026-04 版)把 fan-in/fan-out/gather-scatter/smurfing 作可解释图模式,AMLgentex / AMLworld 合成数据集(arXiv 2506.13989)推动「数据驱动 AML 研究」——本项目
collator_mule难例与这条线同构,但用确定性启发式而非 GNN,保持可解释+诚实标注定位。 - golden 规模分层口径稳定:Hamel/Shreya(2026-01)的 50-100 / 200-500 / 1000+ 三档仍是现行;本项目 ≥100 处在「minimum viable → production」过渡,与「原型期、效应量大、小样本够用」(Anthropic 2026-01)匹配,不盲目冲千级。
- 过时认知警示:「金标全绿 = 系统强」过时——对评测金标,全绿是「该扩难例」的警报(反直觉②);把金标调到全绿等于锯掉改进标尺。day7 规则满分应被读作扩集触发条件,而非性能背书。
- 待跟踪:P3 接入第一个 LLM 候选后,用真实「规则 vs LLM」分歧率回填
Discrim(金标)实测值,验证 HARD 档是否真的拉开分差;若 collator_mule 上 LLM 也漏(图理解不足),需评估是否给 LLM 喂结构化图度量(day68muleGraphMetrics输出)作为上下文。