市刑警队的老周干了大半辈子破案。以前他办案靠“挨个盘问”:几个嫌疑人,谁跟谁认识、谁可能指使了谁,他要把所有组合关系列出来逐一排查。可案子一复杂,嫌疑人一多,这种办法就撑不住了。后来他换了个思路——不再问“谁有罪还是没罪”,而是给每个“谁指使谁”的组合打一个连续的可疑度分数,再根据新线索不断微调这些分数,直到真相浮出水面。这个故事与现代因果发现领域的一场变革如出一辙:传统方法把因果结构学习当成离散的排列组合搜索,而新兴的“可微分因果图”方法,用连续参数化加梯度下降来学习变量间的因果关系。本文会用老周破案的故事,带你完整走一遍可微分因果图的建模思路、连续松弛技巧、邻接矩阵参数化和深度学习方法。

岗位关联

掌握可微分因果图,你就握住了用深度学习这把“现代刑侦工具”从数据中还原因果结构的新路径——这是因果发现从“专家规则”走向“端到端学习”的敲门砖。

目录
  1. 可视化演示
  2. 因果发现概述
  3. 因果图建模
  4. 连续松弛技巧
  5. 邻接矩阵参数化
  6. 深度优化求解
  7. 方法对比分析
  8. 实践应用案例
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示可微分因果图方法,通过连续松弛将离散DAG边存在性转为可微概率,Gumbel-Softmax采样实现端到端梯度优化学习因果结构。

本节配有交互动效(进入视口后自动加载,约 3KB)。

可微分因果图发现 连续松弛:离散边存在性转为Bernoulli概率,可微分优化 Gumbel-Softmax:重参数化采样,温度τ控制离散程度 端到端:结构学习与参数学习联合梯度优化 edge ~ GumbelSoftmax(π, τ), τ→0 → discrete 可微分因果图实现端到端因果结构学习

因果发现概述

老刑警老周接手一桩怪案:气温记录、冰淇淋销量、泳池人数、溺水新闻四条线索同时飙升,两两高度“相关”。但他知道,只有查明“谁真正导致了谁”,才算破案——天气热才是真源头,冰淇淋和溺水只是被天气“连带”出来的表象。

因果发现,就是一门从观测数据中还原变量间因果方向的技术。数据只告诉你“一起变”,不告诉你“谁指向谁”。若只信相关,你会得出“买冰淇淋导致溺水”的荒唐结论。因果发现要做的事,就是把数据背后那张“因果图”推断出来。

传统方法(如 PC 算法、GES 算法)把这事当成离散搜索:在指数级数量的候选有向图中逐一检验或打分,变量一多就组合爆炸。可微分因果图换了个思路:把“有没有这条边”变成“这条边权重多大”,把“图是否无环”变成连续函数,然后交给梯度下降自动微调。

老周从“挨个盘问所有嫌疑组合”升级为“给嫌疑关系连续打分、动态微调”。方向对了,破案就能规模化。

G^=arg⁡max⁡G∈GDAGS(G;X)\displaystyle \hat{G} = \arg\max_{G \in \mathcal{G}_{DAG}} S(G; X)
所有可能的因果图中,挑一张让“数据契合度”最高的图,就是学习目标。
  1. 候选图集合$\mathcal{G}_{DAG}$ 是所有有向无环图组成的集合,相当于侦探手里的全部案件假设。
    GDAG\mathcal{G}_{DAG}
  2. 得分函数$S(G; X)$ 衡量图 $G$ 解释观测数据 $X$ 的程度,好比“这张嫌疑关系图吻合证据的比例”。
    S(G;X)S(G; X)
  3. 取最大值$\arg\max$ 表示从假设集合中挑出分数最高的那张图,作为最终的因果结构结论。
    arg⁡max⁡\arg\max

因果图建模

老周在墙上钉好档案卡,用红色箭头连接“指使者→被指使者”,并立下铁规矩:箭头绝不能绕成圈。若 A 指使 B、B 又指使 A,案子就没头没尾。这张有方向、无回路的关系图,就是因果图。

