深夜的剧场空无一人,你这位话剧导演还坐在观众席上,望着刚刚谢幕的《罗密欧与朱丽叶》。罗密欧与朱丽叶相恋、殉情,结局凄美。可你的脑海里突然冒出一个挥之不去的念头:“如果罗密欧那天晚上没有走进舞会,这一切还会发生吗?”你很想倒回午夜前的那一刻,轻轻剪去罗密欧入场的那个画面,然后重新播放,看看两位主角是否都能活下来。在因果科学中,这种“对已发生的事假设不同条件”的追问,叫做反事实。 要严谨地回答它,不能靠胡思乱想,而是需要三样东西:一份完整的剧本——结构因果模型,它写下每个角色在什么情境下会做什么决定;演员们在每个岔路口的反应表——潜在响应变量,记录每个背景条件下角色会给什么反应;以及一把能精准剪掉某一帧而不碰其他画面的外科手术剪——do 算子。剧本、反应表、手术剪按“倒带 → 剪辑 → 重播”的流程运作,就构成了反事实的严格数学定义。它也是因果推理这座金字塔的最高一层,支撑着可解释 AI 与安全对齐等前沿方向。
对 AI 从业者而言,反事实定义是让模型回答“假如……会怎样”的理论地基,是构建可解释 AI、做安全对齐的关键数学语言。掌握它,你才能从“看到相关性”升级为“推演因果性”。
目录
可视化演示
展示Pearl因果阶梯三层级(观察-干预-反事实)、反事实三步计算流程(abduction-action-prediction)、以及反事实与干预的本质区别对比。
本节配有交互动效(进入视口后自动加载,约 3KB)。
Pearl因果阶梯三层级 L1观察P(y|x) L2干预P(y|do x) L3 cf P(y_x) 反事实是因果推理最高层级,回答假如类问题。
反事实含义:导演的“假如”之问
深夜的剧场,你这位导演看完《罗密欧与朱丽叶》的谢幕,望着空空荡荡的舞台,脑中冒出一个问题:“如果罗密欧没有参加舞会,他们还会殉情吗?”这个念头不请自来,挥之不去。其实每个普通人都做过类似的推导:考砸了想“要是昨晚多复习一小时就好了”,分手了想“如果那天没有说那句话”。生活里这种“事后评判”,在因果科学中有一个正式的名字——反事实。
反事实(counterfactual)字面意思就是“与事实相反”。它描述的是这样的推理结构:已知现实世界中 X 的取值是 x,Y 的取值是 y;现在假设在同一个世界、同样的背景下,把 X 强行改成另一个值 x',那么 Y 会变成什么?注意措辞里的关键词——“同一个世界背景下”。反事实不是去看别人,而是问“同一个个体在另一种剧本里的人生”。
用符号表达,数学家 Pearl 用一个带下标的变量记号 \(Y_{x'}\) 表示“在干预设定 \(X=x'\) 的世界中 Y 的取值”,再用竖线右侧表明这是“已知现实证据”之后的追问。反事实问题可以写成:
你作为导演,剧本里罗密欧入场了(\(X=x\)),两人殉情了(\(Y=y\))。现在你问“如果他不入场(\(X=x'\))会怎样”(\(Y_{x'}\))。这个问句看似简单,但要严谨回答,还需要两件东西:一份完整的剧本,以及演员们的“反应表”。
- 反事实变量 \(Y_{x'}\)下标 x' 是“外科手术式设定值”,代表假如条件被改成 x',这时 Y 会取什么值
- 等号右端 \(y'\)在改动条件之后,Y 将产生的新结果
- 竖线与括号 \((X=x,\;Y=y)\)竖线右侧是现实证据,即“已经发生的事实”
- 整体联系这个式子把“现实证据”和“假设条件”放进同一个推理框架,这正是反事实区别于普通条件概率的关键
结构因果模型:完整的剧本
你到后台找到道具师,他说:“要回答你的假如之问,先得有一份完整的剧本。”这份剧本不只是台词,而是写清了整部戏的运转规则:谁在什么情境下会做出什么选择、角色的哪些举动由环境决定、哪些不可控的随机因素(比如演员当天的心情)会影响表演。在因果科学中,这份“剧本”叫做结构因果模型(Structural Causal Model,SCM)。
SCM 用三个部分描述世界:外生变量 U 相当于“天意”或“背景”,如天气、演员的随机灵感,它们不由模型内部解释;内生变量 V 是由模型内其他变量决定的状态,如罗密欧是否入场、是否喝下毒药;结构方程 F 是一组规则,说明每个内生变量如何由它的“父变量”和外生变量推出来。举个例子:球赛是否进行这个内生变量 B,由“是否下雨 A”和“场地随机因素 \(u_b\)”共同决定:\(B = (A\ 不下雨)\) 且(场地噪声够好)。
正式地写,SCM 是一个三元组,其中第 i 个内生变量的结构方程为:
有了这样一份“完整剧本”,导演才知道:罗密欧是否参加舞会,是由“邀请函是否送达”(父变量)、“他当天的任性程度”(外生因素)共同决定的。下一步,道具师又拿出一本厚厚的册子——演员们的“反应表”。
- 三元组 \((U,V,F)\)剧本三件套——背景、变量、规则
- 外生变量 U来自模型外部、不由剧本解释的因素,相当于演员当天的即兴状态
- 内生变量 V模型内部要被解释的每个角色状态 \(X_i\)
- 结构方程 \(x_i = f_i(pa_i, u_i)\)第 i 个变量的取值由其父节点 \(pa_i\)(影响它的变量)和外部随机因素 \(u_i\) 共同决定
潜在响应变量:演员的“反应表”
道具师从箱子里掏出一本泛黄的册子,封面上写着“演员反应表”。每个演员在册子里都有一页,记录着:“如果当晚收到邀请函,他会入场;如果没收到,他会留在城外。”也就是说,演员在不同剧情分支下会怎么演,早已在表中写得清清楚楚。在因果科学里,这张“反应表”称为潜在响应变量(potential response variable)。
潜在响应的思想是:对于每一个可能的干预值 x,世界都有一个“如果 X=x 时结果是什么”的答案,记为 \(Y_x\)。这个答案对每个背景 u(相当于某个具体演员的独特气质加上当天状态)都存在。现实世界只显示其中一个入口:当 X 实际取值为 x 时,我们看到的 Y 只是反应表中的一行;其余行没有机会被看到,但它们依然客观存在——这就是“潜在”的含义。
反事实推理正是在这张表上做“查表”。定义式写作:
其中 \(M_x\) 是经过干预后的模型。这个式子给出了“反应表”的数学形态。
反应表让导演明白:要回答“罗密欧没入场会怎样”,不能靠猜,而是去查“罗密欧”这一页里“没收到邀请函”那一栏写着什么。但查表之前有个麻烦——册子上写的是“如果没收到邀请函”的完整反应,可现实里邀请函已经送达了,怎么把那一栏调出来?道具师神秘一笑,拿出一把金光闪闪的外科手术剪。
- 下标 x干预设定值,决定查“反应表”的哪一列
- 参数 u具体背景,决定查哪一行
- 定义符号 \(\triangleq\)表示“定义为”,右边是它的展开形式
- 取值函数 \(\operatorname{val}_Y(M_x,\, U=u)\)在修改后的剧本 \(M_x\) 中、背景为 u 时,Y 的取值
外科手术干预:时光摄影机的“定点剪辑”
道具师手里的手术剪不是用来剪布景的,而是用来“剪剧本”的。它的名字叫 do 算子。操作方式很奇特:想要模拟“如果罗密欧没参加舞会”,你不需要改动他的性格、不需要改变朱丽叶的表姐、甚至不改变当晚的风向——你只需要剪断“邀请函 → 罗密欧入场”这条因果连线,然后把“罗密欧入场”这个变量直接固定为“否”,其余所有情节照旧运转。
这正是 do 算子与普通“条件”的本质区别。条件 \(P(Y \mid X=x)\) 就像问“在所有 X=x 的日子里,Y 分布如何”,它混进了其他变量可能同时变化的影响;而干预 \(\operatorname{do}(X=x)\) 则是“强行把 X 设为 x,同时剪断所有指向 X 的箭头”,从而切断了混杂因素的后门路径。结构上,干预产生了一个新模型 \(M_x\):把 X 的结构方程 \(f_x\) 替换成常数 \(X=x\),其他方程全部保留。干预分布写作:
就像导演用手术剪精确地剪掉“邀请函已送达”这一帧画面,再把“罗密欧入场”钉死为“否”,其他一切(朱丽叶的家族、神父的计划)都原封不动。但导演发现还差最后一步:剪完之后要如何“重播”?这就引出了反事实的完整三步流程。
- 左边 \(P(y \mid \operatorname{do}(X=x))\)干预分布,问“强制 X=x 时 Y 的概率”
- 右边 \(P_{M_x}(Y=y)\)新剧本 \(M_x\) 里 Y 的分布
- 替换规则 \(X \leftarrow x\)把 X 的方程换成常数赋值,相当于剪断所有入边
- 与条件分布的区别干预剪断了从祖先到 X 的箭头;普通条件 \(P(y \mid x)\) 没有剪断任何箭头
形式化定义:倒带—剪辑—重播
道具师把三样工具摆在桌上:剧本(SCM)、反应表(潜在响应)、手术剪(do 算子)。“这三样配合起来,就是完整的时光摄影机。”他说,“操作只有三步:倒带、剪辑、重播。”因果科学中,反事实的严格定义正是这个三步流程的数学化:外推(abduction)、干预(action)、预测(prediction)。
第一步“外推”:既然现实已经发生(比如罗密欧确实入场了),我们就用这个事实去筛选“反应表”,找出与事实相符的背景切片,更新对 U 的信念,得到 \(P(U \mid e)\)。第二步“干预”:实施 \(\operatorname{do}(X=x')\),把罗密欧入场固定为“否”。第三步“预测”:在修改后的剧本里重新计算 Y 的分布,得到反事实概率。三步合并,就是反事实的黄金公式,其中 e 表示观察到的证据(现实事实):
导演倒带(外推:确认剧本里罗密欧确实入场了,并把“他当时的心境”这个背景锁定下来)、剪辑(干预:把入场脚本剪掉)、重播(预测:让摄影机顺着新剧本演一遍)。答案也许不是唯一的,但因为有了这三步,它第一次成为可计算、可验证的数学对象。
- 左边 \(P(Y_{x'}=y' \mid e)\)已知证据 e 时,反事实“若 X 被设为 \(x'\),则 \(Y=y'\)”的概率
- 求和符号 \(\sum_u\)对背景空间 U 的所有可能切片求和,也就是查遍反应表的每一行
- 第一项 \(P(Y_{x'}=y' \mid U=u)\)在特定背景 u 下,干预后的剧本里 Y 的取值概率——对应“预测”步
- 第二项 \(P(U=u \mid e)\)给定证据后背景 u 的后验概率——对应“外推”步
- 点积联动两项相乘再对 u 求和,等于“按证据加权平均所有背景下的预测”
因果推理层级:看戏的三种境界
看同一出《罗密欧与朱丽叶》,观众有三种境界。第一种:看热闹——“罗密欧入场了,然后他们相爱了”;第二种:改戏——“如果我删掉舞会这一幕,故事会不会变”;第三种:问假如——“戏已经演完,罗密欧已经入场,但我还是想知道:如果当时他没入场,朱丽叶会不会嫁给帕里斯?”Pearl 把这三种境界概括为因果推理的三个层级。
第一层级是关联(seeing),回答“看到 Y 和 X 同时发生时,\(P(y \mid x)\) 是多少”,它只依赖观察数据,不做任何改动。第二层级是干预(doing),回答“如果主动去做 \(X=x\),Y 会怎样”,这需要 do 算子,需要知道因果结构。第三层级是反事实(imagining),回答“已知现实 e,假设当初 \(X=x'\),Y 会怎样”,它把观察证据和干预动作同时纳入,是金字塔尖。三个层级之间有严格的关系——上层能推出下层,下层推不出上层:
导演那晚的“假如”之问,不是第一层(看热闹),也不是第二层(改戏重演),而是第三层——在已经发生的悲剧之上,怀着“如果当初”的念头做严谨推演。这正是反事实定义在整个因果理论中占据最高层级的原因。
- 第一层 \(\underbrace{P(y\mid x)}_{L_1\ \text{seeing}}\)看戏,只统计“看到 x 时 y 的比例”,不做任何改动
- 箭头 \(\xrightarrow{\ \mathrm{do}\ }\)从观察到干预,需要 do 算子介入
- 第二层 \(\underbrace{P(y \mid \operatorname{do}(x))}_{L_2\ \text{doing}}\)动手改戏,强制 \(X=x\) 再看结果
- 第三层 \(\underbrace{P(y_{x'} \mid x,\, y)}_{L_3\ \text{imagining}}\)已知结局后问假如,把观察证据与干预动作合起来
前沿应用:从复盘悲剧到指导未来
剧场里的时光摄影机,最初是用来复盘悲剧的;但聪明的导演很快发现,它还能用来指导下一部戏的编排——新剧本里,女主角要不要在第二幕出场?把“出场”剪掉重播一遍,就能预判剧情走向。现实中,反事实定义正以类似的方式,成为 AI 领域最前沿的“指导工具”。
在可解释 AI 中,当用户的贷款申请被模型拒绝时,光说“模型计算出的风险分数是 0.82”并不能让人信服;如果模型能回答“假如月收入再高 2000 元,这次申请就会被批准”,解释立刻就清晰了。这就是反事实解释(counterfactual explanation)——把分类器的决策转换成“最小改动”的假如叙事。在安全对齐中,反事实评估解决一个致命难题:系统在真实世界中只有一个行为轨迹,无法平行试错。通过结构因果模型,AI 可以回答“如果传感器当时没有误判,车辆是否会追尾”“如果用户的提示词里没有这句攻击性输入,模型是否还会泄露隐私”这类假如问题,从而在灾难发生之前,用想象力预演灾难。算法公平审计也用反事实检验“如果申请人性别不同,决策是否依然相同”。
这些应用的共同数学核心,都是下面这个“假如问题求解器”——给定现实证据 e,在所有可能结果中挑出反事实概率最高的那个:
从剧场到银行、从自动驾驶到 AI 安全,那把时光摄影机换了个场景依然好用。它让机器不止会“看”,还会“想象”——而这,正是因果推理赋予人工智能最强的一层能力。
- 最优答案 \(y^{*}\)表示“假如这样,最可能的结果”
- \(\arg\max_{y'}\)在所有候选结果中找出使概率最大的一项
- 反事实概率 \(P(Y_{x'}=y' \mid \mathbf{e})\)在证据 e 下,干预设定 \(X=x'\) 时 \(Y=y'\) 的概率
- 整体含义回答“假如”类问题,就是求这个概率的最大值
AI 应用场景
信贷风控的反事实解释
阶段:模型可解释与结构化输出
解决的问题:传统风控模型只输出一个拒绝分数,客户和业务员都不知道“差在哪、差多少”。AI 接入反事实生成后,可以回答“假如月收入提高 2000 元,贷款申请是否会被批准”,把黑盒决策变成可沟通、可申诉的透明结论。
具体案例:某银行在信贷审批系统中部署结构因果模型,将年龄、收入、负债率、征信查询次数等变量用因果图连接起来。当一位自由职业者被拒贷时,系统生成反事实解释:“在保持您其他信息不变的前提下,若月收入增加 2000 元或征信查询次数减少 1 次,通过概率将从 12% 升至 74%。”客户据此调整申请材料,模型的公平性与用户体验同时提升。
自动驾驶的安全对齐评估
阶段:安全对齐与故障归因
解决的问题:自动驾驶系统在真实路上不能反复试错,传统测试无法覆盖“如果当时没误判会怎样”。反事实评估用 SCM 在数字孪生世界里剪掉“传感器误判”这一帧,重播事故发生前的场景,判断事故是否依然发生,从而区分“传感器故障”与“决策算法缺陷”的责任归属。
具体案例:某车企在仿真平台上对一起真实碰撞事故建模:感知模块把红灯误识别为绿灯(X=1),车辆未减速导致碰撞(Y=1)。工程师用反事实计算“若感知正确(X=0),碰撞是否还会发生”,发现碰撞概率从 95% 降至 3%,于是将修复重心放在感知模块而非常规的制动系统,大幅提升了迭代效率。
医疗决策的反事实疗效分析
阶段:个体化决策支持
解决的问题:传统随机对照试验给出的是群体平均疗效,无法回答“这位患者若当初服用该药,病情会怎样”。反事实分析把患者的病史、基因、生活习惯作为背景 U,通过 SCM 生成个体化假如推演,辅助医生做精准用药决策。
具体案例:一家医院利用结构因果模型分析高血压患者数据,对一位已服用旧药但效果不佳的患者,模型回答“若 3 个月前换用新药,其收缩压将比当前低 8 mmHg,同时发生头晕的副作用概率仅 6%”。医生据此与患者沟通换药方案,患者依从性显著提高。
Python 演示
"""用结构因果模型回答反事实问题: 如果强制取消球赛, 心情会怎样?"""import numpy as np class RainGameSCM: """降雨影响球赛进而影响心情的小型结构因果模型. 内生变量 V: X=降雨, B=球赛是否照常, C=心情指数 外生变量 U: u_x, u_b, u_c 为背景噪声 结构方程 F: X = 1 if u_x > 0 B = 1 if X == 0 and u_b > -0.5 C = 0.5 * B + u_c """ def __init__(self, seed=42, n=2000): rng = np.random.default_rng(seed) # 外生背景变量: 天气, 场地, 情绪的随机因素 self.u_x = rng.normal(0, 1, n) self.u_b = rng.normal(0, 1, n) self.u_c = rng.normal(0, 1, n) # 现实世界: 让结构方程运转一遍 self.rain = self.u_x > 0 self.game = (~self.rain) & (self.u_b > -0.5) self.mood = 0.5 * self.game.astype(float) + self.u_c def abduction(self, obs_game): """第一步 倒带: 保留与观察事实一致的全部背景切片""" mask = self.game == obs_game return self.u_x[mask], self.u_b[mask], self.u_c[mask] def action(self, u_c, force_game): """第二步 剪辑: 外科手术式固定 B, 切断降雨对球赛的影响""" mood_new = 0.5 * float(force_game) + u_c return mood_new def counterfactual(self, obs_game, force_game): """第三步 重播: 在干预后的模型中预测心情""" _, _, u_c = self.abduction(obs_game) return self.action(u_c, force_game).mean() def condition(self, force_game): """对照: 普通条件概率 P(C | B=force_game)""" return self.mood[self.game == force_game].mean() if __name__ == "__main__": model = RainGameSCM() cf_mean = model.counterfactual(obs_game=True, force_game=False) cond_mean = model.condition(force_game=False) print(f"现实(球赛照常)下心情均值: {model.mood[model.game].mean():.3f}") print(f"反事实(如果强制取消)预测: {cf_mean:.3f}") print(f"条件概率 P(C|B=取消) 均值: {cond_mean:.3f}") print(f"反事实与条件概率的差异: {cf_mean - cond_mean:.3f}")
self.game = (~self.rain) & (self.u_b > -0.5)结构方程:球赛是否照常,由“没下雨”和“场地条件充分”共同决定,这正是剧本里的角色规则def abduction(self, obs_game):三步法第一步:从现实世界中筛选出“球赛照常”的样本,锁定它们的背景切片mask = self.game == obs_game相当于用时光摄影机倒带后,只保留与已发生事实相符的那部分世界切片mood_new = 0.5 * float(force_game) + u_c干预后的结构方程:B 被外科手术式固定,不再由降雨决定,只保留情绪噪声的影响return self.action(u_c, force_game).mean()在修改后的模型上重播,对所有背景切片求平均,得到反事实期望cf_mean = model.counterfactual(obs_game=True, force_game=False)提问:“在现实球赛照常的前提下,如果当初强制取消球赛,心情会怎样?”cf_mean - cond_mean反事实与条件概率的差,直观展示“挑选过的背景”与“原样保留的背景”造成的选择偏差
常见误区
误区初学者常认为“如果没下雨,球赛会怎样”就是统计条件概率,用历史数据筛选“没下雨”的日子看球赛比例即可。
正解条件概率只回答“没下雨的日子里球赛进行的比例”,它混入了“因没下雨所以进行”和“即使下雨也可能进行”等混杂因素;反事实则锁定住该样本的背景 u,只改变 X 值,并切断 X 的其他影响路径。就像时光摄影机重播时只剪掉罗密欧入场,其他所有细节(演员的即兴发挥、灯光、道具)都保持原样;条件概率则像是换了一批演员来演。
为何常见:因为在真实数据中永远看不到“同一个个体在不同世界”的结果,人们容易把不同个体之间的差异误当成同一个体的因果差异。
误区以为 do 算子就是反事实,两者是同一件事。
正解do(X=x) 是干预层级的操作,执行它不需要知道“现实已经发生了什么”;反事实则是“在已经观察到 \(X=x\)、\(Y=y\) 的前提下,假设改设为 \(x'\) 会怎样”,必须先吸收观察证据(更新 U)再做干预。类比到剧场:do 是“导演直接拍板改剧本”,不问过去的演出;反事实是“先看完已经完成的演出,再倒带改那一帧”。
为何常见:两者都涉及“改变 X”,形式上很相似,但反事实多了一个“给定证据 e”的前提,这个前提恰好是干预层级没有的。
误区认为只要数据足够多,反事实问题就能自动被回答。
正解纯观察数据只能回答关联层级的问题(\(P(y \mid x)\));要回答反事实,必须要有结构因果模型——包括结构方程、因果图和外生变量的分布。没有模型的反事实是空中楼阁,就像没有剧本、只有一堆演员的花絮视频,你无法严谨推演“如果当年没演这一幕会怎样”。
为何常见:大数据的成功让很多人误以为“相关即因果”,忽略了反事实问题中“世界如何运转”的结构信息不可从数据中凭空长出来。
误区认为反事实只能处理“下雨/不下雨”“入场/不入场”这类非黑即白的问题。
正解连续变量同样适用。SCM 的结构方程可以是任意函数,X 可以被设为任意值 \(x'\),比如“收入增加 2000 元”“温度升高 1.5 度”。关键不是变量的类型,而是你掌握了描述变量之间如何相互影响的结构方程与背景分布。
为何常见:教科书常以二值例子引入反事实,导致学习者误以为这是方法的边界。
误区以为反事实一定给出一个唯一的答案,比如“如果没入场,他一定不会死”。
正解反事实往往给出的是一个概率分布。因为给定证据之后,背景 U 可能依然存在不确定性(外推得到的 \(P(U \mid e)\) 不是单点),所以三步法的输出是“有多可能”,而不是“一定会”。导演重播十次,可能有九次罗密欧死在别处,一次活了下来——这个比例本身就是反事实的答案。
为何常见:人脑的直觉叙事倾向把“假如”讲成确定的故事,而数学上不确定性始终存在。
面试题
Q1. “如果昨晚没下雨,球赛就不会取消”这种句式属于哪种推理?
- A.相关分析
- B.干预推理
- C.反事实推理← 正确答案
- D.描述统计
答案:C。这句话是对已发生的现实(下雨了、球赛取消了)提出相反的假设,属于典型的反事实推理。相关分析只描述变量间的统计关联,干预推理强调主动操作,描述统计则只是概括数据特征。
Q2. 执行 do(X=x) 这种外科手术式干预时,首要的结构操作是什么?
- A.删除 X 的所有入边← 正确答案
- B.删除 X 的所有出边
- C.删除全部结构方程
- D.增加 X 的随机噪声
答案:A。do(X=x) 的核心是切断所有指向 X 的箭头(入边),再把 X 固定为常数 x,这样外部混杂因素无法再通过其他路径影响 X。出边应当保留,因为 X 对下游 Y 的影响正是我们关心的因果效应。
Q3. Pearl 反事实三步法的正确顺序是?
- A.预测再干预再外推
- B.外推再干预再预测← 正确答案
- C.干预再外推再预测
- D.外推再预测再干预
答案:B。三步法依次是:外推(用观察证据更新背景 U 的后验)、干预(实施 do(X=x') 修改模型)、预测(在新模型下计算 Y 的分布)。顺序不能颠倒,就像时光摄影机必须先倒带、再剪辑、最后重播。
Q4. 反事实记号 \(Y_x\) 中的下标 x 表示什么?
- A.现实观测到的 X 值
- B.被干预设定的 X 值← 正确答案
- C.X 变量的方差大小
- D.X 背后的噪声项
答案:B。下标 x 表示“在干预 \(\operatorname{do}(X=x)\) 下”的设定值,是反事实世界中的假设条件,而不是现实观测到的值。现实观测值写在竖线右侧的证据部分。
Q5. 下列哪些属于结构因果模型 SCM=(U,V,F) 的组成部分?
- A.外生变量 U← 正确答案
- B.内生变量 V← 正确答案
- C.结构方程 F← 正确答案
- D.损失函数 L
答案:ABC。SCM 三元组由外生变量 U、内生变量 V 和结构方程 F 构成,描述“剧本”的背景、状态与规则。损失函数是机器学习训练中的概念,不属于 SCM 的组成部分。
Q6. 给定观察证据 e=(X=1, Y=0) 时,反事实 \(P(Y_{X=0}=1 \mid e)\) 三步法中的“外推”步骤计算什么?
- A.P(U | e)← 正确答案
- B.P(Y | X)
- C.P(X | U)
- D.P(Y_{X=0})
答案:A。外推步骤是根据现实证据 e 更新背景变量 U 的后验分布 \(P(U \mid e)\)。它相当于锁定“反应表”中与事实相符的行,为后续干预与预测提供加权依据。P(Y|X) 是关联层级内容,P(X|U) 方向反了,P(Y_{X=0}) 忽略了证据。
Q7. 下列哪个属于因果推理层级中的最高层?
- A.关联层级 seeing
- B.干预层级 doing
- C.反事实层级 imagining← 正确答案
- D.观察层级 watching
答案:C。Pearl 的因果层级由低到高依次是:关联(seeing)、干预(doing)、反事实(imagining)。反事实需要同时依赖观察证据和干预操作,是金字塔塔尖,能回答“假如当初”类问题。
Q8. 关于条件概率 \(P(Y \mid X=x)\) 与反事实概率 \(P(Y_{X=x} \mid e)\) 的区别,下列说法正确的是?
- A.前者不区分因果方向← 正确答案
- B.后者需要结构因果模型← 正确答案
- C.前者不需要任何干预← 正确答案
- D.两者在数值上完全相同
答案:ABC。条件概率只是统计“看到 X=x 时 Y 的分布”,不区分因果方向,也不需要干预;反事实概率必须基于 SCM,先吸收证据 e 再做 do 干预,两者数值一般不相等。D 错在把两者混为一谈。
Q9. “如果罗密欧当晚没参加舞会”要得到严谨答案,相当于在剧本(SCM)上执行什么操作?
- A.增设一个全新角色
- B.剪断入场变量入边← 正确答案
- C.删除整个第一幕
- D.强制更换女主角
答案:B。正确做法是剪断“邀请函 → 罗密欧入场”这条入边,并把“入场”固定为“否”。这对应 do 算子:只改动一个变量,其余剧情结构保持不变,而不是大规模增删角色或场景。
Q10. 反事实推理在 AI 安全对齐中的应用包括哪些?
- A.评估极端输入下的潜在危害← 正确答案
- B.判定指令微变时的伤害风险← 正确答案
- C.用于图片超分辨率生成
- D.反事实验证系统行为的鲁棒性← 正确答案
答案:ABD。安全对齐关心“如果当时条件不同,AI 是否会造成伤害”。反事实可用于评估极端输入下的危害、指令微小扰动下的伤害风险,以及通过假如推演验证系统鲁棒性。图片超分辨率是生成任务,与反事实对齐无关。