← 返回目录

ICML 2021 · PMLR 139 · pp. 2500–2509

Diffusion Source Identification on Networks with Statistical Confidence

这篇论文不再试图"猜中"传播源,而是输出一个节点集合,并保证它以预先指定的概率(比如 90%)包含真正的源。方法是对每个候选节点做一次假设检验,把没被拒绝的节点留下。

Quinlan Dawkins,Tianxi Li,Haifeng Xu(弗吉尼亚大学)。代码:lab-sigma/Diffusion-Source-Identification。本页依据 PMLR 正文 10 页整理,附录(证明、算法 2/3、381 个真实网络的细节)不在这份 PDF 里,相关内容只按正文转述。

1研究问题:为什么要"集合"而不是"一个点"

传播源识别(DSI)的经典做法是给出一个点估计,比如 Shah 与 Zaman 的谣言中心。作者指出两件事:一是这类方法的理论保证基本只在规则树之类的理想图上成立;二是即使在理想的无穷正则树上,点估计猜中的概率也常低于 0.3,到一般网络上更低。

另一方面,DSI 天生只有一次观测:某一时刻谁被感染了。SI 模型有马尔可夫性,之后再多看几次快照也不会带来关于源的新信息。数据量没法靠"多采样"补足。

所以作者换了一个目标:在任意网络结构上,构造一个有限样本有效的置信集,即对真源 s*,P(s* ∈ S(Y)) ≥ 1 − α,并且希望这个集合尽量小。

2模型与数据

网络 G 无向无权(作者说可推广到加权)。传播用 SI 模型,但时间不是按轮计的,而是按感染次数计:

  1. 初始只有源 s* 被感染。
  2. 每一步,在所有"已感染—未感染"的边中均匀随机抽一条,把它的未感染端点感染。
  3. 进行 T 次,得到一条传播路径 z = (v₀=s*, v₁, …, v_T),记录了感染顺序。

但观测者看不到顺序,只看到快照 y:一个 n 维 0/1 向量,标出哪些节点被感染(约 T 个且连通;正文对路径写 T+1 个节点、对样本空间写恰好 T 个,记法略有出入)。路径到快照的映射 ζ 是多对一的,顺序信息丢了,DSI 要从 y 反推第一个节点。

这里的观测是全部感染节点的完整快照,不是少数传感器的记录;时间单位是"第几个被感染",不是同步 SI 的轮数。这两点是后面讨论改进时最重要的区别。

3统一框架:用"差异函数"把旧方法装进来

作者把源当作模型参数 s,把识别写成一个优化问题:选一个 s,让它生成的随机路径 Z 与观测 y 的期望差异最小。

ŝ = argmin_s E_s[ ℓ(y, Z) ] Z ~ 从 s 出发的 SI 路径

关键设计是差异函数 ℓ 比较的是快照 y 与完整路径 Z,而不只是两个快照,这样能用上路径里的感染顺序。两个已有方法是它的特例:

作者认为这两个都不够好:前者只取两个值,太粗;两者都没用到感染顺序。于是提出"规范族":

ℓ(y, z) = − Σ_{v: y_v=1} 𝟙(v ∈ z) · h(t_z(v)) h 非增,t_z(v)=v 在路径中的感染次序

直观地说:观测里被感染的节点,若在模拟路径里也很早被感染,相似度就高。ADiT(Averaged Deviation – inverse Time)取 h(t) = 1/t;取 h ≡ 2 就退化为对称差(论文记为 Euclidean/L2)。

4置信集:对每个候选节点做一次检验

对每个候选 s 检验原假设 H₀: s* = s。检验统计量就是上面的期望差异,p 值是"从 s 出发的随机传播,比观测更不像的概率":

T_s(y) = E_s[ ℓ(y, Z) ] ψ_s(y) = P_s( T_s(ζ(Z)) ≥ T_s(y) ) S(y) = { s : ψ_s(y) > α }

定理 1:这样得到的 S(y) 是有效的 1−α 置信集,与网络结构、选哪个差异函数都无关。这是标准的"检验反演":在 s* 为真时,p 值不小于均匀分布,所以真源被拒绝的概率至多 α。

