(一):細說貝葉斯濾波:Bayes filters


本文為原創文章,轉載請注明出處:http://www.cnblogs.com/ycwang16/p/5995702.html 

認知計算,還要從貝葉斯濾波的基本思想講起。這一部分,我們先回顧貝葉斯公式的數學基礎,然后再來介紹貝葉斯濾波器。

(一). 概率基礎回顧

我們先來回顧一下概率論里的基本知識:

1. \( X \):  表示一個隨機變量,如果它有有限個可能的取值\( \{x_1, x_2, \cdots, x_n \} \).

2. \( p(X=x_i) \):表示變量\( X \)的值為 \( x_i \)的概率

3. \( p(\cdot) \):稱為概率質量函數(probability mass function).

    例如:一個家里有3個房間,機器人在各個房間的概率為 \( p(room)=\{0.1, 0.3, 0.6\} \).

4. 如果\( X \)在連續空間取值,\( p(x) \)稱為概率密度函數(probability density function),

$$p (x \in (a,b)) = \int\limits_a^b {p(x)dx} $$

image

圖1. 概率密度函數曲線示例

5. 聯合概率:$ p(X=x ~~\textrm{and} ~~Y=y) = p(x,y) $,稱為聯合概率密度分布。如果$X$和$Y$是相互獨立的隨機變量,$p(x,y)=p(x)p(y)$。

6. 條件概率:$ p(X=x|Y=y) $ 是在已知$Y=y$的條件下,計算$X=x$的概率。

$$ p(x|y)=p(x,y)/p(y)$$

$$ p(x,y)=p(x|y)p(y)=p(y|x)p(x)$$

    如果$x$和$y$相互獨立,則:

$$ p(x|y)=p(x)$$

7. 全概率公式:

  離散情況下:

$$p(x) = \sum\limits_y {p(x,y)}=\sum\limits_y {p(x|y)p(y)} $$

  連續情況下:

$$p(x) = \int {p(x,y)\;dy} = \int {p(x|y)p(y)\;dy} $$

(二). 貝葉斯公式

2.1 貝葉斯公式

基於條件概率公式和全概率公式,我們可以導出貝葉斯公式:

$$\begin{array}{c}
P(x,y) = P(x|y)P(y) = P(y|x)P(x)\\
\Rightarrow \\
P(x\,\left| {\,y} \right.) = \frac{{P(y|x)\,\,P(x)}}{{P(y)}} = \frac{{{\textrm{causal knowledge}} \cdot {\textrm{prior knowledge}}}}{{{\textrm{prior knowledge}}}}
\end{array}$$

  • 這里面$x$一般是某種狀態;$y$一般是代表某種觀測。
  • 我們稱${P(y|x)}$為causal knowledge,意即由$x$的已知情況,就可以推算$y$發生的概率,例如在圖2的例子中,已知如果門開着,則$z=0.5m$的概率為0.6;如果門關着,則$z=0.5m$的的概率為0.3。
  • 我們稱${P(x)}$為prior knowledge,是對$x$的概率的先驗知識。例如在圖2的例子中,可設門開或關的概率各占$50\%$.
  • ${P(x|y)}$是基於觀測對狀態的診斷或推斷。貝葉斯公式的本質就是利用causal knowledge和prior knowledge來進行狀態推斷或推理。

例1:Dog face

在圖2所示的例子中,機器人根據觀測的到門的距離,估算門開或關的概率,若測量到門的距離為$z=0.5m$,則可用條件概率描述門開着的概率:

      $$P(\textrm{open}|z=0.6) = ?$$

image

圖 2.機器人根據觀測計算門開或關的概率

$$\begin{array}{l}
P(open|z=0.5) = {\textstyle{{P(z|open)P(open)} \over {P(z)}}}{~~~~\rm{      <--貝葉斯公式 }}\\
= \frac{{P(z|open)P(open)}}{{P(z|open)p(open) + P(z|\neg open)p(\neg open)}}{~~~~\rm{   <--全概率公式 }}\\
= \frac{{0.6 \cdot 0.5}}{{0.6 \cdot 0.5 + 0.3 \cdot 0.5}} = 2/3
\end{array}$$

 

