为什么需要因果表示 (Why Causal Representation Learning)
一句话定位
因果表示学习旨在将高维观测数据映射到低维潜在因果变量,使得这些变量之间的因果结构可以被明确建模和利用。
前置知识
- 基础概率论:条件概率、贝叶斯公式、KL散度
- 表示学习基础:变分自编码器(VAE)、beta-VAE
- 因果学基础:结构因果模型(SCM)、do算子、反事实
- 深度学习:重建损失、对比学习、互信息
核心直觉
在现实世界中,观测数据(如图像、视频、文本)通常是高维的,但产生这些数据的底层机制往往可以用少数几个关键变量来描述。举个例子:一张图片可能由数百万个像素组成,但这些像素可能只是由少数几个因果变量决定的——比如物体位置、旋转角度、光照条件等。
标准表示学习(如VAE、对比学习)的目标是找到一个低维表示,使得这个表示能够很好地重建原始数据或者捕捉数据中的统计规律。然而,这种表示通常不捕捉因果结构。举例来说,如果我们在图像数据集上训练一个VAE,得到的潜在变量可能包含关于颜色、形状等信息,但这些变量之间的关系是统计相关的,而不是因果的。
因果表示学习的核心思想是:我们不仅想要一个低维表示,还想要这个表示中的每个变量对应一个因果机制。换句话说,如果我们干预(intervene)某个因果变量,其他变量不应该受到影响(除非它们是该变量的因果后代)。
问题形式化
基本设置
给定观测数据
- 编码器
:将高维观测映射到中间表示 - 因果映射
:将中间表示映射到因果变量
最终目标是获得因果变量
形式上:
生成过程
假设数据由以下生成模型产生:
其中:
是因果变量的先验分布 是解码器/生成器,将因果变量映射到观测空间
因果结构
因果变量
其中
标准表示学习 vs 因果表示学习
标准表示学习的目标
标准表示学习(如重建、自编码器、对比学习)的目标通常是:
其中
标准表示学习的问题
-
不捕捉因果结构:统计独立不等于因果独立。如果两个变量
和 在 中统计独立,这并不意味着它们之间没有因果关系——它们可能是某个共同原因的两个独立结果。 -
不保证干预效果:干预标准表示学习学到的某个维度可能会影响很多其他维度,因为这些维度只是统计相关的,而不是因果独立的。
-
不可辨识性:从观测数据
出发,如果没有额外的结构假设,因果变量 通常是不可辨识的。存在无穷多对 可以产生相同的观测分布 。
因果表示学习的额外要求
因果表示学习不仅要求
- 因果结构:
中的变量之间有明确定义的因果关系,可以用SCM描述 - 干预不变性:干预某个
只影响 及其因果后代,不影响其他变量 - 反事实一致性:给定相同的干预和不同的噪声样本,反事实结果应该是确定的
CRL vs SSL
Self-Supervised Learning (SSL)
SSL是一种不需要人工标注的学习范式,通过设计代理任务(pretext tasks)来学习表示。常见的SSL方法包括:
- 对比学习:如SimCLR、MoCo,通过对比正样本和负样本学习表示
- 掩码重建:如MAE、BERT,通过重建被掩码的部分学习表示
- 预测未来:如CPC,通过预测未来状态学习表示
SSL ≠ CRL
SSL可以帮助学习好的表示,但不保证因果结构:
-
SSL学到的表示可能是因果相关的:SSL通常鼓励同一图像的不同增强版本具有相似的表示,但这种相似性可能来自于共同的因果因素(如物体类别),也可能来自于非因果因素(如背景颜色)。
-
SSL不提供干预效果:SSL没有显式地建模干预下的行为,因此无法保证干预某个维度会导致预期的变化。
-
SSL缺乏可辨识性保证:没有额外的结构假设,从SSL学到的表示无法确定哪个维度对应哪个因果机制。
CRL如何利用SSL
CRL可以结合SSL的方法,但需要额外的因果结构假设:
- 对比 CRL:通过对比不同干预下的表示学习因果结构
- 掩码预测:通过预测被干预变量的值学习因果机制
- 互信息最大化:最大化干预后表示与干预变量之间的互信息
数学框架
目标函数
给定观测数据
由于积分难以计算,我们使用变分推断,引入近似后验
其中ELBO(证据下界)为:
因果结构约束
为了确保可辨识性,我们需要对因果结构做出假设。一个常见的假设是稀疏机制假设(Sparse Mechanism Assumption):
- 每个因果机制
是独立的 - 干预某个机制不影响其他机制
形式上,我们可以将先验分解为:
其中
可辨识性条件
从
- 生成模型可辨识性:
必须足够”可逆”,即不同 产生不同的 - 因果结构可辨识性:因果图结构必须可以从数据中辨识
- 充足邻接条件(SAC):观测变量之间必须有足够的连接来传递因果信息
训练与估计
变分 CRL
- 编码器
:近似后验分布 - 解码器
:生成模型 - 因果先验
:基于因果结构的先验
训练目标是最小化负ELBO:
因果结构学习
除了学习表示,我们还需要学习因果图结构。常用的方法包括:
- 得分方法:如BIC、MDL score,搜索最优结构
- 约束方法:如PC算法,利用条件独立性测试
- 混合方法:结合上述两种方法
对抗训练
一些方法使用对抗训练来增强可辨识性:
其中
推理与干预
推理过程
给定观测
干预操作
在因果表示学习中,do算子作用在
干预后的联合分布:
反事实推理
反事实推理需要:
- 确定干预前的关系
- 应用干预
- 保持其他变量不变
优点与局限
优点
- 低维表示:因果变量通常比观测维度低很多,便于建模和解释
- 干预不变性:干预某个因果变量不影响其他变量,符合因果语义
- 反事实推理:支持反事实问题的回答
- 泛化能力:因果结构通常在分布转移下保持稳定
局限
- 可辨识性困难:没有额外假设,
通常不可辨识 - 因果结构学习复杂:从数据中学习因果图是NP难问题
- 连续变量处理:离散SCM的理论不易推广到连续情况
- 计算复杂度:高维观测+复杂因果结构带来高计算成本
与其他笔记的联系
- 因果发现基础:CRL假设因果结构已知或部分已知,需要结合因果发现算法
- SCM与结构方程:CRL使用SCM作为因果变量的描述语言
- 因果推断:CRL学习到的表示可以用于下游因果推断任务
- 解耦表示:CRL可以看作是解耦表示的因果版本,强调干预不变性
可重现性笔记
代码实现要点
# 变分CRL的基本结构
class CausalRepresentationLearning(nn.Module):
def __init__(self, input_dim, latent_dim, causal_graph):
self.encoder = nn.Sequential(
nn.Linear(input_dim, 256),
nn.ReLU(),
nn.Linear(256, latent_dim)
)
self.decoder = nn.Sequential(
nn.Linear(latent_dim, 256),
nn.ReLU(),
nn.Linear(256, input_dim)
)
self.causal_graph = causal_graph # 邻接矩阵
def forward(self, x):
z = self.encoder(x)
x_recon = self.decoder(z)
return z, x_recon
def elbo_loss(self, x, beta=1.0):
z, x_recon = self(x)
recon_loss = F.mse_loss(x_recon, x)
kl_loss = self.kl_divergence(z)
return recon_loss + beta * kl_loss数据集
- 多视角数据集:Shapes3D、MPI3D,用于评估解耦效果
- 时间序列数据集:PhysioNet、MIMIC,用于评估时序CRL
- 合成数据:可以用已知SCM生成数据,用于验证可辨识性
超参数
:KL正则化权重,影响解耦程度 - 潜在维度
:需要根据具体问题设定 - 网络结构:编码器/解码器深度和宽度
章节总结
- 观测空间是高维的,但潜在因果变量是低维的映射结果
- 标准表征学习不捕捉因果结构,只捕捉统计相关性
- 因果表示学习(CRL)将高维观测映射到低维因果变量
- CRL需要额外的结构假设或归纳偏置来保证可辨识性
- Self-supervised learning (SSL)可以辅助CRL,但不等于CRL
- 因果表示是下游干预和反事实推理的基础
- 解耦是CRL的核心目标,但不是唯一目标
- 观察空间中的独立不代表因果独立
- 可辨识性需要额外的约束条件(如稀疏性、多视图等)
- 未来方向:大规模预训练+因果微调的结合
关键词
causal representation learning, representation learning, disentanglement, identifiability, self-supervised learning, SCM, intervention, counterfactual, variational inference, ELBO