因果图学名“有向无环图”(DAG):节点是变量,有向边是因果方向,“无环”保证因果链条有源头。在此基础上,每个变量的取值由它的直接原因(父节点)加上随机扰动决定,这套描述叫结构方程模型(SEM)。

线性 SEM 是最常见特例:每个变量等于父节点的线性组合加噪声,写成矩阵形式即 $X = XW + \varepsilon$,其中 $W$ 是邻接矩阵。因果发现的目标随之变成:找到 $W$,使得按该结构“重演”出的数据最像观测数据——为此需要用得分函数打分。

档案卡上每个人的行为都由“上线”决定,再掺一点个人随机发挥。箭头关系定了,数据的“性格”就定了——建模,就是把破案经验翻译成数学。

Xj=fj(PAj)+εj,j=1,…,d\displaystyle X_j = f_j(\mathrm{PA}_j) + \varepsilon_j, \quad j = 1, \dots, d
每个变量 $X_j$ 的值 = 它的“爸爸们”(父节点)决定 + 一点随机噪声。
  1. 父节点集合$\mathrm{PA}_j$ 是在图中直接指向 $X_j$ 的变量集合,也就是 $X_j$ 的直接原因。
    PAj\mathrm{PA}_j
  2. 结构函数$f_j(\cdot)$ 表示父节点如何决定 $X_j$,线性时就是加权求和,非线性时可换神经网络。
    fj(⋅)f_j(\cdot)
  3. 噪声项$\varepsilon_j$ 是均值为零的随机扰动,让数据带观测误差,也让因果推断成为统计问题。
    εj\varepsilon_j

连续松弛技巧

传统审讯总问“有罪还是无罪”,二选一。老周发现这太僵硬:A 可能三成可疑,B 可能七成可疑,而且随证据要连续变化。把“是/否”变成“0 到 1 的分数”,正是“连续松弛”的核心直觉。

因果发现里,“有没有边”是离散选择,“边有多强”是连续参数。NOTEARS 等方法的突破在于:把边权重参数化,同时把“无环”这个结构约束也改写成一个连续函数。整个 DAG 学习就变成带连续约束的优化问题,可以顺畅地求梯度了。

关键的“无环函数”定义如下:对邻接矩阵 $W$,令 $h(W) = \operatorname{tr}(e^{W \circ W}) - d$。可以证明,$h(W)=0$ 当且仅当 $W$ 对应的图无环。它光滑可微、梯度好算,于是“无环”从一道硬性的结构门槛,变成了可在优化中逐步压低的软指标。

老周的“循环检测仪”把“有没有死循环”变成连续读数,不用再一张张图检查环,优化过程会自动把仪表压到零。这就是松弛换来的自由。

h(W)=tr⁡(eW∘W)−d\displaystyle h(W) = \operatorname{tr}\left(e^{W \circ W}\right) - d
这个函数就像老周的“循环检测仪”:当关系图没有形成任何闭环时,仪表读数归零。
  1. 元素级平方$W \circ W$ 是逐元素平方,把边的方向信息去掉只留强度,因为环检测只看“连不连得回去”。
    W∘WW \circ W
  2. 矩阵指数$e^{A}$ 是矩阵指数(级数展开),其对角元素之和能“放大”出所有从某节点出发又回到自身的路径信息。
    eW∘We^{W \circ W}
  3. 取迹与减维数$\operatorname{tr}(\cdot)$ 取对角线之和,减去节点数 $d$ 后,恰好让“无环”对应数值 $0$。
    tr⁡(eW∘W)−d\operatorname{tr}\left(e^{W \circ W}\right) - d

邻接矩阵参数化

老周做了张表格,行是“谁指使”,列是“被指使”,格子里是可疑度:0 表示没嫌疑,0.8 表示强烈嫌疑。这张表就是邻接矩阵——整张因果图的“参数化形态”。

邻接矩阵 $W$ 的元素 $w_{ij}$ 表示边 $i \to j$ 的因果强度,对角线恒为 0(变量不能自己解释自己)。有了 $W$ 图就完全确定,从数据中学出 $W$,因果结构便水落石出。再配一个稀疏正则,逼着多数格子归零——“因果通常是稀疏的”,这是领域常识。

