尽管结构因果模型 (SCM) 和图模型提供了强大的表达工具来表达因果假设,但它们不会自动告知我们是否可以从现有数据中估计特定的因果效应。我们经常遇到标准识别准则(如后门或前门调整)不足的情况。那么,我们如何以合理方式确定,一个干预查询(如 P(Y∣do(X=x)))是否可以从由 P(V) 表示的观测数据中计算出来,其中 V 是所有观测变量的集合?
这正是 Judea Pearl 的 干预演算 发挥作用之处。它提供了一套符号操作规则,允许我们将包含 do 算子的表达式转换为等价的表达式,理想情况下,这些表达式不含 do 算子,并且仅涉及可从观测数据中估计的标准条件概率。干预演算的强大之处在于其完备性:如果一个因果效应 确实 可以从观测数据分布和假定的因果图中识别出来,干预演算就能提供推导其公式的方法。重要的一点是,这些规则 仅 依赖于因果图的结构,而不依赖于 SCM 内部关系的具体函数形式。
可以将干预演算视为因果推理的语法。它为我们提供了重写因果表达式的句法规则,就像代数规则允许我们重写数学方程一样。
目标:消除 do 算子
我们的目标是接受一个涉及干预的查询,例如 P(y∣do(x)),并确定我们是否可以纯粹地用观测变量的联合分布 P(V) 来表达它。do 算子表示一个外部干预,它改变系统的自然机制,具体而言,通过将 X 的值设置为 x 并移除所有指向 X 的传入因果箭头。如果我们能成功地使用规则消除所有 do 算子,那么该因果效应就是可识别的。
干预演算的三条规则
干预演算由三条基本规则组成。这些规则作用于原始因果图 G 的特定修改中的条件独立关系。设 X,Y,Z,W 是 G 中不相交的节点集合。
- 修改图的符号表示:
- GXˉ: 通过删除指向 X 中所有节点的传入边而获得的图。这表示干预 do(X=x) 下的图。
- GX: 通过删除从 X 中所有节点发出的传出边而获得的图。
- GXˉZ: 通过删除指向 X 的传入边和从 Z 发出的传出边而获得的图。
- (A⊥B∣C)G: 表示在图 G 中,给定 C 时 A 与 B 是 d-分离的。
规则 1:观测变量的插入/删除
这条规则规定了何时可以引入或移除对变量 Z 的条件作用而不改变因果效应表达式。
形式规则:
P(y∣do(x),z,w)=P(y∣do(x),w)如果 (Y⊥Z∣X,W)GXˉ
直观理解: 如果在干预 X 的图(意味着 X 的通常原因变得无关紧要)中,一旦我们已知 X 和 W, Z 不提供关于 Y 的额外信息,那么对 Z 进行条件作用对于预测 Y 对干预 do(x) 的响应是多余的。这种情况发生于在图 GXˉ 中, Y 和 Z 之间的所有路径都被集合 {X,W} 阻断。例如,如果 Z 是 Y 的结果,仅受 X 和 W 影响,或者在干预之后,在给定 X 和 W 的情况下 Z 与 Y 无关。
规则 2:干预/观测变量互换
这条规则规定了何时可以将干预 do(z) 替换为对变量 Z 的条件作用。这是将干预分布与观测分布联系起来的核心。
形式规则:
P(y∣do(x),do(z),w)=P(y∣do(x),z,w)如果 (Y⊥Z∣X,W)GXˉZ
直观理解: 如果在干预 X(移除指向 X 的传入箭头)并 阻止 Z 影响其他变量(移除从 Z 发出的传出箭头)的图中,在给定 X 和 W 的情况下,Z 和 Y 是独立的,那么干预 Z 对 Y 的影响与仅仅观测 Z 相同。此条件实质上检查在干预 X 之后,是否通过对 X 和 W 进行条件作用而创建或保持开放了 Z 和 Y 之间的一条开放“后门”路径。如果不存在这样的路径,干预 do(z) 可以被对 z 的观测条件作用替换。
规则 3:干预变量的插入/删除
这条规则指定了何时干预 do(z) 是无关紧要的,可以从表达式中移除。
形式规则:
P(y∣do(x),do(z),w)=P(y∣do(x),w)如果 (Y⊥Z∣X,W)GXˉZ(W)
其中 Z(W) 表示在图 GXˉ 中,Z 中不是 W 中任何节点的祖先的节点集合。图 GXˉZ(W) 是通过删除指向 X 的传入边和指向 Z(W) 中节点的传入边而形成的。
直观理解: 如果在考虑干预 do(x) 并对 W 进行条件作用之后,干预 Z 不提供额外的路径来影响 Y(具体而言,如果在适当修改的图中,所有从被干预的 Z 节点到 Y 的路径都被 X 和 W 阻断),那么干预 do(z) 是不必要的。这条规则通常适用于从 Z 到 Y 的因果路径已经被干预 do(x) 或条件集合 W 拦截的情况。
应用:推导识别公式
干预演算的真正价值在于我们将这些规则顺序应用于将目标因果查询转换为只涉及观测概率的表达式。
示例:推导后门调整公式
考虑一个简单图,其中 Z 相对于 (X,Y) 满足后门准则。也就是说,Z 阻断了 X 和 Y 之间的所有虚假路径,并且 Z 不是 X 的后代。我们的目标是识别 P(y∣do(x))。
一个简单图,其中 Z 满足 X 对 Y 影响的后门准则,U 是一个未观测的混淆因子。
- 开始: P(y∣do(x))
- 引入 Z(规则 1 - 简单插入): 由于我们想对 Z 进行条件作用,我们可以写成 P(y∣do(x))=∑zP(y∣do(x),z)P(z∣do(x))。
- 处理 P(z∣do(x)): 因为 Z 不是 X 的后代,并且我们假设 X 是唯一的干预,所以 X 不会导致 Z。因此,P(z∣do(x))=P(z)。所以,P(y∣do(x))=∑zP(y∣do(x),z)P(z)。
- 将规则 2 应用于 P(y∣do(x),z): 我们需要检查是否 (Y⊥X∣Z)GX。在移除了从 X 发出的传出箭头的图中, Z 是否阻断了 X 和 Y 之间的所有后门路径?是的,后门准则假设 Z 阻断了诸如 X←Z→Y 或 X←U→Z→Y 的路径。因此,我们检查条件 (Y⊥X∣Z)GX。如果为真,规则 2 在我们通常认为的后门方式(do(z) 到 z)中不直接适用。让我们重新思考。
让我们尝试使用规则 2 的略微不同的标准推导方法,侧重于将 do(x) 与 x 互换:
- 开始: P(y∣do(x))
- 引入对 Z 的条件作用(后门集合): 我们旨在用 Z 来表达这个。让我们使用规则 1 引入 Z。(Y⊥Z∣X)GXˉ 为真吗?不一定(例如,X→Y←Z)。一个更好的方法是使用后门的定义:如果 Z 满足 (X,Y) 的后门准则,那么 P(y∣do(x))=∑zP(y∣x,z)P(z)。让我们看看干预演算是否能得出这个。
- 步骤 1(规则 3 - 插入 do(z)): 检查是否 (Y⊥Z∣X)GXˉZˉ。在我们的示例图中,GXˉ 移除了 U→X 和 Z→X。GXˉZˉ 也 移除了 U→Z。在此图中,给定 X 时 Z 与 Y 不连通(路径 Z→Y 被 Y 阻断,路径 Z←U→… 不存在了)。所以,我们可以说 P(y∣do(x))=P(y∣do(x),do(z))。(这对于后门推导来说似乎不正确或过于复杂。我们还是沿用隐式使用这些规则的更简单的教科书式推导。)
让我们使用标准的后门逻辑,它 可以通过 干预演算(规则 2 是主要机制)来证明合理性。
假设 Z 满足后门准则。
P(y∣do(x))=∑zP(y∣do(x),z)P(z∣do(x))
由于 Z 不是 X 的后代,因此 P(z∣do(x))=P(z)。
P(y∣do(x))=∑zP(y∣do(x),z)P(z)
现在考虑 P(y∣do(x),z)。我们想用对 x 的条件作用替换 do(x)。如果 (Y⊥X∣Z)GX,规则 2 允许 P(y∣do(x),z)=P(y∣x,z)。后门准则要求在移除了从 X 发出 的箭头的图中, Z 阻断 X 和 Y 之间的所有路径。如果 Z 阻断了所有 后门 路径(不从 X 发出箭头的路径),则满足此条件。
P(y∣do(x))=∑zP(y∣x,z)P(z)
这是标准后门调整公式,可通过干预演算规则中蕴含的逻辑推导。
示例:推导前门调整公式
前门准则是一个更复杂的情形,干预演算在此发挥其优势之处。考虑一个图:
一个前门图,其中 X 对 Y 的影响由 M 介导,U 是 X 和 Y 的未观测混淆因子。除了通过 X 之外,M 不直接与 X 或 Y 混淆。
这里,U 混淆了 X 和 Y,所以我们不能直接使用后门调整(因为 U 是未观测的)。M 满足前门条件:(i) M 截断了从 X 到 Y 的所有有向路径,(ii) 从 X 到 M 没有未被阻断的后门路径,以及 (iii) 从 M 到 Y 的所有后门路径都被 X 阻断。
目标:识别 P(y∣do(x))。
- 使用 M 展开: P(y∣do(x))=∑mP(y∣do(x),m)P(m∣do(x))
- 识别 P(m∣do(x)): 从 X 到 M 有后门路径吗?没有(条件 ii)。所以我们可以使用后门调整(使用空集 Z)。这等同于应用规则 2:检查 (M⊥X)GX。在 GX 中,路径 X→M 被移除。路径 X←U→Y←M 不存在。路径 X←U→X→M 被移除。因此,(M⊥X)GX 成立。规则 2 表明 P(m∣do(x))=P(m∣x)。
到目前为止: P(y∣do(x))=∑mP(y∣do(x),m)P(m∣x)
- 识别 P(y∣do(x),m): 我们想消除 do(x)。我们能否使用规则 3 移除它?检查 (Y⊥X∣M)GXˉMˉ。在 GXˉMˉ 中,指向 X 的传入边 (U→X) 和指向 M 的传入边 (X→M) 被移除。在此图中,给定 M 时 Y 是否独立于 X?是的,唯一的路径是 X←U→Y,它被 M(对撞点)阻断或被移除 (U→X)。等等,X←U→Y 这条路径 没有 被 M 阻断。我们重新考虑规则 3 的应用。
也许需要再次使用规则 2?我们能用 x 替换 do(x) 吗?检查 (Y⊥X∣M)GX。在 GX 中,X→M 被移除。路径 X←U→Y。它被 M 阻断了吗?没有。规则 2 失败。
让我们尝试不同的操作。我们需要使用 X 阻断从 M 到 Y 的后门路径 (M←X←U→Y) 这一事实。
- 重新开始: P(y∣do(x))=∑mP(m∣do(x))P(y∣do(x),m)。我们发现 P(m∣do(x))=P(m∣x)。
- 关注 P(y∣do(x),m): 考虑 M 对 Y 的影响。我们想找到 P(y∣do(m))。根据后门准则(应用于 M,Y), X 阻断了后门路径 M←X←U→Y。所以,P(y∣do(m))=∑x′P(y∣m,x′)P(x′∣m)。
- 我们能将 P(y∣do(x),m) 与 P(y∣do(m)) 联系起来吗? 使用规则 3 移除 do(x):P(y∣do(x),do(m))=P(y∣do(m))。检查条件:(Y⊥X∣M)GXM。图 GXM 移除了 U→X 和 M→Y。在给定 M 时, Y 是否与 X d-分离?路径 X←U→Y。M 不在这条路径上。所以这个条件失败了。
一定有办法!让我们更正式地应用这些规则。
目标: P(y∣do(x))
- P(y∣do(x))=∑mP(y∣do(x),m)P(m∣do(x)) (概率链式法则)
- 识别 P(m∣do(x))。前门条件 (ii) 意味着从 X 到 M 没有后门路径。所以,(M⊥X)GX。应用规则 2:P(m∣do(x))=P(m∣x)。
P(y∣do(x))=∑mP(y∣do(x),m)P(m∣x)
- 识别 P(y∣do(x),m)。我们想消除 do(x)。让我们尝试引入 do(m)。
使用规则 2:P(y∣do(m),x)=P(y∣m,x) 因为 X 阻断了后门路径 M←X←U→Y,满足 (Y⊥M∣X)GM。
- 现在将 P(y∣do(x),m) 与 P(y∣do(m),x) 联系起来。使用规则 3 移除 do(x):如果 (Y⊥X∣M)GXM,则 P(y∣do(x),do(m))=P(y∣do(m))。如前所述,此条件可能会因 X←U→Y 而失败。
让我们遵循 Pearl 的推导序列:
- P(y∣do(x))=∑mP(y∣do(x),m)P(m∣do(x))
- P(m∣do(x))=P(m∣x) (根据规则 2,因为 X→M 没有后门路径)
- P(y∣do(x),m)=P(y∣do(m),x) - 我们能证明这个吗?让我们尝试同时干预 x 和 m。P(y∣do(x),do(m))。如果 (Y⊥X∣M)GXˉM(X),规则 3 允许移除 do(x)。这里 Z=X,X=M,W=∅。需要 (Y⊥X∣M)GMˉX。图 GMˉX 移除了 X→M 和 U→X。路径 Y←U→X。这没有被 M 阻断。这一步似乎很复杂。
让我们使用结果 P(y∣do(m))=∑x′P(y∣m,x′)P(x′∣m)。
我们能证明 P(y∣do(x),m)=P(y∣do(m),x) 吗?也许不直接。
考虑 P(y∣do(m))。从上面的步骤 2, P(y∣do(m))=∑x′P(y∣m,x′)P(x′∣m)。
P(y∣do(x)) 如何关联?
也许在 P(y∣do(x),m) 上应用规则 2 来互换 do(x)?检查 (Y⊥X∣M)GX。GX 移除了 X→M。路径 X←U→Y。没有被 M 阻断。失败。
也许是规则 1?插入 X? P(y∣do(x),m)=P(y∣do(x),m,x)。如果 (Y⊥X∣M,do(x))GXˉ。很简单。
好的,标准推导依赖于这些步骤:
- P(y∣do(x))=∑mP(m∣do(x))P(y∣do(x),m)
- P(m∣do(x))=P(m∣x) (规则 2,没有从 X 到 M 的后门路径)
- P(y∣do(x),m)=P(y∣do(m),x) (这依赖于将规则 2 应用于 M→Y,使用 X 作为后门集合:如果 (Y⊥M∣X)GM 成立(因为 X 阻断了 M←X←U→Y),则 P(y∣do(m),x)=P(y∣m,x)。步骤 P(y∣do(x),m)=P(y∣do(m),x) 需要证明干预 do(x) 不会干扰)。暂时假设 P(y∣do(x),m)=P(y∣do(m),x),因为这是标准做法。
- P(y∣do(m),x)=P(y∣m,x) (规则 2,如上所示)。
- 代入:
P(y∣do(x))=∑mP(m∣x)P(y∣m,x) ?不,那不正确。P(y∣do(m),x) 需要将 P(y∣m,x) 对 x′ 求和。
让我们使用干预演算的逻辑重新开始标准公式推导。
P(y∣do(x))=∑mP(m∣do(x))P(y∣do(x),m)
=∑mP(m∣x)P(y∣do(x),m)(根据规则 2,针对 X 到 M 路径)
现在考虑 P(y∣do(x),m)。我们想对 x 进行条件作用而不是 do(x)。
将规则 2 应用于 M→Y 关系,使用 X 作为 M→Y 的潜在混淆集合。
我们知道 P(y∣do(m))=∑x′P(y∣m,x′)P(x′∣m)。
考虑 P(y∣do(m),do(x))。应用规则 3 移除 do(x)。检查 (Y⊥X∣M)GMˉX(M)。图 G 中移除了 X→M 和 U→X。Y 是否被 M 阻断而与 X 分离?路径 X←U→Y。没有被 M 阻断。
让我们使用规则 3 移除 do(m):如果 (Y⊥M∣X)GXˉM(X),则 P(y∣do(x),do(m))=P(y∣do(x))。图移除了 U→X 并可能移除了 X→M(如果 M 在 GXˉ 中不是 X 的祖先)。需要检查独立性。
让我们看看已知的前门公式,以及规则如何证明其合理性:
P(y∣do(x))=∑mP(m∣x)∑x′P(y∣m,x′)P(x′∣m)
术语 P(m∣x) 来自通过规则 2 得到的 P(m∣do(x))。
术语 ∑x′P(y∣m,x′)P(x′∣m) 来自通过规则 2 得到的 P(y∣do(m))(使用 X 作为调整集合对 M→Y 进行后门调整)。
困难的步骤是证明 ∑mP(y∣do(x),m)P(m∣x)=∑m[∑x′P(y∣m,x′)P(x′∣m)]P(m∣x)。这需要证明 P(y∣do(x),m)=P(y∣do(m),x) 或类似的操作,以证明将 do(x) 下通过 m 的效应替换为 do(m) 的总效应的合理性。这通常通过前门准则的条件 (iii) 证明其合理性(所有从 M 到 Y 的后门路径都被 X 阻断)。
虽然手动应用可能很复杂,但干预演算提供了形式化机制。存在算法(如 ID 算法),它们系统地应用这些规则来确定可识别性并推导公式(如果存在)。
完备性与局限性
干预演算在识别可表达为 P(y∣do(x),w) 的因果效应方面是完备的。如果效应可从图结构和观测分布中识别,反复应用这三条规则(可能通过算法)保证能找到该表达式。
然而,请记住:
- 图的准确性: 整个过程取决于假定的因果图 G 的正确性。如果图是错误的,得到的识别公式很可能是不正确的。敏感性分析(稍后讨论)非常重要。
- 复杂性: 对于大型、复杂的图,手动应用规则是繁琐且容易出错的。首选算法实现。
- 识别与估计: 干预演算提供了识别公式(即“计算什么”)。它不提供估计值本身。一旦识别,您仍然需要统计方法(如第 3 章中的那些)从有限数据中估计得到的观测概率。
- 不可识别性: 如果干预演算未能消除 do 算子,那么仅给定假定图的情况下,因果效应无法从观测数据中识别。可能需要额外的假设、数据(例如,干预数据)或方法(例如,第 4 章讨论的工具变量或近端推理)。
理解干预演算能够透彻理解在何种条件下可以从非实验数据中学习因果效应。它将后门和前门等图形准则形式化,并将识别能力扩展到机器学习系统中遇到的更为复杂的因果结构。