2.2 貝葉斯公式的計算

可以看到貝葉斯公式的分母項${P(y)}$,同${P(x|y)}$無關,所以可以把它作為歸一化系數看待:

$$\begin{array}{l}
P(x\,\left| {\,y} \right.) = \frac{{P(y|x)\,\,P(x)}}{{P(y)}} = \eta \;P(y|x)\,P(x)\\
\eta  = P{(y)^{ - 1}} = \frac{1}{{\sum\limits_x {P(y|x)} P(x)}}
\end{array}$$

所以基於causal knowledge和prior knowledge進行條件概率計算的過程如下:

Algorithm:

$\begin{array}{l}
\forall x:{\rm{au}}{{\rm{x}}_{x|y}} = P(y|x)\,\,P(x)\\
\eta  = \frac{1}{{\sum\limits_x {{\rm{au}}{{\rm{x}}_{x|y}}} }}\\
\forall x:P(x|y) = \eta \;{\rm{au}}{{\rm{x}}_{x|y}}
\end{array}$

 

2.3 貝葉斯公式中融合多種觀測

在很多應用問題中,我們會用多種觀測信息對一個狀態進行猜測和推理,貝葉斯公式中是如何融合多種觀測的呢?

我們簡單推導一下:

$$\begin{array}{l}
P(x|y,z){\rm{ = }}\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) = \frac{{P(y|x,z)\,\,P(x|z)}}{{P(y|z)}}$$

 

2.4 貝葉斯遞推公式

由此,我們來推導貝葉斯濾波的遞推公式:

$P(x|z_1, \ldots ,z_n) =?$

我們把$z_n$看做$y$,把$z_1, \ldots, z_{n-1}$看做$z$,代入上面的公式:

$$P(x|z_1, \ldots ,z_n) = \frac{{P(z_n|x,z_1, \ldots ,z_{n – 1})\;P(x|z1, \ldots ,z_{n – 1})}}{{P(z_n|z_1, \ldots ,z_{n – 1})}}$$

再由Markov屬性,在$x$已知的情況下,$z_n$同$\{z_1, \ldots ,z_{n – 1}\}$無關,所以:

$$\begin{array}{c}
P(x|z_1, \ldots ,z_n) = \frac{{P(z_n|x,z_1, \ldots ,z_{n – 1})\;P(x|z1, \ldots ,z_{n – 1})}}{{P(z_n|z_1, \ldots ,z_{n – 1})}}\\
=\frac{{P(z_n|x)\;P(x|z1, \ldots ,z_{n – 1})}}{{P(z_n|z_1, \ldots ,z_{n – 1})}}
\end{array}$$

從而我們得到貝葉斯的遞推公式:

$$\begin{array}{*{20}{l}}
{P(x|{z_1}, \ldots ,{z_n})}&{ = \frac{{P({z_n}|x)\;P(x|{z_1}, \ldots ,{z_{n{\rm{ - }}1}})}}{{P({z_n}|{z_1}, \ldots ,{z_{n - 1}})}}}\\
{}&{ = {\eta _n}\;P({z_n}|x)\;P(x|{z_1}, \ldots ,{z_{n - 1}})}\\
{}&\begin{array}{l}
= {\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...n} {P({z_i}|x)} \;P(x)
\end{array}
\end{array}$$

例2:Dog face在例1的基礎上,如果機器人第二次測量到門的距離仍然為0.5米, 計算門開着的概率。

