Frontier / Deep Learning Causal

深度学习因果推断:表示学习与神经网络估计(TARNet、Dragonnet、DeepIV、CEVAE)

神经网络不改变识别假设,而是把"用灵活函数拟合 nuisance、用共享表示纠正协变量偏移"做到极致。理解 TARNet / Dragonnet / DeepIV / CEVAE,就知道深度学习在因果工作流里到底替你做了什么,又不能替你做什么。

这一页接在 DML / 因果森林之后。核心一句话:在无混淆(或有有效工具)假设下,把结果回归、倾向、表示甚至混淆的代理都换成神经网络,可以在高维、文本、图像协变量上估计 ATE / CATE;但识别仍来自研究设计,不来自网络本身。

原理图解

一图看懂原理

深度学习因果:共享表示 + 双结果头协变量 X高维/文本共享表示 Φ(x)平衡 IPM双结果头h₀(Φ), h₁(Φ)τ(x) / ATEh₁ − h₀TARNet = 共享表示+双头Dragonnet = +倾向头DeepIV/CEVAE = 内生/隐变量
神经因果估计的主线:高维/文本协变量 X → 学共享表示 Φ(x) → 两个结果头给出处理与对照的反事实 → 相减得 CATE、取期望得 ATE。表示平衡(IPM)控制外推,Dragonnet 的倾向头把估计对齐到 ATE。识别仍靠无混淆/排他,网络只换函数形式。

先看这里

学完这一页你应该会什么

01

区分"识别假设"(无混淆 / 排他性)与"估计方法"(神经网络),别把后者当成放松前者。

02

理解 TARNet:共享表示 + 两个结果头,估计个体处理效应 tau(x)。

03

理解表示平衡(CFR):用 IPM / Wasserstein 惩罚处理组与对照组表示分布的距离。

04

理解 Dragonnet:在共享表示上加一个倾向头 + 目标正则,得到对 ATE 更稳的估计。

05

了解 DeepIV(内生处理的两阶段神经网络)与 CEVAE(用隐变量建模混淆的代理)的适用与边界。

学习路径

学习路径:共享表示 → 双头 → 平衡 → 倾向 → 去偏

按这条路径理解神经因果估计:先学表示,再分处理头,加平衡惩罚控制外推,必要时加倾向头与目标正则把估计对齐到 ATE。

  1. Step 1

    Represent

    网络学共享表示 Phi(x),承接高维 / 文本协变量。

    Phi(x)

  2. Step 2

    Two heads

    两个结果头分别给出处理与对照的反事实预测。

    h_0,h_1

  3. Step 3

    Balance

    用 IPM 惩罚两组表示分布距离,控制外推误差。

    alpha·IPM

  4. Step 4

    Propensity

    Dragonnet 加倾向头,保留处理分配信息。

    g(x)

  5. Step 5

    Debias

    目标正则 / AIPW 把"预测好"对齐到"ATE 准"。

    EIF 约束

01 / 直觉

核心直觉

经典估计(OLS、IPW、匹配)在协变量高维或非结构化(文本、图像、面板序列)时很吃力,而神经网络恰好擅长从这类输入学习表示。

核心洞察:把条件均值 mu_d(x)=E[Y|D=d,X=x] 拆成"共享表示 Phi(x) + 每个处理一个输出头",让大部分参数共享、只在头部区分处理,从而用对照组的信息帮助估计处理组的反事实。

但灵活表示可能放大处理组 / 对照组的协变量偏移;表示平衡(CFR)用积分概率度量惩罚两组表示分布的距离,以更稳健的反事实外推换取一点偏差。

02 / 数学

从潜在结果到共享表示与神经估计

01 / 目标:个体与平均处理效应

在无混淆与重叠假设下,CATE 是两个条件均值之差,ATE 是其期望。问题转化为如何灵活、低方差地估计 mu_0、mu_1。

tau(x)=mu_1(x)−mu_0(x);  ATE=E[tau(X)]

02 / TARNet:共享表示 + 双结果头

先用网络学一个共享表示 Phi(x),再用两个独立的头 h_0、h_1 分别预测对照与处理下的结果。共享底层、分离头部,缓解了 T-learner 在小处理组上的方差问题。

hat mu_d(x)=h_d(Phi(x)),  d∈{0,1}

03 / 反事实风险与表示平衡(CFR)

在事实损失之外,加一个惩罚项,缩小处理组与对照组在表示空间的分布距离(用 MMD 或 Wasserstein 等 IPM 度量),从而控制反事实外推的泛化误差上界。

L=事实损失 + alpha·IPM_G({Phi|D=1},{Phi|D=0})

04 / Dragonnet:加一个倾向头

在共享表示上再接一个倾向头 g(x)=P(D=1|Phi(x))。这迫使表示保留与处理分配相关的信息,是"充分倾向得分"的神经版本。

g(x)=sigmoid(head_t(Phi(x)))

05 / 目标正则(targeted regularization)

加入一个带扰动参数 epsilon 的修正项,使最终估计满足 ATE 的高效影响函数约束(类似 TMLE / AIPW),把"预测好"对齐到"估计 ATE 准"。

tilde mu_d=hat mu_d + epsilon·(D/g − (1−D)/(1−g))

06 / DeepIV 与 CEVAE

