干预数据教不会大模型因果推理?这篇论文找到了「开关」在哪
做 causal inference 的人一直有个朴素信念:要让模型学会因果方向,就得喂它干预数据(interventional data)——做实验、看 do() 的效果,而不是只看相关性。这个信念直觉上很对,也支撑了大量因果 AI 的工作。但今天 arXiv 上挂出来的一篇新论文,拿一个非常干净的合成实验,把这条信念捅了个窟窿。
论文标题是「Evidence-Type Competition: When Can Interventional Data Teach Language Models Causal Direction?」,作者 Xining Xun。它做的事其实很简单:造了一堆辛普森悖论世界,在里面观察相关性和因果效应的方向完全相反,然后看语言模型到底学不学得会。
结果有点尴尬。加大干预数据在预训练里的比例,模型的 do() 响应幅度确实在单调变大——说明它确实「看到」了干预信号——但它的符号(正还是负)却始终跟着观测相关性走。模型把干预数据的强度吸收了,却没吸收方向。
那什么才管用?论文发现,决定模型用不用干预证据的关键因素,是推理时上下文里出现的是什么类型的证据,而非训练混合比。
具体数字是这样的:在纯粹观测上下文中,模型在 50 个世界里搞反了 29 个方向;换成混合上下文(观测+干预混在一起),错误降到 19 个;而如果上下文里只给对齐的干预探针,正确率直接拉到了 41/50。
更有意思的是一个「开关效应」。只要把观测证据从上下文里抹掉,模型被压住的因果推断能力立刻就释放出来了——ratio_true 跳了 +0.56。而且这个切换是内容介导的、分级的,不是简单地开或关。四状态内容操纵实验证实了这一点。
这个抑制效应还很稳。换了训练种子,11/11 个强反转全部复现。到 0.93B 参数量级别,反转率还是 31.8% 对 6%,虽然绝对增益已经缩了四倍。论文一句话总结得很直接:能力在权重里,开关在上下文里。激活修补(activation patching)进一步把开关定位到了中间层的 observational rows。
论文还顺带揭露了一个有趣的东西:用 CLadder 做外部分析时,发现模型学到的是一个「正的先验」——它天然倾向输出正向因果效应。如果把训练数据的符号随机化重训,分布内能去掉这个先验,但分布外不行。模型学到的不只是因果结构,还有一套隐藏在里面的符号偏好。
对做 causal LLM 的人来说,这篇论文的杀伤力不小。这意味着花大量算力去标注干预数据、做反事实生成、调 do() 损失函数,可能在根本上就搞错了发力点——模型吸够了干预数据,问题出在推理时被观测上下文里的相关性绑架了。更管用的可能是更好的上下文管理策略,或者在推理环节主动抑制 observational rows 的激活。
论文最后还提了一个挺实用的工程贡献:量化了基于探针的因果评估的采样噪声底限,并给了一个证据平均协议(evidence-averaging protocol),能把符号错误从 26% 砍到 9%。这东西可以直接往 eval pipeline 里塞。
这篇论文的设定很合成,离真实世界的因果任务还有距离。但它抓住了一个很多人在实操中可能已经隐隐感觉到、却没人明确点破的问题:大模型并不是看见干预数据就自动学会因果方向,它只是学会了在两种证据之间做上下文敏感的竞争。 而在这场竞争里,观测相关性从来不是弱方。
谁在做 causal language model、用 intervention 数据做微调、或者在 prompt 里塞反事实样本做推理的,这篇值得细读。