类型学升级 II — mule network 图比对与叠加命中仲裁
类型学升级 II — mule network 图比对与叠加命中仲裁
日期: 2026-08-21 阶段: Phase 3 - AML 调查 Copilot 标签: #mule-network #graph-topology #typology-arbitration
核心问题
W1 的 MULE-01/MULE-02 是单账户视角的规则:盯着一个账户的 fan-in 笔数、流出占比、开户天数。它能抓住「一个钱骡账户」,但抓不住钱骡网络——多个骡账户协同把钱归集再发散的结构。今天回答两个互相纠缠的问题:
-
钱骡网络的判别信号到底在哪? 直觉会继续在单账户的属性上加阈值(流入更大、笔数更多、开户更新)。今天要证明这个方向是错的——钱骡网络的信号在账户间的图拓扑(fan-in / fan-out / gather-scatter / reconvergence)里,不在任何单账户的属性里。一个孤立看完全正常的账户,放进图里就是归集枢纽。
-
一个案件同时命中 structuring + layering + mule 时怎么定性? day12 的混合难例已经埋了雷:现有
assessCase用「各类型学得分求和取 max」选 topTypology,但这套打分在叠加命中(多类型学并发过阈值)时会做出错误的优先级决策。今天给出一套叠加命中仲裁算法。
这对 AML Copilot 是判别力问题:FinCEN 2025 数据里 structuring 占 SAR 申报 8.65%(Sumsuber, 2025),但钱骡活动恰恰是 authorized push payment(APP)欺诈与 AML 收敛的核心载体(AMLWatcher, 2026-03)——而它在单账户视角下几乎隐形。
关键内容
A. fan-in / fan-out 图结构比对:信号在拓扑不在节点
把案件建模成有向图 $G=(V,E)$:节点 $V$ = 账户(含外部对手抽象成虚拟节点),有向边 $e=(u\to v)$ = 一笔从 $u$ 到 $v$ 的资金流,边权 = amountCents。洗钱的经典拓扑在这张图上是可枚举的子图模式(TigerGraph, 2026-01;研究界统计出 370 组模式含 fan-in/fan-out/gather-scatter/cycle/random,dl.acm.org 2025):
| 拓扑 | 图特征 | 节点级定义 | 洗钱含义 |
|---|---|---|---|
| fan-in(归集) | 高入度、低出度的汇聚点 | $\deg^-(v) \gg \deg^+(v)$ | 多个骡把钱汇到一个收集账户 |
| fan-out(发散) | 低入度、高出度的发射点 | $\deg^+(v) \gg \deg^-(v)$ | 一个源拆成多笔规避门槛 |
| gather-scatter(归集后发散) | 一个枢纽先 fan-in 再 fan-out | 枢纽节点入度出度都高、且时序上先入后出 | 钱骡网络的标志拓扑 |
| reconvergence(重汇聚) | 多条路径流回同一节点 | 多个不相交路径终点重合 | 分层后资金重新合并(TigerGraph 2026-01) |
关键操作是 gather-scatter 比对——单账户规则 MULE-01 只看了「一个账户 fan-in 后转出」,但钱骡网络是多个 fan-in 节点的钱汇到一个 collector,collector 再 fan-out 到多个 cash-out 节点。算法步骤:
钱骡网络 gather-scatter 检测:
1. 建图 G:账户为节点,内部转账/外部入账为有向边(边带 dayOffset)
2. 找候选 collector:deg⁻(v) ≥ K_in 且 deg⁺(v) ≥ K_out 的节点
3. 对每个 collector v:
inSet = {u | (u→v) 存在, 时间在窗口内} # fan-in 上游
outSet = {w | (v→w) 存在, dayOffset 晚于 inSet} # fan-out 下游(时序约束)
if |inSet| ≥ K_in and |outSet| ≥ K_out
and Σedge(inSet→v) 与 Σedge(v→outSet) 留存比 ≥ ρ:
标记 v 为 collector,{inSet ∪ v ∪ outSet} 为骡环候选
4. 对骡环候选做社区检测(见 C 节),density 高于阈值 → mule_network 网络级命中
时序约束 dayOffset(out) > dayOffset(in) 是把 gather-scatter 和「正常的资金中转商户」区分开的关键——商户是先收后付但收付时间随机交错,骡网络是先集中收、后集中发,时间上有清晰的「先入后出」相位。
反直觉洞察①(钱骡网络的信号在图拓扑不在单账户):把每个骡账户单独看,它可能完全正常——开户 200 天、流入流出平衡、笔数不高,三条单账户规则一条都不命中。洗钱意图不在任何一个节点的属性里,而在节点的连接方式里。 一个 collector 账户单看只是「收了几笔又转出几笔」,但它在图里是 5 个 fan-in 路径的唯一交汇点 + 3 个 fan-out 路径的唯一起点——这个位置(betweenness/枢纽中心性)才是信号。继续在单账户属性上加阈值,是在错误的维度上调参,永远抓不到协同型骡网络。
B. 叠加类型学(多类型学并发命中)优先级仲裁
day12 的混合难例(genMixedStructLayerCase)暴露了现有聚合的脆弱性。现状 assessCase(typology.ts)的逻辑:各类型学规则得分求和 cap 到 1,再选得分最高的过阈值类型学当 topTypology。问题:当 structuring 和 layering 都过阈值(叠加命中),单纯比大小会丢掉资金流向的因果次序。
混合难例的真实结构是:贴线现金存款(structuring 信号)→ 把归集的钱链式过账(layering 信号)→ 末端发散(mule 信号)。三者不是「并列的三个可能性」,而是同一笔洗钱的三个阶段(placement → layering → integration 的经典三段论)。正确的定性不是「分最高的赢」,而是按资金流的因果链选「主导阶段」。
仲裁算法(叠加命中时覆盖 max 选择):
叠加命中仲裁 arbitrate(hits):
active = {t | scores[t] ≥ ASSESS_THRESHOLD} # 所有过阈值的类型学
if |active| ≤ 1: return max-by-score(active) # 无叠加,沿用原逻辑
# 叠加:按「资金最终去向」定性,而非按分数
if mule_network ∈ active and 有网络级 gather-scatter 命中:
primary = mule_network # 网络级证据最强,钱的终局是发散套现
elif layering ∈ active:
primary = layering # 钱被链式过账,去向是过账归集(day12 既定)
else:
primary = max-by-score(active)
secondary = active \ {primary} # 其余降级为「伴随信号」,进 SAR 但不主导定性
return { primary, secondary, rationale: 因果链解释 }
仲裁的核心原则:叠加命中下,类型学之间是「阶段关系」不是「竞争关系」。primary 决定 SAR 的主叙述与监管类型代码,secondary 作为「同时观察到 X 信号」写进叙述但不抢主导。这把 day12 的设计决策(混合案 label='layering',因为「资金最终去向是过账归集」)从一个手工标注,升级成一条可执行的仲裁规则。
下表对照三种聚合策略在 day12 混合难例上的行为(structuring 触发 STRUCT-02=0.4 干扰、layering 触发 LAYER-01+02=1.0、若末端发散再加 mule 信号):
| 聚合策略 | structuring 0.4 | layering 1.0 | mule 0.6 | 输出 topTypology | day12 金标=layering |
|---|---|---|---|---|---|
| 现状:求和取 max | 不过阈值 | 过阈值(最高) | 过阈值 | layering | ✅ 巧合对 |
| 朴素「命中即报最高分」 | — | 1.0 | 0.6 | layering | ✅ 但靠分数巧合 |
| 因果链仲裁(本日) | secondary | primary | secondary | layering + 伴随[struct, mule] | ✅ 有因果解释 |
现状之所以「巧合对」,是因为 layering 在该难例恰好分最高。但把末端发散做强(mule 网络级命中分更高)时,求和取 max 会翻车选成 mule——而正确定性仍应是 layering 主导(钱的核心动作是过账,套现是尾段)。因果链仲裁不依赖分数大小的巧合,依赖资金流向的语义。
反直觉洞察②(叠加命中下「分最高」不等于「最该定性的」):评分系统的天然假设是「分越高越确信」,于是叠加时选最高分。但洗钱的多类型学并发是一条资金链的多个切片,不是多个独立假设的概率竞争。STRUCT 信号分低不代表它「更不可能」,而是它在因果链上只是入金阶段——分数反映的是「规则命中强度」,不是「在洗钱叙事里的主导地位」。用命中强度替代因果地位来定性,会把入金细节误当主罪名,写出方向错误的 SAR。
C. 图算法:从子图模式到社区检测
骡环候选拿到后,要回答「这一坨账户到底是不是一个协同团伙」。两层图算法:
C.1 中心性(centrality)定位枢纽。 collector 的图特征是高 betweenness(介数中心性)——它处在最多「fan-in 上游 → fan-out 下游」最短路径上。degree centrality 只数边数,betweenness 抓的是「资金必经的咽喉」。AML 实践把 centrality scoring 用于「highlighting hub accounts and bottlenecks」(TigerGraph, 2026-01)。本项目原型不必上真正的 betweenness 计算(O(VE)),用 day68 的 gather-scatter 启发式(入度×出度×时序)作为 betweenness 的廉价代理即可。
C.2 社区检测(community detection)判团伙。 一组「存款时间同步、流出去向重合」的账户,是一个钱骡环(FluxForce 2026;Lucinity)。业界标准是 Louvain 模块度最大化——把图划分成社区使模块度 $Q$ 最大:
$$Q = \frac{1}{2m} \sum_{i,j}\left[A_{ij} - \frac{k_i k_j}{2m}\right]\delta(c_i, c_j)$$
其中 $m$=总边权,$A_{ij}$=节点 $i,j$ 间边权,$k_i$=节点 $i$ 的度,$\delta(c_i,c_j)$=两节点同社区时为 1。$Q$ 衡量「社区内实际边权」超出「随机连边期望」的程度——正是 Cohen's κ 那套「扣掉随机基线」的思路(day17):$A_{ij}$ 是观测,$k_ik_j/2m$ 是随机期望,差值才是真实结构。Louvain 平均时间复杂度约 $O(n\log n)$(Blondel et al. 2008;Neo4j),可处理大图。欺诈分析里它用来「判断一组账户只是几个零散坏行为、还是一个关系密度高于平均的欺诈环」(Neo4j)。
本项目原型选型:不引 GNN,不引 Louvain 库,用确定性启发式。 理由:(1) 数据集是合成的、规模小(每案 ≤8 账户),Louvain 的统计优势用不上;(2) GNN(Elliptic 数据集那套,ijcnc.com 2025-12)需要训练、不可解释、与本项目「规则可解释 + 诚实标注」的定位冲突;(3) 原型要的是可演示的网络级命中 + 可写进 SAR 的人话解释,启发式 gather-scatter + 同步性检测足够。Louvain/GNN 作为「真实数据规模化时的升级路径」写进 SOTA 检查,不在原型实现。
设计要点/决策表
| 要点 | 决策 | 理由 |
|---|---|---|
| 钱骡网络检测维度 | 图拓扑(gather-scatter)而非单账户属性 | 协同骡账户单看正常,信号在连接方式 |
| collector 判定 | 高入度×高出度 + 时序「先入后出」 | 区分骡枢纽 vs 收付随机交错的正常商户 |
| 叠加命中定性 | 因果链仲裁(按资金最终去向)非「分最高」 | 多类型学并发是一条链的多阶段,非概率竞争 |
| primary/secondary | primary 主导 SAR 叙述,secondary 写伴随信号 | 防止入金细节误当主罪名 |
| 图算法选型 | 确定性启发式,不引 GNN/Louvain 库 | 合成数据规模小 + 要可解释 + 诚实标注定位 |
| 中心性 | gather-scatter 启发式代理 betweenness | 避免 O(VE) 计算,原型够用 |
对本项目的落地
- 扩展
src/aml/typology.ts新增MULE-03(网络级 gather-scatter):复用现有internalDebitsByAccount与externalCredits建图,实现 A 节算法——找 collector(入度≥K_in 且出度≥K_out 且时序先入后出),命中给score: SCORE_PRIMARY并在description写「账户 X 作为归集枢纽,上游 N 个 fan-in 账户 / 下游 M 个 fan-out 账户,留存比 ρ%」,evidenceTxIds含全部 fan-in + fan-out 边。与现有MULE-01(单账户 fan-in 后转出)互补:MULE-01抓单骡,MULE-03抓骡网络。 - 新增
arbitrateTypology(assessment)(typology.ts):实现 B 节因果链仲裁,在assessCase的scores/topTypology之上加{ primary, secondary[], rationale }。不改TypologyAssessment现有字段(向后兼容 day7 已入 CI 的基线),仲裁结果作为可选附加字段输出,喂给sarDraft.ts决定主叙述类型。 - day12 混合难例回归:
getGoldenDatasetV11的mixed_struct_layer难例现有 4 例,验证仲裁后 primary=layering(与金标 label 一致)、secondary 含 structuring。新增「末端发散更强」的对抗难例(layering 链尾接 fan-out),验证仲裁不被 mule 网络级高分带偏仍选 layering——这正是 B 节反直觉洞察②要守住的回归点(留待 day69 金标扩集时补造)。 - 诚实标注:
MULE-03头注明确「确定性启发式、非 GNN、非 Louvain」;网络级检测在合成小图上的有效性不外推到真实大图(与 day7 的口径一致性声明同纪律);Louvain/GNN 标注为「真实数据规模化升级路径」,原型不实现、不谎称已实现。
参考资料
- TigerGraph — Money Laundering Detection with AML Graph Analytics: Structuring and Layering(fan-out=splitting、多跳路径追踪、reconvergence 重汇聚、centrality 标记枢纽、跨机构层分单行视角受限)(2026-01)
- Sumsub — AML Transaction Monitoring Rules: Best Examples(structuring 占 2025 SAR 申报 8.65%;按 severity/风险/typology 排序降噪)(2025)
- AMLWatcher — Money Mule Detection: APP Fraud and AML Convergence in 2026(APP 欺诈 typologies 生成不同骡活动模式、各需不同检测逻辑)(2026-03)
- Enhancing Anti-Money Laundering by Money Mules Detection on Transaction Graphs, dl.acm.org(骡节点上下游 bidirectional tracing 枚举洗钱链;370 组模式含 fan-in/fan-out/gather-scatter/cycle)(2025)
- FluxForce / Lucinity — graph analytics for AML(同步存款 + 收敛流出 = 骡环;跨账户/设备/商户连通分析)(2026)
- Blondel et al. — Louvain method for community detection(模块度 $Q$ 公式、$O(n\log n)$、fraud ring 关系密度判定,Neo4j 转述)(2008,经典;Neo4j 应用页 2024)
- 本仓库
src/aml/typology.ts(MULE-01/02 单账户规则、assessCase 聚合)、src/aml/generator.ts(genMixedStructLayerCase 混合难例)(2026-06)
SOTA 检查 (2026-08-21)
- 图分析在 AML 是 2025-2026 稳固主线:TigerGraph(2026-01)、Lucinity、FluxForce(2026)、AMLWatcher(2026-03)口径一致——fan-in/fan-out/gather-scatter/reconvergence 的子图模式 + centrality + community detection 是 fincrime 调查标配;本日 WebSearch 未见 rule-based 子图匹配被淘汰,反而是「GNN 之外仍需可解释子图模式」的回潮(GNNExplainer 给 GNN 补可解释性,ijcnc.com 2025-12)。
- GNN 是性能 SOTA 但不是本项目选型:Elliptic 数据集 + 可解释 GNN(ijcnc.com 2025-12)、MuleTrace 无监督图对比学习(dl.acm.org 2025)是研究前沿,但需训练 + 黑盒,与本项目「规则可解释 + 诚实标注 + 可进 CI 确定性」定位冲突。本项目用确定性启发式 gather-scatter,Louvain/GNN 作为真实数据规模化升级路径登记。
- 叠加类型学仲裁少见成文方法论:业界文档多讲「按 severity/typology relevance 排序告警」(Sumsuber 2025),但「多类型学并发命中如何定性主罪名」缺公开标准;本日的因果链仲裁(按资金最终去向、placement→layering→integration 三段论定 primary)是本项目原创落地,对标 day12 既定的混合难例金标语义。
- 过时认知警示:「钱骡 = 单账户快进快出」过时——2026 的 APP 欺诈骡是协同网络(AMLWatcher 2026-03),单账户规则会系统性漏掉协同型骡环;继续在单账户属性上加阈值是错误维度调参(反直觉①)。
- 待跟踪:真实数据规模化时评估 Louvain(模块度阈值定团伙)vs 启发式的 recall 差距;APP 欺诈 typology 的监管口径(FCA/FinCEN)2026 H2 是否出新指引,影响
MULE-03的 description 措辞。