$\begin{array}{lllll}
P(open|{z_2},{z_1}) &  = \;\;\frac{{P({z_2}|open)\;P(open|{z_1})}}{{P({z_2}|open)\;P(open|{z_1}) + P({z_2}|\neg open)\;P(\neg open|{z_1})}}\\
&  = \;\;\frac{{0.6 \cdot \frac{2}{3}}}{{0.6 \cdot \frac{2}{3} + 0.3 \cdot \frac{1}{3}}}\;\; = \;\;\frac{{0.4}}{{0.5}}\;\; = \;\;0.8
\end{array}$

所以,第二次z=0.5m的觀測增大了對門開着的概率的置信程度。

 

(三). 如何融入動作?

在實際問題中,對象總是處在一個動態變化的環境中,例如:

  1. 機器人自身的動作影響了環境狀態
  2. 其它對象,比如人的動作影響了環境狀態
  3. 或者就是簡單的環境狀態隨着時間發生了變化。

如何在Bayes模型中來描述動作的影響呢?

  1. 首先,動作所帶來的影響也總是具有不確定性的
  2. 其次,相比於觀測,動作一般會使得對象的狀態更為模糊(或更不確定)。

 

我們用$u$來描述動作,在$x'$狀態下,執行了動作$u$之后,對象狀態改變為$x$的概率表述為:

$$P(x|u,x’)$$

 

動作對狀態的影響一般由狀態轉移模型來描述。如圖3所示,表示了“關門”這個動作對狀態影響的轉移模型。這個狀態轉移模型表示:關門這個動作有0.1的失敗概率,所以當門是open狀態時,執行“關門”動作,門有0.9的概率轉為closed狀態,有0.1的概率保持在open狀態。門是closed的狀態下,執行“關門”動作,門仍然是關着的。

image

圖3. “關門”動作的狀態轉移模型

 

執行某一動作后,計算動作后的狀態概率,需要考慮動作之前的各種狀態情況,把所有情況用全概率公式計算:

  • 連續情況下:

$$P(x|u) = \int {P(x|u,x')P(x')dx'} $$

  • 離散情況下:

$$P(x|u) = \sum {P(x|u,x')P(x')} $$

例3:Dog face在例2的基礎上,如果按照圖3所示的狀態轉移關系,機器人執行了一次關門動作, 計算動作后門開着的概率?

$$\begin{array}{lllll}
P(open|u) &  = \sum {P(open|u,x')P(x')} \\
& \,\, = P(open|u,open)P(open)\\
& \quad  + P(open|u,closed)P(closed)\\
& {\kern 1pt} \; = \frac{1}{{10}} * 0.8 + \frac{0}{1} * 0.2 = 0.08\\
\end{array}$$

$$\begin{array}{lllll}
P(closed|u) &  = \sum {P(closed|u,x')P(x')} \\
& \,\, = P(closed|u,open)P(open)\\
& \quad  + P(closed|u,closed)P(closed)\\
& {\kern 1pt} \; = \frac{9}{{10}} * 0.8 + \frac{1}{1} * 0.2 = 0.92
\end{array}$$

所以,執行一次關門動作后,門開着的概率變為了0.08.

 

(四). 貝葉斯濾波算法

4.1 算法設定

由上述推導和示例,我們可以給出貝葉斯濾波的算法,算法的輸入輸出設定如下。

  1. 系統輸入
    1. 1到$t$時刻的狀態觀測和動作:${d_t} = \{ {u_1},{z_1}\; \ldots ,{u_t},{z_t}\} $
    2. 觀測模型:$P(z|x)$
    3. 動作的狀態轉移模型:$P(x|u,x’)$
    4. 系統狀態的先驗概率分布$P(x)$.
  2. 期望輸出
    1. 計算狀態的后延概率,稱為狀態的置信概率:$Bel({x_t}) = P({x_t}|{u_1},{z_1}\; \ldots ,{u_t},{z_t})$

 

4.2 算法基本假設

貝葉斯濾波的基本假設:

        1. Markov性假設: $t$時刻的狀態由$t-1$時刻的狀態和$t$時刻的動作決定。$t$時刻的觀測僅同$t$時刻的狀態相關,如圖4所示:

image


圖4. Markov模型

$p({z_t}|{x_{0:t}},{z_{1:t}},{u_{1:t}})\,\,\, = \,\,\,p({z_t}|{x_t})$
$p({x_t}|{x_{1:t - 1}},{z_{1:t}},{u_{1:t}})\,\,\, = \,\,\,p({x_t}|{x_{t - 1}},{u_t})$

       2. 靜態環境,即對象周邊的環境假設是不變的

       3. 觀測噪聲、模型噪聲等是相互獨立的

4.3 Bayes濾波算法

基於上述設定和假設,我們給出貝葉斯濾波算法的推導過程:

$Bel({x_t}) = P({x_t}|{u_1},{z_1}\; \ldots ,{u_t},{z_t})$

$ = \eta \;{\kern 1pt} P({z_t}|{x_t},{u_1},{z_1}, \ldots ,{u_t})\;P({x_t}|{u_1},{z_1},\; \ldots ,{u_t})  ~~~~~~\rm{<—Bayes}$

$ = \eta \;{\kern 1pt} P({z_t}|{x_t})\;P({x_t}|{u_1},{z_1},\; \ldots ,{u_t})~~~~~~\rm{<—Markov}$

$ \!=\! \eta P({z_t}|{x_t})\int {P({x_t}|{u_1},{z_1},\! \ldots ,{u_t},{x_{t - 1}})} P({x_{t - 1}}|{u_1},{z_1}, \ldots ,{u_t})d{x_{t - 1}})~\rm{<—Total Prob}.$

