最近一段時間,終于從紛繁的文獻中走出來了,大致能縷清楚卡爾曼濾波,粒子濾波,動態(tài)貝葉斯網(wǎng)絡(luò)之間的關(guān)系了。寫一篇學(xué)習(xí)日志,mark一下,用通俗易懂的話幫助自己理解那些莫名其妙的公式。簡書不能輸入公式,真是蛋疼,,,只好用圖片湊活了,確實有點丑。
1.知識預(yù)熱——條件概率與貝葉斯公式
條件概率的定義: 設(shè)A,B為隨機試驗的二個3事件,且P(A)>0,則稱P(B|A)為在事件A發(fā)生的條件下事件B發(fā)生的條件概率。
這條定義很簡單,就不做過多解釋,需要關(guān)注它的乘法定理,
由乘法定理就很容易推出全概率公式,
,
全概率公式也叫貝葉斯公式。
式中P(A),P(B)稱為先驗概率,之所以稱為先驗概率,是因為它們根據(jù)以往經(jīng)驗和分析得到的概率,不考慮與其他事件的聯(lián)系。P(A|B)則稱為B發(fā)生后A的后驗概率,它通常是‘’因果‘’中的“果”,所以被稱為后驗概率。注意式中事件B往往被認為是“因”,是給定的,也就是說P(B)往往是一個常數(shù),分母P(B)可以被扔掉,貝葉斯公式又可以被表示為,
上式中的α表示歸一化處理,保證概率和是1。
由于
所以貝葉斯公式也可以被表示為,
痛苦的經(jīng)歷告訴我,牢牢掌握條件概率和貝葉斯公式十分重要!它是后邊一切推論呢基礎(chǔ)!
2.一般時序模型
在去理解卡爾曼濾波,粒子濾波這些方法之前,一定要搞清楚我們要解決的問題是什么。根據(jù)《人工智能,一種現(xiàn)代方法》,我們可以建立起一個一般時間序列模型(簡稱時序模型),它規(guī)范了我們要解決的所有問題,如下圖所示。
這個模型包含兩個序列,一個是狀態(tài)序列,用X表示,一個是觀測序列(又叫測量序列、證據(jù)序列、觀察序列,不同的書籍有不同的叫法,在這里統(tǒng)一叫觀測序列。)用Y表示。狀態(tài)序列反應(yīng)了系統(tǒng)的真實狀態(tài),一般不能被直接觀測,即使被直接觀測也會引進噪聲;觀測序列是通過測量得到的數(shù)據(jù),它與狀態(tài)序列之間有規(guī)律性的聯(lián)系。舉個例子,假設(shè)有一個人待在屋子里不知道外邊有沒有下雨,他于是觀察進屋子里的人是否帶傘,這里有沒有下雨就是狀態(tài),有沒有帶傘就是觀測。
上邊這個模型有兩個基本假設(shè):
一是馬爾可夫假設(shè)。假設(shè)當前狀態(tài)只與上一個狀態(tài)有關(guān),而與上一個狀態(tài)之前的所有狀態(tài)無關(guān)。用公式來表示(式中1:t表示時刻1到時刻t的所有采樣時刻),
上面的P被稱為狀態(tài)轉(zhuǎn)移概率。例如上面那個雨傘的例子,我們會認為今天下不下雨只與昨天下不下雨有關(guān),與以前沒有關(guān)系。
二是觀測假設(shè)(又叫證據(jù)假設(shè),觀察者假設(shè))。假設(shè)當前觀測值只依賴于當前狀態(tài),與其他時刻的狀態(tài)無關(guān)。用公式來表示,
上面的P被稱為觀測概率(也有其他叫法)。例如上面那個雨傘的例子,進來的人帶不帶傘只與今天下不下雨有關(guān)系,與之前或未來下不下雨沒關(guān)系。
由此,一個模型(記為λ)可以被狀態(tài)轉(zhuǎn)移概率矩陣和觀測概率矩陣唯一確定。
這兩個假設(shè)可以極大地將問題簡化,而且很多實際情況符合這兩個假設(shè),即使有些偏差,我們也可以對模型進行拓展。例如雨傘的例子,我們認為今天下不下雨不僅與昨天有關(guān),還與前天甚至更早的時間有關(guān),那么就可以對馬爾可夫假設(shè)進行拓展,拓展成二階甚至更高階的馬爾可夫模型,例如二階
那么這個模型需要完成的任務(wù)有哪些呢?主要有以下幾個方面:
(1)濾波,計算
(2)預(yù)測,計算
(3)平滑,計算
(4)最可能解釋,計算
(5)評估(這是我自己加的,我覺得有必要加上這一點),計算
這里面的λ是指模型,這個公式意味著在該模型下,給定到目前為止的狀態(tài)序列,計算輸出特定觀測序列的可能性。這其實是個評估問題,可以評估模型的好壞,概率越高,意味著模型越能反映觀測序列與狀態(tài)序列之間的聯(lián)系,模型就越好。
(6)學(xué)習(xí)。計算λ,也即狀態(tài)轉(zhuǎn)移概率和觀測概率
學(xué)習(xí)的目的是根據(jù)歷史數(shù)據(jù)得到合理的模型,一般是根據(jù)一個目標函數(shù),對模型進行迭代更新,例如使(5)中要計算的值最大便可以作為一個目標。
上邊列出了一般時序模型要解決的所有問題,囊括的內(nèi)容非常豐富,占了人工智能很大一塊。盡管濾波只是其中一項,但理解模型的總體會對理解濾波有所幫助。下面把目光聚焦到濾波上來。
3.濾波問題
根據(jù)目前為止過去所有的測量數(shù)據(jù),估計當前的狀態(tài),這便是濾波,但直接計算會有一個很明顯的問題。注意到,計算值的條件是過去所有的測量數(shù)據(jù),意味著計算每一個時刻的概率都要回顧整個歷史測量數(shù)據(jù),那么隨著時間的推移,更新的代價會越來越大。所以需要找到一種辦法,根據(jù)時刻t的濾波結(jié)果,和時刻t+1時刻的測量數(shù)據(jù),就能計算出t+1時刻的濾波結(jié)果,這個計算過程叫做遞歸估計。用公式來表示,存在某個函數(shù)f,滿足:
為了得到上面那個函數(shù),對要求的概率作以下變換
第一步到第二步根據(jù)貝葉斯方程,第二步到第三步根據(jù)觀測假設(shè)。第三步的的前一項是狀態(tài)轉(zhuǎn)移概率,模型已知,后面一項是一個單步預(yù)測,對單步預(yù)測做進一步的轉(zhuǎn)換:
式中第一步應(yīng)該比較好理解,t+1時刻某個狀態(tài)可能由t時刻任何一個狀態(tài)轉(zhuǎn)移而來,所以t+1時刻某個狀態(tài)的概率就等于t時刻所有可能狀態(tài)的概率乘以相應(yīng)的轉(zhuǎn)移概率求和,第一步到第二步根據(jù)貝葉斯方程,第二步到第三步根據(jù)馬爾科夫假設(shè)。注意到第三步第一項是狀態(tài)轉(zhuǎn)移概率,模型已知,第二項即t時刻的濾波結(jié)果,這樣我們就可以利用t時刻的濾波結(jié)果遞推t+1時刻的濾波結(jié)果了。遞推公式可以表示為,
這種方法被稱為前向遞歸。這里表示的狀態(tài)是離散的,如果是連續(xù)的求和符號改為積分符號即可。
但這種方法有個最大的問題就是有確切的模型,也就是說狀態(tài)轉(zhuǎn)移概率和觀測概率必須是已知的,但大多數(shù)情況它們并不是已知的,當然可以通過學(xué)習(xí)得到,但學(xué)習(xí)本身并不是那么容易的,那么如何才能在模型未知的情況下,實現(xiàn)上述遞推呢?接下來就要看看卡爾曼濾波怎么巧妙地解決這個問題了!
今天先寫到這,敲公式真心耗時間!!!