貝葉斯濾波

轉載自:http://www.cnblogs.com/ycwang16/p/5995702.html 

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

(一). 概率基礎回顧

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

1. XX:  表示一個隨機變量,如果它有有限個可能的取值{x1,x2,⋯,xn}{x1,x2,⋯,xn}.

2. p(X=xi)p(X=xi):表示變量XX的值爲 xixi的概率

3. p(⋅)p(⋅):稱爲概率質量函數(probability mass function).

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

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

 

p(x∈(a,b))=∫abp(x)dxp(x∈(a,b))=∫abp(x)dx

image

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

5. 聯合概率:p(X=x  and  Y=y)=p(x,y)p(X=x  and  Y=y)=p(x,y),稱爲聯合概率密度分佈。如果XX和YY是相互獨立的隨機變量,p(x,y)=p(x)p(y)p(x,y)=p(x)p(y)。

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

 

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

 

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

    如果xx和yy相互獨立,則:

 

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

7. 全概率公式:

  離散情況下:

 

p(x)=∑yp(x,y)=∑yp(x|y)p(y)p(x)=∑yp(x,y)=∑yp(x|y)p(y)

  連續情況下:

 

p(x)=∫p(x,y)dy=∫p(x|y)p(y)dyp(x)=∫p(x,y)dy=∫p(x|y)p(y)dy

(二). 貝葉斯公式

2.1 貝葉斯公式

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

 

P(x,y)=P(x|y)P(y)=P(y|x)P(x)⇒P(x|y)=P(y|x)P(x)P(y)=causal knowledge⋅prior knowledgeprior knowledgeP(x,y)=P(x|y)P(y)=P(y|x)P(x)⇒P(x|y)=P(y|x)P(x)P(y)=causal knowledge⋅prior knowledgeprior knowledge

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

例1:Dog face

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

     

P(open|z=0.6)=?P(open|z=0.6)=?

image

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

 

P(open|z=0.5)=P(z|open)P(open)P(z)    <−−貝葉斯公式=P(z|open)P(open)P(z|open)p(open)+P(z|¬open)p(¬open)    <−−全概率公式=0.6⋅0.50.6⋅0.5+0.3⋅0.5=2/3P(open|z=0.5)=P(z|open)P(open)P(z)    <−−貝葉斯公式=P(z|open)P(open)P(z|open)p(open)+P(z|¬open)p(¬open)    <−−全概率公式=0.6⋅0.50.6⋅0.5+0.3⋅0.5=2/3

 

2.2 貝葉斯公式的計算

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

 

P(x|y)=P(y|x)P(x)P(y)=ηP(y|x)P(x)η=P(y)−1=1∑xP(y|x)P(x)P(x|y)=P(y|x)P(x)P(y)=ηP(y|x)P(x)η=P(y)−1=1∑xP(y|x)P(x)

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

Algorithm:

∀x:auxx|y=P(y|x)P(x)η=1∑xauxx|y∀x:P(x|y)=ηauxx|y∀x:auxx|y=P(y|x)P(x)η=1∑xauxx|y∀x:P(x|y)=ηauxx|y

 

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

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

我們簡單推導一下:

 

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)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)

所以有:

 

P(x|y,z)=P(y|x,z)P(x|z)P(y|z)P(x|y,z)=P(y|x,z)P(x|z)P(y|z)

 

2.4 貝葉斯遞推公式

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

P(x|z1,…,zn)=?P(x|z1,…,zn)=?

我們把znzn看做yy,把z1,…,zn−1z1,…,zn−1看做zz,代入上面的公式:

 

P(x|z1,…,zn)=P(zn|x,z1,…,zn–1)P(x|z1,…,zn–1)P(zn|z1,…,zn–1)P(x|z1,…,zn)=P(zn|x,z1,…,zn–1)P(x|z1,…,zn–1)P(zn|z1,…,zn–1)

再由Markov屬性,在xx已知的情況下,znzn同{z1,…,zn–1}{z1,…,zn–1}無關,所以:

 

P(x|z1,…,zn)=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(zn|z1,…,zn–1)P(x|z1,…,zn)=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(zn|z1,…,zn–1)

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

 

