市公安局刚成立了一个“AI 探员质检组”,组长是老刑警周建国。他的任务不是抓犯人,而是考核一批来应聘探员的 AI 模型——看它们到底有没有“因果脑”。老周说:“背案卷谁都会,我要考的是三件事:能不能画出嫌疑人的关系网,能不能做现场重现实验,能不能回答'假如当时'。”冰淇淋销量和溺水人数在夏天一起涨,小模型欢快地回答“冰淇淋导致溺水”,老周当场叹气:这是典型的“相关幻觉”。为了公平把关,他还得检查自己的考卷靠不靠谱,会不会误判人才。这套考核方案,就是 AI 因果推理评估的完整轮廓。
掌握因果推理评估,你就能分辨模型是“背答案”还是“真懂因果”,为 AI 能力量化提供一份可复现、可信赖的度量标尺。
可视化演示
展示因果图构建、反事实推理与干预效应预测的评估过程,可视化因果推理能力的多维度评测指标。
本节配有交互动效(进入视口后自动加载,约 3KB)。
因果图构建与干预分析 构建因果有向无环图标识变量间因果关系 干预操作do(X)观察下游变量效应变化 do(X=x) 因果图区分因果与统计关联
因果推理概述
老周的第一课,是给 AI 探员看一组“诡异现场”:夏天到了,街角冰淇淋店销量暴涨,同时游泳池溺水人数也涨了。他问:“冰淇淋导致溺水吗?”小模型立刻回答“是,因为两者同步上升”。老周叹气——这是典型的“相关幻觉”:两个变量一起涨,背后可能只是有一个共同推手(烈日)在同时驱动它们。
模型在训练数据里学到的绝大多数规律,是“X 出现时 Y 容易同时出现”,这叫条件概率 P(Y|X)。但因果要求的是“把 X 拧成某个值,Y 才跟着变”,这叫干预概率 P(Y|do(X))。中间那个搅局者,就是同时驱动原因和结果的混淆因子。因果推理评测的第一使命,就是把这两种能力拆开量一量:哪些模型只会“看相关性”,哪些模型真正理解“拧开关”。
从 AI 能力谱系看,因果推理属于高阶推理能力,与分类、生成、检索不在一个层级。评测目标因此非常明确:把“背下来的知识”和“面对新因果结构的推理”分开计分。老周在考核表上写下结论:会背“夏天冰淇淋涨”不算探员,能说出“烈日才是元凶、冰淇淋只是路人”才算摸到因果的门槛。
- X 与 Y 的位置X 表示候选原因变量,Y 表示结果变量,箭头方向从因到果。
- 干预记号 do(X)读作“手动把 X 设定为某个值”,模拟实验中的控制,而不是被动观察。
- 左侧的干预概率在“人为设定 X”的世界里 Y 的分布,这才是真正的因果效应。
- 右侧的观察概率自然观测中“看到 X”时 Y 的情况,里面混着共同原因的杂质。
- 不等号的意义两者一般不相等,混淆越强,差异越大,这正是评测要捕捉的信号。
因果图构建
老周破案的第一步永远是画嫌疑关系网:谁认识谁、谁有作案时间、谁和死者有恩怨,箭头指向谁。这张“带方向的网”,在因果推理里叫因果图。它规定只画“导致关系”,不画“伴随关系”,所以必须是没有环路的闭合结构——专业说法是有向无环图(DAG),可以理解为一张不允许自己指回自己的组织架构图。
因果图里,节点是变量(人、事件、属性),边是从原因指向结果的箭头。烈日→冰淇淋、烈日→溺水这两条边成立,但冰淇淋→溺水这条边不该画。有了这张图,模型才能判断:要切断哪条路,才能看清真正的效应;哪条路径只是“路过”,不构成因果。这就是“节点与边”的语义:边 = 直接因果,缺边 = 没有直接因果。
评测的第一类任务由此诞生:结构学习。给模型一堆观测数据,让它还原背后的因果图,再与标准图比对箭头方向和边的有无。谁能把方向画对,谁才算理解机制,而不是只会输出相关系数矩阵。因果图构建题,考的就是模型“从数据废墟里重建现场”的能力。
老周把 AI 画的图拿给两位老探长盲评:箭头方向全对的是优等生,画成“人人相连”的关系网的一律打回重画。没有方向的网只是关系图,不是因果图——这就是评测因果图构建任务时最朴素的判分逻辑。
- 变量全体V₁ 到 Vₙ 是系统中所有变量的集合,对应关系网里的所有人事物。
- 父节点集合Pa(Vᵢ) 是因果图中直接指向 Vᵢ 的变量,相当于嫌疑人的“直接上线”。
- 连乘分解从因果金字塔顶端往下,每个变量只条件于它的父节点,再全部相乘。
- 等号的含义联合分布被因果图拆成可计算的骨架,图对了公式就成立,图错了全盘皆输。
干预效应预测
老周的现场重现实验是这样的:把嫌疑人按不同脚本重新调度,这回让 A 提前到场、B 按兵不动,观察结果是否改变。这种“人为拧动原因”的操作就是干预,记作 do(X)。干预的本质是斩断其他变量对 X 的“指挥链”,让 X 只被实验者控制,就像老周亲自给嫌疑人下指令,而不是等他自己行动。
观察与干预的区别,在医疗场景里最扎眼。病人群里观察到“吃药的人康复率高”,但吃药的人本身病情更轻——病情轻重同时决定了吃药和康复,它就是混淆因子。只看条件概率 P(康复|吃药) 会严重高估药效。这就是“干预 vs 观察”的全部张力:观察世界里有太多假装因果的路径,干预世界才干净。
评测的干预效应预测题,考的就是模型能否算出“扣除混淆后的净效应”。标准解法是后门调整:把混淆因子 Z 分层,每层内部比较,再按 Z 的分布加权平均。相当于老周把病人按病情分成五个组,每组内部再比吃药和不吃药,最后按各组人数比例汇总。能对未知数据也给出接近真值的效应预测,模型才算通过了这一关。
老周给 AI 发了一个“双盲实验模拟器”,必须能按 Z 分层重算效应才给分。他说:探员不能只报告现场看到什么,要能回答重演一遍会发生什么——干预效应预测,就是给 AI 装上一台时间机器。
- 干预目标把原因 X 固定为数值 x,这就是“人为拧开关”。
- 混淆集合Z 是同时影响 X 和 Y 的混淆因子集合,是后门路径上的“中间人”。
- 分层求和把样本按 Z 分层,每层求条件概率差,再按 Z 的分布加权汇总。
- 等式含义调整后的结果排除了混淆,等于在干预世界里重复了一千次实验。
反事实推理
老周最爱的问题是:“假如那晚你改走小路,命案还会发生吗?”现实里 X 取 x、Y 取 y 已经板上钉钉,反事实问的是:把 X 改成 x′,Y 会变成什么?这是平行世界里的推演——事实世界和假设世界同时存在,模型要一只脚踩在现实中,另一只脚踏进平行宇宙。
反事实比干预更进一步。干预是对“还没发生的事”做实验,反事实是对“已经发生的事”做假设。打个比方:干预是“明天我换条路走,会不会迟到”,反事实是“昨天我换了条路走,会不会逃过那场车祸”。后者需要模型牢牢记住既成事实作为约束,再去改写其中一个变量、重新推演全局。
评测的反事实题型包括:假如式问答(If only I had…)、后悔分析、故事结局改写。模型要在保持背景设定不变的前提下,只改动一个变量,重新给出新世界的结果。答对这类题,意味着模型能解耦“每个原因各自贡献了多少”,而不是把整条事件链囫囵吞下。
老周说,能回答“假如”的探员才让人放心——办案最怕的就是“当时如果……”。反事实评估,就是提前检验 AI 在真实世界里会不会有“后悔能力”,这也是人类因果智能最独特的部分。
- 事实条件已知现实世界中原因 X 取 x、结果 Y 取 y,这是不可更改的既定案情。
- 改动后的值把原因改为另一个值 x′,这是平行世界里的“假如”。
- 新世界结果Y 加下标 X=x′,表示干预改动后的世界里 Y 的取值。
- 反事实概率给定事实,求假如世界出现某结果的概率,公式本身就在模拟“后悔”。
评测设计原则
老周设计考卷有个铁律:一份好考卷不能只考一个点。因果推理评测的任务类型分三类:因果图构建、干预效应预测、反事实问答,分别对应“看清结构、算准效应、推演平行世界”。三类任务互为犄角:只会画图不会算效应,是纸上谈兵;只会算效应不会画图,是盲人摸象。
难度分层是第二原则。考卷从“概念识别”(判断哪条是因果边)到“机制理解”(解释为什么是因果)再到“反事实推演”(假如场景下的新结果),逐级爬坡。每个难度层只测一个能力维度,避免“答对了但不知道靠的是哪步推理”的模糊判分。可控性则是第三原则:用模板化生成器动态出题,同一套因果结构换上不同的背景人物,模型就无法靠背题过关。
评测总分采用加权设计:低难度层权重低,用来筛掉完全不会的;高难度层权重高,用来拉开顶尖模型的差距。加权评分让考卷的重心落在“真推理”上,而不是“刷基础题”上。老周的考卷分 A/B 卷动态生成,他说:探员要防的是死记硬背,考卷要防的是泄题——可控生成就是我的防泄密保险柜。
- 难度层级数K 是难度分层的总数,通常三层起步,称为概念识别、机制理解、反事实推演。
- 各层正确率aₖ 表示第 k 层题目上的平均正确率,是模型在该层的能力快照。
- 层级权重wₖ 是第 k 层在总分中的权重,难度越高权重越大。
- 加权求总总分等于各层正确率按权重加权求和,且所有权重之和为 1。
基准数据集
老周的题库来自两个保险柜。第一个柜子存真实历史卷宗:吸烟与肺癌的队列数据、药物与疗效的临床试验数据,这些是“真实因果数据”,外部有效性高,但因为伦理和成本无法无限扩充。第二个柜子存新编的虚构剧本:按已知因果图用程序生成的结构化数据,这就是“合成因果数据”,结构完全可控、想要多少有多少。两柜并用,才能既真实又全面。
数据选择策略的核心是覆盖:结构上要覆盖链式(A→B→C)、分叉(A→B、A→C)、对撞(B→C、A→C)等不同图形态;领域上要覆盖医学、电商、社会科学等多个场景。规模要求则体现在题量上——太少则统计噪声大,太多则成本失控。多样性保障让模型无法用“一招鲜”应付所有因果结构。
基准评测还要严防数据污染:大模型的训练语料很可能已经吞下了公开基准题。对策是“保持集”制度——把一部分新生成的题目锁在保险柜里,只在评测时取出,用完即弃,定期轮换。最终在保持集上报告准确率,同时附带标准误,让分数经得起复现检验。
老周把两个保险柜的钥匙分给不同的人保管:真实卷宗锁三年不换,虚构剧本天天更新。他说:“卷宗会泄密,剧本天天换,AI 探员想作弊没门。”基准数据集的攻防,本身就是评估科学的一部分。
- 真正例与真负例TP 是正确答案被答对的题数,TN 是错误答案被正确排除的题数。
- 假例FP 是把错误答案判对的题数,FN 是把正确答案判错的题数。
- 正确率所有判对题数除以总题数,得到模型在基准集上的单次表现。
评估指标校验
卷子改完了,老周还要做最后一件事:检查改卷标准本身靠不靠谱。如果两位判卷老师一个手松一个手紧,分数就完全失去意义。评估指标的可信度问题由此而来——你用来衡量模型的尺子,自己先得被量一量。
可信度检验包含三个层次:第一,同一模型多次运行,分数波动大不大?如果波动超过几个百分点,说明评估受随机性支配。第二,随机猜测模型的基线分数是多少?优秀指标的基线应该接近“瞎蒙”,而不是接近满分。第三,人工抽样复核的标注与自动评分一致吗?这就要用科恩卡帕系数(Cohen's Kappa)来度量两位“裁判”扣除运气后的一致性。
标准化的评估流程应当固定:提示模板、随机种子、采样参数全部写入评测配置,多次运行取均值加减方差,并报告相对随机基线的提升量。这样任何实验室拿到同一套配置,都能复现同一份分数。老周让两位资深探长背靠背独立阅卷,Kappa 达到 0.86 才盖章发布:“分数先得自己经得起检验,才能拿去检验 AI。”
- 观察一致率pₒ 是两位裁判实际给分相同的比例,相当于“表面默契度”。
- 期望一致率pₑ 是两人纯靠运气也能碰出相同结论的概率,相当于“基础缘分”。
- 分母1 − pₑ 是扣除运气后人类一致性的最大可能空间。
- 卡帕系数κ 是实际一致超出运气的部分,占最大空间的比值,越大越可信。
AI 应用场景
大模型因果问答评测
阶段:模型评测与能力验收
解决的问题:传统评测只看答题准确率,无法区分模型靠记忆还是靠因果推理。反事实问答集配合动态生成题,能可复现地量化“真因果能力”,避免被背题分数欺骗。
具体案例:某大模型团队上线前,评估工程师构造了“假如把治疗剂量减半,康复概率会怎样变化”的反事实题集,发现模型答案与后门调整结果偏差超过 30%。据此定位到训练数据中的虚假相关,重新调整了微调数据配比。
广告投放增量效果测量
阶段:因果效应估计与实验替代
解决的问题:广告投放的“增量”被用户自然购买倾向混淆,朴素比较点击率会严重高估投放效果。需要按用户活跃度等混淆因子做分层调整。
具体案例:某电商平台用后门调整法,按用户活跃度分层计算投放带来的增量转化,再用小规模 A/B 测试验证模型预测的干预效应是否逼近真值,最终将无效投放预算削减了 18%。
学术基准的一致性校验
阶段:基准发布与验收
解决的问题:新发布的因果推理基准,人工标注与自动评分可能不一致,直接用分数排名会产生系统性偏差。需用 Kappa 系数校验标注一致性,并报告相对随机基线的提升。
具体案例:研究团队发布因果推理基准前,请两位标注者独立判分 500 道题,Kappa 为 0.82,随后又检测到自动评分器对长答案存在偏好,修正后才公开榜单。
Python 演示
import numpy as npimport pandas as pd def simulate_data(n=2000, seed=42): """按因果图 Z->X, Z->Y, X->Y 生成观测数据""" rng = np.random.default_rng(seed) z = rng.normal(size=n) x = (1.0 / (1.0 + np.exp(-(0.8 * z + 0.3))) > 0.5).astype(int) y = 0.8 * x + 0.7 * z + rng.normal(size=n) return pd.DataFrame({"z": z, "x": x, "y": y}) def naive_effect(df): """朴素法: 直接比较 X=1 与 X=0 的 Y 均值之差""" return df.loc[df.x == 1, "y"].mean() - df.loc[df.x == 0, "y"].mean() def adjusted_effect(df): """后门调整法: 按 Z 分层求加权平均""" z_bins = pd.qcut(df.z, 5) total = 0.0 for _, sub in df.groupby(z_bins, observed=True): w = len(sub) / len(df) total += w * (sub.loc[sub.x == 1, "y"].mean() - sub.loc[sub.x == 0, "y"].mean()) return total if __name__ == "__main__": df = simulate_data() naive = naive_effect(df) adj = adjusted_effect(df) print("observation naive effect:", round(naive, 3)) print("backdoor adjusted effect:", round(adj, 3)) print("true causal effect: 0.8")
x = (1.0 / (1.0 + np.exp(-(0.8 * z + 0.3))) > 0.5).astype(int)混淆因子 Z 通过 sigmoid 映射影响 X 的取值,让 Z 成为“同时推动 X 和 Y”的幕后黑手。y = 0.8 * x + 0.7 * z + rng.normal(size=n)X 对 Y 的真实因果效应只有 0.8,Z 还额外贡献 0.7,为混淆埋下伏笔。def naive_effect(df):朴素法函数:不控制任何变量,直接把两组均值相减。return df.loc[df.x == 1, "y"].mean() - df.loc[df.x == 0, "y"].mean()只取 X=1 组的 Y 均值去减 X=0 组,Z 的干扰混在里面。z_bins = pd.qcut(df.z, 5)把 Z 切成 5 个分箱,近似实现“按层控制混淆因子”。for _, sub in df.groupby(z_bins, observed=True):在每个 Z 分层内,分别比较 X=1 与 X=0 的 Y 均值差。w = len(sub) / len(df)每层样本占比作为权重,等价于公式里的 P(Z=z)。total += w * (sub.loc[sub.x == 1, "y"].mean()层层加权求和,这就是后门调整的完整计算。print("observation naive effect:", round(naive, 3))输出对比:naive 虚高,adjusted 逼近真实因果效应 0.8。
常见误区
误区我看到冰淇淋销量和溺水人数在夏天一起涨,就说明冰淇淋导致溺水。模型在相关性任务上得分高,我就认为它懂因果。
正解同时上升可能只是共同原因在背后驱动。烈日同时推高冰淇淋销量和溺水风险,两者之间没有箭头。因果评估专门用干预题和反问题戳穿这类幻觉:真正懂因果的模型,在 P(Y|do(X)) 的考察下依然站得住,而不是只会复述“一起涨”。
为何常见:人类大脑天然爱把“先后”和“伴随”脑补成“因为所以”,这是进化留下的认知捷径,也是模型靠相关性拟合数据时的惯技。
误区把 X 固定住看 Y 的分布,那 P(Y|do(X)) 不就是 P(Y|X) 吗?做个条件概率筛选不就行了?
正解条件化只是“挑选”数据里已有的 X 组,并没有切断 Z→X 的路径;do(X) 要求所有混淆层级均匀摊平后再看效应。辛普森悖论就是经典反例:合并数据时一种结论,分层后完全相反。评测题专门设计这种陷阱来区分两类模型。
为何常见:两者都是“拿住 X 看 Y”,数学记号长得像,而训练数据里根本没有 do 符号,模型默认学到的全是条件概率。
误区把所有两两相关的变量连上线,再标上箭头方向,不就是因果图吗?相关矩阵一算,图就画出来了。
正解相关只刻画共变,方向可能完全画反。因果图的边必须由干预实验或结构学习算法来确定方向。老周画关系网靠的是动机链和时间线,不是“谁和谁常碰面”。评测时,反向边、多余边、缺失边都会被分别扣分。
为何常见:相关矩阵几行代码就能算,因果图需要额外假设和验证,初学者容易用热力图脑补箭头方向。
误区模型在反事实题上答对了,分数高,就算通过了因果评估。最终结论以准确率一锤定音。
正解答案对可能是记忆污染——训练语料里见过相似题。评估要构造“没见过的新因果结构”,还要用 Kappa 系数校验评分者一致性,并报告多次运行的方差。老周从不只看结论,还要听探员讲推理路径,路径不通,答案作废。
为何常见:准确率最直观,媒体也爱报大模型的榜单分数,人很容易高估单次分数背后的事实基础。
面试题
Q1. 因果推理评测主要考察 AI 模型哪两项核心能力?
- A.识别因果关系与反事实推理← 正确答案
- B.图像分类与目标检测识别
- C.文本翻译与语音合成生成
- D.数据压缩与哈希检索优化
答案:A。老周的考卷不考背诵,专考识别因果关系和反事实推演,这两项分别对应“看清结构”与“推演平行世界”;图像分类、文本翻译属于感知与生成能力范畴,不在因果评估维度内。
Q2. 关于 P(Y|do(X)) 与 P(Y|X),下列说法正确的是?
- A.两者在观测数据中总相等
- B.两者在关联数据中恒不相等
- C.干预效应一般不等于条件概率← 正确答案
- D.条件概率就是因果效应的量度
答案:C。do 是“拧开关”的干预,P(Y|do(X)) 与 P(Y|X) 在存在混淆时一般不相等,只在无混淆的巧合下才相等,所以 A、B 的“总相等/恒不相等”都太绝对,D 把观察和干预混为一谈。
Q3. “冰淇淋销量与溺水人数在夏天同步上升”体现的统计现象是?
- A.真实因果效应
- B.虚假相关现象← 正确答案
- C.干预后的直接效应
- D.反事实下的新结果
答案:B。烈日同时推高冰淇淋销量和溺水人数,两者只是共同原因驱动下的虚假相关;真正的因果需要干预实验确认,单靠同步上升不能下结论。
Q4. 在因果图评测中,混淆因子 Z 的核心特征是什么?
- A.仅影响原因变量不受结果影响
- B.仅影响结果变量不受原因影响
- C.同时影响原因变量与结果变量← 正确答案
- D.与所有变量都有直接的相连边
答案:C。混淆因子必须同时影响原因 X 和结果 Y,才会在 X 与 Y 之间打开一条后门路径;只影响一边不构成混淆,而 D 的“与所有变量相连”既不是必要条件也不是充分条件。
Q5. 后门调整公式 P(Y|do(X))=Σ_zP(Y|X,Z)P(Z) 的实质作用是?
- A.增加样本量提升统计功效
- B.消除混淆路径还原因果效应← 正确答案
- C.将干预变量离散化为分组
- D.提升模型的梯度收敛速度
答案:B。后门调整把混淆因子 Z 分层加权平均,等价于切断 Z→X 的后门路径,从而还原 X 对 Y 的净因果效应;它不增加样本、不做离散化、更不参与梯度训练。
Q6. 反事实推理题“假如当年没有吸烟,肺癌还会发生吗”属于?
- A.描述统计学的概括
- B.干预效应的外推预测
- C.平行世界假设下的推演← 正确答案
- D.监督学习的分类任务
答案:C。反事实是“已知事实 + 平行假设”的推演:现实里吸了烟、得了肺癌,现在把吸烟改成不吸烟,重推新世界的结果;它既不是描述统计,也不是简单的干预外推或分类任务。
Q7. 构建因果推理基准数据集时最需警惕的问题是?
- A.题目中文字符的数量不足
- B.训练语料对题目的污染泄露← 正确答案
- C.合成数据生成成本过高
- D.题目难度层级划分过细
答案:B。大模型训练语料若已包含公开基准题,分数会被污染虚高,评测失去意义;字数量、生成成本、难度层级都是次要问题,防污染才是基准设计的生命线。
Q8. 校验评估指标可信度常用的系数是?
- A.皮尔逊相关系数
- B.科恩卡帕一致性系数← 正确答案
- C.信息熵增益的比率
- D.TF-IDF 的权重值
答案:B。科恩卡帕扣除运气因素来评估两位裁判的给分一致性;皮尔逊相关度量线性关联、信息熵度量不确定性,两者都不度量判分一致性,TF-IDF 更是文本权重工具。
Q9. 因果推理评测的任务类型通常包含哪些?
- A.构建因果图与结构识别← 正确答案
- B.干预效应数值预测← 正确答案
- C.反事实假如式问答← 正确答案
- D.图文检索匹配排序
答案:ABC。三类任务分别对应“看清结构(图构建)、算准效应(干预预测)、推演平行世界(反事实问答)”,三者互为犄角;图文检索属于多模态检索任务,不在因果评测维度内。
Q10. 关于因果评估指标可信度问题,正确的说法有?
- A.指标需对随机猜测有区分度← 正确答案
- B.需多次运行并报告方差波动← 正确答案
- C.需人工复核抽样校验答案← 正确答案
- D.指标数值越大模型必然越好
答案:ABC。可信指标应让随机猜测接近基线而非高分,多次运行需报告均值与方差,人工抽样复核可校验自动评分;指标数值大未必可信,可能来自数据污染或评分偏差,D 是常见误区。