细说贝叶斯滤波:Bayes filters
离散情况下:
p ( x ) = ∑ y p ( x , y ) = ∑ y p ( x ∣ y ) p ( y ) p(x)=\sum_{y}p(x,y)=\sum_{y} p(x|y)p(y) p(x)=y∑p(x,y)=y∑p(x∣y)p(y)
连续情况下:
p ( x ) = ∫ p ( x , y ) d y = ∫ p ( x ∣ y ) p ( y ) d y p(x)=\int p(x,y)dy=\int p(x|y)p(y)dy p(x)=∫p(x,y)dy=∫p(x∣y)p(y)dy
这里 x x x一般是某种状态, y y y一般代表某种观测。 P ( x ∣ y ) P(x|y) P(x∣y)表示基于观测对状态进行诊断或推断。
贝叶斯公式的分母项 P ( y ) P(y) P(y),与 P ( x ∣ y ) P(x|y) P(x∣y)无关,可以把它作为归一化系数:
P ( x ∣ y ) = P ( y ∣ x ) p ( x ) P ( y ) = η P ( y ∣ x ) P ( x ) P(x|y)=\frac{P(y|x)p(x)}{P(y)}=\eta P(y|x)P(x) P(x∣y)=P(y)P(y∣x)p(x)=ηP(y∣x)P(x)
η = P ( y ) − 1 = 1 ∑ x P ( y ∣ x ) P ( x ) \eta=P(y)^{-1}=\frac{1}{\sum_{x}P(y|x)P(x)} η=P(y)−1=∑xP(y∣x)P(x)1
P ( x ∣ y , z ) = P ( x , y , z ) P ( y , z ) = P ( y ∣ x , z ) p ( x , z ) P ( y , z ) = P ( y ∣ x , z ) p ( x ∣ z ) p ( z ) P ( y ∣ z ) p ( z ) = P ( y ∣ x , z ) p ( x ∣ z ) P ( y ∣ z ) \begin{array}{l}P(x | y, z)=\frac{P(x, y, z)}{P(y, z)} \\ =\frac{P(y | x, z) p(x, z)}{P(y, z)} \\ =\frac{P(y | x, z) p(x | z) p(z)}{P(y | z) p(z)} \\ =\frac{P(y | x, z) p(x | z)}{P(y | z)}\end{array} P(x∣y,z)=P(y,z)P(x,y,z)=P(y,z)P(y∣x,z)p(x,z)=P(y∣z)p(z)P(y∣x,z)p(x∣z)p(z)=P(y∣z)P(y∣x,z)p(x∣z)
所以有 P ( x ∣ y , z ) = P ( y ∣ x , z ) P ( x ∣ z ) P ( y ∣ z ) P(x|y,z)=\frac{P(y|x,z)P(x|z)}{P(y|z)} P(x∣y,z)=P(y∣z)P(y∣x,z)P(x∣z)
P ( x , y , z ) = P ( x ∣ y , z ) P ( y ∣ z ) P ( z ) P(x,y,z)=P(x|y,z)P(y|z)P(z) P(x,y,z)=P(x∣y,z)P(y∣z)P(z)
P ( x , y , z ) = P ( y ∣ x , z ) P ( x ∣ z ) P ( z ) P(x,y,z)=P(y|x,z)P(x|z)P(z) P(x,y,z)=P(y∣x,z)P(x∣z)P(z)
此外有其他形式:
P ( x , y ∣ z ) = P ( x , y , z ) P ( z ) = P ( x , y , z ) P ( y , z ) ⋅ P ( y , z ) P ( z ) = P ( x ∣ y , z ) P ( y ∣ z ) \begin{aligned} P(x,y|z)&=\frac{P(x,y,z)}{P(z)} \\ &=\frac{P(x,y,z)}{P(y,z)}\cdot \frac{P(y,z)}{P(z)} \\ &=P(x|y,z)P(y|z) \end{aligned} P(x,y∣z)=P(z)P(x,y,z)=P(y,z)P(x,y,z)⋅P(z)P(y,z)=P(x∣y,z)P(y∣z)
因此有 P ( x , y ∣ z ) = P ( x ∣ y , z ) p ( y ∣ z ) P(x,y|z)=P(x|y,z)p(y|z) P(x,y∣z)=P(x∣y,z)p(y∣z)
由此,我们来推导贝叶斯滤波的递推公式:
我们的目标是: P ( x ∣ z 1 , … , z n ) P(x|z_1,\dots,z_n) P(x∣z1,…,zn)
这里我们把 z n z_n zn看作 y y y,把 z 1 , … , z n − 1 z_1,\dots,z_{n-1} z1,…,zn−1看作 z z z,代入上面的公式中 P ( x ∣ y , z ) = P ( y ∣ x , z ) P ( x ∣ z ) P ( y ∣ z ) P(x|y,z)=\frac{P(y|x,z)P(x|z)}{P(y|z)} P(x∣y,z)=P(y∣z)P(y∣x,z)P(x∣z)
得到:
P ( x ∣ z 1 , … , z n ) = P ( z n ∣ x , z 1 , … , z n – 1 ) P ( x ∣ z 1 , … , z n – 1 ) P ( z n ∣ z 1 , … , z n – 1 ) P(x|z_1, \ldots ,z_n) = \frac{{P(z_n|x,z_1, \ldots ,z_{n – 1})\;P(x|z_1, \ldots ,z_{n – 1})}}{{P(z_n|z_1, \ldots ,z_{n – 1})}} P(x∣z1,…,zn)=P(zn∣z1,…,zn–1)P(zn∣x,z1,…,zn–1)P(x∣z1,…,zn–1)
再由Markov性质,在 x x x已知的情况下, z n z_n zn与 { z 1 , … , z n − 1 } \{z_1,\dots ,z_{n-1}\} {z1,…,zn−1}无关,所以:
P ( x ∣ z 1 , … , z n ) = P ( z n ∣ x , z 1 , … , z n – 1 ) P ( x ∣ z 1 , … , z n – 1 ) P ( z n ∣ z 1 , … , z n – 1 ) = P ( z n ∣ x ) P ( x ∣ z 1 , … , z n – 1 ) P ( z n ∣ z 1 , … , z n – 1 ) \begin{aligned} P(x|z_1, \ldots ,z_n) &= \frac{{P(z_n|x,z_1, \dots ,z_{n – 1})\;P(x|z_1, \ldots ,z_{n – 1})}}{{P(z_n|z_1, \dots ,z_{n – 1})}}\\ &=\frac{{P(z_n|x)\;P(x|z_1, \dots ,z_{n – 1})}}{{P(z_n|z_1, \dots ,z_{n – 1})}} \end{aligned} P(x∣z1,…,zn)=P(zn∣z1,…,zn–1)P(zn∣x,z1,…,zn–1)P(x∣z1,…,zn–1)=P(zn∣z1,…,zn–1)P(zn∣x)P(x∣z1,…,zn–1)
从而我们得到贝叶斯的递推公式:
P ( x ∣ z 1 , … , z n ) = P ( z n ∣ x ) P ( x ∣ z 1 , … , z n − 1 ) P ( z n ∣ z 1 , … , z n − 1 ) = η n P ( z n ∣ x ) P ( x ∣ z 1 , … , z n − 1 ) = η n P ( z n ∣ x ) η n − 1 P ( z n − 1 ∣ x ) P ( x ∣ z 1 , … , z n − 2 ) = η 1 ⋯ η n ∏ i = 1 … n P ( z i ∣ x ) P ( x ) \begin{aligned} P(x|z_1, \dots ,z_n) &= \frac{P(z_n|x)\;P(x|z_1, \dots ,z_{n-1})}{P(z_n|z_1, \dots ,z_{n-1})}\\ & = {\eta _n}\;P({z_n}|x)\;P(x|{z_1}, \dots ,z_{n - 1})\\ & = {\eta _n}\;P({z_n}|x)\;{\eta _{n - 1}}P(z_{n - 1}|x)P(x|{z_1}, \ldots ,z_{n - 2})\\ & = {\eta _1} \cdots {\eta _n}\;\prod \limits_{i = 1\dots n} {P({z_i}|x)} \;P(x) \end{aligned} P(x∣z1,…,zn)=P(zn∣z1,…,zn−1)P(zn∣x)P(x∣z1,…,zn−1)=ηnP(zn∣x)P(x∣z1,…,zn−1)=ηnP(zn∣x)ηn−1P(zn−1∣x)P(x∣z1,…,zn−2)=η1⋯ηni=1…n∏P(zi∣x)P(x)
在实际问题中,对象总是处在一个动态变化的环境中,例如:
机器人自身的动作影响了环境状态
其它对象,比如人的动作影响了环境状态
或者就是简单的环境状态随着时间发生了变化.
如何在Bayes模型中来描述动作的影响呢?
首先,动作所带来的影响也总是具有不确定性的
其次,相比于观测,动作一般会使得对象的状态更为模糊(或更不确定).
我们用 u u u来描述动作,在 x ′ x' x′状态下,执行了动作 u u u之后,对象状态改变为 x x x的概率表述为: P ( x ∣ u , x ′ ) P(x|u,x') P(x∣u,x′)
动作对状态的影响一般由状态转移模型来描述.
执行某一动作后,计算动作后的状态概率,需要考虑动作之前的各种状态情况,把所有情况用全概率公式计算:
⋅ \cdot ⋅ 连续情况下:
P ( x ∣ u ) = ∫ P ( x ∣ u , x ′ ) P ( x ′ ) d x ′ P(x|u) = \int {P(x|u,x')P(x')dx'} P(x∣u)=∫P(x∣u,x′)P(x′)dx′
⋅ \cdot ⋅ 离散情况下:
P ( x ∣ u ) = ∑ P ( x ∣ u , x ′ ) P ( x ′ ) P(x|u) = \sum {P(x|u,x')P(x')} P(x∣u)=∑P(x∣u,x′)P(x′)
(三) 贝叶斯滤波算法
算法设定
由上述推导和示例,我们可以给出贝叶斯滤波的算法,算法的输入输出设定如下:
1 ∘ 1^{\circ} 1∘ 系统输入
1 1 1到 t t t时刻的状态观测和动作: d t = { u 1 , z 1 , … , u t , z t } d_t=\{u_1,z_1,\dots ,u_t,z_t\} dt={u1,z1,…,ut,zt}
观测模型: P ( z ∣ x ) P(z|x) P(z∣x)
动作的状态转移模型 P ( x ∣ u , x ′ ) P(x|u,x') P(x∣u,x′)
系统状态的先验概率分布 P ( x ) P(x) P(x).
2 ∘ 2^{\circ} 2∘ 期望输出
计算状态的后延概率,称为状态的置信概率: B e l ( x t ) = P ( x t ∣ u 1 , z 1 , … , u t , z t ) Bel(x_t)=P(x_t|u_1,z_1,\dots,u_t,z_t) Bel(xt)=P(xt∣u1,z1,…,ut,zt)
[z = observation, u = action,x = state ]
3 ∘ 3^{\circ} 3∘算法的基本假设
贝叶斯滤波的基本假设:
p ( z t ∣ x 0 : t , z 1 : t , u 1 : t ) = p ( z t ∣ x t ) p({z_t}|{x_{0:t}},{z_{1:t}},{u_{1:t}})\; = \;p({z_t}|{x_t}) p(zt∣x0:t,z1:t,u1:t)=p(zt∣xt) p ( x t ∣ x 1 : t − 1 , z 1 : t , u 1 : t ) = p ( x t ∣ x t − 1 , u t ) p({x_t}|{x_{1:t - 1}},{z_{1:t}},{u_{1:t}})\; = \; p({x_t}|{x_{t - 1}},{u_t}) p(xt∣x1:t−1,z1:t,u1:t)=p(xt∣xt−1,ut)
4 ∘ 4^{\circ} 4∘ Bayes滤波算法
基于上述设定和假设,我们给出贝叶斯滤波算法的推导过程:
Bel ( x t ) = P ( x t ∣ u 1 , z 1 … , u t , z t ) = η P ( z t ∣ x t , u 1 , z 1 , … , u t ) P ( x t ∣ u 1 , z 1 , … , u t ) < − Bayes = η P ( z t ∣ x t ) P ( x t ∣ u 1 , z 1 , … , u t ) < − Markov = η P ( z t ∣ x t ) ∫ P ( x t ∣ u 1 , z 1 , … , u t , x t − 1 ) P ( x t − 1 ∣ u 1 , z 1 , … , u t ) d x t − 1 < − TotalProb. = η P ( z t ∣ x t ) ∫ P ( x t ∣ u t , x t − 1 ) P ( x t − 1 ∣ u 1 , z 1 , … , u t ) d x t − 1 < − Markov = η P ( z t ∣ x t ) ∫ P ( x t ∣ u t , x t − 1 ) P ( x t − 1 ∣ u 1 , z 1 , … , z t − 1 ) d x t − 1 < − Markov = η P ( z t ∣ x t ) ∫ P ( x t ∣ u t , x t − 1 ) Bel ( x t − 1 ) d x t − 1 \begin{array}{l}\operatorname{Bel}\left(x_{t}\right)=P\left(x_{t} | u_{1}, z_{1} \ldots, u_{t}, z_{t}\right) \\ =\eta P\left(z_{t} | x_{t}, u_{1}, z_{1}, \ldots, u_{t}\right) P\left(x_{t} | u_{1}, z_{1}, \ldots, u_{t}\right) \quad<-\text { Bayes } \\ =\eta P\left(z_{t} | x_{t}\right) P\left(x_{t} | u_{1}, z_{1}, \ldots, u_{t}\right) \quad<-\text { Markov } \\ =\eta P\left(z_{t} | x_{t}\right) \int P\left(x_{t} | u_{1}, z_{1}, \ldots, u_{t}, x_{t-1}\right) P\left(x_{t-1} | u_{1}, z_{1}, \ldots, u_{t}\right) d x_{t-1}<-\text { TotalProb. } \\ =\eta P\left(z_{t} | x_{t}\right) \int P\left(x_{t} | u_{t}, x_{t-1}\right) P\left(x_{t-1} | u_{1}, z_{1}, \ldots, u_{t}\right) d x_{t-1}<-\text { Markov } \\ =\eta P\left(z_{t} | x_{t}\right) \int P\left(x_{t} | u_{t}, x_{t-1}\right) P\left(x_{t-1} | u_{1}, z_{1}, \ldots, z_{t-1}\right) d x_{t-1}<-\text { Markov } \\ =\eta P\left(z_{t} | x_{t}\right) \int P\left(x_{t} | u_{t}, x_{t-1}\right) \operatorname{Bel}\left(x_{t-1}\right) d x_{t-1}\end{array} Bel(xt)=P(xt∣u1,z1…,ut,zt)=ηP(zt∣xt,u1,z1,…,ut)P(xt∣u1,z1,…,ut)<− Bayes =ηP(zt∣xt)P(xt∣u1,z1,…,ut)<− Markov =ηP(zt∣xt)∫P(xt∣u1,z1,…,ut,xt−1)P(xt−1∣u1,z1,…,ut)dxt−1<− TotalProb. =ηP(zt∣xt)∫P(xt∣ut,xt−1)P(xt−1∣u1,z1,…,ut)dxt−1<− Markov =ηP(zt∣xt)∫P(xt∣ut,xt−1)P(xt−1∣u1,z1,…,zt−1)dxt−1<− Markov =ηP(zt∣xt)∫P(xt∣ut,xt−1)Bel(xt−1)dxt−1
其中第一步采用贝叶斯公式展开,第二步使用Markov性质( z t z_t zt仅由 x t x_t xt决定); 第三步使用全概率公式对 x t − 1 x_{t-1} xt−1进行展开; 第四步继续使用Markov性质( x t x_t xt仅由 x t − 1 x_{t-1} xt−1和 u t u_t ut决定);第五步继续使用Markov性质,因为 x t − 1 x_{t-1} xt−1同 u t u_t ut无关,最终得到 B e l ( x t ) Bel(x_t) Bel(xt)的递推公式。
可见递推公式分为两个步骤, ∫ P ( x t ∣ u t , x t − 1 ) B e l ( x t − 1 ) d x t − 1 \int P(x_t|u_t,x_{t-1})Bel(x_{t-1})dx_{t-1} ∫P(xt∣ut,xt−1)Bel(xt−1)dxt−1部分是基于 x t − 1 x_{t-1} xt−1, u t u_t ut预测 x t x_t xt的状态; η P ( z t ∣ x t ) \eta P(z_t|x_t) ηP(zt∣xt)部分是基于观测 z t z_t zt更新状态 x t x_t xt.