在 $X = XW + \varepsilon$ 的线性假设下,拟合好坏可用最小二乘残差衡量,加上 L1 稀疏惩罚后,优化目标只含矩阵运算,完全可微,GPU 都能加速。

老周每天盯着嫌疑表:让“按表还原案情”的误差越来越小,表格越来越干净。把因果图学习变成“学一张数字表”,正是机器学习最擅长的差事。

ℓ(W)=12n∥X−XW∥F2+λ∥W∥1\displaystyle \ell(W) = \frac{1}{2n}\lVert X - XW \rVert_F^2 + \lambda \lVert W \rVert_1
前半句问“按这张嫌疑表还原案情,和真实证据差多少”;后半句惩罚“可疑关系太多”,鼓励只留主要的边。
  1. 拟合残差$X - XW$ 是用学到的权重还原数据后的误差,误差越小说明嫌疑表越靠谱。
    X−XWX - XW
  2. Frobenius 范数$\lVert \cdot \rVert_F^2$ 把所有元素平方后求和,把矩阵误差压缩成一个数。
    ∥X−XW∥F2\lVert X - XW \rVert_F^2
  3. L1 正则$\lambda \lVert W \rVert_1$ 是每个元素绝对值之和再乘系数,推着无关格子趋向 0,得到稀疏因果图。
    λ∥W∥1\lambda \lVert W \rVert_1

深度优化求解

有了嫌疑表和打分函数,破案变成固定流程:每天微调嫌疑分数,看案情还原是否更吻合,迭代几千步后数字稳定,真相就藏在表里。这个“每天微调”的数学名字叫梯度下降。

直接带约束 $h(W)=0$ 优化不好做,常用增广拉格朗日法:把约束当惩罚加进目标,动态调整惩罚强度。先主攻拟合度,再逐渐把“无环”压进解,两者交替推进。深度学习变体(如 DAG-GNN)把结构函数换成神经网络,用重构误差做拟合项,就能学非线性因果。

训练完成后 $W$ 里会残留许多接近 0 的小数字。最后一步“阈值化”:把低于阈值的权重置 0,保留的非零元素就是最终因果图的边。整个流程端到端、无需人工干预。

收网时刻,老周把可疑度低于阈值的格子全部撤掉,只留铁证。训练—微调—收敛—收网,可微分因果图把破案做成一条自动化流水线。

min⁡W  ℓ(W)+α h(W)+ρ2 h(W)2\displaystyle \min_W \; \ell(W) + \alpha\, h(W) + \frac{\rho}{2}\, h(W)^2
把“破案目标”和“不许有环”两件事合并成一个总分,$\alpha$ 和 $\rho$ 控制“不许有环”这条纪律的分量。
  1. 数据拟合项$\ell(W)$ 是上一节的得分函数,代表嫌疑表对证据的解释力。
    ℓ(W)\ell(W)
  2. 线性惩罚$\alpha\, h(W)$ 是拉格朗日乘子项,当 $h(W) \neq 0$(有环)时产生压力。
    α h(W)\alpha\, h(W)
  3. 二次惩罚$\frac{\rho}{2}h(W)^2$ 进一步收紧约束,$\rho$ 越大越不允许环存在;迭代中 $\alpha$、$\rho$ 不断更新,直到 $h(W) \to 0$。
    ρ2 h(W)2\frac{\rho}{2}\, h(W)^2

方法对比分析

老周带过不少徒弟:有人用老办法把嫌疑组合两两做独立性检验,一步步剪掉不可能的边(像 PC 算法);有人用打分爬山(像 GES)。小案子管用,嫌疑人一多组合爆炸就跑不动。可微分方法把搜索变优化,跑得快还能上 GPU。

对比小结:约束方法依赖独立性检验的可信度,低维小样本稳健;打分搜索换张图就重新打分,计算贵;可微分方法梯度“一锅端”推进,适合高维数据还能接神经网络做非线性——代价是优化是局部的,可能陷进局部最优。