有效性只保证"包含真源",不保证集合小。集合大小取决于网络结构和差异函数选得好不好,这正是 ADiT 要解决的事,也是后面所有"改进"要比的东西。

5算法 1:用蒙特卡洛近似 p 值

一般图上 SI 的概率质量函数算不出来,所以 T_s 和 ψ_s 都用模拟估计。对快照里的每个感染节点 s:

  1. 从 s 出发模拟 2m 条长度为 T 的传播路径。
  2. 用后一半(m 条)估计观测的统计量 T̂_s(y)。
  3. 对前一半的每条路径 z_j,同样用后一半估计 T̂_s(ζ(z_j)),这是"零假设下统计量的分布"。
  4. p 值估计为前一半中 T̂_s(ζ(z_j)) ≥ T̂_s(y) 的比例。
  5. p̂ 大于 α 的节点进入置信集。
flowchart LR
  Y["观测快照 y
(T 个感染节点)"] --> C{"对每个感染节点 s"} C --> S["从 s 模拟 2m 条路径"] S --> A["后 m 条:估计统计量 T̂_s"] S --> B["前 m 条:零分布样本"] A --> P["p̂_s = 零分布中 ≥ T̂_s(y) 的比例"] B --> P P --> D{"p̂_s > α ?"} D -- 是 --> K["留在置信集"] D -- 否 --> R["排除"]

m 怎么选。作者用中心极限定理估计:p 值误差大约 2√(α(1−α)/m)。α=0.1、m=10000 时约为 0.006,也就是 0.6 个百分点。正文此处写作 "0.006%",按公式应为 0.006(0.6%),疑为笔误。

复杂度。朴素实现是 Õ(mT² + m²T²):后一项来自"每条零分布路径都要对 m 条参考路径求平均"。各候选节点之间互相独立,可直接并行。

6三种加速

(a) 规范族的缓存:把 m² 降到 m

规范族的统计量只依赖"每个节点在第 k 个被感染的次数" M_{v,k}。先把参考路径汇总成这张计数表,任何快照的 T̂_s 都能在 O(T) 内算出,单个 p 值总成本降到 Õ(mT)。这也是作者坚持用规范族的计算理由。

(b) 度为 1 节点的"满射重要性采样"

叶子 u 只有一个邻居 v₀,从 u 出发的传播必经 v₀。作者构造了从 v₀ 路径到 u 路径的映射,并给出似然比(定理 2),推广出一种映射不是一一对应的重要性采样(定理 3)。这样叶子节点不用自己采样,复用邻居的样本即可。

(c) 一阶同构节点共享样本

若存在一个只动 u、v 及其一阶邻居的置换,使邻接矩阵不变,则从 u 出发的路径经置换后与从 v 出发的路径同分布(定理 4)。用"度相同、邻居度序列相同、二阶邻居集相同"等必要条件先筛(命题 2),每个同构组只需采样一次。更高阶的同构识别代价指数增长,作者只用一阶。

(b) 的定理 3 给出的是 m→∞ 时几乎必然收敛,属于渐近结论;复用后的 p 值在有限 m 下不再是精确的有限样本有效。这一点正文没有展开。

7实验结果(论文报告值)

设置:4-正则树、优先连接(PA)、小世界(SW)三种随机网络,N=1365,平均度低于 4;T=150;m=10000。正文写 100 次重复,表 1、表 2 题注写 200 次,二者不一致。

点估计几乎猜不中(表 1)

方法正则树PASW
谣言中心000.004
距离中心000
Euclidean(本框架)000.099
ADiT(本框架)000.128

置信集覆盖达标,大小随网络差异很大(表 2,90% 水平)

差异函数正则树 覆盖 / 大小PA 覆盖 / 大小SW 覆盖 / 大小
Euclidean90.4% / 74.990.8% / 81.290.2% / 14.3
ADiT86.2% / 56.990.7% / 64.891.5% / 16.2

在正则树和 PA 上,ADiT 的集合比 Euclidean 小两到三成,说明感染顺序有信息;SW 上两者接近。集合大小与置信水平略超线性,与 T 大致线性。作者给的覆盖率标准误约 3%,ADiT 在正则树上的 86.2% 比名义 90% 低约 1.3 个标准误,偏低但不算显著。

加速效果(表 3、表 4,单位秒)

策略正则树 串行 / 20 核PA 串行 / 20 核SW 串行 / 20 核
朴素 MC2606 / 150.83129 / 176.03209 / 184.9
两种池化都用1219 / 60.41360 / 76.53114 / 183.4

树和 PA 上约省一半以上,小世界网络上几乎无效(结构不对称,同构和叶子都少)。作为对比,谣言中心约 2 秒。作者另在 381 个真实网络上报告:经济、社会网络省 40% 以上,生物、信息网络省 10–20%(细节在附录)。

COVID-19 案例

中国 49 个主要城市的人口流动网络,2020 年 1 月 24 日有 21 个城市确诊不少于 5 例。所有点估计方法都没认出武汉(它在网络里不居中);80% 和 90% 置信集分别有 6 个和 11 个城市,都包含武汉,封城后一周每天都如此。

8我们的本地复现(不是论文结果)

本项目 2026-10-12 实测

用作者更新版代码(提交 2469165),在 AMD Ryzen 7 8845HS 上复现表 2 的设定,详见项目内 output/thesis_code_repro_20261012/README_zh.md。

论文 m=10000本机 m=1000,90 次
Euclidean 覆盖 / 大小90.4% / 74.987.8% / 78.0
ADiT 覆盖 / 大小86.2% / 56.984.4% / 55.5

集合大小接近;覆盖率差 2–3 个点,在约 3.5 个点的标准误内,只能说"不矛盾"。m=10000 只跑了 6 次,不足以评价。

另外三点:

  • 运行中约 5% 的重复在叶子重要性采样分支里触发除零错误(compute_ratios),作者代码没有处理边界边数为 1 的情形。
  • 并行入口用到 Pool 却没有导入。
  • 我们写了约 50 行的子类,把作者的检验与置信集流程原样接到"同步 SI + 六个传感器 I/S 记录"上;与精确概率对照,集合大小在 m=1000 时与精确值相差约 0.02%;不加 +1 修正的 p 值在 m≤200 时会少覆盖(m=50 时约少 1.6 个点),加上后与有效性一致。

9作者代码讲解

仓库 lab-sigma/Diffusion-Source-Identification,本节依据提交 24691653。README 说明当前是更新版代码,ICML 论文实验对应 legacy/ 目录。

文件作用对应论文
src/diffusion_source/infection_model.pyInfectionModelBase:对每个候选分组采样、算 p 值、输出置信集;FixedTSI:固定感染数 T 的 SI 模型及其采样、损失和比值计算§3.2–§4,算法 1
src/diffusion_source/discrepancies.py权重函数 L2_h(h≡2)、ADiT_h(h=1/t)等,以及非规范族损失式 (2)(3)
src/diffusion_source/isomorphisms.pygeneral_iso、compile_permutations:按度、邻居度序列等先筛,再找一阶同构置换§4.2,命题 2、定理 4
src/diffusion_source/algos.py谣言中心(消息传递)、top-k 谣言中心、Crane–Xu 置信集表 1 的点估计对照
src/diffusion_source/graphs.py正则树、ER、WS、BA、SBM 等图生成与距离缓存§5 实验图
experiments/、legacy/实验脚本;legacy 为 ICML 版本,固定 networkx 2.5、numpy 1.19§5

一次置信集计算的调用链

  1. confidence_set(x, α) 调用 p_values(x)。候选集合由 source_candidates(x) 给出,基类直接返回感染节点。
  2. create_groupings:iso=True 时把一阶同构节点并成一组;d1=True 时把度为 1 的节点挂到其邻居所在组,只对组长采样。
  3. sample(s):从组长出发生成 m_l + m_p 条路径。single_sample 每步在"感染—未感染"边集中均匀抽一条,正是论文的模型。
  4. sample_prep:同构成员把路径做置换;叶子成员调用 compute_ratios 算重要性权重(定理 2 的似然比)。
  5. compute_p_vals:规范族时,node_vals 先用后 m_l 条路径累计每个节点的 Σh(t)(即论文的 M_{v,k} 缓存),temporal_loss 再对观测和前 m_p 条路径各算一次损失。
  6. p 值返回两部分:严格更差的比例 ψ_g 与相等的比例 ψ_e;confidence_set 用 ψ_g + U·ψ_e > α 判定,U 为均匀随机数,即随机化并列处理。

代码与论文的差别

10局限与读法

11你可能可以做的改进

下表把每个方向与原文的差别、已有近邻、我们手上的证据放在一起。"判断"是依据现有证据的建议,不是已证实的结论。

方向相对原文改了什么已有近邻我们已有的证据判断
结构不确定下的有效集合(M3 包络) 原文假设图准确;这里允许一组"可能存在"的边,仍保证覆盖,且不枚举所有补图 对干扰参数取最坏情形的检验(Berger–Boos 1994 一类);Dawkins 本身 稠密图上"只用确定边"够用,稀疏图(SBM、lastfm 子图)上它覆盖掉到 0.68–0.86,包络 12 格全部有效,集合只大 0.2–8% 最值得继续
还需找到"取两个边界的最大 p 值"也失效的情形
传感器记录下的有效集合 把完整快照换成少数传感器的首次到达时间,候选池含未观测节点 Li 等 2021(传感器 + 贝叶斯可信区域);Spinelli 等(传感器预算) 子类适配已跑通;在 36 个小模型上,标准检验反演只比最优下界大 6.5–20%;传感器少时全未感染的记录占大头,集合必然大 适合作基线和一章内容
单独算创新偏弱
更好的统计量 用估计的似然或似然比代替 ADiT Neyman–Pearson 引理;检验反演的经典结果 小模型上精确似然排序已接近最优下界,空间约 17% 以内 可作对照实验
有限模拟下严格有效 p 值加 +1 修正;按需提前停止采样 Besag–Clifford 1989、Jöckel 1986(原文已引用) +1 修正在 m=50 时消除了约 1.6 个点的少覆盖 标准做法,不算创新
但应在实现里加上
共享随机数降低模拟成本 一次抽边延迟,用反向最短路同时得到所有候选源的记录 Tolić 等 2018(加权最短路模拟) 项目的 M3 实现已在用 已有前作
作实现组件
为缩小有效集合而部署传感器 传感器选在能让置信集最小的位置,比较达到同样覆盖所需的传感器数 Spinelli 2016–2019;Mürmann 等 2025 放宽度量维数;EC²/ECED 传感器少时,集合下界主要由"至少一个传感器被感染"的概率决定,接近经典的检测覆盖目标 需先排重
见下一节

12相关研究地图:传感器 × 源集合

你问的"有限观测下构造尽量小的源集合,比较达到同一覆盖时所需的传感器数、集合大小和时间",可以拆成两半,每一半都有人做过,两半合在一起的直接研究这次没有找到:

研究观测输出保证与你的设想的关系
Khim, Loh 2016(TNSE)完整快照源集合正则树上的覆盖只在树上
Dawkins 等 2021(本文)完整快照源集合任意图,有限样本同覆盖下比集合大小和时间,但没有传感器
Jian 等 2025/2026(AAAI,共形预测多源)节点状态快照源集合与模型无关的召回保证,需校准集集合方法的最新近邻,有代码;也不涉及传感器数量
Li, Manitz 等 2021(PLOS CB)少量传感器首次到达时间后验与可信区域贝叶斯,平均意义最接近"传感器 + 集合",但不是逐源频率保证
Spinelli 等 2016–2019传感器时间点估计无研究预算与成功率的关系、部署算法
Mürmann 等 2025(放宽度量维数)传感器距离(确定性延迟)允许 k 跳内不可区分组合意义直接研究"允许集合换更少传感器",但没有随机传播和覆盖概率
这次检索只用了 arXiv、Crossref 和项目内已有资料(网页搜索工具不可用),没有覆盖中文期刊和 IEEE/Elsevier 中未上 arXiv 的论文,不能当作完整排重。若以此为创新点,贡献需要落在一个具体机制上(例如在保证覆盖的前提下选传感器的算法及其代价),只把"同覆盖比传感器数"作为评价口径不够。