机器学习和因果推论Causal Inference
当前的主流机器学习是建立在统计理论和计算理论之上的,但一般被认为和通用的智能是很不一样的。比如说,人是有推理能力的,但目前主流的机器学习并不具备。在统计学里,相关性不等于因果性,常被人忽视也被视为软肋而遭攻击。
本文欲介绍“因果图”机器推理,出自AI界神人、2011图灵奖得主、贝叶斯网络之父Judea Pearl。虽然“因果图”研究在学界也受争议,但敝人认为这思路是天才之作,于是想用平实的语言做些简单介绍。
=========== 分割线 在此 ============
预警!!此处和计算机的机器学习无关,先扯一些务虚的、哲学层面的。
因果关系可以简单理解为推理,比如因为吃了饭所以就饱了。由此转化为人们的生活指导:饿了就要吃东西。因果也可以上升到人如何理解世界,比如看到乌云就下雨,以及很多预测,比如股价、体育比赛、经济政策、大选、赌博等等。孙子兵法云:“夫未战而庙算胜者,得算多也。” 就是一个高级的推理过程。试想一下,如果机器能帮忙做这些,厉害吧!
那世界是不是都有因果构成呢?这是个深奥的哲学问题。举一些人文气息略浓的例子:
佛学讲因缘果,比如种子是“因”才能结果子作为“果”,中间也需要土壤、水等等“缘”。但这些因果都是由具体事物作为载体,我们所看到的具体事物的本质又是什么呢?而更高的境界是无因无果或因果一体的“无相”,那所谓的“因果关系”其实也只是一种虚幻而已,基于这个理论,我们并无法从因果关系来推理理解这个世界。
还记得电影《非诚勿扰2》里引用的那首诗吗?
你见,或者不见我,我就在那里,不悲不喜。
你念,或者不念我,情就在那里,不来不去。
你爱,或者不爱我,爱就在那里,不增不减。
体会一下这个感觉吧,就是有个“东西”就在那里,它不是因也不是果,也许促成了因果,或不停地链式反应,无法简单分开纠缠一起的因果。
再说一个,人类的原罪(始祖:亚当)
你一生日日劳苦才能得到吃食。地要给你生出荆棘和蒺藜,你要吃田间的蔬菜;你必须汗流满面,才有饭吃,直到你归于土中
日日劳苦、汗流满面,这个就是我们生存的条件,原罪怎么被因果关系解释呢?还是这就是一种对现象和事物的很智慧的归纳。
讲了那么多,主要是想说清楚“因果”这个概念,在计算机世界里,和现实世界中。世界是很复杂的,不要太执着。
谢谢耐心收看,总算扯完了。。。
下面的部分,会集中在计算机世界里的因果,我们要看到这些怎么被数学化!
=========== 分割线 结束 ============
因果推论 causal inference
把人的因果推论理解分成三个层次:
- 联系 (association):X意味着什么?看到X会不会影响对Y的判断?看到这个症状能否说明是这个病?看到这个调查结果是不是反映事实?
- 介入 (intervention):如果做了意味着什么?吃了阿斯匹林,是不是就不头疼了?
- 虚拟 (counterfactuals):一般是指想象或者复盘,没真实发生的事情。为什么?是X导致Y发生吗?做了X不发生Y会是什么?如果不这么做会怎样?如果Oswald不行刺Kennedy会怎样?如果前两年我都不吸烟会怎样?
先把问题用数学的语言表示
条件概率 P(A|B) 表示 B 发生的时候,A也发生的概率
- P(y | A) 看到A会发生什么? 换句话说,A意味着什么?
- P(y | do(A)) 做了A会发生什么? 做了A意味着什么? 这里把看到A(observation)和做A(action)分开处理
- P(y_A’ | A) 表示A发生的时候,发生别的情况 y_A’ 的概率。换句话说,如果不是要发生的y,那又如何?也就是说有别的选择,为什么要到y。
关键要理解第三点:目前基于统计和拟合的主流机器学习,是对已知数据的拟合和逼近,但无法“想象”出不存在的场景(场景即是数据),因此这里的counterfactual(反事实、虚拟)就是这里的精髓,也是人类语言的精髓。人类就是通过语言来构想出一个逼近现实的场景,来作为推理的依据。
下图因果推论Causal inference要把数据、推理、查询都连起来!
- 数据(Data)是根据现实世界的观察,建立概率子模型
- 有向图(Graph)是建立推论的方向,即因果联系,可以理解为假设或已知条件
- 查询(Query)是推论的应用,即更换条件后能得到什么结果,是虚拟的
这个做法非常的程序化,写好函数,换输入,就出结果。关键在于函数怎么写,里面有没有bug。。。 人有时候理解世界(比如考试的时候)其实也是这样的。
以上就是一个形式化的例子,如何用counterfactual和structural的语言来表示人类语言的事情。
插播一下,人类语言被人理解起来是很丰富的,有时既不公平也没道理,甚至跟现实也不一致,因此我们要分清主次,是用数学或机器去理解世界呢?还是理解人心?
把模型再细化一下:
这个结构化因果模型就用这4元组表示:
- V内生变量(可添加的)
- U背景变量(客观存在)
- F能根据内生变量和背景变量确定内生变量的值
- P是描述U的分布(客观规律)
然后定义模型的计算规则
可以忽略某些observation(比如noise)
有些action和observation是等价的
可以忽略某些action(徒劳)
Pearl举了一个吸烟致肺癌的推断计算过程
介绍到此,网上信息也很多,最后放几个链接:
Judea Pearl — Eight Pillars of Causal Wisdom (WCE 2017: UCLA)
The Eight Pillars of Causal Wisdom: https://ftp.cs.ucla.edu/pub/stat_ser/r470.pdf
The Three Layer Causal Hierarchy: http://web.cs.ucla.edu/~kaoru/3-layer-causal-hierarchy.pdf