一个残酷数字:$d$ 个变量时,候选有向图共 $2^{d(d-1)}$ 个,$d=10$ 时已远超宇宙原子数。枚举不可能,这解释了“松弛 + 梯度”为何是必然。前沿方向包括 DAG-GNN、因果表示学习、与强化学习结合等。

老周总结:新方法不是万能钥匙,但第一次让“破案”可规模化。从人海战术到算法批量优化,这正是因果发现走进深度学习时代的缩影。

Ndirected=2 d(d−1)\displaystyle N_{\text{directed}} = 2^{\,d(d-1)}
每个有序变量对之间,方向要么有、要么无,两种可能,共 $d(d-1)$ 个有向对,所以是 2 的这么多幂次。
  1. 有序变量对$d(d-1)$ 是 $d$ 个变量两两组成“谁指向谁”的有向对个数(不含自己指向自己)。
    d(d−1)d(d-1)
  2. 二元选择$2^{\cdot}$ 表示每个有向对都是“有边/无边”二选一,乘起来就是所有可能的有向图数量。
    2 d(d−1)2^{\,d(d-1)}
  3. 数量爆炸$d$ 稍大(如 10),这个数就超过 $10^{27}$,说明暴力枚举毫无可行性。
    d=10  ⇒  N≫1027d = 10 \;\Rightarrow\; N \gg 10^{27}

实践应用案例

老周退休后把“嫌疑表优化法”传给了各行各业:基因研究站想知道谁调控谁,电商平台想知道“因为推荐才买”还是“本来就打算买”。它们有个共同点:只有因果能给出答案,相关只会误导决策。

生物医学里,科学家从单细胞测序数据中学习基因调控网络,为药物靶点发现指方向;推荐系统里,用因果图做反事实推断——如果当初没推荐,用户还会买吗;风控和营销归因里,用因果特征选择剔除“虚假相关”的特征,让模型学到稳定因果信号。

拿到因果图后,经典工具是“后门调整”:面对混杂因子 $Z$,通过按 $Z$ 分层加权来估计 $X \to Y$ 的真实因果效应。这是从“图”到“数字”的关键一跳,也是可微分因果图价值兑现的一环。

老周的嫌疑表如今活跃在基因芯片、推荐引擎、风控模型里。因果发现的意义不止于画图,它让 AI 从“看相关”进化到“懂因果”——可微分因果图正是这条路上的新一代引擎。

P(Y∣do⁡(X=x))=∑zP(Y∣X=x,Z=z) P(Z=z)\displaystyle P(Y \mid \operatorname{do}(X{=}x)) = \sum_{z} P(Y \mid X{=}x, Z{=}z)\, P(Z{=}z)
想知道“如果强行让 $X=x$,$Y$ 会怎样”,不能直接看数据里的条件概率(有混杂干扰),而是把每个混杂层里的效应按人数占比加权平均。
  1. 干预记号$\operatorname{do}(X{=}x)$ 表示“人为干预让 $X$ 等于 $x$”,而不是“观察到 $X$ 等于 $x$”。
    do⁡(X=x)\operatorname{do}(X{=}x)
  2. 分层条件概率$P(Y \mid X{=}x, Z{=}z)$ 是混杂因子固定在 $z$ 时,$X$ 对 $Y$ 的层内影响。
    P(Y∣X=x,Z=z)P(Y \mid X{=}x, Z{=}z)
  3. 加权求和按 $P(Z{=}z)$ 对各层混合,得到全局因果效应,消掉了混杂干扰。
    ∑z(⋅) P(Z=z)\sum_{z} (\cdot)\, P(Z{=}z)

AI 应用场景

生物医学:基因调控网络发现

阶段:数据处理 + 因果结构学习

解决的问题:传统差异表达分析只能给出“哪些基因在疾病组和对照组间表达不同”,说不清调控层级。可微分因果图从高通量表达数据中学习“谁调控谁”的有向无环图,帮助锁定上游调控基因作为候选药物靶点,把基因列表变成一张可解释的调控地图。

