Counterfactual 简介
确定的反事实
反事实是什么?用了例子说明,比如你去了二仙桥,走的是成华大道,但是用了很久才到,于是你就想要是当初坐地铁就好了。你会发现,“要是坐地铁就好了”这个推断只有在发生了“走成华大道用了很久”这个事实下才成立的。什么意思呢,就是一般情况下走成华大道跟地铁是差不多的,但是当天路上发生了一个事故耽误了很久,在已知事实下,你才能推断出坐地铁更好的结论,否则这个结论是不成立的。显然,我们常用的average treatment effect都无法表达这一类推断,因此,我们必须设计新的语言来描述他。在此之前可以先看上面这个例子怎么用数学来求解:
用
x
=
1
\displaystyle x=1
x=1表示走成华大道,用
x
=
0
\displaystyle x=0
x=0表示坐地铁,用
z
=
1
\displaystyle z=1
z=1表示堵车,一个结构方程模型(SCM)写作如下:
z
=
U
z
y
=
x
(
z
+
U
y
)
+
(
1
−
x
)
U
y
z=U_{z}\\ y=x( z+U_{y}) +( 1-x) U_{y}
z=Uzy=x(z+Uy)+(1−x)Uy
其中
U
z
,
U
y
\displaystyle U_{z} ,U_{y}
Uz,Uy是噪声,这些噪声决定了当天的状态,于是,因为你走的成华大道
x
=
1
\displaystyle x=1
x=1,用了2小时,因为你知道,只有堵车才会用2小时,所以一定发生了堵车,因此
z
=
1
\displaystyle z=1
z=1,然后你可以反推出,
U
z
=
1
,
U
y
=
1
\displaystyle U_{z} =1,U_{y} =1
Uz=1,Uy=1,那么如果当初你坐地铁
x
=
0
\displaystyle x=0
x=0,你需要的时间就是
y
=
0
+
U
y
=
1
\displaystyle y=0+U_{y} =1
y=0+Uy=1这就是反事实。
所以推断这种确定的反事实的一个基本套路就是,用观测到的事实,反推出当时的噪声U,然后修改其中的变量,得到SCM计算的结果就是反事实。
不确定的反事实
刚才给出了一个确定的反事实推理,但是有时候反事实是不能确定的。比如这个世界有两类人,一种是永远快乐的人,一种是有猫才快乐的人。现在你给了一个人一只猫,然后那个人很快乐,那你是没有办法区分这个人到底是哪种人的,你只能通过这两类人群的概率来猜测这个人到底是什么人,然后通过这个概率来预测出,如果你不给这个人一只猫,他到底会不会快乐。
形式化地来讲,
T
=
1
\displaystyle T=1
T=1表示给猫,
T
=
0
\displaystyle T=0
T=0表示没给,Y服从以下过程:
Y
=
{
1
U
=
always happy
T
U
=
cat-needer
Y=\begin{cases} 1 & U=\text{always happy}\\ T & U=\text{cat-needer} \end{cases}
Y={1TU=always happyU=cat-needer
如果我们观测到事实,
T
=
1
,
Y
=
1
\displaystyle T=1,Y=1
T=1,Y=1,那么我们没办法反推出U,但可以肯定的是,这个U只可能是
a
l
w
a
y
s
h
a
p
p
y
\displaystyle always\ happy
always happy或
c
a
t
−
n
e
e
d
e
r
\displaystyle cat-needer
cat−needer,于是根据这两人群的概率
p
(
U
=
c
a
t
−
n
e
e
d
e
r
)
=
0.6
,
p
(
U
=
a
l
w
a
y
s
h
a
p
p
y
)
=
0.4
\displaystyle p( U=cat-needer) =0.6,p( U=always\ happy) =0.4
p(U=cat−needer)=0.6,p(U=always happy)=0.4,我们可以推断,如果不给猫
T
=
0
\displaystyle T=0
T=0那么,
P
(
Y
u
(
0
)
=
1
)
=
0.4
\displaystyle P( Y_{u}( 0) =1) =0.4
P(Yu(0)=1)=0.4.
反事实计算框架
从上述的例子可以看出,反事实是需要依赖于SCM才能实现的,所谓SCM就是,
v
i
=
f
i
(
p
a
i
,
u
i
)
\displaystyle v_{i} =f_{i}( pa_{i} ,u_{i})
vi=fi(pai,ui)的方程,
p
a
i
\displaystyle pa_{i}
pai是
v
i
\displaystyle v_{i}
vi的父亲,
u
i
\displaystyle u_{i}
ui是
v
i
\displaystyle v_{i}
vi的噪声,用
M
=
<
U
,
V
,
F
>
\displaystyle M=< U,V,F >
M=<U,V,F>表示这个集合,为了表达,干预操作
d
o
(
X
=
x
)
\displaystyle do( X=x)
do(X=x),我们可以将x对应的
f
x
=
x
\displaystyle f_{x} =x
fx=x强行等于某个值,于是令
F
\displaystyle F
F变成
F
x
\displaystyle F_{x}
Fx,从而得到子模型,
M
=
<
U
,
V
,
F
x
>
\displaystyle M=< U,V,F_{x} >
M=<U,V,Fx>。
对于每个
v
i
\displaystyle v_{i}
vi,我们都可以用外生变量U表示,于是
p
(
y
)
≜
p
(
Y
=
y
)
=
∑
{
u
∣
Y
(
u
)
=
y
}
P
(
u
)
p( y) \triangleq p( Y=y) =\sum _{\{u|Y( u) =y\}} P( u)
p(y)≜p(Y=y)={u∣Y(u)=y}∑P(u)
这个意味着,所有能够使得
Y
=
y
\displaystyle Y=y
Y=y的
U
\displaystyle U
U的总的概率就是
Y
=
y
\displaystyle Y=y
Y=y的概率。利用这个等式,我们可以计算,所有经过
d
o
(
x
)
\displaystyle do( x)
do(x)之后,
Y
x
=
y
\displaystyle Y_{x} =y
Yx=y的概率:
p
(
Y
x
=
y
)
=
∑
{
u
∣
Y
x
(
u
)
=
y
}
P
(
u
)
p( Y_{x} =y) =\sum _{\{u|Y_{x}( u) =y\}} P( u)
p(Yx=y)={u∣Yx(u)=y}∑P(u)
基于此,我们就能写出任意反事实模型的推导,如
p
(
Y
x
=
y
,
X
=
x
′
)
\displaystyle p( Y_{x} =y,X=x')
p(Yx=y,X=x′)你会发现这个
X
=
x
′
\displaystyle X=x'
X=x′与
Y
x
\displaystyle Y_{x}
Yx是冲突的,但这仍然是可算的:
p
(
Y
x
=
y
,
X
=
x
′
)
=
∑
{
u
∣
Y
x
(
u
)
=
y
&
X
(
u
)
=
x
′
}
P
(
u
)
p( Y_{x} =y,X=x') =\sum _{\{u|Y_{x}( u) =y\ \&\ X( u) =x'\}} P( u)
p(Yx=y,X=x′)={u∣Yx(u)=y & X(u)=x′}∑P(u)
这意味着,我们需要先筛选出所有使得
X
(
u
)
=
x
′
\displaystyle X( u) =x'
X(u)=x′发生的
u
\displaystyle u
u(根据事实反推U),然后再穷举所有
u
\displaystyle u
u,并计算
Y
x
(
u
)
=
y
\displaystyle Y_{x}( u) =y
Yx(u)=y的概率(根据U的分布,猜测干预x的结果).
显然,计算多个不同干预的结果也是可行的:
p
(
Y
x
=
y
,
Y
x
′
=
y
′
)
=
∑
{
u
∣
Y
x
(
u
)
=
y
&
Y
x
′
(
u
)
=
y
′
}
P
(
u
)
p( Y_{x} =y,Y_{x'} =y') =\sum _{\{u|Y_{x}( u) =y\ \&\ Y_{x'}( u) =y'\}} P( u)
p(Yx=y,Yx′=y′)={u∣Yx(u)=y & Yx′(u)=y′}∑P(u)
参考资料
到二仙桥走成华大道完整版
Pearl, Judea. Causality. Cambridge university press, 2009. 第七章
《因果推理导论》课程(2020) by Brady Neal