causal_inference_tutorial

第十四章:因果推断与机器学习

机器学习在预测任务上取得了巨大成功,但传统的监督学习方法主要关注相关性而非因果性。当我们需要理解干预效果、进行反事实推理或确保模型在分布偏移下的鲁棒性时,将因果推断与机器学习相结合变得至关重要。本章将探讨如何将因果思维融入现代机器学习方法,包括因果正则化、因果表示学习、因果强化学习以及算法公平性的因果视角。

14.1 因果正则化

14.1.1 动机与背景

传统机器学习模型往往过度依赖虚假相关性(spurious correlations),导致在分布偏移(distribution shift)下性能大幅下降。因果正则化通过将因果结构知识编码到学习算法中,引导模型学习真正的因果关系而非表面相关性。

虚假相关性的危害

考虑一个图像分类任务:识别奶牛。传统模型可能学习到”绿色草地”与”奶牛”的强相关性,因为训练数据中大部分奶牛照片都有草地背景。但这种相关性是虚假的——奶牛在沙滩上依然是奶牛。因果正则化帮助模型关注真正的因果特征。

更严重的例子出现在医疗诊断中。某医院的肺炎检测模型在本院数据上表现优异(AUC > 0.95),但部署到其他医院后性能骤降(AUC < 0.70)。调查发现,模型学习到了扫描仪型号、医院标记等与疾病无关的特征。这些虚假相关在训练集中存在,但不具有因果关系,因此无法泛化。

分布偏移的类型

在机器学习中,我们经常遇到以下类型的分布偏移:

  1. 协变量偏移(Covariate Shift):$P_{train}(X) \neq P_{test}(X)$,但 $P(Y X)$ 保持不变
    • 例子:训练集主要是年轻患者,测试集包含老年患者
    • 传统方法:重要性加权
  2. 标签偏移(Label Shift):$P_{train}(Y) \neq P_{test}(Y)$,但 $P(X Y)$ 保持不变
    • 例子:训练时正负样本平衡,实际应用中正样本稀少
    • 传统方法:类别重平衡
  3. 概念偏移(Concept Shift):$P_{train}(Y X) \neq P_{test}(Y X)$
    • 例子:用户偏好随时间变化
    • 这是最具挑战性的情况,传统方法难以处理

因果正则化特别适合处理概念偏移,因为它识别并利用不变的因果关系。

因果正则化的核心思想

因果正则化基于一个关键观察:因果关系比统计相关性更稳定。具体而言:

数学上,如果 $X$ 是 $Y$ 的因果父节点,那么机制 $P(Y X)$ 应该在不同环境下保持不变(除非有明确的机制变化)。这个性质称为自主性(autonomy)或模块性(modularity)。

14.1.2 因果不变性原则

因果不变性原则(Causal Invariance Principle)是因果正则化的核心思想:

定义:如果特征 $X$ 对结果 $Y$ 有因果效应,那么条件分布 $P(Y X)$ 在不同环境下应该保持不变。

