林探长是警局里最资深的侦探,他身边多了一位新助手“小言”——一个读过无数案件卷宗的大语言模型。小言反应极快,能从卷宗里找出成百上千条线索,但林探长渐渐发现一个让人头疼的问题:小言总爱把“一起出现”说成“因为所以”。比如它看到“打伞人数上升”和“路面湿滑投诉增加”同时发生,就立刻断言“打伞导致路面湿滑”。林探长无奈地摇头:如果真是这样,那全城人马一起撑伞,岂不是能直接把马路“撑”干? 这个场景,正是大语言模型在因果推理上的能力边界。因果推理不是“看着数据讲故事”,而是要回答“如果我干预了这个世界,结果会不会不一样”。语言模型精通语言,却不一定懂得干预。接下来,我们跟随林探长和小言一起破案,看看哪些因果操作 LLM 做得来,哪些做不来,以及它在反事实、因果发现、混杂因子等问题上为什么频频翻车。
对 AI 从业者而言,理解 LLM 的因果边界能避免在医疗、风控、根因分析等场景中盲目采信模型结论,把大模型放对位置、守住可靠性底线。
可视化演示
动态演示大语言模型在因果推理上的能力的核心机制,通过开始/执行/监控/完成四种模式展示关键概念与交互流程。
本节配有交互动效(进入视口后自动加载,约 3KB)。
大语言模型在因果推理上的能力:LLM因 LLM因果推理的能力边界与基本 相关性驱动的因果误判模式 核心机制可视化 大语言模型在因果推理上的能力整体架构与关键组件
相关性≠因果
林探长桌上的案件卷宗里,两个数字总是一起出现:全市打伞人数抬头,路面湿滑投诉量也跟着抬头。AI 助手小言飞速给出结论:“打伞导致路面湿滑。”林探长却拿起钢笔,把结论划掉。他明白,一起出现的线索不等于一条作案因果链。侦探要问的是:如果我强制让每个人都打伞,路面会湿吗?这才叫因果。
统计上,“相关”描述的是两个变量共同变化的规律;“因果”则要求在干预一个变量之后,另一个变量的变化可被观测。LLM 接受的训练资料以自然语言为主,日常文本中“因为……所以……”的表达比比皆是,但严谨的随机对照实验记录却极其稀少。于是模型很容易把语料里的共现统计当成世界法则。
用记号来表达:X 表示“打伞”,Y 表示“路面湿滑”。观察到 X 时 Y 的概率写作 $P(Y|X)$;而强制所有人打伞后 Y 的概率写作 $P(Y|do(X))$。两者一般不等。
侦探的经验是:嫌疑人频繁出现在案发现场附近,并不等于他就是凶手。LLM 就像一位只看过案卷的实习生,它把“在场”当成了“动手”,这正是相关性误判为因果的剧情。
- 条件概率
X表示“看到打伞”,Y表示“路面湿滑”,先算出看到打伞的人群中路面湿滑的比例。 - 干预算子
do(X)表示“强制让所有人都打伞”,这时再看路面湿滑的概率;强制干预改变的不只是表面数字,而是整个因果结构。 - 对比结论两个概率通常不相等,说明仅凭共同变化无法确定因果关系。
混杂因子识别
接着,林探长查出当天全市确实下了一场大雨。这场雨让更多人打伞,也让路面湿滑。也就是说,“下雨”同时影响了“打伞”和“路面湿滑”,制造了一场虚假关联。这个躲在后面的第三变量,就是统计学家口中的“混杂因子”。
LLM 在处理文本时,往往只会把字面上出现的变量联系起来。如果卷宗里没写到“下雨”,小言就完全看不到它;即使语料里提到下雨,模型也未必知道要把雨当作需要控制的变量。因为自然语言中变量间的逻辑关系很少用“混杂”这种结构来描述。
因果推断里,有一种方法可以把混杂因子的影响拆出来:后门调整。如果 Z 是满足条件的混杂因子,那么 X 对 Y 的因果效应可以通过对 Z 的各个取值做加权平均来估计。
侦探破案时最怕漏掉那个“不在场证明”的关联人。雨就是这种角色:它不在当事人的叙述里,却在幕后牵线。LLM 的困境正在于,它没有现场勘查能力,只能依赖卷宗中是否有人提到过这场雨。
- 混杂变量
Z代表“下雨”这类同时影响原因和结果的第三方变量,必须先找出来。 - 条件分解
P(Y|X,Z)表示在控制住雨况 Z 的情况下,打伞 X 与湿滑 Y 的关系;这一步把 Z 固定下来再观察。 - 加权求和按 Z 在人群中的分布
P(Z)做加权平均,从而把不同天气条件下的效应汇总成一个总效应。
反事实推理
林探长深夜复盘一个旧案子:如果案发当晚,嫌疑人没有走那条巷子,受害人还会出事吗?这个问题无法用现有数据直接回答,因为现实里嫌疑人已经走了那条巷子。这种“如果当初不这么做,结果会怎样”的推理,就是反事实推理。
LLM 非常擅长编造流畅的平行世界故事。给它一句“如果我没打伞”,它能自动补全“那么我可能淋湿了”。但这种输出是语言模型的概率联想,不是对因果机制的稳定计算。换一个更复杂的反事实,比如“如果雨停了但湿度不变”,模型就可能给出自相矛盾的答案。
用反事实因果的语言:Y_{X=0} 表示“在 X 被设为 0(不打伞)的世界里,Y 的结果”;我们想在已知现实“打了伞且淋湿了”的条件下,估计这个结果。
侦探必须依赖对作案机制的建模,才能推断“如果当初”的剧情。小言虽然能写出声情并茂的“反事实复盘”,但它的大脑里只有词语连接,没有那套稳定运转的“世界引擎”。
- 反事实结果
Y_{X=0}指干预 X 为 0 后 Y 的取值,这是平行世界里的观察值。 - 现实条件
X=1, Y=1表示现实中“打了伞且路面湿滑”,这是前提条件。 - 反事实概率整个式子表示在已知现实结果的情况下,去估计“当初不打伞还会不会湿”的概率;其中需要知道世界如何运转,而不能仅靠文本联想。
因果发现局限
林探长想从过去十年的卷宗里找出“到底谁影响了谁”。比如“作息混乱”与“脱发”之间,是前者导致后者,还是另有原因?这种从数据中反向推导因果结构的工作,叫“因果发现”。
因果发现的理想方式,是在所有可能的因果图里找一个得分最高的图 G,用数据 D 来衡量谁更合理。但 LLM 不直接做这种搜索。它没有观察数据,只能从文本里抓取变量间的共现频率;它可能会把出现次数最多的“A 导致 B”当成真相,哪怕 A 和 B 之间根本没有因果箭头。
形式化地看,因果发现是在候选图空间中优化一个结构得分:
侦探重构时间线时最忌讳“谁常出现就画谁的箭头”。小言把共现关系当成因果证据,就像把两个常在同一酒吧出现的人当成同伙,却忘了背后可能有一个没写进卷宗的“中间人”。
- 候选因果图
G表示一张由变量和箭头组成的有向图,箭头方向代表因果方向。 - 结构得分
Score(G|D)指在图 G 和观测数据 D 的组合下,该因果结构的合理程度。 - 最优搜索
argmax表示在所有候选图里选得分最高者;这需要同时处理方向判定和未观测混杂,而 LLM 往往跳过这一步。
数据偏差与幻觉因果
小言还有一个毛病:它的“卷宗库”来自互联网语料,而语料里某个因果说法出现得越频繁,它就越容易当作正确答案。如果媒体长期写“熬夜导致脱发”,那么即使现实中脱发主要是年龄和基因造成的,模型也会优先输出“熬夜导致脱发”。
这种由训练数据偏差带来的因果误判,经常表现为“幻觉因果”:模型用非常自信的口吻,把语料里高频的相关性包装成因果结论。它不是故意说谎,而是在根据下一个词的概率补全一个听起来最合理的故事。
在语言模型中,模型对“原因是什么”的判断可以视为在所有候选原因中选择概率最大的那个:
林探长的老搭档常说:“热门传闻不等于案件真相。”小言的知识库里热门传闻数量巨大,于是它经常自信地给出一个“听起来很对”的因果答案,却拿不出任何现场实验证据。这就是幻觉因果的本质。
- 候选原因
c是模型从语料中学习到的各种候选项,比如“熬夜”“压力”“年龄”。 - 语言模型概率
Pθ(c|prompt)表示给定提示后,模型认为候选c出现在下一句的概率;这个概率由训练参数θ决定。 - 最大选择
argmax让模型挑出概率最高的那个原因,但它并不检查这个原因是否通过干预实验验证。
上下文补偿
为了救救这个爱下结论的助手,林探长试着在小言的输入里塞进几个标准案例,比如:“下雨导致路面湿滑;下雨导致打伞人数增加;所以不能把打伞和湿滑当成直接因果。”小言听完后,确实在类似的题上表现好了很多。这种方法叫“上下文学习”或“小样本提示”。
上下文学习为什么能缓解问题?因为模型可以从示例中临时校准自己的输出风格,把当前任务的回答方式向示例对齐。可这并不等于模型学会了因果推理。如果林探长把案件换成完全不相关的领域,比如“股票涨跌与公司注册数量”,小言又会立刻回到老路子,把相关性说成因果。
从概率角度看,上下文学习只是改变了条件概率中的“额外条件”:
侦探现场给新手演示几次标准办案流程,新手会学得很快;但若把他扔到完全陌生的案件里,他又会凭直觉乱猜。上下文学习的补偿作用是真实的,同时也是有限的。
demos 能局部改变模型的输出分布,但无法给模型注入真正的因果世界模型。- 输入变量
X是待判断的变量,Y是输出答案。 - 示例条件
demos是提示中额外给出的小样本示例,模型会参考这些示例来调整回答风格。 - 条件概率整个式子说明模型在示例影响下给出答案,但这只是参数化语言分布的偏移,不是因果机制的修复。
评估与边界
最后,林探长要给小言做一次“结业考试”。他准备了一批标准答案,让模型逐题回答,再算它答对的比率。这个指标就是分类准确率。但仅有准确率远远不够,因为因果推理更考验“换了说法还能不能站稳”。
可靠的评估应当包括稳健性检验:把问题换一种措辞,把上下文示例换一个顺序,把反事实场景改成近义表达,看看 LLM 是否还能给出相同结论。如果答案来回摇摆,说明模型只是在拟合表面模式,而不是在做稳定的因果推理。
设测试集有 N 道题,模型预测为 \( \hat{y}_i \),标准答案是 \( y_i \),用指示函数 \( \mathbb{I}(\cdot) \) 统计答对次数:
林探长最后在结案报告里写道:小言是个极好的“线索收集员”,但还不是“因果裁定人”。它能快速给出候选假设、补全反事实故事、发现文本中的关联,却缺少主动干预、混杂控制和稳定世界模型的能力。我们只有把模型放在“假设生成者”的位置,让人来完成“实验验证者”的职责,才能真正发挥大模型的价值。
- 预测与答案
\hat{y}_i是模型预测,y_i是真实因果结论。 - 指示函数
\mathbb{I}(\cdot)当条件成立时取 1,否则取 0,用来计数正确样例。 - 平均正确率求和后除以 N,得到整体正确率;但这个指标无法暴露模型是否真的“听懂因果”。
AI 应用场景
医疗副作用假设筛选
阶段:数据分析与假设生成
解决的问题:传统方式下,医生从电子病历里人工挖掘药物副作用原因非常耗时;LLM 能瞬间给出大量“可能因素”,但它分不清相关与因果,需要统计方法来验证。
具体案例:某药企分析“服用 A 药”与“头晕”记录时,LLM 根据文献语料判断“A 药导致头晕”。临床数据科学家用倾向评分匹配后发现,真正混杂因素是患者年龄。最终将 LLM 的结论降级为候选假设,进入队列研究验证。
风控反欺诈因果归因
阶段:决策支持
解决的问题:交易风控团队每天收到大量工单,LLM 能快速归纳“深夜登录”“大额转出”等特征,但直接把相关特征当因果会误伤正常用户。
具体案例:在线支付平台用 LLM 对工单生成“可能原因清单”,风控工程师再用因果图区分“账户被盗”与“高频正常使用”,对高风险行为做干预实验验证,最终降低误判率。
智能客服根因分析辅助
阶段:根因分析与提示
解决的问题:客服投诉中“退货率上升”这个结果背后,可能有物流、库存、商品质量多个原因;LLM 容易把最常被提及的因素当成唯一根因。
具体案例:电商平台让 LLM 从客服会话中抽取“候选根因”,再由业务分析师设计 AB 实验验证。LLM 负责把线索找全,人负责判断真正因果,避免直接采纳模型的“唯一结论”。
Python 演示
import mathimport random def pearson(x, y): n = len(x) mx = sum(x) / n my = sum(y) / n cov = sum((xi - mx) * (yi - my) for xi, yi in zip(x, y)) vx = sum((xi - mx) ** 2 for xi in x) vy = sum((yi - my) ** 2 for yi in y) return cov / math.sqrt(vx * vy) def partial_corr(x, y, z): rx = pearson(x, z) ry = pearson(y, z) rxy = pearson(x, y) num = rxy - rx * ry den = math.sqrt(max((1 - rx * rx) * (1 - ry * ry), 1e-12)) return num / den def main(): random.seed(42) n = 1000 temp = [random.gauss(20, 5) for _ in range(n)] ice = [2 * t + 15 + random.gauss(0, 10) for t in temp] drown = [1.5 * t + 8 + random.gauss(0, 10) for t in temp] print("冰激凌销量与溺水人数相关系数:", round(pearson(ice, drown), 3)) print("控制气温后偏相关:", round(partial_corr(ice, drown, temp), 3)) print("结论: 高相关不一定是因果, 可能来自混杂因素") if __name__ == "__main__": main()
temp = [random.gauss(20, 5) for _ in range(n)]模拟未观测到的“气温”混杂变量。ice = [2 * t + 15 + random.gauss(0, 10) for t in temp]让冰激凌销量由温度驱动,叠加随机噪声。drown = [1.5 * t + 8 + random.gauss(0, 10) for t in temp]让溺水人数也由温度驱动,与冰激凌没有直接因果。cov = sum((xi - mx) * (yi - my) for xi, yi in zip(x, y))计算协方差,用于求相关系数。return cov / math.sqrt(vx * vy)皮尔逊相关系数标准化。num = rxy - rx * ry偏相关公式的分子,扣除混杂变量带来的间接相关。den = math.sqrt(max((1 - rx * rx) * (1 - ry * ry), 1e-12))分母项用 1e-12 防止除零。print("结论: 高相关不一定是因果, 可能来自混杂因素")点明 LLM 容易忽略的因果推断关键。
常见误区
误区小言每次都能洋洋洒洒解释“因为 A,所以 B”,还引用了一大段案例,看起来很有道理,所以它应该具备因果推理能力。
正解解释得流利不代表理解得正确。LLM 的核心能力是预测下一个 token,它只是在训练语料中见过大量“因为……所以……”的句式,学会了把最连贯的故事补全。侦探可以讲出一个动听的作案故事,但真凶需要用现场证据确认;语言流畅不能替代因果干涉实验。
为何常见:我们习惯把“能说出来”等同于“想明白了”,而 LLM 的语言表达太逼真,极易让人产生误解。
误区在提示词里塞满各种因果示例后,模型表现明显变好,那只要给足够多的示例,就能把因果缺陷彻底补上。
正解上下文学习是一种“局部模式对齐”,它会让模型在当前问题上模仿示例的风格,但不会给模型注入真正的因果世界模型。换一个领域、换一种混杂结构,模型大概率会重新掉进相关性陷阱。示例是临时拐杖,不是修复手术。
为何常见:少样本效果提升让人产生“能力被唤醒”的错觉,以为提升幅度可以无限叠加。
误区你问 LLM:“如果我没打伞,会不会淋湿?”它回答“会淋湿”,于是觉得它已经理解反事实因果。
正解真正稳健的反事实推理需要在不同干预条件下保持一致的世界模型。LLM 的答案往往来自语言联想,稍微改变情境(比如“如果雨停了但湿度不变”)就可能自相矛盾。它生成的是“反事实的故事”,不是“反事实的推理”。
为何常见:单次测试很难暴露不一致性,人们容易把一次流利回答当成能力证据。
误区只要把一堆变量交给模型,算出它们之间相关系数高,然后画一条因果箭头,就完成因果发现了。
正解因果发现必须处理箭头方向、未观测混杂和实验干预等问题。相关矩阵只能告诉你“谁和谁一起变化”,无法告诉你“改变谁会导致谁变化”。LLM 如果直接从共现关系画因果箭头,本质上是把相关性包装成因果结论。
为何常见:很多工具的可视化都是“相关网络图”,看起来像因果图,让人误以为相关就是因果结构。
面试题
Q1. 下列哪种情况最适合说明“相关不等于因果”?
- A.运动量加大直接降低体重
- B.冰淇淋销量与溺水数同期上升← 正确答案
- C.施肥增加导致作物产量上升
- D.温度升高导致冰激凌销量增加
答案:B。冰激凌销量和溺水人数都受“夏天”这一混杂变量影响,二者并无直接因果;A、C、D 都是直接因果描述。LLM 很容易把 B 这种虚假相关误判成因果。
Q2. 混杂因子的本质是什么?
- A.同时影响原因与结果的第三变量← 正确答案
- B.与研究对象完全没有关系的噪声
- C.由结果变量反向导致的原因变量
- D.实验测量过程中产生的系统误差
答案:A。混杂因子会同时影响 X 和 Y,从而制造虚假关联。它就像侦探案里那个“不在场却牵线搭桥”的人,没被发现时会让结论南辕北辙。
Q3. 反事实推理的核心问题是?
- A.估计“如果当初”干预后的世界← 正确答案
- B.统计当前数据中所有变量的相关
- C.对已发生事件进行客观事实描述
- D.用线性回归拟合未来变化趋势
答案:A。反事实关注的是“现实中已经发生 X,但如果当初没有 X,Y 会怎样”。它需要因果世界模型,而不是简单的相关统计或趋势外推。
Q4. LLM 在因果发现中最常见的局限是?
- A.无法读取真实世界的结构化数据库
- B.主要依赖文本共现模式而非干预验证← 正确答案
- C.不能理解中文文献中的因果表述
- D.不具备生成自然语言因果解释的能力
答案:B。LLM 的因果判断来自语料中的共现模式,缺乏对真实世界的主动干预验证;它常常把“常一起出现”当成“因果箭头”。
Q5. 在后门调整公式中,Z 代表什么?
- A.必须被控制住的混杂因子← 正确答案
- B.需要被预测的结果变量
- C.用于表示样本数量的下标
- D.模型中全部可学习参数
答案:A。Z 是同时影响原因和结果的第三变量,后门调整通过对 Z 取加权平均来剥离混杂影响,还原 X 对 Y 的因果效应。
Q6. 下列哪种情况最像是“幻觉因果”?
- A.无证据时按语料常见情节补全因果← 正确答案
- B.检索文献后引用真实统计数据
- C.缺乏数据时主动声明信息不足
- D.实验条件下用干预算子做推断
答案:A。幻觉因果指模型用流利语言输出一个没有实证支撑的因果解释,本质是训练语料中高频共现的“统计幽灵”。
Q7. 上下文学习对 LLM 因果推理的补偿意味着什么?
- A.示例可部分校准输出但无法根治局限← 正确答案
- B.示例越多则因果能力越接近无穷
- C.加入示例能完全消除所有混杂偏误
- D.示例让模型直接获得主动干预能力
答案:A。上下文学习通过示例影响输出的概率分布,能局部校准答案;但它不能补偿结构性的因果缺陷,更不能替代干预实验。
Q8. LLM 因果推理能力受限的来源包括?
- A.训练目标仅鼓励预测下一个 token← 正确答案
- B.缺少对真实世界进行主动干预的能力← 正确答案
- C.模型使用了过多的神经网络参数
- D.训练数据常将相关表述成因果关系← 正确答案
答案:ABD。LLM 的预训练目标是预测下一个 token,缺乏主动干预验证,且训练语料往往把相关写成因果;参数规模本身不是因果推理缺陷的来源。
Q9. 评估 LLM 因果能力时应做哪些安全检查?
- A.改变措辞与示例顺序验证答案稳健性← 正确答案
- B.只相信所有测试中得分最高的唯一答案
- C.用反事实场景交叉验证模型判断← 正确答案
- D.把所有相关关系直接视为因果结论
答案:AC。稳健性检验和反事实交叉验证能暴露模型是否在“换皮”后仍保持一致;只看单次最高分或直接接受相关结论都不可靠。
Q10. 为什么说 LLM 会被训练数据带偏?
- A.语料中相关现象远多于随机对照实验← 正确答案
- B.模型倾向于学习高频共现统计模式← 正确答案
- C.因为语料中严格随机干预记录非常稀少← 正确答案
- D.因为训练数据里完全没有英文字母
答案:ABC。自然语言语料以观察和相关描述为主,随机干预实验记录稀缺;模型自然学到高频共现模式,并将这些模式当作因果,和“有没有英文字母”无关。