具体案例:某研究团队用单细胞 RNA-seq 数据学习免疫细胞分化轨迹中的基因调控网络,发现一个已知转录因子的下游新靶基因,后续实验验证了该调控关系,把靶点筛选周期从两年缩短到几个月。

营销归因:反事实推荐分析

阶段:因果效应估计 + 决策评估

解决的问题:广告平台想区分“用户本来就会买”和“看了广告才买”。纯相关性模型会高估广告效果、浪费预算。用可微分因果图从用户行为日志中学出“曝光→点击→购买→复购”的因果结构,再做后门调整,得到真实增量转化率。

具体案例:某电商团队用因果图做促销归因,发现原先被认为“贡献 40% 销量”的横幅广告,真实增量只有 12%;据此把六成预算转向高因果效应渠道,ROI 提升 2.3 倍。

Python 演示

python58 行
import numpy as np def h_func(W):    # 无环约束 h(W) = tr(exp(W o W)) - d    d = W.shape[0]    M = np.abs(W)    expM = np.eye(d)    term = np.eye(d)    for k in range(1, 20):        term = term @ M / k        expM += term    return np.trace(expM) - d def g_func(W):    # h(W) 对 W 的梯度    d = W.shape[0]    M = np.abs(W)    expM = np.eye(d)    term = np.eye(d)    for k in range(1, 20):        term = term @ M / k        expM += term    return expM.T * np.sign(W) def notears(X, lam=0.05, lr=0.03, epochs=60):    n, d = X.shape    W = np.zeros((d, d))    alpha = 0.0    rho = 1.0    for _ in range(epochs):        for _ in range(50):            grad = X.T @ (X @ W - X) / n            grad += lam * np.sign(W)            grad += alpha * g_func(W) + rho * h_func(W) * g_func(W)            W -= lr * grad            np.fill_diagonal(W, 0)        alpha += rho * h_func(W)        rho = min(rho * 10, 1e8)    W[np.abs(W) < 0.3] = 0    return W np.random.seed(0)d, n = 4, 2000B_true = np.array([[0, 0, 0.8, 0],                   [0, 0, 0.6, 0],                   [0, 0, 0, 0.9],                   [0, 0, 0, 0]])X = np.random.randn(n, d)for j in range(d):    X[:, j] = X @ B_true[:, j] + 0.1 * np.random.randn(n)X = (X - X.mean(axis=0)) / X.std(axis=0) W_est = notears(X)print("真实邻接矩阵 B_true:")print(B_true)print("学习到的邻接矩阵 (阈值化后):")print(np.round(W_est, 2))print("无环约束 h(W):", round(h_func(W_est), 6))
目的:用 NumPy 从零实现一个 NOTEARS 风格的可微分因果发现,在合成线性 SEM 数据上学习邻接矩阵并恢复真实因果结构。
  1. def h_func(W):定义“循环检测仪”:把图结构画成数字,无环时输出 0。
  2. M = np.abs(W)去掉边的方向符号只留强度,环检测只看“连不连得回去”。
  3. term = term @ M / k矩阵指数的级数累乘,等价于统计“走 k 步回到原点”的路径信息。
  4. return np.trace(expM) - d所有闭环路径信息求和后减去节点数,归一化到“无环=0”。
  5. grad = X.T @ (X @ W - X) / n得分函数对嫌疑表的梯度:指明每个格子该往哪调。
  6. grad += lam * np.sign(W)稀疏性压力:把小嫌疑往 0 推,保持因果图干净。
  7. grad += alpha * g_func(W) + rho * h_func(W) * g_func(W)把“无环纪律”变成梯度,强制结果不成环。
  8. np.fill_diagonal(W, 0)对角线置零,禁止“自己指向自己”的自环。
  9. alpha += rho * h_func(W)迭代更新拉格朗日乘子,逐步收紧“不许有环”的纪律。
  10. W[np.abs(W) < 0.3] = 0阈值化收网:低可疑度的边全部洗清,只留铁证。
  11. X[:, j] = X @ B_true[:, j] + 0.1 * np.random.randn(n)按 SEM 拓扑序生成数据,保证真图无环。

常见误区