数学表述: \(P_e(Y|X_{causal}) = P_{e'}(Y|X_{causal}), \forall e, e' \in \mathcal{E}\)

其中 $\mathcal{E}$ 是所有可能环境的集合,$X_{causal}$ 是具有因果效应的特征。

理论基础

因果不变性原则基于独立因果机制(ICM)假设:

  1. 因果机制的独立性:生成 $Y$ 的机制独立于生成其原因 $X$ 的机制
  2. 稀疏变化原则:环境变化通常只影响少数机制
  3. 因果方向的不对称性:$P(Y X)$ 比 $P(X Y)$ 更稳定

这些原则解释了为什么因果方向的条件分布更加稳定。考虑海拔($X$)与温度($Y$)的关系:

环境的形式化定义

环境 $e \in \mathcal{E}$ 可以理解为:

  1. 时间环境:不同时间段的数据
    • 早期用户 vs 近期用户
    • 工作日 vs 周末
  2. 空间环境:不同地理位置或数据源
    • 不同医院的医疗数据
    • 不同国家的用户行为
  3. 介入环境:不同的实验条件
    • A/B测试的不同组
    • 不同的策略或处理
  4. 潜在环境:由未观测变量定义
    • 不同的用户群体(但群体标签未知)
    • 不同的数据生成模式

不变性的检验

如何检验特征集合 $S$ 是否满足不变性?

统计检验方法

对于特征子集 S:
1. 在每个环境 e 中,拟合模型:f_e: S → Y
2. 计算环境间的一致性:
   - 参数一致性:||θ_e - θ_e'||₂ < ε
   - 预测一致性:E[|f_e(S) - f_e'(S)|] < ε
   - 梯度一致性:||∇_θ L_e - ∇_θ L_e'||₂ < ε
3. 选择最大的满足不变性的特征集

基于假设检验的方法

零假设 $H_0$:$P_e(Y S) = P_{e’}(Y S)$ 对所有环境对 $(e, e’)$ 成立

检验统计量(以线性模型为例): \(T = \sum_{e \in \mathcal{E}} n_e ||\beta_e - \bar{\beta}||^2\)

其中 $\bar{\beta} = \frac{1}{ \mathcal{E} } \sum_e \beta_e$,$n_e$ 是环境 $e$ 的样本量。

14.1.3 不变风险最小化(IRM)

IRM是实现因果正则化的一种重要方法,由Arjovsky等人在2019年提出。其核心思想是学习一个在所有环境中都是最优的预测器。

IRM的直观理解

IRM寻找这样的表示:

  1. 表示质量:表示包含预测所需的信息
  2. 不变最优性:存在一个分类器在所有环境中都是最优的
  3. 因果含义:这样的表示捕获了因果特征

考虑一个简化场景:

环境1:狗主要在草地上,猫主要在沙发上
环境2:狗主要在沙发上,猫主要在草地上

传统ERM:可能学习背景特征
IRM:强制学习动物本身的特征(因为只有这些特征在两个环境中都预测准确)

数学形式化

IRM的理想目标(难以直接优化): \(\min_{\Phi} \sum_{e \in \mathcal{E}} R^e(\Phi) \quad \text{s.t.} \quad w^* \in \arg\min_{w} R^e(w \circ \Phi), \forall e\)

意思是:找到表示 $\Phi$,使得存在一个分类器 $w^*$ 在所有环境中都是最优的。

IRM的实用形式(IRMv1): \(\min_{\Phi, w} \sum_{e \in \mathcal{E}_{tr}} R^e(w \circ \Phi) + \lambda \cdot ||\nabla_{w|w=1.0} R^e(w \cdot \Phi)||^2\)

其中:

梯度惩罚的理解

梯度惩罚 $   \nabla_{w w=1.0} R^e(w \cdot \Phi)   ^2$ 的含义:
  1. 为什么在 $w=1.0$ 处计算梯度?
    • 这是一个固定的参考点
    • 如果 $w=1.0$ 对所有环境都是最优的,那么梯度应该都是0
  2. 梯度为0意味着什么?
    • 在该点没有改进的方向
    • 表示 $\Phi$ 已经提取了足够好的特征
  3. 多环境梯度一致性: 如果所有环境的梯度都是0,说明找到了不变的预测规则

实践中的IRM算法

详细实现步骤

算法:IRM训练过程
输入:多环境数据 {(X^e, Y^e)}_{e∈E},超参数 λ
1. 初始化:
   - 特征提取器 Φ(深度网络)
   - 线性分类器 w(初始化为1.0)
   
2. 对每个训练批次:
   a. 采样小批量数据
   b. 对每个环境 e:
      - 计算特征:Z^e = Φ(X^e)
      - 计算预测:Ŷ^e = w · Z^e
      - 计算损失:L^e = CrossEntropy(Ŷ^e, Y^e)
      
   c. 计算梯度惩罚:
      - 固定 w_dummy = 1.0
      - 对每个环境计算:grad^e = ∇_{w_dummy} L^e(w_dummy · Φ(X^e))
      - penalty = Σ_e ||grad^e||^2
      
   d. 总损失:
      - loss_total = (1/|E|) Σ_e L^e + λ · penalty
      
   e. 更新参数:
      - 通过反向传播更新 Φ 和 w
      
3. 返回:训练好的模型 (Φ, w)

IRM的变体和改进

  1. Risk Extrapolation (REx): \(\min_{\theta} \sum_e R^e(\theta) + \lambda \cdot \text{Var}_e[R^e(\theta)]\) 直接最小化环境间风险的方差,更简单但可能过于保守。

  2. IRM-Games: 将IRM形式化为博弈:
    • 玩家1(特征提取器):最小化平均损失
    • 玩家2(环境特定分类器):最大化环境间差异
    • 纳什均衡对应因果特征
  3. Group DRO (Distributionally Robust Optimization): \(\min_{\theta} \max_{e \in \mathcal{E}} R^e(\theta)\) 最小化最坏情况的风险,提供更强的鲁棒性保证。

14.1.4 因果结构约束

当我们对系统的因果结构有先验知识时,可以将这些知识编码为正则化约束,引导模型学习符合因果关系的表示。

结构化方程约束

如果我们知道变量间的因果图 $G$,可以通过约束模型参数来强制因果结构:

稀疏性约束: \(\mathcal{L}_{struct} = \sum_{(i,j) \notin E(G)} |\theta_{ij}| + \lambda_{dag} \cdot h(\Theta)\)

其中:

无环性约束(NOTEARS方法): \(h(\Theta) = \text{tr}(e^{\Theta \odot \Theta}) - d = 0\)

这个连续可微的约束确保学习到的结构是DAG。

条件独立性约束

根据因果图的d-分离准则,我们知道某些变量在给定其他变量时应该条件独立:

基于互信息的约束: \(\mathcal{L}_{indep} = \sum_{(X,Y,Z): X \perp\!\!\!\perp_G Y | Z} \text{MI}(X; Y | Z)\)

其中 $X \perp!!!\perp_G Y Z$ 表示根据因果图 $G$,$X$ 和 $Y$ 在给定 $Z$ 时d-分离。

实际计算方法

对每个独立性约束 X ⊥ Y | Z:
1. 估计条件分布 P(X|Z) 和 P(Y|Z)
2. 计算条件互信息:
   MI(X;Y|Z) = E_{p(x,y,z)}[log(p(x,y|z)/(p(x|z)p(y|z)))]
3. 使用神经网络估计互信息(如MINE方法)
4. 将MI(X;Y|Z)作为损失项最小化

因果顺序约束

当我们知道变量的因果顺序(拓扑排序)时:

层次化网络结构

如果因果顺序为 X₁ → X₂ → ... → Xₙ:
- 第i层只能接收第1到i-1层的输入
- 通过掩码矩阵实现:M[i,j] = 1 if j < i else 0
- 参数矩阵:Θ_effective = Θ ⊙ M

时间因果约束: 对于时序数据,未来不能影响过去: \(\mathcal{L}_{temporal} = \sum_{t<t'} ||\theta_{X_t \leftarrow X_{t'}}||^2\)

路径特定约束

有时我们知道某些因果路径应该存在或不存在:

直接效应约束: 如果 $X$ 对 $Y$ 没有直接效应(只有通过中介变量的间接效应): \(\mathcal{L}_{no\_direct} = ||\frac{\partial f_Y}{\partial X} \Big|_{M=\text{const}}||^2\)

路径强度约束: 限制特定路径的效应强度: \(\mathcal{L}_{path} = \sum_{\pi \in \Pi} w_\pi \cdot |\text{PathEffect}(\pi) - \tau_\pi|^2\)

其中 $\Pi$ 是关注的路径集合,$\tau_\pi$ 是期望的路径效应。

14.2 因果表示学习

14.2.1 概念与目标

因果表示学习旨在从高维观测数据中学习低维的因果因子(causal factors),这些因子反映数据的生成机制而非仅仅是统计规律。

核心目标

因果表示应该满足以下关键性质:

  1. 解耦性(Disentanglement)
    • 不同因子独立变化,改变一个因子不影响其他因子
    • 数学上:$p(z_1, …, z_n) = \prod_i p(z_i PA_i)$,其中 $PA_i$ 是稀疏的
  2. 可解释性(Interpretability)
    • 每个因子对应明确的语义概念
    • 例如:物体的位置、颜色、形状各自对应不同的潜变量
  3. 可干预性(Interventionability)
    • 可以独立操作每个因子来生成反事实样本
    • 干预 $do(z_i = z’_i)$ 只影响 $z_i$ 的子节点
  4. 鲁棒性(Robustness)
    • 学习到的表示在分布偏移下保持有效
    • 因果机制的模块性保证了泛化能力

与传统表示学习的区别

传统表示学习

因果表示学习

应用场景

  1. 计算机视觉
    • 学习物体的形状、纹理、光照等独立因子
    • 支持零样本组合泛化(如”蓝色大象”)
  2. 自然语言处理
    • 分离内容和风格(如情感、语气)
    • 实现可控文本生成
  3. 推荐系统
    • 区分用户的真实偏好和流行度偏差
    • 提高推荐的因果效应
  4. 医疗诊断
    • 识别疾病的独立风险因子
    • 支持个性化治疗方案

14.2.2 独立因果机制(ICM)原则

ICM原则假设: \(P(X_1, ..., X_n) = \prod_{i=1}^n P(X_i | PA_i)\)

其中 $PA_i$ 是 $X_i$ 的因果父节点,且每个条件分布 $P(X_i PA_i)$ 独立变化。

关键性质

  1. 模块性:改变一个机制不影响其他机制
  2. 稀疏性:每个变量只依赖少数父节点
  3. 最小变化原则:干预通常只影响少数机制

14.2.3 变分自编码器与因果解耦

因果VAE架构

观测 x → 编码器 q(z|x) → 因果潜变量 z → 因果图 G → 解码器 p(x|z)

损失函数: \(\mathcal{L} = \mathbb{E}_{q(z|x)}[\log p(x|z)] - \beta \cdot KL[q(z|x)||p(z)] + \gamma \cdot \mathcal{L}_{causal}\)

其中因果损失项 $\mathcal{L}_{causal}$ 强制潜变量遵循因果结构: \(\mathcal{L}_{causal} = \sum_{i,j} \mathbb{1}_{(i,j) \notin G} \cdot |\text{Cov}(z_i, z_j)|\)

14.2.4 对比学习与因果发现

利用对比学习识别因果特征:

因果对比损失: \(\mathcal{L}_{CCL} = -\log \frac{\exp(\text{sim}(z_i, z_i^+)/\tau)}{\sum_{k} \exp(\text{sim}(z_i, z_k)/\tau)}\)

其中:

多环境对比学习: 利用多环境数据识别不变特征:

对每个批次:
1. 从不同环境采样:x_e1, x_e2, ..., x_eK
2. 提取特征:z_e1 = f(x_e1), ...
3. 最大化环境间因果特征的一致性
4. 最小化环境间虚假特征的相似性

14.2.5 因果解耦的评估指标

解耦度量

因果性度量

14.3 因果强化学习

14.3.1 强化学习中的因果问题

传统强化学习面临的因果挑战:

  1. 混杂偏差:历史策略导致的观测数据偏差
  2. 信度分配问题:如何确定哪个动作导致了奖励
  3. 泛化困难:在新环境中性能下降
  4. 样本效率低:需要大量交互才能学习

因果视角提供的解决方案:

14.3.2 因果模型增强的MDP

因果MDP定义: 扩展标准MDP为 $\mathcal{M} = (S, A, P, R, \gamma, G)$,其中:

结构化状态表示: 将状态分解为因果相关的组件: \(S = S_{agent} \times S_{env} \times S_{confound}\)

其中:

14.3.3 反事实策略评估

离线策略评估问题: 给定历史数据 $\mathcal{D} = {(s_t, a_t, r_t, s_{t+1})}$ 由行为策略 $\pi_b$ 生成,评估目标策略 $\pi_e$ 的性能。

反事实推理方法

  1. 构建因果模型: \(M: S \times A \rightarrow S' \times R\)

  2. 反事实查询: “如果在状态 $s_t$ 采取动作 $\pi_e(s_t)$ 而非 $a_t$,会得到什么奖励?” \(r_{CF} = R(s_t, \pi_e(s_t); U_t)\) 其中 $U_t$ 是从观测数据推断的潜在混杂因素

  3. 重要性采样修正: \(V^{\pi_e} = \mathbb{E}_{\tau \sim \pi_b}\left[\sum_t \gamma^t r_t \prod_{k=0}^t \frac{\pi_e(a_k|s_k)}{\pi_b(a_k|s_k)}\right]\)

14.3.4 因果发现与探索

因果好奇心驱动探索: 定义内在奖励基于因果不确定性: \(r_{intrinsic} = H(G | \mathcal{D}) - H(G | \mathcal{D} \cup \{(s,a,s',r)\})\)

这鼓励智能体采取能最大程度减少因果图不确定性的动作。

主动介入学习

算法:因果主动学习
1. 初始化:因果假设集 H = {G_1, ..., G_k}
2. 对每个时间步:
   a. 计算每个动作的信息增益:
      IG(a) = H(H) - E[H(H|s',r)|s,a]
   b. 选择动作:a* = argmax_a [IG(a) + ε·Q(s,a)]
   c. 执行动作,观测结果
   d. 更新因果假设的后验概率
3. 返回:最可能的因果图 G*

14.3.5 因果模型基础规划

世界模型与因果推理: 利用学习到的因果模型进行规划:

  1. 前向模拟: \(s_{t+k} = f_{causal}(s_t, a_t, ..., a_{t+k-1})\)

  2. 反事实规划: 在规划时考虑”如果不这样做会怎样”: \(Q_{CF}(s,a) = R(s,a) + \gamma \max_{a'} V(f(s,a)) - \lambda \cdot \text{Regret}(s,a)\)

    其中遗憾项: \(\text{Regret}(s,a) = \max_{a' \neq a} Q_{CF}(s,a') - Q_{CF}(s,a)\)

  3. 因果层次规划

    • 高层:基于因果效应的子目标选择
    • 低层:基于局部动力学的动作执行

14.4 公平性与因果推断

14.4.1 算法公平性的因果视角

传统公平性定义的局限性:

这些定义忽略了因果路径,可能导致:

  1. 禁止使用合理的预测因子
  2. 无法区分直接歧视和间接影响
  3. 不同公平性准则之间的冲突

14.4.2 因果公平性框架

因果图表示

    A (敏感属性)
    ├── 直接路径 → Y (结果)
    └── 间接路径 → M (中介变量) → Y

路径特定效应

14.4.3 反事实公平性

定义:如果在反事实世界中,改变个体的敏感属性不会改变决策结果,则称决策是反事实公平的。

数学表述: \(P(\hat{Y}_{A \leftarrow a}(u) = \hat{Y}_{A \leftarrow a'}(u)) = 1, \forall u, a, a'\)

其中 $u$ 表示个体的所有外生变量。

实现方法

  1. 路径阻断:阻断不公平的因果路径
    # 伪代码
    def fair_prediction(x, sensitive_attr):
        # 1. 预测中介变量(在反事实世界中)
        m_cf = predict_mediator(x, sensitive_attr=baseline)
        # 2. 基于反事实中介变量预测
        y_pred = predict_outcome(x, m_cf)
        return y_pred
    
  2. 公平表示学习: 学习与敏感属性因果独立的表示: \(\min_f \mathcal{L}_{task}(f(X), Y) + \lambda \cdot \mathcal{L}_{indep}(f(X), A)\)

14.4.4 因果解释与审计

个体公平性解释: 对于被拒绝的申请者,提供因果解释:

算法审计流程

1. 构建决策系统的因果图
2. 识别所有从敏感属性到决策的因果路径
3. 量化每条路径的因果效应
4. 判断哪些路径是合理的,哪些构成歧视
5. 评估整体公平性水平

14.4.5 公平性与效用的权衡

多目标优化框架: \(\min_{f} \mathcal{L}_{utility}(f) + \sum_{i} \lambda_i \cdot \mathcal{L}_{fairness}^i(f)\)

其中不同的公平性约束:

帕累托前沿分析: 找出效用和公平性之间的帕累托最优解集,让决策者根据具体场景选择合适的权衡点。