P(x|z1,…,zn)=P(zn|x)P(x|z1,…,zn−1)P(zn|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⋯ηn∏i=1...nP(zi|x)P(x)P(x|z1,…,zn)=P(zn|x)P(x|z1,…,zn−1)P(zn|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⋯ηn∏i=1...nP(zi|x)P(x)

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

P(open|z2,z1)=P(z2|open)P(open|z1)P(z2|open)P(open|z1)+P(z2|¬open)P(¬open|z1)=0.6⋅230.6⋅23+0.3⋅13=0.40.5=0.8P(open|z2,z1)=P(z2|open)P(open|z1)P(z2|open)P(open|z1)+P(z2|¬open)P(¬open|z1)=0.6⋅230.6⋅23+0.3⋅13=0.40.5=0.8

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

 

(三). 如何融入動作?

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

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

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

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

 

我們用uu來描述動作,在x′x′狀態下,執行了動作uu之後,對象狀態改變爲xx的概率表述爲:

 

P(x|u,x′)P(x|u,x′)

 

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

image

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

 

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

  • 連續情況下:

 

P(x|u)=∫P(x|u,x′)P(x′)dx′P(x|u)=∫P(x|u,x′)P(x′)dx′

  • 離散情況下:

 

P(x|u)=∑P(x|u,x′)P(x′)P(x|u)=∑P(x|u,x′)P(x′)

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

 

P(open|u)=∑P(open|u,x′)P(x′)=P(open|u,open)P(open)+P(open|u,closed)P(closed)=110∗0.8+01∗0.2=0.08P(open|u)=∑P(open|u,x′)P(x′)=P(open|u,open)P(open)+P(open|u,closed)P(closed)=110∗0.8+01∗0.2=0.08

 

P(closed|u)=∑P(closed|u,x′)P(x′)=P(closed|u,open)P(open)+P(closed|u,closed)P(closed)=910∗0.8+11∗0.2=0.92P(closed|u)=∑P(closed|u,x′)P(x′)=P(closed|u,open)P(open)+P(closed|u,closed)P(closed)=910∗0.8+11∗0.2=0.92

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

 

(四). 貝葉斯濾波算法

4.1 算法設定

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

  1. 系統輸入
    1. 1到tt時刻的狀態觀測和動作:dt={u1,z1…,ut,zt}dt={u1,z1…,ut,zt}
    2. 觀測模型:P(z|x)P(z|x)
    3. 動作的狀態轉移模型:P(x|u,x′)P(x|u,x′)
    4. 系統狀態的先驗概率分佈P(x)P(x).
  2. 期望輸出
    1. 計算狀態的後延概率,稱爲狀態的置信概率:Bel(xt)=P(xt|u1,z1…,ut,zt)Bel(xt)=P(xt|u1,z1…,ut,zt)

 

4.2 算法基本假設

貝葉斯濾波的基本假設:

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

image


圖4. Markov模型

p(zt|x0:t,z1:t,u1:t)=p(zt|xt)p(zt|x0:t,z1:t,u1:t)=p(zt|xt)
p(xt|x1:t−1,z1:t,u1:t)=p(xt|xt−1,ut)p(xt|x1:t−1,z1:t,u1:t)=p(xt|xt−1,ut)

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

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

4.3 Bayes濾波算法

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

Bel(xt)=P(xt|u1,z1…,ut,zt)Bel(xt)=P(xt|u1,z1…,ut,zt)

=ηP(zt|xt,u1,z1,…,ut)P(xt|u1,z1,…,ut)      <—Bayes=η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)      <—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|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,…,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)P(xt−1|u1,z1,…,zt−1)dxt−1)<—Markov

=ηP(zt|xt)∫P(xt|ut,xt−1)Bel(xt−1)dxt−1=ηP(zt|xt)∫P(xt|ut,xt−1)Bel(xt−1)dxt−1

其中第一步採用貝葉斯公式展開,第二步使用Markov性質(ztzt僅由xtxt決定);第三步使用全概率公式對xt−1xt−1進行展開;第四步繼續使用Markov性質(xtxt僅由xt−1xt−1和utut決定);第五步繼續使用Markov性質,因爲xt−1xt−1同utut無關,最終得到Bel(xt)Bel(xt)的遞推公式。

可見遞推公式中分爲兩個步驟,∫P(xt|ut,xt−1)Bel(xt−1)dxt−1∫P(xt|ut,xt−1)Bel(xt−1)dxt−1部分是基於xt−1,utxt−1,ut預測xtxt的狀態;ηP(zt|xt)ηP(zt|xt)部分是基於觀測ztzt更新狀態xtxt.

4.3 Bayes濾波算法流程

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

IKPS48MP]LSAG515A3`L9KB

圖5. Bayes濾波的算法流程

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

4.3 Bayes濾波算法的應用

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

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

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

 

參考文獻

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章