误区很多初学者觉得:既然方法带“可微分”和“因果”两个词,又用了深度学习,那它输出的边就一定是真实的因果关系,不需要再验证。

正解可微分只是优化手段。方法仍然依赖无混淆、忠实性等识别假设;它输出的是“在假设下与数据最吻合的结构”。就像老周破案再熟练,也要靠证据链排除其他解释,嫌疑表不等于铁证。拿到的图最好再用扰动实验或领域知识交叉验证。

为何常见:“可微分 + 深度”听起来像万能黑箱,容易让人误以为数学上的端到端就等于因果上的保真。

误区有人拿到变量间的相关系数矩阵,直接挑系数大的位置当因果边,以为可微分因果图也就是把相关系数过一遍阈值。

正解相关系数是无方向的,且混含了共同原因、中间变量等影响。可微分因果图是在无环约束和稀疏正则下求解结构,而不是简单看相关大小;在马尔可夫等价类范围内,方向甚至可能不可辨识。老周的比喻:两人总同框出现(相关),不代表谁指使了谁。

为何常见:人脑天生偏好把强共现解读成因果关系,这是进化留下的认知捷径。

误区看到 $\operatorname{tr}(e^{W \circ W}) - d = 0$,觉得矩阵指数很巨大,只有零矩阵才能让等式成立,所以“无环约束”会压制所有边。

正解$h(W)=0$ 对所有无环图都成立,不只是零矩阵。例如单边 $W=\begin{bmatrix}0&1\\0&0\end{bmatrix}$($X_1 \to X_2$)时,$W \circ W$ 的平方为零矩阵,$e^{W \circ W}=I$,$\operatorname{tr}=2=d$,于是 $h=0$。严格上三角矩阵天然无环,$h$ 恒为 0。

为何常见:矩阵指数看起来很吓人,望文生义地以为只有平凡解,其实它是为“检测环”而设计的精巧计分器。

误区拿到 $W$ 后直接说“$i$ 每增加 1 个单位,$j$ 就增加 $w_{ij}$”,并据此做定价、用药等决策。

正解在线性标准化假设下,权重可以解释为线性效应;但真实场景往往非线性、有隐藏混杂,$W$ 只是“结构的近似”。要得到精确因果效应,还需用后门调整、工具变量等专门方法做效应估计。老周不会拿一张未经后续排查的嫌疑表定案。

为何常见:把“结构发现”和“效应估计”两件事混为一谈,是因果推断入门最常见的跳跃。

面试题

Q1. 可微分因果图最核心的思路是把因果结构学习转化成什么?

单选题 · easy

  • A.用独立性检验逐步剪枝候选图
  • B.用梯度下降优化连续参数化的图← 正确答案
  • C.用暴力枚举所有可能的有向图
  • D.用随机采样近似后验分布

答案:B。可微分因果图的核心是把“图上有没有边”松弛成“边权重多少”,再用梯度下降优化(B)。A 是 PC 算法的思路,C 是暴力搜索,D 是贝叶斯采样——它们都不是“可微分优化”。

Q2. 因果图在结构上必须是?

单选题 · easy

  • A.有向无环图← 正确答案
  • B.无向连通图
  • C.有向有环图
  • D.完全二分图

答案:A。因果图必须是有向无环图(DAG),箭头表示因果方向,无环保证因果链有源头。就像老周的破案铁规矩:箭头不能绕成圈,否则案子查不清。

Q3. 邻接矩阵 $W$ 中 $w_{ij}$ 的含义是?

单选题 · mid

  • A.变量 i 与变量 j 的相关系数
  • B.存在从 i 指向 j 的因果边的强度← 正确答案
  • C.变量 i 自身的方差大小
  • D.指向变量 i 的边的总数量

答案:B。$w_{ij}$ 表示“i 指向 j”这条因果边的强度(B)。相关系数对称且不分方向(A 错);方差是单变量属性(C 错);入度是列求和(D 错)。就像嫌疑表里“行是谁指使、列是被指使”。

Q4. 无环约束函数 $h(W)=\operatorname{tr}(e^{W \circ W})-d$ 取何值时表示图无环?

单选题 · mid

  • A.h(W) 大于 0 的时候
  • B.h(W) 等于 0 的时候← 正确答案
  • C.h(W) 等于 1 的时候
  • D.h(W) 小于 0 的时候

答案:B。该函数被设计成“无环→0”。当 $h(W)=0$ 时,矩阵指数中不存在任何闭环路径的合法结构,图无环(B)。$h(W)>0$ 说明存在环;$h(W)=1$ 或 $<0$ 都不对应无环的归一化刻划。

Q5. 为什么需要对“无环”这一要求做连续松弛?

单选题 · mid

  • A.为了让候选 DAG 数量变少
  • B.为了把离散搜索变成可微优化问题← 正确答案
  • C.为了消除数据中的全部噪声
  • D.为了让数据满足正态分布

答案:B。“有无边、有无环”本是离散的,难以求梯度。松弛后边权重是连续值,无环变成连续函数 $h(W)$,从而能用梯度下降求解(B)。它不减少候选图数量(A 错),也不负责降噪或分布假设(C、D 错)。

Q6. 训练结束后,如何从学到的邻接矩阵中提取最终因果图?

单选题 · mid

  • A.保留所有权重非零的边
  • B.将低于阈值的权重置零后再提取← 正确答案
  • C.对权重矩阵直接求逆矩阵
  • D.对权重矩阵做主成分分析

答案:B。优化后 $W$ 会残留数值极小的噪声权重,需要“阈值化”:把低于阈值的权重置 0,只保留显著边(B)。若全保留则图过密;求逆或 PCA 与提取因果图无关(C、D 错)。

Q7. 结构方程模型 $X_j = f_j(\mathrm{PA}_j) + \varepsilon_j$ 中的 $\mathrm{PA}_j$ 表示?

单选题 · easy

  • A.与 X_j 相关的所有变量
  • B.X_j 的直接父节点集合← 正确答案
  • C.X_j 的样本观测数量
  • D.X_j 的均值与方差

答案:B。$\mathrm{PA}_j$ 是图中直接指向 $X_j$ 的变量集合,即 $X_j$ 的“直接原因”(B)。相关变量未必是父节点(A 错);样本量和均值方差都不是图结构概念(C、D 错)。

Q8. 与传统因果发现方法相比,可微分因果图的优势有哪些?

多选题 · hard

  • A.避免指数级的暴力枚举← 正确答案
  • B.可借助深度学习扩展到非线性← 正确答案
  • C.不再需要任何无环约束
  • D.更适用于高维变量场景← 正确答案

答案:ABD。可微分方法用梯度优化代替枚举(A 对),DAG-GNN 等用神经网络即可处理非线性(B 对),高维下计算可扩展(D 对)。它并没有取消无环约束,只是把约束变成可微函数(C 错)。

Q9. 关于可微分因果图的适用边界,正确的说法有?

多选题 · hard

  • A.无混淆假设下才能保证识别← 正确答案
  • B.可微优化能自动排除所有虚假相关
  • C.对噪声类型和函数形式比较敏感← 正确答案
  • D.局部最优是实际存在的风险← 正确答案

答案:ACD。因果识别仍需无混淆、忠实性等假设(A 对);方法对噪声假设敏感(C 对);非凸优化会有局部最优(D 对)。可微分只是优化手段,不会自动排除虚假相关(B 错)。

Q10. 关于无环约束 $h(W)=\operatorname{tr}(e^{W \circ W})-d$,下列说法正确的是?

多选题 · extreme

  • A.对任意 DAG 对应的 W,h(W) 恒等于 0← 正确答案
  • B.W 为零矩阵时 h(W)=0 成立← 正确答案
  • C.h(W) 的计算包含逐元素平方运算← 正确答案
  • D.存在含环的 W 也能让 h(W)=0

答案:ABC。$h(W)=0$ 当且仅当无环(A 对);零矩阵对应无边图,无环所以成立(B 对);$W \circ W$ 是逐元素平方,是“环检测只看强度不看方向”的关键(C 对)。若含环,矩阵指数中会出现闭环路径贡献,$h(W)>0$,不可能为 0(D 错)。