$ = \eta P({z_t}|{x_t})\int {P({x_t}|{u_t},{x_{t - 1}})} P({x_{t - 1}}|{u_1},{z_1}, \ldots ,{u_t})d{x_{t - 1}})\; \rm{<—Markov}$

$ = \eta P({z_t}|{x_t})\int {P({x_t}|{u_t},{x_{t - 1}}){\mkern 1mu} } P({x_{t - 1}}|{u_1},{z_1}, \ldots ,{z_{t - 1}})d{x_{t - 1}})\; \rm{<—Markov}$

$ = \eta P({z_t}|{x_t})\int {P({x_t}|{u_t},{x_{t - 1}})} Bel({x_{t - 1}})\;d{x_{t - 1}}$

其中第一步采用貝葉斯公式展開,第二步使用Markov性質($z_t$僅由$x_t$決定);第三步使用全概率公式對$x_{t-1}$進行展開;第四步繼續使用Markov性質($x_t$僅由$x_{t-1}$和$u_t$決定);第五步繼續使用Markov性質,因為$x_{t-1}$同$u_t$無關,最終得到$Bel(x_t)$的遞推公式。

可見遞推公式中分為兩個步驟,$\int {P({x_t}|{u_t},{x_{t - 1}})} Bel({x_{t - 1}})\;d{x_{t - 1}}$部分是基於$x_{t-1}, u_t$預測$x_t$的狀態;$\eta P({z_t}|{x_t})$部分是基於觀測$z_t$更新狀態$x_t$.

4.3 Bayes濾波算法流程

所以,Bayes濾波的算法流程圖如圖5所示。如果$d$是觀測,則進行一次狀態更新,如果$d$是動作,則進行一次狀態預測。

IKPS48MP]LSAG515A3`L9KB

圖5. Bayes濾波的算法流程

我們看到,在進行狀態預測時,需要對所有可能的$x’$狀態進行遍歷,使得基本的Bayes模型在計算上成本是較高的。

4.3 Bayes濾波算法的應用

Bayes濾波方法是很多實用算法的基礎,例如:

  • Kalman濾波
  • 擴展Kalman濾波
  • 信息濾波
  • 粒子濾波

等,我們在下一節介紹Kalman濾波。

 

參考文獻

[1]. Sebastian Thrun, Wolfram Burgard, Dieter Fox, Probabilistic Robotics, 2002, The MIT Press.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM