因果推断引擎
此词条由因果科学读书会词条梳理志愿者我是猫(74989)、趣木木编撰
未经专家审核,带来阅读不便,请见谅。
来源
科学研究是如何开展的?在大多数情况下,科研人员会花费大量时间学习前置知识和目标研究领域知识体系,这可能会耗费从小学开始到本科毕业的15年以上的时间;之后,科研人员会根据研究目标,调研相关方向的经典文献和前沿文献,寻找其中的可创新点;在提出猜想与假设后,根据现有知识和能力设计实验;通过实验收集到相关数据后,进行数据分析,以确定当前数据会支持还是驳回原有猜想;最后通过深入的论证,详述研究对本领域产生了什么样的贡献,给出了什么样的新知识。
如果未来让“因果科学”的相关技术辅助科研人员的研究工作,甚至是指导科研工作方向或者改变科研的范式,会是什么样的呢?朱迪亚·珀尔教授在《为什么》一书中给出了一个“因果推断引擎”的蓝图,在这里又补充上了“因果发现引擎”在体系中应处的位置,构成了一个完整的“因果引擎”。因果发现引擎是一种从观测数据中发现出可能的因果模型的机器,它接受两种输入——假设和数据,产生的输出为一个或一簇因果模型。下图展示了“因果引擎”的概貌。
流程介绍
因果推断引擎是一种问题处理机器,它接收三种不同的输入——假设、问题和数据,并能够产生三种输出。
第一种输出是“是/否”判断,用于判定在现有的因果模型下,假设我们拥有完美的、无限的数据,那么给定的问题在理论上是否有解。如果答案为“是”,则接下来推断引擎会生成一个被估量。这是一个数学公式,可以被理解为一种能从任何假设数据中生成答案的方法,只要这些数据是可获取的。最后,在推断引擎接收到数据输入后,它将用上述方法生成一个问题答案的实际估计值,并给出对该估计值的不确定性大小的统计估计。这种不确定性反映了样本数据集的代表性以及可能存在的测量误差或数据缺失。
因果引擎的十要素
1. 知识
知识指的是推理主体(Reasoning Agent)过去的经验,包括过去的观察、以往的行为、接受过的教育和文化习俗等所有被认为与目标问题有关的内容。“知识”周围的虚线框表示它仍隐藏在推理主体的思想中,尚未在模型中得到正式表达。
例如,我们如何去判断和界定一个病人的存活期、药物对于病人生理机能的可能的影响、其他的何种因素极有可能影响到药物疗效等等信息,都属于这个部分。
2. 假设
科学研究总是要求我们给出简化的假设,这些假设也就是研究者在现有知识的基础上认为有必要明确表述出来的陈述。研究者所拥有的大部分知识都隐藏于他的大脑,只有假设能将其公之于世,也只有假设才能被嵌入模型。
例如,我们可以根据已有知识判断出药物的作用机制与病人的性别是无关的,与病人的年龄是有关的,与病人的视力水平是无关的,与病人的身高是无关的,但与病人的体重是有关的等等。
3. 因果模型
因果模型有多种表现形式,包括因果图、结构方程、逻辑语句等。从构建因果图的角度来看,“因果关系”的定义就非常简单了:如果变量Y“听从于”变量X,并根据所“听到”的内容决定自己的值,那么变量X就是变量Y的一个因。这里的因果模型可以直接从假设进行构建,也可以从因果发现引擎中获得。
例如,如果我们怀疑一位病人的存活期L“听从于”该病人是否服用了药物D,那么我们便可以称D为L的因,并在因果图里绘制一个从D到L的箭头。当然,关于D和L之间的关系问题的答案很可能还取决于其他变量,因而我们也必须将这些变量及其因果关系在因果图中表示出来。在这里,我们统一用Z来表示其他变量。
4. 可验证的蕴涵
以因果模型的路径来表示的变量之间的听从模式通常会导向数据中某种显而易见的模式或相关关系。这些模式可被用于测试模型,因此也被称为“可验证的蕴涵”(Testable Implications)。
例如,将“D和L之间没有连接路径”翻译成统计学语言,就是“D和L相互独立”,也就是说,发现D的存在不会改变L发生的可能性。而如果实际数据与这一推断相抵触,那么我们就需要修改模型。
对于因果发现引擎输出的模型,绝大多数情况下并不会发生这种抵触;但对于直接从假设构建的模型,这种抵触是可能发生的,这就需要在原有的模型里补充额外的模块,输入可验证的蕴涵和数据后,计算数据与模型假设的匹配程度。
5. 问题
向推理引擎提交的问题就是我们希望获得解答的科学问题,这一问题必须用因果词汇来表述。因果革命的主要成就之一就是确保了这一语言在科学上容易理解,同时在数学上精确严谨。
例如,我们现在感兴趣的问题是“药物D对病人生存期L的影响是什么”,可以表述为“P(L|do(D))是什么”。
6. 被估量
被估量“Estimand”来自拉丁语,意思是“需要估计的东西”。它是我们从数据中估算出来的统计量。一旦这个量被估算出来,我们便可以用它来合理地表示问题的答案。虽然被估量的表现形式是一个概率公式,如P(L|D,Z)×P(Z),但实际上它是一种方法,可以让我们根据我们所掌握的数据类型回答因果问题(前提是推断引擎证实了这种数据类型就是我们需要的)。
重要的是要认识到,与传统的统计学所提供的估计方法不同,在当前的因果模型下,无论我们收集到多少数据,有些问题可能仍然无法得到解答。这个被称作“可识别性”问题。例如,如果我们的模型显示D和L都依赖于第三变量Z(比如疾病的发展阶段),并且,如果我们没有任何方法可以测量Z的值,那么问题P(L|do(D))就无法得到解答。在这种情况下,收集数据完全就是浪费时间。相反,我们需要做的是回过头完善模型,具体方式则是输入新的科学知识,使我们可以估计Z的值,或者简化假设(注意,此处存在犯错的风险),例如假设Z对D的影响是可以忽略不计的。
7. 数据
数据可以被视作填充被估量的原料。这里我们一定要认识到,数据本身不具备表述因果关系的能力。数据告诉我们的只是数量信息,如P(L|D)或P(L|D,Z)的值。而被估量则能够告诉我们如何将这些统计量转化为一个表达式。基于模型假设,该表达式在逻辑上等价于我们所要回答的因果问题,比说P(L|do(D))。
在传统的统计方法中,被估量就等同于有待解决的问题。例如,如果我们对存活期为L的人群中服用过药物D的病人的比例感兴趣,那么我们可以将这个问题简记为P(D|L)。该表达式的值也就是我们的被估量。这一表达式已经确切地说明了数据中的哪个概率有待被估计,而并不涉及任何因果知识。
8. 统计估计
直接将现有数据代入被估量就可以得到粗糙的估计值了。但需要注意的是,数据永远是从理论上无限的总体中抽取的有限样本。比如在我们所讨论的这个例子中,数据样本由我们筛选出来进行研究的病人组成,即使这种筛选是随机的,我们也无法避免根据样本测量的概率无法代表整个总体的相应概率的可能性。幸运的是,依靠机器学习领域所提供的先进技术,统计学科为我们提供了很多方法来应对这种不确定性,这些方法包括最大似然估计、倾向评分、置信区间、显著性检验等,使我们从已有数据可以得到更为“精准”的估计值。
9. 估计值
如果我们的模型是正确的且数据是充分的,那么我们就获得了这个待解决的因果问题的答案,比如“药物D使糖尿病患者Z的生存期L增加了30%,误差±20%"。这一答案可以被添加到我们的【知识】中。而如果这一答案与我们的预期不符,则很可能说明我们需要对因果模型做一些改进。
10. 因果发现引擎
因果发现引擎是促进整体因果引擎自动化执行的重要推手。因果发现引擎可以根据现有的大量数据得到一个因果图,以辅助因果推断引擎的执行。除此之外,对于部分因果发现的算法,可以输入已有的知识来改进解决。
例如,通过药物研究组其他项目收集到的数据,我们可以对人的其他生理指标或背景因素之间的关系进行建模,例如家庭富裕程度、学历、婚姻状态、年龄、身高体重、血压等等多个变量之间的因果关系模型。通过这个模型,也可以指导我们如何去探究一个新药的有效性,确定要去测量哪些变量。
这个流程图乍看起来很复杂,因而你可能会怀疑它是否确有必要。事实上,在日常生活中,我们总能用某种方法做出一些因果判断,而与此同时并没有意识到自己经历了如此复杂的推断过程,当然也不会诉诸计算概率和比例的数学工具。我们的因果直觉通常足以让我们应付日常生活乃至职业生活中的不确定性。但是如果我们想教一个笨拙的机器人借助因果思维来思考问题,或者如果我们正试图推动无法依靠直觉来指引的前沿科学的发展,那么这一经过精心设计的推断流程就很有必要了。
朱迪亚·珀尔教授认为,对于因果关系方面的知识来说,数据没有任何发言权。例如,有关行动或干预结果的信息根本无法从原始数据中获得,这些信息只能从对照试验操作中收集。相比之下,如果拥有一个因果模型,我们就可以在大部分情况下从未经干预处理的数据中预测干预的结果了。
因果模型所具备而数据挖掘和深度学习所缺乏的另一个优势就是适应性。被估量是在我们真正检查数据的特性之前仅仅根据因果模型计算出来的,这就使得因果推断引擎适应性极强,因为无论变量之间的数值关系如何,被估量都能适用于与定性模型适配的数据。
在未来,也许同领域的科研工作者们可以共享一个大规模的因果图,代表了共有的知识和假设。要去探究一个新的变量与原有知识体系的关系时,可以直接截取与这个变量有关系的子图。之后通过因果引擎计算出被估量,依照被估量中出现的变量来设计实验。实验采集到数据后可以计算出估计值并得到结果。相关的实验数据还可以融入到已有的数据之后,供因果引擎来检查是否可以更新现有的领域大模型,如果出现了不一致性,就自动展现出来,成为新的研究点。
这种因果引擎或许在未来可以帮助建立负责任、可解释的人工智能,还可以完全改变现有的科学范式,让领域知识变得明确和可共享,方便科研人员设计实验和得出更加准确的结果,引发科学界的“因果浪潮”。
编者推荐
集智俱乐部文章
集智课程
因果科学读书会第三季:因果+X
“因果”并不是一个新概念,而是一个已经在多个学科中使用了数十年的分析技术。通过前两季的分享,我们主要梳理了因果科学在计算机领域的前沿进展。如要融会贯通,我们需要回顾数十年来在社会学、经济学、医学、生物学等多个领域中,都是使用了什么样的因果模型、以什么样的范式、解决了什么样的问题。我们还要尝试进行对比和创新,看能否以现在的眼光,用其他的模型,为这些研究提供新的解决思路。
“因果+X”就是要让因果真正地应用于我们的科学研究中,不管你是来自计算机、数理统计领域,还是社会学、经济学、管理学领域,还是医学、生物学领域,我们希望共同探究出因果研究的范式,真正解决因果的多学科应用问题,乃至解决工业界的问题。