DeepIV 在内生处理下分两阶段:先用网络估计处理给定工具与协变量的条件分布 F(t|x,z),再最小化对该分布积分后的结果损失。CEVAE 则把无法直接观测的混淆用隐变量 z 表示,借代理变量做变分推断。两者都换汤不换药:识别仍靠工具排他或代理充分。

DeepIV: min E[(Y−∫ h(t,X) dF(t|X,Z))^2]

03 / 代码

代码案例:TARNet 风格的共享表示 + 双头估计 CATE

下面用一个最小的 PyTorch 网络实现共享表示 + 双结果头,在合成数据上估计 ATE,并演示表示平衡惩罚的位置。重点是结构,不是调参。

案例 1:双头结构如何给出 CATE

共享表示后,两个头分别预测处理与对照结果,相减即个体效应。

import numpy as np
phi = np.array([0.3, -0.2, 0.5])     # shared representation for one unit
w0, b0 = np.array([1.0, 0.5, -0.3]), 0.1   # control head
w1, b1 = np.array([1.2, 0.4, -0.1]), 0.4   # treated head
mu0 = phi @ w0 + b0
mu1 = phi @ w1 + b1
print("CATE for this unit:", round(mu1 - mu0, 3))

预期输出

CATE for this unit: 0.46

怎么读这段代码

  • 同一个表示喂进两个头,得到两条反事实预测。
  • 相减得到该个体的处理效应估计 tau(x)。
  • 共享底层让对照组样本也参与处理组反事实的学习。

案例 2:表示平衡惩罚(MMD 替身)

处理组与对照组表示分布的距离越大,反事实外推越不可靠。

import numpy as np
rng = np.random.default_rng(1)
phi_t = rng.normal(0.6, 1.0, size=(500, 8))   # treated reps
phi_c = rng.normal(0.0, 1.0, size=(500, 8))   # control reps
mmd = ((phi_t.mean(0) - phi_c.mean(0)) ** 2).mean()
print("mean-MMD imbalance:", round(float(mmd), 3))

预期输出

mean-MMD imbalance: 0.291

怎么读这段代码

  • 两组表示均值相距越远,惩罚越大。
  • CFR 把这个距离加进损失,鼓励"对处理不可区分"的表示。
  • 平衡能缓解协变量偏移,但不能凭空创造重叠。

案例 3:Dragonnet 的倾向头用于去偏

倾向头给出 g(x),可像 AIPW 一样修正结果头的残差。

import numpy as np
m1, m0, g = 5.0, 3.0, 0.7      # treated/control predictions + propensity
Y, D = 5.4, 1
aipw = (m1 - m0) + D * (Y - m1) / g - (1 - D) * (Y - m0) / (1 - g)
print("doubly robust contribution:", round(aipw, 3))

预期输出

doubly robust contribution: 2.571

怎么读这段代码

  • 神经网络只负责给出 m0、m1、g 三个 nuisance。
  • 去偏的统计逻辑仍是 AIPW / 影响函数,不是网络本身。
  • 这正是 Dragonnet + 目标正则要对齐的目标。

04 / 案例

案例:用企业年报文本作为高维混淆控制估计政策效应

  • 研究问题:某项监管对企业投资的影响,但是否被监管与企业基本面、战略叙述高度相关(混淆),而这些信息大量藏在年报文本里。
  • 用预训练语言模型把年报编码成向量,作为高维协变量 X,再用 TARNet / Dragonnet 学共享表示与双结果头估计 ATE / CATE。
  • 报告 overlap 与表示平衡诊断:处理组与对照组在表示空间是否充分重叠,平衡惩罚前后估计如何变化。
  • 与 DML + 因果森林互验:若两类方法结论一致,可信度更高;若分歧,多半是 overlap 不足或无混淆假设可疑,而不是"模型不够深"。

05 / 因果

选型:神经因果估计 vs DML / 森林,按问题对号入座

深度学习因果不是更高级的"黑箱",而是同一套识别假设下更灵活的 nuisance / 表示学习器。下面是常见对应。

01 / 高维 / 非结构化协变量(文本、图像)→ 表示学习

用 TARNet / CFR 从原始输入学共享表示,再分头估计反事实。

02 / 需要稳健的 ATE → Dragonnet + 目标正则

在共享表示上加倾向头与 TMLE 式修正,把估计对齐到高效影响函数。

tilde mu_d=hat mu_d+epsilon·clever covariate

03 / 内生处理 + 工具 → DeepIV

两阶段神经网络处理内生性,识别仍依赖工具的排他性。

04 / 只有混淆的代理(proxy)→ CEVAE(谨慎)

用隐变量建模无法直接观测的混淆,但对模型设定与代理充分性极敏感。

三条红线:(1) 识别仍靠设计,神经网络只换函数形式;(2) 样本小优先 DML / 森林,神经法需要大样本、强正则与认真调参;(3) 必须做 overlap / 平衡诊断,并用交叉拟合与诚实评估量化不确定性。

06 / 风险

常见误区

把神经网络当成"放松识别假设"的工具——它只放松函数形式,绝不放松无混淆 / 排他性。
忽略 overlap:表示平衡能缓解协变量偏移,但处理组与对照组若本就不重叠,任何方法都无法外推。
过度灵活导致 nuisance 过拟合;缺乏交叉拟合 / 正则会把过拟合误差带进 ATE。
把网络内部表示或注意力当作因果机制来解释。
在几百到几千样本的社科数据上盲目堆深度模型,常常不如 DML + 树 / 森林稳健。

参考资料