深夜的厨房里,你是一位美食侦探。桌上摆着一盘刚出锅的麻婆豆腐——深红的酱汁裹着嫩白的豆腐,花椒的香气在热雾中打转。你能看清这盘菜的所有细节,却看不到那位做菜的厨师:他用了多少盐?火候是猛还是文?豆瓣酱是先炒还是后放?这些不可见却掌控全局的“隐形手法”,决定了每一口味道。在数据科学的世界里,同样的谜题每天上演:我们能观测到海量数据,但驱动数据生成的“隐形菜谱”却藏在水面之下。深度因果发现中的隐变量发现,正是要训练AI成为这样一位美食侦探——从一盘“数据菜肴”中,反推出背后隐藏的因果因子。本文将带你走进这位侦探的内心,看它如何用变分自编码器搭起“脑内模拟器”,从看菜猜谱到按谱做菜,最终分离出“盐”与“糖”各自的因果作用。
对AI从业者而言,隐变量发现是打通“关联建模”与“因果推理”的关键能力,也是构建可解释、可追溯、负责任的AI系统的必修课。
目录
可视化演示
展示PINN训练收敛三维度:多损失项收敛曲线(数据/PDE/BC/IC损失收敛与停滞诊断)、梯度均衡(归一化前后各损失梯度尺度对比)、学习率余弦退火与残差自适应采样,理解深度因果发现训练优化策略。
本节配有交互动效(进入视口后自动加载,约 3KB)。
多损失项收敛曲线 总损失与各分项损失 停滞诊断标记 L = L_data + L_pde + L_bc + L_ic 多损失加权训练中各项收敛速率不同,需诊断停滞模式。
隐变量之谜:藏在数据背后的“隐形厨师”
你已经盯着那盘麻婆豆腐看了很久。身为侦探,你能观察到的只有成品——酱汁的颜色、豆腐的软硬、香气浓度。但真正让这盘菜成为“这一盘”的,是那个你从未谋面的厨师:他也许手一抖多放了一勺盐,也许心血来潮撒了一把花椒。所有这些看不见的“背后因素”,共同塑造了眼前的成品。在数据世界里,这些因素就叫隐变量(latent variable)。
可观测变量是能直接测量到的数据:一张照片的像素亮度、一段文本的词频、一笔交易的金额与时间。而隐变量是那些无法直接看到、却在背后驱动数据生成的深层因子:照片的拍摄角度与光线、文本作者的情绪倾向、交易背后的欺诈意图。隐变量与可观测变量之间,不是“相关”而是“生成”关系——先有隐变量z,再由它“生”出观测x。
把这个直觉数学化:每一步观测x都是从某个隐变量z生成的。先从先验分布p(z)中抽一个z(比如从菜谱库中挑一份),再从生成分布p(x|z)中生成观测(按菜谱做菜)。因此观测数据的整体分布是所有可能z下的加权和:
隐变量发现的目标,就是替这位侦探“猜出”背后的菜谱。但直接反推菜谱几乎不可能——下一章,你将见识侦探的秘密武器:脑内模拟器。
- 观测变量x代表我们能测量到的数据,比如菜品的色泽与香气。
- 隐变量z代表看不见的潜在因子,比如盐量、火候等手法。
- 先验分布p(z)描述隐变量通常如何取值——大部分菜谱都落在合理范围内。
- 生成分布p(x|z)描述给定一套菜谱后,成品x的形态分布。
- 积分求和对z的所有可能性加权累加,得到观测x的总概率。
变分推断:侦探的“脑内模拟器”
侦探遇到的第一堵墙:你只知道成品x,想知道背后的菜谱z。按照贝叶斯规则,后验p(z|x)应该等于p(x|z)p(z)/p(x)。但分母那道积分,在隐变量高维时就变成一座算不完的大山。你不能直接“读取”厨师的脑子——这就是后验难解。
聪明的侦探换了一条迂回路线:与其硬算真实的p(z|x),不如随时在脑内构造一个“猜测分布”q(z|x),让它尽量逼近真实分布。这个q(z|x)就是脑内模拟器——装在你脑子里的“假想厨师”。每当看到一盘菜,假想厨师立刻给出一份“可能菜谱”的分布。
如何衡量逼近程度?用KL散度衡量q与p的距离。经过推导可以得到一个既不需要算分母、又能指导训练的式子——ELBO(证据下界):
有了这个目标函数,侦探的“假想厨师”便有了努力方向——既要能复刻菜肴,又不能天马行空。但还差最后一块拼图:如何让“从q中采一份菜谱”这一步能通过梯度训练?这个秘密,藏在下一章的重参数化里。
- 对数似然log p(x)表示观测数据的对数概率,是一个只由数据决定的固定常数。
- 重构期望在猜测菜谱q下,期望“按谱做菜能还原成品”的程度,越大越好。
- KL散度衡量猜测菜谱q与先验常识p(z)的偏离程度,越小越好。
- 下界关系左边≥右边,最大化右边就能把下界抬升到log p(x)附近。
VAE架构:看菜猜谱与按谱做菜
侦探的脑内模拟器,由一个“看菜猜谱器”和一个“按谱做菜器”组成。前者叫编码器,输入一盘菜x,输出一份菜谱的分布参数(均值μ和方差σ);后者叫解码器,给定一份菜谱z,努力还原一道菜x̂。两者串起来,就是变分自编码器(Variational Autoencoder,VAE)——一个优雅的“厨师学徒系统”。
训练时,编码器先“看菜”(x → μ, σ),从菜谱分布中采一份z,解码器再“做菜”(z → x̂),最后同时优化两个目标:重构损失让x̂尽量接近x;KL正则让猜测的菜谱分布不要偏离先验(标准正态)。两个目标合起来,就是最小化负ELBO。
训练过程中有个数学陷阱:从分布N(μ,σ²)中采样z,这个“采样”动作本身不可导,梯度无法穿过它回传到编码器。重参数化技巧化解了这一难题——把采样分解为确定性变换加一个外部噪声ε:
现在侦探的模拟器能端到端训练了:看菜、猜谱、按谱复刻,一气呵成。但它学会的菜谱是“纠缠”的——一个维度同时管着色、香、味。要分离出“盐管咸、糖管甜”,还需要下一章的独门心法。
- 分布参数μ是编码器输出的均值向量,σ是标准差向量,它们描述了菜谱分布的“中心口味”和“波动范围”。
- 外部噪声ε是一个标准正态随机向量,与模型参数无关,负责提供随机性。
- 逐元素乘法⊙表示逐元素相乘,让每个维度有各自的σ缩放。
- 确定性变换z=μ+σ⊙ε把随机采样化为可微的确定性函数,梯度得以回传。
解耦表示:盐归盐,糖归糖
侦探的学徒系统成功复刻了麻婆豆腐,可它心里有个疙瘩:隐空间的“菜谱维度”是纠缠的。某个维度同时影响咸度和红油厚度,另一个维度既管辣度又管花椒香。学徒能做出菜,却说不出“这盘菜咸,是因为盐多”。解耦表示学习,就是强迫每个隐变量维度单独控制一种可解释的语义属性——让盐归盐,糖归糖。
解耦(disentanglement)的数学基础在于:当先验p(z)是各维度独立的标准正态时,KL散度可以按维度拆开。这意味着我们能够分别约束每个维度的分布,让它们互不耦合:
要让这个分解真正起作用,实践中最经典的做法是β-VAE:在训练损失中把KL项的权重从1加大到β(通常β取2~10)。更大的β会“逼迫”编码器用更经济的方式传递信息,每个隐维度必须承担一个明确的语义角色——就像给学徒立规矩:“每样调料只能管一件事”。解耦出的隐因子,让侦探手里的“菜谱”第一次有了清晰的边界。但知道“盐管咸”只是关联层面的认识,要回答“如果我把盐加倍会怎样”,还需要因果层面的跃迁。
- 变分分布q(z|x)是编码器对菜谱的猜测分布,包含多个维度。
- 维度分解当q在给定x时可按维度因子化,总KL就分解为d个独立项之和。
- 单维KL项每一项只约束第j个维度的分布贴近对应先验。
因果挖掘:从关联到因果的跃迁
侦探现在手里有一本“解耦菜谱”:盐量、糖量、花椒量彼此独立。但独立不等于因果。他真正想问的是:如果我只把盐加倍,其他一切不变,这道菜会发生什么?这需要从“关联”跨到“因果”——而因果结构的核心,是一张有向图。
因果图告诉我们:观测数据中的每个变量x_i,都是由它的“父节点”(直接原因)驱动的。把联合分布按因果图分解,就得到因果分解公式:
有了因果图,就能做“干预”和“反事实”。用do算子表示“强制把某个变量设为某个值”:P(x | do(Z=z')) 表示外部强行改变隐因子z后系统的响应。在VAE的隐空间上实施干预,就成了“干预式生成”——把“盐量”隐因子固定为2倍,其他因子保持不变,解码器直接生成“多放一勺盐后的菜”。反事实推理更进一步:面对一道实际出锅的菜,回答“如果当时少放糖,会是怎样”。侦探终于不只“看菜猜谱”,还能“推演改谱”。这一整套方法论在真实世界落地的第一站,便是AI安全与合规。
- 联合分布P(x₁,…,xₙ)描述所有观测变量同时出现的概率。
- 父节点集合Pa(x_i)是x_i的直接原因变量集合,即因果图中的上游。
- 条件概率P(x_i|Pa(x_i))描述给定直接原因后x_i自己的生成规律。
- 连乘拆解因果图中每个变量的条件分布相乘,得到整体联合分布。
AI安全应用:给AI装上“透视镜”
一位优秀的侦探不能只破案,还要防止罪案发生。在AI的世界里,隐变量发现就是那把“透视镜”:它能看穿模型表面输出,暴露潜藏在数据深处的偏见因子与因果驱动力。比如一个贷款审批模型,表面依据是收入与信用分,但隐变量分析可能发现“居住地邮编”在深层驱动着决策——这才是需要审查的隐形因子。
在合规审查中,我们把训练好的分类器视作一个“生成系统”:把中间层特征视为可观测变量,用VAE对其做隐变量发现,解耦出潜在的“决策因子”。然后逐因子做干预实验:解耦因子是否与性别、种族等敏感属性强相关?如果撤掉这个因子,决策分布如何变化?这把偏见从“结果相关”升级为“因果归因”。
另一个应用是反事实解释。对一笔被拒贷的申请,系统不再只能说“模型分数低于阈值”,而是生成反事实陈述:“若申请人月收入提高20%,本例将被批准。”这个陈述来自隐空间的干预推理——将“收入因子”上调、其他因子不变,重新解码决策。反过来,这种可追溯性也是模型审计的利器。
正是这层“可干预、可解释、可追溯”,让AI从黑箱走向可信。但任何方法论都有边界——侦探同样有自己的天花板,下一章我们聊聊隐变量发现的局限与未来。
- 观测条件x_obs是已经发生的事实,比如“这道菜最终很咸”。
- 干预操作do(Z=z')表示强制干预,把隐因子Z设为z',与自然发生不同。
- 反事实结果整体式子回答“假设重新来一遍并加盐,结果会是怎样”。
评估与展望:侦探的边界与新地图
再厉害的侦探也有困惑:两道菜尝起来一模一样,可能来自完全不同的菜谱,也可能同一个菜谱因火候波动产生近似结果。隐变量发现面临同样的“不可识别性”——不同的隐变量结构可能产生完全相同的观测分布:
第二个挑战是分布外泛化。侦探若只在川菜馆里历练,遇到法餐就会手足无措——训练数据只覆盖了隐变量的一部分组合空间,模型把局部的因果规律误当成普适规律。真实场景中,分布外的干预预测极易失真。前沿的方向正试图打破边界:把隐变量发现与大型预训练模型结合,在语义表征空间寻找因果因子;用多模态数据联合约束不可识别性;在时序数据上做在线因果发现。
侦探的故事远未结束。从看菜猜谱、到分离盐糖、再到干预推演,隐变量发现已经有了一套完整的方法论。它给了AI一双透视真相的眼睛——而接下来,把这双眼睛安装到真实的产业系统中,正是你作为AI工程师的下一道菜。
- 参数模型θ与θ'是两套不同的隐变量配置(不同菜谱假设)。
- 观测等价两套配置生成观测X的概率分布完全一致。
- 因果区分但两套配置下的隐变量Z不同——观测相同不等于因果相同。
AI 应用场景
金融反欺诈:透视交易中的“隐形洗钱手”
阶段:因果发现与表示学习
解决的问题:传统反欺诈规则引擎只看显式特征(交易金额、频率、IP地址),但真正的欺诈驱动力——账户背后的操控者意图——是隐性的。欺诈者会刻意伪装显式特征,却很难隐藏深层的因果驱动因子。隐变量发现能从海量交易特征中提取“操控者因子”,把欺诈检测从“看表面”升级为“看本质”。
具体案例:某银行对一个月内数千万笔交易做特征嵌入,用β-VAE训练隐空间模型,解耦出三个隐因子:资金周转节奏、账户异常活跃度、跨地域跳跃度。反欺诈团队对“异常活跃度”因子做干预模拟,发现当该因子被强制拉高到3倍标准差时,账户发生欺诈交易的概率从0.2%跃升至34%。据此重新设计了预警规则,误报率下降41%,查全率提升28%。
医疗影像可解释诊断:让病灶因子浮出水面
阶段:模型可解释性与合规
解决的问题:肺部CT诊断模型虽然准确率高,但医生不敢信——它为什么做出这个判断?影像中既包含病灶信号,也包含拍摄角度、设备型号、患者体型等干扰因素。隐变量发现可以把这些混杂因子拆开,让病灶因子单独驱动诊断解释。
具体案例:研究团队收集三家医院的CT影像,用VAE在模型中间层做隐变量发现,解耦出“病灶形态因子”和“设备风格因子”。当把设备风格因子干预调整为另一家医院的分布时,模型对同一张影像的良恶性判断保持稳定——证明诊断确实由病灶因子驱动,而非设备伪影。该方案已通过医院伦理审查,成为辅助诊断系统的解释模块。
推荐系统冷启动:从行为表象还原兴趣本源
阶段:用户画像与因果推理
解决的问题:新用户几乎没有行为数据,传统协同过滤无法建模。但用户深层的兴趣驱动因子(审美偏好、消费动机、场景需求)是相对稳定的隐变量。通过隐变量发现,系统可以从少量行为中推断用户的“兴趣菜谱”,再通过干预式生成推荐内容。
具体案例:某短视频平台用VAE对用户前5次浏览行为做编码,解耦出“信息偏好因子”和“情绪激发因子”。对新用户,系统先估计这两个隐因子,再对“情绪激发因子”做低-中-高三档干预,分别生成不同情绪色彩的推荐序列,用A/B测试快速收敛到用户真实的兴趣组合,冷启动次日留存率提升17%。
Python 演示
import torchimport torch.nn as nnimport numpy as np # 合成数据:两道隐形因子 z1(盐) z2(糖) 线性混合成观测 xN = 4000z1 = np.random.randn(N)z2 = np.random.randn(N)x = np.stack([ 0.8 * z1 + 0.5 * z2 + 0.1 * np.random.randn(N), -0.3 * z1 + 0.9 * z2 + 0.1 * np.random.randn(N),], axis=1).astype(np.float32) class BetaVAE(nn.Module): def __init__(self, x_dim=2, z_dim=2, beta=4.0): super().__init__() self.beta = beta self.enc = nn.Sequential(nn.Linear(x_dim, 32), nn.ReLU(), nn.Linear(32, 32), nn.ReLU()) self.mu = nn.Linear(32, z_dim) self.logvar = nn.Linear(32, z_dim) self.dec = nn.Sequential(nn.Linear(z_dim, 32), nn.ReLU(), nn.Linear(32, 32), nn.ReLU(), nn.Linear(32, x_dim)) def encode(self, x): h = self.enc(x) return self.mu(h), self.logvar(h) def reparameterize(self, mu, logvar): std = torch.exp(0.5 * logvar) eps = torch.randn_like(std) return mu + eps * std def forward(self, x): mu, logvar = self.encode(x) z = self.reparameterize(mu, logvar) x_hat = self.dec(z) recon = ((x - x_hat) ** 2).sum(dim=1) kl = 0.5 * (logvar.exp() + mu ** 2 - 1 - logvar).sum(dim=1) return recon.mean() + self.beta * kl.mean() # 训练模型model = BetaVAE(beta=4.0)opt = torch.optim.Adam(model.parameters(), lr=1e-3)X = torch.tensor(x)for epoch in range(150): opt.zero_grad() loss = model(X) loss.backward() opt.step() if epoch % 50 == 0: print(f"epoch {epoch:3d} loss {loss.item():.4f}") # 验证解耦:固定 z2,滑动 z1,观察 x 的变化print("固定z2=0,滑动z1时的重构输出:")with torch.no_grad(): for v in [-2.0, -1.0, 0.0, 1.0, 2.0]: z = torch.tensor([[v, 0.0]], dtype=torch.float32) o = model.dec(z).numpy()[0] print(f"z1={v:+.1f} -> x=({o[0]:+.3f}, {o[1]:+.3f})")
x = np.stack([...], axis=1).astype(np.float32)构造观测数据:两个真实隐因子按不同权重线性混合成2维观测,模拟“盐”和“糖”共同决定菜的最终口味。class BetaVAE(nn.Module):定义β-VAE模型,包含编码器、解码器和β权重。self.mu = nn.Linear(32, z_dim)编码器输出隐变量的均值μ,即“菜谱分布的中心口味”。self.logvar = nn.Linear(32, z_dim)输出对数方差,约束其取值范围,保证数值稳定。def reparameterize(self, mu, logvar):重参数化技巧:把随机采样变成可微的确定性变换。std = torch.exp(0.5 * logvar)将对数方差还原为标准差σ,代表“菜谱的波动范围”。z = mu + eps * std采样公式:标准噪声ε经μ平移、σ缩放后成为隐编码,梯度可回传。recon = ((x - x_hat) ** 2).sum(dim=1)重构损失:衡量“按谱做的菜”与“原菜”的差距。kl = 0.5 * (logvar.exp() + mu ** 2 - 1 - logvar).sum(dim=1)KL散度闭式解:约束隐分布贴近标准正态先验。return recon.mean() + self.beta * kl.mean()总损失 = 重构项 + β倍的正则项,β控制解耦强度。for epoch in range(150):训练循环:梯度下降迭代优化编码器与解码器。with torch.no_grad():推理模式:关闭梯度计算,验证固定z2、滑动z1时输出的变化方向。
常见误区
误区既然隐变量是藏在数据背后的因素,那道菜的色泽、香气都能聚类成几种类型,聚类找出的中心点不就是隐变量吗?
正解聚类中心是“描述性”的代表点,它告诉你数据聚集在哪里,却无法回答“数据是怎么生成的”。隐变量是“生成性”的——它驱动观测产生,并且在因果意义上先于观测存在。就像一桌菜可以按口味聚类成“麻辣/清淡”,但聚类的中心不会告诉你盐放了多少。
为何常见:隐变量与聚类都处理看不见的结构,且都做某种“压缩”,初学者容易混淆“描述”与“生成”两种视角。
误区VAE把高维数据压到低维隐空间,本质上和PCA差不多,就是一个更花哨的降维工具。
正解PCA只学一个线性投影,VAE学的是一个完整的概率生成模型,包含p(z)先验、p(x|z)解码和q(z|x)编码。隐空间也不是随便的低维表示,而是具有概率结构、可采样、可干预的因果表征空间。降维只是表象,生成与干预才是本质。
为何常见:从输入输出看,两者都“压缩后再还原”,形式上相似;但概率生成的内涵不容易一眼看出。
误区加大β能让隐变量更独立,那我把β设成1000,解耦效果岂不是拉满?
正解β过大会过度压缩隐空间的信息瓶颈,编码器索性丢弃细节——重构损失飙升,学到的“解耦因子”保真度极差,生成数据模糊失真。解耦是“独立性与信息保真”的拔河,实际中β通常在2~10之间做网格搜索。
为何常见:直觉上约束越强效果越好,忽略了约束太强会破坏目标本身——就像严格规定“每样调料只能管一件事”,结果厨师干脆少放调料,菜变得寡淡。
误区隐变量各维度算出来的相关系数为零,所以它们就是相互独立的因果因子。
正解统计独立是数据层面的性质,因果独立是机制层面的性质。两个因子可能在观测上独立,但共享同一个上游原因;也可能因果独立却在观测上相关。解耦表示只是“因果发现”的必要不充分条件——它提供了干净的因子,还需要干预实验才能确认因果箭头。
为何常见:观察层面与机制层面的混淆,是因果推断学习中最常见的思维陷阱。盐和糖在观测上独立,但它们的产量可能都受同一个“超市库存”上游因素驱动。
面试题
Q1. 在隐变量发现中,关于隐变量的描述哪个正确?
- A.隐变量是噪声的替代品
- B.隐变量可以直接观测
- C.隐变量驱动观测数据生成← 正确答案
- D.隐变量等同于数据标签
答案:C。隐变量的核心特征是“不可直接观测”且“驱动生成过程”。A把隐变量等同于噪声是错误的,噪声是不具因果含义的随机扰动,而隐变量是有结构的生成因子。B恰恰相反,隐变量正因为不可观测才需要推断。D混淆了标签与因果因子。
Q2. VAE中重参数化技巧解决的核心问题是?
- A.网络过拟合严重
- B.采样过程不可求导← 正确答案
- C.梯度爆炸不收敛
- D.数据分布不均衡
答案:B。从分布N(μ,σ²)中直接采样z,这个随机采样操作没有梯度路径,梯度无法回传到编码器。重参数化把采样改写为z=μ+σ⊙ε,让随机性来自外部噪声ε,而μ、σ成为可导的确定性变换,从而让反向传播得以进行。
Q3. 下列哪些属于β-VAE训练目标中的组成部分?
- A.重构误差惩罚项← 正确答案
- B.KL散度正则约束← 正确答案
- C.对抗判别损失项
- D.交叉熵分类损失项
答案:AB。β-VAE的损失 = 重构项 + β·KL正则项。重构项确保解码器能还原输入(按谱做菜要像原菜),KL正则约束隐分布贴近先验(菜谱别太离谱)。对抗判别损失属于GAN家族,交叉熵分类损失属于有监督分类,都不是β-VAE的必要组成。
Q4. ELBO中KL散度项的主要作用是?
- A.推动重构结果更精准
- B.约束变分分布贴近先验← 正确答案
- C.降低训练计算复杂度
- D.增强数据增强效果
答案:B。KL(q(z|x)‖p(z))衡量“猜测菜谱分布”与“先验菜谱库”的偏离程度。最小化它,是让脑内模拟器的猜想不偏离常识范围。重构项负责“A对”(菜谱要能还原菜),KL项负责“不出格”(菜谱不能太离奇)。
Q5. 解耦表示的核心特征是?
- A.隐变量维度数最少
- B.每维控制独立语义← 正确答案
- C.重构误差严格为零
- D.隐空间与观测同维
答案:B。解耦(disentanglement)要求每个隐变量维度单独控制一个可解释的语义属性——盐管咸、糖管甜。维度数最小化是压缩的目标而非解耦的目标;重构误差为零既不现实也非必需;隐空间维度由设定的z_dim决定,一般远小于观测维度。
Q6. 增大β-VAE中的β可能导致?
- A.隐因子独立性增强← 正确答案
- B.重构保真度下降← 正确答案
- C.训练速度必然提升
- D.隐空间信息量减少← 正确答案
答案:ABD。β越大,KL正则的惩罚越强,隐变量各维度会被迫更独立(A对),但这同时压缩了信息瓶颈,编码器会丢弃难以压缩的细节,导致重构保真度下降(B对)、隐空间信息量减少(D对)。C“训练速度必然提升”没有理论依据,β与收敛速度无直接关系。
Q7. 因果推断中do算子表示的含义是?
- A.条件概率中的观测
- B.外部干预建模手段← 正确答案
- C.缺失数据填补方式
- D.噪声剔除数学工具
答案:B。do算子表示外部干预,即强制把某个变量设为特定值,与观察到的自然发生不同。比如do(盐量=2倍)意味着“强行放两倍盐”,而不是“看到某道菜恰好盐量偏高”。这是因果推理区别于关联分析的核心操作。
Q8. 因果分解式中Pa(xi)表示的是?
- A.xi的参数集合
- B.xi的父节点集合← 正确答案
- C.xi的概率分布
- D.xi的相似样本
答案:B。Pa(xi)(parents)是因果图中xi的直接原因变量集合——即“谁直接决定了xi”。整桌菜的联合分布被拆成每个变量“在给定直接原因之后的独立规律”连乘。参数集合、概率分布、相似样本都与因果父子关系无关。
Q9. 隐变量发现面临的核心挑战有哪些?
- A.因果结构不可识别← 正确答案
- B.分布外泛化困难← 正确答案
- C.增加数据量即可解决
- D.解耦评估缺乏标准← 正确答案
答案:ABD。不同的隐变量结构可能产生完全相同的观测分布(不可识别性,A对);训练数据只覆盖部分因子组合,分布外干预预测易失真(B对);解耦质量目前缺乏统一公认的度量指标(D对)。C错误——因果不可识别性不是靠堆数据就能解决的,再多数据也无法区分观测等价的因果图。
Q10. 反事实推理最准确的特征是?
- A.由事实观测推演假设干预结果← 正确答案
- B.由假设干预预测未来分布
- C.对历史数据重新无偏采样
- D.对未来观测做无条件预测
答案:A。反事实的核心是“已知事实+假设性干预”:在给定实际发生的观测x_obs(菜出锅了且很咸)时,追问“若当初把隐因子Z设为z'(少放糖),结果将如何”。它必须同时包含“事实条件”与“假设干预”两个要素。B是前瞻性预测(do算子),C是重采样,D是无条件预测,均不构成反事实。