W2 周总结 —— 错误分析方法论的因果闭环与偏差登记
W2 周总结 —— 错误分析方法论的因果闭环与偏差登记
日期: 2026-06-28 阶段: Phase 1 - 产品定义×评测×可观测底座 标签: #error-analysis #bias #saturation #golden-freeze
核心问题
W2 这一周(Day 8-14)做的是一件事:把"凭感觉觉得 AML Copilot 哪里不行"变成"有据可查、可回归、可冻结的评测体系"。但周总结不该是流水账。真正值得复盘的是三个会决定整套评测可信度的问题:
- 因果链是否真的闭合? 采样 → open coding → axial coding → taxonomy → eval 映射——每一步若与上一步脱钩,最终的 eval 就是空中楼阁。我要能讲清每一步"为什么必须喂给下一步",而不只是"做了这五步"。
- 偏差从哪进来、有多大? 这一周所有结论都建立在"我一个人、看了有限样本"之上。采样偏差和单编码者偏见若不登记、不量化,整套 taxonomy 可能系统性地偏。
- 能不能冻结? golden v1 和 taxonomy v1.0 要交付给 W3+。冻结意味着"从此以后这是基准线,改它要走变更流程"——交付前必须确认它们确实达到了可冻结的状态(理论饱和 + 证据可追溯)。
这篇总结就是对这三件事给出诚实的、带证据文件指向的答复。
关键内容
A. 错误分析全流程的因果链复盘
五步不是并列清单,是一条每一环的输出是下一环的强制输入的因果链。逐环讲"它产出什么 + 为什么下一环离不开它"。
A.1 采样(sampling)→ open coding
产出:一批"有代表性"的 trace。关键不在数量在结构——按有信号的维度系统组合(本项目即 typology × 难度 × 边界),而非让 LLM 自由生成。原因引述 Shreya/Nurtureboss 课的洞察:"The LLM doesn't necessarily know the distribution of your data—it's going to create probably something closer to the mean"(2025-06)——自由生成会塌缩到均值,把边界失败采样掉。
为什么喂给下一环:open coding 只能看见被采到的东西。采样的盲区 = taxonomy 的盲区。这条因果关系决定了 Day 12 必须做"定向补难例"——补的正是采样阶段被均值塌缩掉的边界。
A.2 open coding → axial coding
产出:一堆"丰富但混乱"的自由文字笔记(domain expert 直读 trace 记下第一个失败,不预设类别)。纪律是"让类别从数据里浮现"(let categories emerge from the data)。不能外包给 LLM——LLM 缺你的领域语境和 tribal knowledge(Shreya 2025-06)。
为什么喂给下一环:axial coding 是对这堆笔记做聚类。笔记的颗粒度决定 taxonomy 的颗粒度——open coding 若只写"不对",axial 聚不出"漏报跨窗口 structuring"这种可二元判定的叶子。
A.3 axial coding → 失败 taxonomy
产出:一棵"小而互斥、每个叶子可二元判定、扎根于数据"的失败 taxonomy。每叶满足三条:Binary and testable / Distinct / Grounded in data。
为什么喂给下一环:Day 13 的 eval 映射逐叶遍历这棵树。叶子若不可二元判定,就没法分配代码型 eval;若不互斥,FPR/recall 会重复计数。 taxonomy 的质量直接决定 eval 套件能不能落地。
A.4 重标注(re-labeling)→ 理论饱和
产出:用演化后的判定标准回头重标早期 trace。原因——"完成这个过程的人看数据的方式,和开始的人完全不同"(the person who finishes sees the data very differently from the person who started)。早期标的会因为标准漂移而失真,必须回扫。
终止条件 = 理论饱和:新 trace 不再带来新失败模式。Hamel 给的硬启发式:"review at least 100 traces;if ~20 traces don't turn up a new category, you can stop"(2026-01)。
A.5 量化 → eval 集成:数失败模式频率、定二元评测标准——即 Day 13 的映射表,把 taxonomy 接到代码型/judge/人工三类 eval 上。
W2 因果链(断一环则下游全空):
结构化采样 ──(塌缩均值则盲区)──▶ open coding
open coding ──(颗粒度决定颗粒度)──▶ axial coding
axial coding ──(可二元判定才可路由)──▶ taxonomy v1.0
taxonomy ──(逐叶遍历)──▶ eval 映射(Day 13)
采样盲区 ◀──(反推补难例)── 定向难例(Day 12) ← 闭环:用下游修上游
反直觉洞察①:错误分析是一条单向因果链,但有一条反向修复边。 直觉以为它是"采样→…→eval"的线性流水线。实际上 Day 12 的定向补难例是一条从 taxonomy 反指回采样的修复边——用归纳出的失败模式,反推采样阶段漏掉了哪些样本。没有这条反向边,采样的均值塌缩偏差会一路传染到 eval,且永远无法自我纠正。
B. 偏差登记 —— 量化影响而非泛泛承认
诚实的评测体系必须登记自己的偏差,否则交付的是"看起来客观"的主观结论。本周两个主要偏差源:
B.1 采样偏差(sampling bias)
来源:本项目 golden v1 是合成数据,由 generateDataset 按固定 GOLDEN_COUNTS(structuring 18 / layering 15 / mule 15 / normal 18)seeded 生成。三个量化影响:
- 类型覆盖偏差:只覆盖三类经典 typology(
TypologyId),现实 AML 有 trade-based ML、加密混币、TBML 等未建模——任何这些类型的失败,eval 召回率永远是"未知"而非"0",这是更危险的偏差(不知道自己不知道)。 - 分布偏差:normal 子集里只有 index%3==0 的案件含边界噪声(
genNormalCase),合法现金商户只有 1 个(cashBiz = index === 0)。真实 normal 的边界形态远比这丰富,当前 5.6% 的 FPR 是"这套合成分布下"的,不可外推到生产分布。 - 难度偏差:Day 12 前的 golden 几乎全是教科书式易例,判别力被压缩——这正是 Day 12 补难例要修的。
B.2 单编码者偏见(single-coder bias)
来源:本周 open/axial coding 由我一人完成。质化研究文献明确警告——单个研究者会因自身偏见左右整套编码,且没有第二人校验时这种偏差不可见(QualPage 2023;Quirkos)。量化这种偏差的标准工具是 inter-rater reliability:
| Cohen's κ 区间 | 一致性等级 | 含义 |
|---|---|---|
| 0.8 – 1.0 | 近乎完美 | 编码标准清晰、可复制 |
| 0.6 – 0.8 | 实质一致(substantial) | 可接受,taxonomy 较稳 |
| 0.4 – 0.6 | 中等一致(moderate) | 叶子定义有歧义,需再讨论 |
| < 0.4 | 弱 | taxonomy 不可信,需重做 |
(阈值口径据 arXiv 2508.14764,2025-08:0.6-0.8 substantial、0.4-0.6 moderate。)本周 κ = N/A——因为只有一个编码者,根本算不出 κ。 这本身就是偏差登记的结论:当前 taxonomy v1.0 的 inter-rater reliability 未经验证,等同于把一个未校准编码者的判断当成了真理。
缓解路径(登记为 W3+ 待办):引入第二编码者对 golden 的一个子集独立编码,算 Cohen's κ;目标 κ ≥ 0.6(substantial)。在那之前,taxonomy v1.0 标注"single-coder, κ unverified"。该研究同时指出务实折中——"少量人工评审者可以监督一个 LLM 做大规模质化分析"(arXiv 2508.14764, 2025-08),即可用 LLM 当第二编码者先做粗校,但最终 ground truth 仍须人工。
反直觉洞察②:单编码者的最大风险不是"标错几个",而是"系统性地一致错"。 标错几个是随机噪声,多看几条会暴露;但单编码者把一个错误的判定标准一致地应用到全部样本——例如系统性地把"合法现金商户"都归错类——这种偏差在自己看来完全自洽(因为标准统一),只有第二个人独立编码、算出低 κ 时才会显形。自洽不等于正确;一致性高的单人编码恰恰最危险,因为它伪装成了高质量。
反直觉洞察③:合成数据的 FPR/recall 数字越漂亮,越要警惕外推。 golden v1 的 recall 1.0、normal FPR 5.6% 是真实的——但只对"这套 seeded 合成分布"成立。把它当成"系统在生产上也这么好"是采样偏差的典型陷阱:合成数据的失败上界是"我能想到的失败",想不到的(未建模 typology)永远不进分母。 因此这两个数字在交付物里必须带口径标注"synthetic distribution, not production-validated"。
C. golden v1 冻结与 taxonomy v1.0 交付确认
冻结的前提是"达到了可冻结状态"。逐项核对:
- 理论饱和:合成 golden 的"饱和"含义特殊——它不是"看到不再有新失败",而是"覆盖了我设计的所有 typology × 难度组合"。在当前三类 typology 范围内已饱和;但范围外未饱和(见 B.1),故冻结的是"v1 范围"而非"AML 全域"。
- 证据可追溯:每个失败类都能指向 golden 里的具体案件 id 和触发它的
RuleHit.evidenceTxIds(types.ts)——不是凭空断言。 - 可复现:golden v1 由
GOLDEN_SEED = 'aipa-golden-v1'确定性生成,同进程 memoize(goldenCache),跨进程同 seed 同输出。冻结 = 锁定这个 seed + counts,任何对generator.ts的改动都不得改变 v1 的 PRNG 流(这也是 Day 12 难例必须走新 seed 独立批的原因)。
冻结的操作含义:v1 进 CI 当基准线后,recall 1.0×3 / normal FPR 5.6% 成为回归门槛;改动若让这些数字变化,CI 报警,强制人工确认是改进还是回归。
设计要点 —— W2 交付物对照
| 交付物 | 计划要求 | 实际状态 | 证据文件 |
|---|---|---|---|
| 合成 golden 数据集 | seeded、可复现、≥60 案 | ✅ 66 案、aipa-golden-v1 | src/aml/generator.ts getGoldenDataset |
| 规则基线评测 | recall/FPR/混淆矩阵 | ✅ recall 1.0×3、FPR 5.6% 进 CI | src/aml/evalBaseline.ts |
| 失败 taxonomy v1.0 | 小而互斥、可二元判定 | ⚠️ 已建,single-coder、κ 未验证 | Day 9-11 笔记 + typology.ts 规则叶 |
| 定向难例集 | 盲区+边界+对抗,标签解耦 | 🔜 设计稿(getGoldenDatasetV11) | Day 12 笔记 |
| taxonomy→eval 映射 | 三类 eval 路由表 | 🔜 设计稿(evalMap.ts) | Day 13 笔记 |
| 偏差登记 | 采样+编码偏差量化 | ✅ 本篇 B 节 | 本篇 |
对本项目的落地
-
在
src/aml/generator.ts顶部注释补"偏差登记"段:明确标注 golden v1 的三类偏差(类型覆盖仅 3 typology / normal 分布偏窄 / 难度偏易),并写明 recall/FPR 数字的口径是"synthetic distribution, not production-validated"。这让任何读代码的人不会误把合成指标当生产保证。 -
新增
src/aml/GOLDEN_FROZEN.md(交付清单,非代码):记录 v1 冻结契约——seed、counts、生成日期、recall/FPR 基准值、可追溯证据指针,以及"改动 v1 需走变更流程"的纪律。这是冻结的形式化。 -
taxonomy v1.0 标注 single-coder 状态:在 Day 9-11 的 taxonomy 笔记和
typology.ts规则注释里,标注"编码者=1,Cohen's κ 未验证",并把"引入第二编码者算 κ ≥ 0.6"列入 W3+ 待办——诚实暴露这个未闭合的偏差,而非假装 taxonomy 已客观。 -
W3 第一件事是 Day 12/13 的设计稿落地:
getGoldenDatasetV11(难例批,新 seed)+evalMap.ts(路由表)。两者都已在 W2 出设计、未实现——W2 交付的是方法论与冻结基线,实现归 W3。用计划语气交付,不谎称已实现。
参考资料
| 资源 | 类型 | 发布日期 | 链接 |
|---|---|---|---|
| LLM Evals Lesson 2: Error Analysis(采样→开放→轴向→重标→量化因果链、均值塌缩、不可外包 LLM) | 课程笔记原文 | 2025-06 | https://thingsithinkithink.blog/posts/2025/06-21-llm-evals-lesson-2-error-analysis/ |
| Hamel Husain LLM Evals FAQ(理论饱和启发式 ≥100 / ~20 无新类即止) | 工程博客原文 | 2026-01 | https://hamel.dev/blog/posts/evals-faq/ |
| Inter-Rater Reliability between LLMs and Human Raters in Qualitative Analysis(Cohen's κ 阈值、单评者偏差缓解) | arXiv 论文 | 2025-08 | https://arxiv.org/html/2508.14764v1 |
| QualPage Inter-rater Reliability in Qualitative Coding | 方法论博客 | 2023-08(经典方法,配 2025 近期来源 arXiv 2508.14764) | https://qualpage.com/2023/08/31/inter-rater-reliability-in-qualitative-coding-considerations-for-its-use/ |
项目 src/aml/generator.ts / evalBaseline.ts / typology.ts / types.ts | 代码 | 本仓库 | — |
SOTA 检查 (2026-06-11)
- 本主题当前 SOTA:错误分析五步因果链(采样→open→axial→taxonomy→eval)是 2025-2026 AI eval 主流方法论(Hamel & Shreya Maven 课,2025-09 已训 2000+ 人;Aman Khan Prototyping→Observability→Evals)。质化编码的 inter-rater reliability(Cohen's κ)是数十年成熟方法,2025 仍在被引入 LLM 辅助编码场景(arXiv 2508.14764, 2025-08)。
- 是否仍是 SOTA:✅ 是。"先错误分析、人工不可外包、达理论饱和、冻结基线"是当下共识;单编码者需第二评者校验仍是质化研究铁律。
- 2026 进展 / 替代:
- LLM 当第二编码者渐成实践——可加速 κ 验证,但 arXiv 2508.14764(2025-08)与 "LLM 模拟用户是不可靠代理"(2026-01) 共同背书:最终 ground truth 必须人工,LLM 仅做粗校与放大。
- τ²-bench 的 pass^k(2025-06,2026-04 更新 38 模型)提示"饱和"还有稳定性维度——单次通过不等于稳定通过,未来 golden 冻结可能要带"k 次重试下的失败稳定性"口径。
- 本项目对齐:W2 交付 golden v1 冻结基线 + taxonomy v1.0(诚实标注 single-coder、κ 未验证)+ 偏差登记(采样三偏差 + 单编码者偏差量化),并把"第二编码者算 κ ≥ 0.6""难例批/eval 映射落地"列入 W3+——正是上述 SOTA 在一个可进 CI、诚实标注来源与偏差的合成 AML 评测体系上的落地。