返回 AIPA 笔记
AIPA Day 69

金标扩集 ≥100 — 难例不是堆数量,是造区分度

金标扩集 ≥100 — 难例不是堆数量,是造区分度

2026-08-22
golden-datasethard-casesdiscriminability

日期: 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 案,含贴线案件与叠加类型学)不是可选项,是让对比有判别力的必要条件。」今天兑现这张支票,回答两个问题:

  1. 扩集到 ≥100 案,到底在扩什么? 直觉会去扩「数量」——再生成 40 个普通 structuring/layering/mule 案凑到 106。今天要证明这个方向是错的:再多舒适区案件也不增加判别力,因为新老系统在它们上面分数都一样。扩集的目的不是样本量,是制造新老系统会打出不同分的难例——即「高方差」「贴决策边界」的案件。

  2. 怎么知道扩集后的金标真的有判别力? 不能凭感觉说「这些案挺难的」。要有一套可量化的判别力检验:难例必须让规则基线掉分(否则它没区分出规则的盲区),而 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.tsHARD_CASE_RECIPE),day69 把它们的「边界压点」讲透,并按 day7 的余量原则定向补到 ≥100:

难例类别压的边界规则会怎样LLM 该怎样制造的方差
boundary_9900单笔恰 $9,900,距 CTR $10,000 仅 $100(贴 STRUCT_BAND 上沿)规则靠固定阈值仍命中,但对「为何贴线」无解释LLM 能读出「连续整 $9,900、距门槛恰 $100」的意图叙述解释质量维度高方差
long_chain_layering5-6 跳内部过账(超 LAYER_MIN_CHAIN_ACCOUNTS 远)规则递归追链能命中,但链越长越易 off-by-one 截断LLM 易丢中间跳、易把分叉误当主链链路完整性维度高方差
mixed_struct_layerstructuring(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(舒适区,规则满分)6464~64回归测试地板,不计入判别力
MEDIUM(贴线/叠加,规则命中但有解释方差)1(刻意 FP)13~22解释/定性维度方差
HARD(规则漏报,网络级/长链截断)13~16主判别力来源
合计6680≥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.tsHARD_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.tsAmlCase 契约(向后兼容 day7 已入 CI 的 v1/v1.1)。
  • 新增难度分层函数(generator.tsevalBaseline.tsstratifyDifficulty(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。

参考资料

  1. 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)
  2. Searching for Difficult-to-Translate Test Examples at Scale, arXiv 2509.26619:discriminability = 区分好坏模型并排序的能力;高方差/高难度样本排序效率更高;挑战集四度量(统计判别力/平均难度/系统平均分差/子集排序一致性);随机子集丢失区分 Pareto 前沿的高判别力样本 (2025-09)
  3. Hamel Husain & Shreya Shankar — LLM Evals FAQ:golden 数据集规模分层(50-100 catch obvious / 200-500 production / 1000+ mature);错误分析后定向补样本;30 分钟看 20-50 输出 (2026-01)
  4. 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 版)
  5. 本仓库 src/aml/generator.tsHARD_CASE_RECIPE/getGoldenDatasetV11/HardCaseMeta v1.1 难例),src/aml/evalBaseline.ts(recall/FPR 聚合),docs/aipa/day7-week1-summary.md(「基线满分→扩集成必要条件」),docs/aipa/day12-targeted-hard-cases.mddocs/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 喂结构化图度量(day68 muleGraphMetrics 输出)作为上下文。