时间与不确定性
基本思想:按照自然的时序顺序对变量进行排序,按因果次数添加变量,记录每个时间片的观测预证据。
困难:变量集合是无界的,因为它需要包含全部时间片的状态与证据
Markov过程
一阶马尔科夫:当前状态只与上一个状态有关;
二阶马尔科夫:当前状态与上两个状态有关;
传感器模型:当前状态只与自己有关
马尔科夫过程中除了转移模型和传感器模型之外,还需要指定0时刻的先验概率
P
(
X
0
)
P(X_0)
P(X0), 一个稳态Markov过程的所有变量上的完整的联合概率分布为:
P
(
X
0
,
X
1
,
.
.
.
,
X
t
,
E
1
,
.
.
.
,
E
t
)
=
P
(
X
0
)
∏
P
(
X
i
∣
X
i
−
1
)
P
(
E
i
∣
X
i
)
P(X_0, X_1, ...,X_t, E_1, ..., E_t) \\ = P(X_0)\prod P(X_i|X_{i-1})P(E_i|X_i)
P(X0,X1,...,Xt,E1,...,Et)=P(X0)∏P(Xi∣Xi−1)P(Ei∣Xi)
P
(
E
i
∣
X
i
)
P(E_i|X_i)
P(Ei∣Xi)是传感器模型
P
(
X
i
∣
X
i
−
1
)
P(X_i|X_{i-1})
P(Xi∣Xi−1) 是转移模型
下面是一个例子:
这是一个一阶的Markov过程,通过这个把整个联合概率分布表示成上图的样子。
但是一阶Markov过程不精确,可以通过以下方式弥补:
1、提高Markov过程结数;
2、扩大状态变量集合
推理任务
- 滤波: P ( X t ∣ e 1 : t ) P(X_t | e_{1:t}) P(Xt∣e1:t) :一个信任状态 – 输入与其有关的决策过程,给定目前已有的证据,估计当前状态的后验概率分布
- 预测: P ( X t + 1 ∣ e 1 : t ) P(X_{t+1} | e_{1:t}) P(Xt+1∣e1:t)对所有的 k > 0 k > 0 k>0 : 给定目前为止的所有证据,计算未来状态的后验概率。
- 平滑: P ( X k ∣ e 1 : t ) P(X_k|e_{1:t}) P(Xk∣e1:t)对所有的 0 ≥ k < t 0 \geq k < t 0≥k<t:给定目前已有的证据,估计过去某一状态的后验概率分布
- 最可能解释:给定观察序列,找到最可能生成这些观察结果的状态序列
滤波
目的:为了设计一个递归的状态估计算法
P
(
X
t
+
1
∣
e
1
:
t
+
1
)
=
f
(
e
t
+
1
,
P
(
X
t
∣
e
1
:
t
)
)
P(X_{t+1} | e_{1:t+1}) = f(e_{t+1}, P(X_t|e_{1:t}))
P(Xt+1∣e1:t+1)=f(et+1,P(Xt∣e1:t)) : 通过前一个状态得到的
P
(
X
t
+
1
∣
e
1
:
t
+
1
)
=
P
(
X
t
+
1
∣
e
1
:
t
,
e
t
+
1
)
(
证
据
分
解
)
=
(
P
(
e
t
+
1
∣
X
t
+
1
,
e
1
:
t
)
∗
P
(
X
t
+
1
,
e
1
:
t
)
)
/
P
(
X
t
+
1
,
e
1
:
t
)
(
因
为
e
t
+
1
只
与
当
前
状
态
有
关
)
=
a
∗
P
(
e
t
+
1
∣
X
t
+
1
)
P
(
X
t
+
1
∣
e
1
:
t
)
−
−
(
3
)
P(X_{t+1}|e_{1:t+1}) \\= P(X_{t+1}|e_{1:t}, e_{t+1})(证据分解)\\ = ({P(e_{t+1}|X_{t+1}, e_{1:t})*P(X_{t+1},e_{1:t})})/P(X_{t+1}, e_{1:t})(因为e_{t+1}只与当前状态有关)\\ =a*P(e_{t+1}|X_{t+1})P(X_{t+1}|e_{1:t}) --(3)
P(Xt+1∣e1:t+1)=P(Xt+1∣e1:t,et+1)(证据分解)=(P(et+1∣Xt+1,e1:t)∗P(Xt+1,e1:t))/P(Xt+1,e1:t)(因为et+1只与当前状态有关)=a∗P(et+1∣Xt+1)P(Xt+1∣e1:t)−−(3)
这里的a是归一化常数,保证所有的概率和为1.
上述式子中的第三行前面一项表示修正,后面一项表示预测,预测结果使用
X
t
X_t
Xt加和得到。
接下来展示如何计算
P
(
X
t
+
1
∣
e
1
:
t
+
1
)
P(X_{t+1}|e_{1:t+1})
P(Xt+1∣e1:t+1)
P
(
X
t
+
1
∣
e
1
:
t
+
1
)
=
a
∗
P
(
e
t
+
1
∣
X
t
+
1
)
P
(
X
t
+
1
∣
e
1
:
t
)
P(X_{t+1}|e_{1:t+1})\\ = a*P(e_{t+1}|X_{t+1})P(X_{t+1}|e_{1:t})
P(Xt+1∣e1:t+1)=a∗P(et+1∣Xt+1)P(Xt+1∣e1:t)
P
(
X
t
+
1
∣
e
1
:
t
)
=
P
(
X
t
+
1
,
e
1
:
t
)
P
(
e
1
:
t
)
=
∑
x
t
P
(
X
t
+
1
,
x
t
,
e
1
:
t
)
P
(
e
1
:
t
)
=
∑
x
t
P
(
X
t
+
1
∣
x
t
,
e
1
:
t
)
P
(
x
t
,
e
1
:
t
)
P
(
e
1
:
t
)
=
∑
x
t
P
(
X
t
+
1
∣
x
t
,
e
1
:
t
)
P
(
x
t
∣
e
1
:
t
)
P
(
e
1
:
t
)
P
(
e
1
:
t
)
=
∑
x
t
P
(
X
t
+
1
∣
x
t
,
e
1
:
t
)
P
(
x
t
∣
e
1
:
t
)
P(X_{t+1}|e_{1:t})\\ = \frac{P(X_{t+1},e_{1:t})}{P(e_{1:t})}\\ =\frac{ \sum_{x_t}P(X_{t+1}, x_t, e_{1:t})}{P(e_{1:t})}\\ =\frac{\sum_{x_t} P(X_{t+1}|x_t, e_{1:t})P(x_t,e_{1:t})}{P(e_{1:t})}\\ =\frac{\sum_{x_t} P(X_{t+1}|x_t, e_{1:t})P(x_t|e_{1:t})P(e_{1:t})}{P(e_{1:t})}\\ =\sum_{x_t} P(X_{t+1}|x_t, e_{1:t})P(x_t|e_{1:t})
P(Xt+1∣e1:t)=P(e1:t)P(Xt+1,e1:t)=P(e1:t)∑xtP(Xt+1,xt,e1:t)=P(e1:t)∑xtP(Xt+1∣xt,e1:t)P(xt,e1:t)=P(e1:t)∑xtP(Xt+1∣xt,e1:t)P(xt∣e1:t)P(e1:t)=∑xtP(Xt+1∣xt,e1:t)P(xt∣e1:t)
这里的
x
t
x_t
xt表示的是
x
t
x_t
xt这个时刻的各种状态,而不是1:t,我们可以认为滤波估计是沿着序列向前转播的“消息”
f
1
:
t
f_{1:t}
f1:t。他在每次转移时得到修正,并根据每个新的观察进行更新:
f
1
:
t
+
1
=
a
∗
F
O
R
W
A
R
D
(
f
1
:
t
,
e
t
+
1
)
f_{1:t+1} = a*FORWARD(f_{1:t}, e_{t+1})
f1:t+1=a∗FORWARD(f1:t,et+1)
以上的滤波过程包括推理和验证,下面是一个例子:
模拟上面的滤波过程:
- 在第零天,观察还没开始,只有先验信息,假设 P ( R 0 ) = < 0.5 , 0.5 > P(R_0) = <0.5, 0.5> P(R0)=<0.5,0.5>
- 在第一天,出现了雨伞,所以
U
1
=
t
r
u
e
U_1 = true
U1=true,从
t
=
0
t = 0
t=0到
t
=
1
t = 1
t=1的预测结果为:
P ( R 1 ) = ∑ r 0 P ( R 1 ∣ r 0 ) P ( r 0 ) = < 0.7 , 0.3 > ∗ 0.5 + < 0.3 , 0.7 > ∗ 0.5 = < 0.5 , 0.5 > P(R_1) = \sum_{r_0} P(R_1|r_0)P(r_0)\\ = <0.7,0.3>*0.5 + <0.3,0.7>*0.5\\ =<0.5, 0.5> P(R1)=∑r0P(R1∣r0)P(r0)=<0.7,0.3>∗0.5+<0.3,0.7>∗0.5=<0.5,0.5>
然后使用t+1时刻的证据对预测结果进行验证:
P
(
R
−
1
∣
u
1
)
=
a
P
(
u
1
∣
R
1
)
P
(
R
1
)
=
a
<
0.9
,
0.2
>
<
0.5
,
0.5
>
=
a
<
0.45
,
0.1
>
≈
<
0.818
,
0.182
>
P(R-1|u_1)\\ =aP(u_1|R_1)P(R_1)\\ =a<0.9, 0.2><0.5, 0.5>\\ =a<0.45,0.1>\\ \approx <0.818, 0.182>
P(R−1∣u1)=aP(u1∣R1)P(R1)=a<0.9,0.2><0.5,0.5>=a<0.45,0.1>≈<0.818,0.182>
- 在第二天,又出现了雨伞,所以
U
2
=
t
r
u
e
U_2 = true
U2=true,由
t
=
1
t=1
t=1到
t
=
2
t = 2
t=2的预测结果为:
P ( R 2 ∣ u 1 ) = ∑ r 1 P ( R 2 ∣ r 1 ) P ( r 1 ∣ u 1 ) = < 0.7 , 0.3 > ∗ 0.818 + < 0.3 , 0.7 > 0.812 ≈ < 0.627 , 0.373 > P(R_2|u_1)\\ =\sum_{r_1} P(R_2|r_1)P(r_1|u_1)\\ =<0.7, 0.3>*0.818+<0.3, 0.7>0.812\\ \approx <0.627,0.373> P(R2∣u1)=∑r1P(R2∣r1)P(r1∣u1)=<0.7,0.3>∗0.818+<0.3,0.7>0.812≈<0.627,0.373>
根据
t
=
2
t = 2
t=2时刻的证据进行更新,可得到:
P
(
R
2
∣
u
1
,
u
2
)
=
a
P
(
u
2
∣
R
2
)
P
(
R
2
∣
u
1
)
=
a
<
0.9
,
0.2
>
<
0.627
,
0.373
>
≈
<
0.883
,
0.117
>
P(R_2|u_1,u_2)\\ =aP(u_2|R_2)P(R_2|u_1)\\ =a<0.9, 0.2><0.627, 0.373>\\ \approx <0.883, 0.117>
P(R2∣u1,u2)=aP(u2∣R2)P(R2∣u1)=a<0.9,0.2><0.627,0.373>≈<0.883,0.117>
预测
预测可以认为是没有增加新证据的条件下的滤波:
就是只使用前1:t步的证据来推测后面的概率,根据t+k时刻就能推测t+k+1时刻的状态。我们对越来越远的未来进行会收敛到一个不动点,也就是转移模型所定义的马尔科夫过程的稳态分布。转移模型中的不确定性越多,混合时间就越短,未来就越模糊,对证据序列
P
(
e
1
:
t
)
P(e_{1:t})
P(e1:t)的似然的计算可以采用类似的递归方式:
平滑
平滑是给定直到现在的已知证据,来计算过去的状态的分布过程:也就是对于 0 ≤ k < t 0 \leq k < t 0≤k<t计算 P ( X k ∣ e 1 : t ) P(X_k|e_{1:t}) P(Xk∣e1:t)。
寻找最可能序列(Most likely explanation)
假设
[
t
r
u
e
,
t
r
u
e
,
f
a
l
s
e
,
t
r
u
e
,
t
r
u
e
]
[true,true,false,true,true]
[true,true,false,true,true]是警卫观察到的前5天的雨伞序列,要我们解释最近嗯呢个的天气序列是什么,现在我们可以选择的天气序列共有
2
5
2^5
25个,是否有方法能直接找到这个序列而不用枚举呢?
上面是一个错误的想法,因为我们最后要找的是联合概率分布,上述做法变成单个时间步上的条件概率。
正确做法:采用Viterbi算法。
这个方法其实跟寻找最短路是一样的,递归寻找使得当前路径得到反馈最大的路,因为当前节点只与前一个节点有关,所以只要算出前一个节点沿哪条路转移到当前节点就行了,如下,其实也是一个马尔科夫过程。
最可能世界是在已知证据条件,所有查询变量的联合分布
假设我们已知
e
1
:
t
+
1
e_{1:t+1}
e1:t+1 ,求
m
a
x
P
(
x
1
,
x
2
,
.
.
.
,
x
t
+
1
∣
e
1
:
t
+
1
)
max P(x_1 , x_2, ... ,x_{t+1} | e_{1:t+1})
maxP(x1,x2,...,xt+1∣e1:t+1)这个公式可以如下展开:
m a x P ( x 1 , x 2 , . . . , x t + 1 ∣ e 1 : t + 1 ) = α ∗ P ( e 1 : t + 1 ∣ X t + 1 ) m a x x t ( P ( X t + 1 ∣ x t ) m a x x 1 : t P ( x 1 : t ∣ e 1 : t ) ) max P(x_1 , x_2, ... ,x_{t+1} | e_{1:t+1})\\ =\alpha*P(e_{1:t+1} | X_{t+1})max_{xt}(P(X_{t+1}|x_t)max_{x_{1:t}}P(x_{1:t}|e_{1:t})) maxP(x1,x2,...,xt+1∣e1:t+1)=α∗P(e1:t+1∣Xt+1)maxxt(P(Xt+1∣xt)maxx1:tP(x1:t∣e1:t))
由于初始状态没有证据,所以第一天要用滤波。