Causal inference(因果推断)

推断的介入

善有善报,恶有恶报。

虽然世间并没有将这份准则执行地那么恰如其分,但是万物归根结底,必然有着因果之间的联系。

而人生匆匆,为什么愚蠢的我们总是在苦苦寻觅事情的答案,why?

剪不断,理还乱,只好奉上因果推断

因果推断

在机器学习领域,因果推断,是在图模型中被着重研究的一种理论。

2017年NIPS会议上,Judael Pearl发表了机器学习的局限性演讲,并提出了因果推断的三个层次:

公式 含义
观察 \(P\left( y\mid x \right)\) Seeing: what is? 观察到x时,会如何影响到y的信念
介入 \(P\left(y\mid do(x) \right)\) Doing: what if? 如果做出对x的介入时,会如何影响到y的信念
反事实 \(P\left(y_{x}\mid x^{,},y^{,} \right)\) Imaging: why? 是x影响到y的吗,基于当下,假设发生的是x^,会对y产生何种影响

为来形象直观地理解Judael Pearl因果推断三层次,我举一个简单的追求异性的例子,它深刻蕴含着这三个推断层次:

观察:在追求一位异性时,不管你是情场高手,还是恋爱小白,你必须承认,我们都会收集足够多的关于他/她的信息x,来作为判断能否成功追求到他/她的依据,也许有的人会认真考虑这个问题,(如果发现成功率低就会直接选择放弃,而选择不再追,其实有点可惜了,因为这仅仅处于观察阶段),而有的人在直觉上就已经做出了估计。这也就是我们基于已经观察到的信息x,来评估成功追到他/她的概率\(P\left( y\mid x \right)\)

介入:在追求异性时,我们必须有所行动,仅仅是观察并不能影响到成功追到他/她的概率。理所当然,我们所作出的行动一般都会遵循一个显而易见的行动目标或指南:做一些有意义的事情 \(do(x)\)来增加能成功追求到他/她的概率\(P\left(y\mid do(x) \right)\),我们会尝试一些方法,来判断这样做是会引起对方的反感,还是能增加对自己的好感,进而影响成功追求到他/她的概率(如果你发现无论 \(do(whatever)\),总不能提高\(P\left( y\mid do(whatever) \right)\),那么事实就会证明,放弃可能是比较明智的选择)

反事实: 在追求异性遭遇挫败时,或者反思自己的追求历程时,我们往往会基于当前的态势做出一些假设,要是当初我那样去做\(x^{,}\)而不是做\(x\),会不会就更有可能把他/她给追到呢 \(P\left( y_{x}\mid x^{,},y^{,} \right)\) 。这样的假设才会让我们总结失败或者成功的真正原因,找出哪些才是真正影响我们最后能否追求成功的因素。

1
然而在现实生活中,上述的推断分析还是考虑地过于单纯、局限,因为情感问题不是靠推断就能解决的。

这样的推断,在大多数情况下,会更多地出现在我们的直觉当中,所以见到这样的理论你也会见怪不怪,但是对于机器而言,如何向用数学的语言来描述这个推断过程,确实一件极其困难的事情,更何况想让计算机能够自动计算这种推断。而当下首先要解决的是如何用合理的计算机语言来描述这个推断过程

基于这三个层次的因果推断属于较为高级的人类智能,而目前的机器学习仅仅停留在第一个阶段,就是由观察到信念的阶段,这就是当下机器学习的局限性所在:可解释差,没有引入人类的合理性推断在里面。那么,是否可以在这方面做出更多的思考呢?

概念假设推断

下表是我根据反事实理论设想的概念假设推断表,可以将概念层级联系在一起。

原始数据 K个表示中间概念的特征 高层概念表示
Groud-truth X \(Z^{*}:z^{*} \left( 1 \right)=g^{*}_1,...,z^{*} \left( K \right)=g^{*}_K\) \(G^{*}\)
Learning X 观察单个显著特征 \(z \left( i \right)=g_i\) 显著特征下最容易激活的高层概念 \(G_{z \left( i \right)=g_i}\)
Inference X \(\max_{\Theta }P(Z=Z^{*}\mid z^{*}\left( i \right)=z \left( i \right)=g_i,G^{*}=G_{z \left( i \right)=g_i};\Theta)\) \(G\)

\[ \max_{\Theta }P\left(Z=Z^{*}\mid z^{*}\left( i \right)=z \left( i \right)=g_i,G^{*}=G_{z \left( i \right)=g_i};\Theta\right) \]

公式的含义,表示:数据信息X在传递到中间层时,如果某一属性实体 \(z \left(i \right)=g_i\)(弱概念)处于激活态时,那么这一属性实体会导致具有相似属性的更高层概念 \(G_{z \left( i \right)=g_i}\) 处于活跃状态,来进行反向印证概念 \(G_{z \left( i \right)=g_i}\) 激活时对应的 的中间层其他属性的一致性: 即此时真实观测的 \(z \left( 1 \right),...,z \left( K \right)\)\(G_{z \left( i \right)=g_i}\) 激活时其他属性值的期望值 \(z^{*}\left( 1 \right),...z^{*} \left( K \right)\) 之间的差异程度,差异越小,那么 \(Z\) 越接近于\(Z^{*}\),即优化目标,满足了假设推断。

怎么将推断应用到当前的机器学习?

用一个实际的例子来说明,比如我们在一幅图像中检测到了手指的存在,那么我们会推断是一个手臂会大概率的存在,然后我们检测图像中是否有在手臂激活时肩膀、上臂、前臂、肘关节的存在,如果这几个中级概念属性一致,那么我们可以大致推断出这里有张手臂。这种做法的好处,就是概念可以类似积木式地向上堆叠,比如我们观测到手臂后,可以推断是否为人类,来进一步观察是否有毛发、手臂颜色如何、是否有躯干形状、头部形状等等,同理可以类似推断其他物体。而关于中间概念的检测,可以依赖神经网络预测。至于推断层面,不需要神经网络来解决!

而问题的难点在于中间概念的检测,目前的机器学习都没有去解决这个问题,往往是低层像素程度的特征抽取和高层标签信息的分类,介于两者之间的中间概念是被忽略的。

而目前有工作,通过CNN可视化在尝试恢复中间层的特征信息。需要思考的两点是:1.如何表示中间特征可视化得到的信息 2.信息从前到后是一个压缩、去噪的有损失过程,怎么能够继续用图像可视化,这是违背了信息传递的基本事实,除非引入了新的信息或者融合了原始信息。

这是一个开放式的问题