CausalDynamics: A large-scale benchmark for structural discovery of dynamical causal models
CausalDynamics 不是提出一种新的因果发现算法,而是造出一套有已知真图的动态世界,用 14,693 张从混沌系统、耦合 ODE/SDE 和简化气候模型生成的图,追问十种现有方法:当数据带有非线性、噪声、隐藏混杂、时间延迟和高维耦合时,你恢复的还是因果结构,还是只抓住了时间序列的表面规律?
先拆掉最容易产生的误会
最容易产生的误会是:这篇论文只是“收集了很多 time series,然后做一个更大的 leaderboard”。
它真正做的是把三件通常混在一起的事拆开:
- 轨迹从什么动态方程产生:简单 ODE/SDE、层级耦合系统,或简化的海气模型;
- 哪张图被定义为 ground truth:哪些状态变量或 causal units 进入另一个变量的动态方程;
- 什么困难被有控制地加入:Langevin noise、未观测混杂、time lag、standardization、不同的非线性边函数和高维节点。
因此它不是把现实系统的因果真相“测量出来”。它是在一个由研究者明确写出生成机制的 benchmark 里,检查算法面对更接近物理系统的困难时会怎样失败。
另一个误会是“分数最高的方法已经解决动态因果发现”。论文中的最佳结果离满分仍很远,而且不同 metric 会给人不同观感。以 10 个耦合 ODE 的默认设定为例,最高 AUROC 是 0.67,最高 AUPRC 只有 0.27。这更像一张暴露瓶颈的体检表,而不是一个已经被攻克的任务榜。
先给一个客观判决
| 判决层级 | 最稳妥的表述 |
|---|---|
| 论文有力支持 | 现有动态因果发现方法在受控但复杂的 coupled dynamics 上仍有明显缺口;隐藏混杂与 time lag 会进一步恶化结构恢复。 |
| 论文的重要贡献 | 提供一个可扩展、带真图、能逐项改变 noise/confounding/lag/nonlinearity 的统一生成与评测框架,而不只是发布一批固定文件。 |
| 论文只提供初步证据 | 非深度方法在这套 benchmark 上通常更稳健;这个结论依赖作者采用的 baseline 实现、初始 hyperparameter search 和数据设定,不是所有深度方法的一般定理。 |
| 论文没有证明 | 高 graph-reconstruction score 等同于正确 intervention、机制理解或现实科学发现;也没有证明 benchmark 覆盖了真实动态系统的全部困难。 |
我的总体判断是:这是一篇很有价值的 benchmark-and-diagnosis paper。它最强的地方不是“谁赢了”,而是把动态因果发现从几个经典 toy oscillator 推到一个可系统施加压力的测试空间。它最需要克制的地方,是不要把“已知方程生成的真图”直接当成现实世界里可被同样定义和观测的因果真相。
一个直观世界
想象你要招聘一名“机器维修侦探”。以前的考试只有一台三齿轮机器:齿轮 A 转动,B 跟着转,B 再带动 C。候选人只要在干净、规则、采样密集的录像里画出 A -> B -> C 就能高分。
CausalDynamics 把考试升级成三层:
- 第一层:单台复杂机器。 机器内部可能是 Lorenz 或 Rössler 这样的混沌系统;录像还可以被加入随机扰动,或故意遮住一个共同驱动部件。
- 第二层:机器组成工厂。 每个节点本身都可能是一台三维混沌机器,也可能是周期或线性驱动器;节点之间通过随机的 nonlinear transformation 传递信号,有些影响延迟一个时间单位才到达。
- 第三层:小型气候世界。 用 ENSO 与简化海气模型产生更高维、带物理耦合结构的轨迹。
考官知道每条管线是怎样接的,因为整座工厂由生成程序建造。十名“侦探”只看到轨迹,然后交出一张预测图。关键问题不再是“能不能在一个熟悉 toy 上画图”,而是:
当振荡、混沌、非平稳、噪声、隐藏部件和延迟同时出现时,算法把真正的传递通道与自相关、共同驱动和表面同步分开了吗?
这个类比也说明 benchmark 与现实的差异:真实气候系统不会把完整真图交给考官;CausalDynamics 的气候层仍是 pseudo-real model,不是对现实地球因果图的认证。
真实问题与实验设定
1. 论文怎样定义动态因果模型
论文先从连续时间动态系统出发:
当 δ = 0 时是 deterministic ODE;当 δ > 0 时是带 Brownian disturbance 的 SDE。对第 k 个变量,structural dynamical causal model 写成:
如果 x_j 出现在 f_k 的父变量中,ground-truth adjacency 就记录 j -> k。这里要注意:论文评测的目标是由生成方程导出的结构图,不是任意哲学意义上的“真实因果”。
2. 三个 complexity tiers
| Tier | 生成世界 | 规模 | 主要压力 |
|---|---|---|---|
| Simple | 从 dysts 中筛出的 59 个三维 chaotic systems;每个系统 5 个初始条件、每条 1,000 time steps |
585 graphs | ODE/SDE、Langevin noise、隐藏一个变量形成 partial observation/confounding case |
| Coupled | 用 Growing Network with Redirection 生成 scale-free DAG;每个节点维数 d∈{1,3},根节点可由 chaotic、periodic 或 linear process 驱动 |
14,096 graphs | N∈{3,5,10}、confounder、time lag、standardization、forcing、mixed nonlinear edge functions |
| Climate | XRO/ENSO 与 qgs/MAOOAM 简化海气模型 | 12 graphs | 更高维空间场、跨海盆或海气耦合 |
合计是 585 + 14,096 + 12 = 14,693 张图。除非另有说明,每张图包含 5 条随机初始化、每条 1,000 steps 的 trajectory;作者报告总计超过 5,000 万个预处理样本。
3. 第二层的“耦合”到底是什么
Tier 2 不是把多个 time series 随意拼接。它先生成一张 DAG,再让每条边成为一个带可选 activation 的 transformation:
其中 φ 从 identity / sin / sigmoid / tanh / ReLU 中选择。子节点汇总所有 parent 的传入信号。对延迟边,则使用 x_k(t-τ) 而不是 x_k(t)。这样,研究者可以固定其他条件,只改变 noise、lag 或 confounding,观察算法的失败是否随挑战变化。
4. 比较了哪些方法,怎样评分
论文覆盖五类共十个 baselines:
- Granger / neural time-series family:NGC、CUTS+、TCDF;
- constraint-based:PCMCI+、F-PCMCI、GRaSP;
- noise-based:VARLiNGAM、RCD;
- score-based:DYNOTEARS;
- topology / attractor-based:TSCI。
预测 adjacency 与真图通过三类指标比较:
- AUROC ↑:排序正边与负边的能力;稀疏图中大量 true negatives 可能让它显得偏高;
- AUPRC ↑:对 edge sparsity 和 false positives 更敏感,论文认为 coupled sparse graphs 上往往更有代表性;
- SHD ↓:把预测图改成真图所需的 edge addition、deletion 或 reversal 数量。
方法或任务流程
这篇论文的方法贡献不是一个新的 predictor,而是一条“造世界—施加挑战—跑算法—诊断失败”的流水线:
选择 complexity tier
-> 生成或指定动态方程与 causal units
-> 从方程导出 ground-truth adjacency
-> 选择 initial conditions,积分出 trajectories
-> 有控制地加入 noise / hidden confounder / lag / standardization / nonlinearity
-> 只把 trajectories 给 causal-discovery baseline
-> baseline 输出 edge scores 或 predicted adjacency
-> 用 AUROC / AUPRC / SHD 对照 ground truth
-> 分挑战、分 tier 检查 failure pattern
Tier 2 的核心生成步骤更具体:
- GNR procedure 逐个添加 node,并按 preferential attachment 或重定向到 ancestor 的方式选 parent,得到一张 scale-free DAG;
- root nodes 获得 chaotic、sinusoidal 或 linear drivers;
- 每条 edge 用一个随机 affine map 加 activation 传递父节点轨迹;
- 可以把部分 edges 改成 lagged edges、合并两张图制造 confounding pattern,或沿时间维 standardize 节点;
- 对同类图反复采样 trajectories,再让十种方法在相同的 ground truth 上比较。
这条流程的阅读重点是“每个开关改变了什么”。例如 standardization 主要移除沿拓扑顺序增长的 variance cue;它不是修复真实混杂的通用方法。time lag 则改变传递发生的时间通道,不只是给 observation 加一点噪声。
自己走一遍最小例子
下面不是论文中的某一张具体图,而是依照它的生成逻辑缩小成三节点教学例子。
设工厂有三个 causal units:
S: 周期驱动器,S(t) = sin(t)
X: 即时接收 S,X(t) = tanh(1.2 S(t) + 0.1)
Y: 延迟接收 X,Y(t) = 0.8 X(t-1) + noise
真结构是:
S(t) -> X(t)
X(t-1) -> Y(t)
第一步:为什么只看同步相关会出错
由于 S 驱动 X,而 X 又延迟驱动 Y,三条轨迹都可能呈现相似振荡。一个只看同一时刻 correlation 的方法可能输出:
S -> X correct
X -> Y node pair correct, timing channel ignored
S -> Y spurious shortcut
最后一条边不是直接机制,只是沿 S -> X -> Y 传播后的关联。若算法还把 Y(t) 与 Y(t-1) 的平滑性当成自因果,就会再制造 autocorrelation edge——这正对应论文在部分预测图中观察到的 failure pattern。
第二步:手算一个结构分数
先暂时把 timing channel 折叠,只评价 node-level graph。真边集合是 {S->X, X->Y},预测集合多了 {S->Y}:
true positives = 2
false positives = 1
false negatives = 0
precision at this threshold = 2 / 3
recall at this threshold = 1
SHD = 1 # 删除一条 S->Y 即得到真图
AUROC 与 AUPRC 还需要每条候选边的连续 score,不能从这一张 hard graph 直接算出。这个区别很重要:一个 threshold 下的 precision/recall,不等于整条 precision-recall curve 的面积。
第三步:为什么“图对了”还可能不够
如果一个方法知道 X 与 Y 相连,却把 X(t-1)->Y(t) 写成 X(t)->Y(t),node-level static summary 看起来仍可能正确,但 intervention timing 已经不同:在 t 时刻改变 X,到底立即影响 Y,还是下一步才影响?
CausalDynamics 的 lagged construction 迫使算法接触这个问题。不过论文的主评测依然以 adjacency reconstruction 为中心;它没有进一步验证一张预测图是否真的支持正确的 intervention schedule 或 counterfactual decision。
关键结果与证据层级
结果一:coupled systems 远比 simple tier 更能拉开失败
论文 Table 2 的代表性结果如下。数值是作者在相应 experiment 内对生成图取平均后的 AUROC / AUPRC:
| Coupled setting | PCMCI+ | F-PCMCI | VARLiNGAM | DYNOTEARS | TSCI | NGC / CUTS+ |
|---|---|---|---|---|---|---|
| Default | .67 / .25 | .67 / .27 | .60 / .19 | .59 / .21 | .60 / .23 | .50 / .15 |
| Confounder | .58 / .20 | .55 / .19 | .51 / .17 | .49 / .17 | .51 / .18 | about .50 / .16 |
| Time lag | .58 / .24 | .59 / .24 | .54 / .22 | .53 / .22 | .53 / .21 | about .50 / .20 |
不能只读粗体“赢家”。更重要的诊断是:默认 coupled case 的最高 AUPRC 也只有 .27;加 confounder 后,领先方法也明显下降。这支持“任务仍然困难”,不支持“某个 baseline 已经可靠恢复复杂动态机制”。
结果二:作者观察到重复的结构性错误
在单张预测图的可视化中,作者报告多种方法会:
- 在 ground truth 不存在时推断 autocorrelation;
- 面对 nonstationary dynamics 时给出过密 adjacency;
- 在 climate case 得到相对较高分,却没能恢复完整的跨 ocean-basin coupling。
这些是有价值的 error observations,但主要来自 benchmark 内的图比较和代表性可视化;它们还不是对每种 failure mechanism 的形式证明。
结果三:非深度方法在当前 benchmark 上通常更稳
作者的整体观察是,较少依赖细致 tuning 的 non-DL methods 往往优于 DL-based methods,尤其在 coupled 和较高维系统上。这个结果打破了“模型越复杂越能捕捉复杂 dynamics”的直觉。
但它的证据边界也很明确:论文对多数算法做了 initial hyperparameter search,不等于为每种方法完成同等强度的 exhaustive tuning。它能说明“在作者公开的统一流程里出现了这个排序”,不能升级成“深度学习原则上不适合动态因果发现”。
结果四:metric 可能讲出不同故事
MAOOAM climate case 中,PCMCI+ 得到 .69 / .88,DYNOTEARS 得到 .64 / .86。高 AUPRC 看起来很好,但 coupled sparse graphs 上同一批方法只有大约 .15-.28。论文特别提醒:稀疏图里 negative edges 太多,AUROC 可能因大量 true negatives 而显得乐观,AUPRC 往往更诚实。
因此读 leaderboard 时至少要同时问:graph density 是多少、false positive 的代价是什么、SHD 是否也改善,而不是只摘最高 AUROC。
结果五:ablation 暗示 sampling 与 nonlinearity 不是单调困难
在一个高噪声、10-node、confounded、standardized、lagged 的困难设定上,把采样从每一步改为每 5 或 10 步,多个方法反而改善。例如 F-PCMCI 的 SHD 从 45.7 降到 38.9。作者推测较低 sampling frequency 减少了会干扰算法的冗余。
另一组 ablation 把 edge activation 从 linear 改为 mixed nonlinear。TSCI 的 AUROC 从 .537 升到 .689,SHD 从 39.850 降到 24.889;DYNOTEARS 与 F-PCMCI 也改善。它说明“更 nonlinear 一定更难”并不成立:non-invertible 或 directional signal 反而可能让因果方向更明显。但这只是一个特定三节点、无噪声、无混杂、无 lag 的 ablation,不应泛化为普遍规律。
把证据分成三层
| 证据层 | 论文真正给了什么 | 读者不应跳到哪里 |
|---|---|---|
| Benchmark construction | 已知方程、真 adjacency、14,693 graphs、可控制 challenge | 这些 synthetic/pseudo-real graphs 等同于现实真因果图 |
| Comparative experiment | 十种 baseline 在统一数据与指标下的平均结果 | 排名是跨实现、跨 tuning budget 的永久结论 |
| Diagnostic interpretation | confounding/lag/coupling 暴露短板;AUROC 在稀疏图上可能乐观 | 已经找到每种算法失败的唯一原因,或已经证明如何修复 |
综合客观评价
它做得很好的地方
- 把“很多 samples”和“很多 ground-truth graphs”区分开。 过去一些数据集有大量 observations,却只对应极少数 causal graphs;CausalDynamics 真正扩张的是结构实例数量。
- 难度可以分解。 noise、confounding、lag、standardization 和 nonlinearity 能单独切换,比分散在多个不兼容 dataset 上更适合定位 failure。
- 从 toy 到 pseudo-real 有连续台阶。 59 个经典三维系统、层级耦合系统、ENSO/MAOOAM 形成了清楚的 stress-test ladder。
- 不仅发布数据,还发布生成框架、代码、docs 与完整结果表。 这让后续方法可以随着能力提高继续扩大图规模和组合复杂度。
- 结果没有包装成“新方法胜出”。 论文的负面结果、metric warning 和 failure visualization 对研究方向反而更有价值。
需要保留判断的地方
- 图的 ground truth 来自建模选择。 “某变量进入微分方程”是清楚、可评的结构定义,但现实科学里的变量边界、时间尺度与 coarse-graining 往往没有这么唯一。
- 统一 benchmark 不等于完全公平的算法竞赛。 不同方法需要不同 lag range、independence test、architecture 和 tuning budget;一次 initial search 很难消除实现敏感性。
- 主结果更擅长告诉我们谁失败,不足以说明为什么失败。 例如 dense prediction 可能来自 nonstationarity、threshold、calibration 或模型错配,需要专门的 causal diagnosis 才能分开。
- graph reconstruction 与科学使用之间还有一段路。 论文没有把图误差传递到 forecast、intervention choice 或 policy regret,因此“一条边错了多少”与“决策错了多少”尚未连接。
综合来看,它是一套很强的研究基础设施和 reality check;最合理的使用方式是用它设计分层压力测试与 error analysis,而不是只在总表上追逐一个平均分。
主要局限性
- 处理后的参数网格仍固定。 论文明确承认已发布数据使用固定的 lag、noise level 等选项;框架理论上可扩展,不等于公开 benchmark 已覆盖扩展空间。
- 基本 dynamic units 主要是三维系统。 Simple tier 从带 Jacobian 的三变量
dystssystems 筛选;coupled node 也主要取一维或三维,距真正大规模 multiscale field dynamics 仍远。 - 14,693 graphs 并非全部候选生成都成功。 Coupled tier 原计划 18,000 张,最终保留 14,096 张,部分因 trajectories diverge 被丢弃;这个筛选可能改变 benchmark 的难度分布。
- pseudo-real 不是 real-world causal ground truth。 ENSO 与 MAOOAM/qgs 层更接近物理结构,但仍是理想化或简化模型;现实 observation 的 measurement error、model discrepancy 和未知变量更复杂。
- 算法比较受 tuning 与 implementation 影响。 作者做了 initial hyperparameter search,但没有证明每个 baseline 都在同等 compute 和专业调优下达到最佳状态。
- 主目标仍是 adjacency reconstruction。 AUROC/AUPRC/SHD 不直接测试 intervention effect、counterfactual accuracy、time-to-effect calibration 或 downstream decision value。
- 部分 metric 强烈依赖 graph density。 论文自己指出 AUROC 在 sparse graph 上可能偏乐观;跨 tier 直接比较绝对数值容易误导。
- challenge combinations 仍是生成器内的组合。 隐藏混杂、lag 和 nonlinearity 的构造规则清楚,但现实中的 feedback、selection bias、missingness、regime shift 与 latent process 可能不服从这些模板。
- 时间尺度选择仍由 benchmark 预先规定。 Ablation 显示 subsampling 甚至可能改善结果,说明“什么采样率保留了可识别因果信息”本身就是问题,而不是中性的预处理细节。
- failure visualization 还缺少机制级归因。 观察到 spurious autocorrelation 或 dense graphs,不等于已经区分是 statistical test、optimization、threshold 还是 model-class mismatch 造成。
什么实验会让结论更强
- 建立 tuning-budget-matched comparison。 为每类方法预先规定相同 validation information、compute budget 与 oracle access,并报告跨 seeds 的 uncertainty,而不只给平均分。
- 做 generator holdout,而不只 graph-instance holdout。 在训练或调参时完全不出现某类 ODE family、activation family、lag range 或 driver type,再测试方法是否跨生成机制泛化。
- 把结构误差连接到 intervention。 对同一预测图执行 pulse intervention、持续 intervention 与不同 timing 的 intervention,测 effect trajectory、time-to-effect 和 decision regret。
- 专门构造 graph-equivalent / dynamics-different pairs。 两个系统具有相同 static adjacency,却有不同 lag、coupling strength 或 regime;检查算法是否只恢复 summary graph,还是能辨别动态机制。
- 加入现实 observation process。 系统性改变 irregular sampling、measurement error、missing-not-at-random、sensor aggregation 与 asynchronous variables。
- 扩大 multiscale 与 cyclic settings。 让 micro dynamics、macro variables、feedback loops 与 changing regimes 同时出现,并明确 ground-truth object 在不同时间尺度怎样定义。
- 做失败归因实验。 固定同一 trajectory,分别改变 threshold calibration、lag search range、sample size 和 hyperparameters,判断 dense/spurious edge 究竟从哪里来。
- 使用真实系统做外部有效性检查。 不要求完整真图,而是选择少量已有 intervention、physical constraint 或 domain-consensus edges 的系统,验证 benchmark ranking 能否预测现实表现。
论文可以支持什么结论
它可以支持:
- 动态因果发现缺少同时具备大量真图、复杂非线性 dynamics 和可控制挑战的统一 benchmark;
- CausalDynamics 提供了一个三层、可扩展的生成与评测框架,以及超过 14,000 张图和 5,000 万预处理样本;
- 在作者的评测流程中,现有方法在 coupled、confounded、lagged systems 上表现明显不足;
- 当前 non-DL baselines 往往比需要更多 tuning 的 DL baselines 更稳,但仍远未解决任务;
- 稀疏图上只看 AUROC 可能过度乐观,应结合 AUPRC、SHD 与具体错误图。
它不能支持:
- benchmark 中的 structural ground truth 等同于现实动态系统唯一正确的因果表示;
- 某个 baseline 的当前排名是对其方法类别的永久裁决;
- 恢复 adjacency 就已经恢复 lag、dynamic generator、intervention semantics 或 counterfactual mechanism;
- 气候层的高分说明算法能从真实气候 observation 中可靠发现跨海盆因果关系;
- CausalDynamics 已经验证了本文之外的 DiscoSCM、mechanism-preservation 或 foundation-model 主张。
为什么它与当前研究有关
CausalDynamics 对当前 mechanism preservation under shift 方向最重要的提醒是:
edge preserved
!= timing channel preserved
!= dynamic generator preserved
!= intervention window preserved
!= downstream decision preserved
如果研究只记录一张 static summary graph,那么两个世界即使都有 X -> Y,也可能一个是即时影响、一个是延迟影响;一个由 stable nonlinear coupling 产生,另一个只在特定 regime 中成立。对真实决策而言,这些差异可能比 edge existence 更关键。
因此一个更完整的 dynamic mechanism record 至少应分开:
| 记录项 | 要回答的问题 |
|---|---|
| observed trajectory | 采样频率、长度、缺失与 noise 是什么? |
| graph object | 当前评的是 static edge、lagged edge,还是 local differential dependency? |
| generator assumption | ODE、SDE、coupled simulator、climate model,还是未知 empirical process? |
| timing / evidence window | 哪段过去对当前结果构成证据?作用何时发生? |
| mechanism status | function、noise、coupling strength 或 regime 哪一项保持/改变? |
| decision delta | 上述变化会不会改变 intervention timing、policy 或风险判断? |
这为 DiscoSCM 留下的是一个待检验问题,不是现成优势:显式区分 stable unit identity、event noise 与 regime 后,能否在 static graph 相同但 lag/noise coupling 不同的 CausalDynamics-style worlds 中,更好地校准 intervention effect 或检测 mechanism shift?只有真正跑过这样的对照,才能说新表示比 graph-only record 多保留了有用信息。
对 observational causal modeling 的阅读线,它还有一个更基础的作用:看到 time-series rows 之前,先问目标 causal object 是什么。trajectory 可以支持 forecasting,却不自动支持 static edge;static edge 可以恢复正确,却不自动支持何时干预。
推荐阅读顺序
- Introduction 与 Figure 1:先理解作者为什么认为现有 dynamic benchmarks 不够,以及三层框架解决的是什么空缺。
- Section 2.1:只抓住 dynamical system、SDCM 与 adjacency 的定义,暂时不用深挖全部 related work。
- Sections 4.1-4.3 与 Figures 2-3:看 59 个 simple systems、GNR coupled graph、edge MLP、lag/confounder 以及两个 climate models 怎样组成三个 tiers。
- Table 1 与 Section 4.5:核对 14,693 张图的构成,并把 AUROC、AUPRC、SHD 的评价对象分清。
- Section 5、Tables 2-3、Figures 4-5:不要只找 winner;重点看 coupled default、confounder、lag 与 climate case 的差异,以及作者描述的 spurious autocorrelation / dense graph failure。
- Appendix E:如果要比较算法,回查 hyperparameter search、evaluation workflow 与 metric definition。
- Appendix F、Tables 5-7:最后读 sampling、partial observability 与 activation ablations;它们最能打破“数据越密/模型越复杂/函数越简单越容易”的直觉。
- Official docs 与 dataset viewer:准备复现时再进入 quickstart、数据字段和完整 experiment permutations,不要把公开结果表误写成本地复现。
论文来源与相邻阅读
- Official proceedings: https://papers.nips.cc/paper_files/paper/2025/hash/39a3f7dc00e4723a5ca7808b04fc4d4f-Abstract-Datasets_and_Benchmarks_Track.html
- Paper PDF: https://papers.neurips.cc/paper_files/paper/2025/file/39a3f7dc00e4723a5ca7808b04fc4d4f-Paper-Datasets_and_Benchmarks_Track.pdf
- Official code: https://github.com/kausable/CausalDynamics
- Official documentation: https://kausable.github.io/CausalDynamics/
- Released dataset and full result tables: https://huggingface.co/datasets/kausable/CausalDynamics