Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子濾波/Bootstrap Filtering

Problem Statement

我們考慮一個具有馬爾可夫性質、非線性、非高斯的狀態空間模型(State Space Model):對於一個時間序列上的觀測結果{yt,tN}\{ y_t , t \in N \},我們認爲每個觀測結果yty_t的生成依賴於一個無法直接觀察的隱變量xt{xt,tN}x_t \in \{x_t , t \in N \},即:p(ytxt),t[1,N]p(y_t|x_{t}), t \in [1,N];我們假設隱變量具有一個先驗的狀態轉移函數p(xtxt1),t[1,N]p(x_t | x_{t-1}), t \in [1,N],若給定一個初始分佈p(x0)p(x_0),那麼這個模型就能由這三個參數描述:p(x0),p(xtxt1),p(ytxt)p(x_0),p(x_t| x_{t-1}),p(y_t|x_t)。這裏,我們定義到時間tt的觀察序列:x0:t={x0,,xt}\mathbf{x_{0:t}}=\{ x_0, \dots, x_t\}和對應的隱變量序列y1:t={y1,,yt}\mathbf{y_{1:t}}=\{ y_1, \dots, y_t\}

我們關心如何根據當前的觀測序列來推斷(infer)隱變量序列,即估計一個後驗概率分佈p(x0:ty1:t)p(\mathbf{x_{0:t}| y_{1:t}}),和它的邊緣概率分佈:p(xty1:t)p(x_{t}| \mathbf{y_{1:t}}) (這裏通常被稱爲濾波, filtering) ,以及它對於某個函數ftf_t的期望:
I(ft)=Ep(x0:ty1:t)ft(x0;t)=p(x0:ty1:t)ft(x0;t)dx1:t I(f_t) = \mathbb{E}_{p(\mathbf{x_{0:t}| y_{1:t}})} f_t(\mathbf{x_{0;t}}) = \int p(\mathbf{x_{0:t}| y_{1:t}}) f_t(\mathbf{x_{0;t}}) d_{\mathbf{x_{1:t}}}

在任何時間tt,我們可以推導p(x0:t+1y1:t+1)p(\mathbf{x_{0:t+1}| y_{1:t+1}})p(x0:ty1:t)p(\mathbf{x_{0:t}| y_{1:t}})之間的關係:
p(x0:t+1y1:t+1)=p(x0:t+1,y1:t+1)p(y1:t+1)=p(x0:t+1,yt+1yt)p(y1:t)p(y1:t+1)=p(x0:ty1:t)p(yt+1,xt+1x0:t,y1:t)p(y1:t)p(y1:t,yt+1)=p(x0:ty1:t)p(xt+1y1:t,x0:t)p(yt+1x0:t,y1:t,xt+1)p(y1:t)p(yt+1y1:t)p(y1:t)=p(x0:ty1:t)p(xt+1xt)p(yt+1xt+1)p(yt+1y1:t) \begin{aligned} {p(\mathbf{x_{0:t+1}| y_{1:t+1}})} &= \frac {p(\mathbf{x_{0:t+1}, y_{1:t+1}})} {p(\mathbf{y_{1:t+1}})} \\ &= \frac{p (\mathbf{x_{0:t+1}},y_{t+1}|\mathbf{y}_t) p(\mathbf{y_{1:t}})}{p(\mathbf{y_{1:t+1}})} \\ &= \frac {p(\mathbf{x_{0:t}}|\mathbf{y_{1:t}})p(y_{t+1},x_{t+1}|\mathbf{x_{0:t}},\mathbf{y_{1:t}}) p(\mathbf{y_{1:t}}) }{p(\mathbf{y_{1:t}},y_{t+1})} \\ &= \frac {p(\mathbf{x_{0:t}}|\mathbf{y_{1:t}})p(x_{t+1}|\mathbf{y_{1:t}},\mathbf{x_{0:t}})p(y_{t+1}|\mathbf{x_{0:t}},\mathbf{y_{1:t}},x_{t+1}) p(\mathbf{y_{1:t}}) }{p(y_{t+1}| \mathbf{y_{1:t}}) p(\mathbf{y_{1:t}})} \\&= p(\mathbf{x_{0:t}}|\mathbf{y_{1:t}}) \frac {p(x_{t+1}|x_t) p(y_{t+1}|x_{t+1}) }{p(y_{t+1}|\mathbf{y_{1:t}})} \end{aligned}

Monte Carlo Sampling

假設我們能夠從p(x0:ty0:t)p(\mathbf{x_{0:t}}|\mathbf{y_{0:t}})生成N個獨立同分布的隨機樣本(也被稱爲粒子particles),那麼ftf_t的期望可以用以下表示:
IN(ft)=1Ni=1Nft(x0:t(i)) I_N(f_t) = \frac{1}{N} \sum_{i=1}^N f_t(\mathbf{x^{(i)}_{0:t}})
當N足夠大時,蒙特卡洛採樣能夠無偏估計ftf_t的期望,然而我們通常是不知道先驗分佈p(x0:ty0:t)p(\mathbf{x_{0:t}}|\mathbf{y_{0:t}})的,因此採樣的樣本是隨機採樣的,這就會導致這種方法效率不會很高,尤其是當隨機採樣的分佈與p(x0:ty0:t)p(\mathbf{x_{0:t}}|\mathbf{y_{0:t}})的分佈相差較大時。

Importance Sampling (IS)

爲了解決採樣效率問題,我們引用一個重要性分佈π(x0:ty0:t)\pi(\mathbf{x_{0:t}}|\mathbf{y_{0:t}})來代替之前蒙特卡洛方法裏的隨機採樣,那麼採樣權重(importance weight)可以表示爲:
w(x0:t)=p(x0:ty0:t)π(x0:ty0:t) w(\mathbf{x_{0:t}})= \frac { p(\mathbf{x_{0:t}}|\mathbf{y_{0:t}})} {\pi(\mathbf{x_{0:t}}|\mathbf{y_{0:t}})}

ftf_t的期望可以被寫成:

I(ft)=ft(x0:t)p(x0:ty0:t)dx0:t=π(x0:ty0:t)p(x0:ty0:t)π(x0:ty0:t)ft(x0:t)dx0:t=Eπ(x0:ty0:t)[w(x0:t)ft(x0:t)]=1Ni=1N[w(x0:t(i))ft(x0:t(i))] \begin{aligned} I(f_t) &= \int f_t(\mathbf{x_{0:t}}) p(\mathbf{x_{0:t}}|\mathbf{y_{0:t}}) d_{\mathbf{x_{0:t}}} \\ &= \int \pi(\mathbf{x_{0:t}}|\mathbf{y_{0:t}}) \frac { p(\mathbf{x_{0:t}}|\mathbf{y_{0:t}})} {\pi(\mathbf{x_{0:t}}|\mathbf{y_{0:t}})} f_t(\mathbf{x_{0:t}}) d_{\mathbf{x_{0:t}}} \\&= \mathbb{E}_{\pi(\mathbf{x_{0:t}}|\mathbf{y_{0:t}})} [w(\mathbf{x_{0:t}})f_t(\mathbf{x_{0:t}})] \\ &= \frac{1}{N} \sum_{i=1}^N [w(\mathbf{x^{(i)}_{0:t}}) f_t(\mathbf{x^{(i)}_{0:t}})] \end{aligned}

我們還可以推導另外一種寫法:由於p(x)dx=1\int p(x)dx=1,有π(x)w(x)dx=1\int \pi(x)w(x)dx=1,因此Eπ(x)w(x)=1\mathbb{E}_{\pi(x)}w(x)=1,然後得到1Nw(x)=1\frac{1}{N}w(x)=1,即w(x)=Nw(x)=N,則上面的式子可以被這麼寫:

I(ft)=1Ni=1N[wt(i)ft(x0:t(i))]=i=1N[wt(i)Nft(x0:t(i))]=i=1N[wt(i)wt(i)ft(x0:t(i))]=i=1Nwt~ft(x0:t(i)) \begin{aligned} I(f_t) &= \frac{1}{N} \sum_{i=1}^N [w_t^{(i)} f_t(\mathbf{x^{(i)}_{0:t}})] \\ & = \sum_{i=1}^N [\frac{w_t^{(i)}}{N} f_t(\mathbf{x^{(i)}_{0:t}})] \\ & = \sum_{i=1}^N [\frac{w_t^{(i)}}{\sum w_t^{(i)}} f_t(\mathbf{x^{(i)}_{0:t}})] \\ &= \sum_{i=1}^N \tilde{w_t}f_t(\mathbf{x^{(i)}_{0:t}}) \end{aligned}
這裏的wt~=wt(x)wt(x)\tilde{w_t}=\frac{w_t(x)}{\sum w_t(x)}是一個歸一化後的採樣權重(normalized importance weight),重要性採樣IS是一個通用的蒙特卡洛方法,但是由於它的表現形式,它在時間序列上並不能進行遞歸估計,比如:爲了計算p(x0:ty0:t)p(\mathbf{x_{0:t}}|\mathbf{y_{0:t}}),IS需要獲得所有的y0:t\mathbf{y_{0:t}}然後才能進行計算,然後當新的yt+1y_{t+1}到來時,IS需要重新在整個觀測序列y0:t+1\mathbf{y_{0:t+1}}上來計算,時間複雜度高,因此我們接下來介紹在時間序列上的重要性採樣。

Sequential Importance Sampling (SIS)

我們能夠擴展IS方法,使它在t+1t+1時刻的計算能夠使用tt時刻的計算結果。我們先將重要性函數π(x0:ty1:t)\pi(\mathbf{x_{0:t}|y_{1:t}})t1t-1時刻描述:

π(x0:ty1:t)=π(x0:t1y1:t)π(xtx0:t1,y1:t)=π(x0:t1y1:t1)π(xtx0:t1,y1:t) \begin{aligned} \pi(\mathbf{x_{0:t}|y_{1:t}}) &= \pi(\mathbf{x_{0:t-1}|y_{1:t}})\pi(x_t| \mathbf{x_{0:t-1},y_{1:t}}) \\ &= \pi(\mathbf{x_{0:t-1}|y_{1:t-1}})\pi(x_t| \mathbf{x_{0:t-1},y_{1:t}}) \\ \end{aligned}
於是我們有:
π(x0:ty1:t)=π(x0)ktπ(xkx0:k1,y1:k) \begin{aligned} \pi(\mathbf{x_{0:t}|y_{1:t}}) &= \pi(x_0) \prod_k^t \pi(x_k|\mathbf{x_{0:k-1},y_{1:k}}) \end{aligned}
到這裏,由於我們可以推導出p(x0:ty1:t)p(\mathbf{x_{0:t}}|\mathbf{y_{1:t}})π(x0:ty1:t)\pi(\mathbf{x_{0:t}}|\mathbf{y_{1:t}})關於t1t-1時刻的計算,則對於重要性權重wtw_t我們同樣有:

wt(i)(x0:t)=p(x0:t(i)y1:t(i))π(x0:t(i)y1:t(i))=p(x0:t1(i)y1:t1(i))π(x0:t1(i)y1:t1(i))p(xt(i)xt1(i))p(ytxt(i))p(yty1:t1)π(xtx0:t1(i),y1:t)=wt1(i)(x0:t1(i))p(xt(i)xt1(i))p(ytxt(i))p(yty1:t1)π(xt(i)x0:t1(i),y1:t) \begin{aligned} w^{(i)}_t(\mathbf{x_{0:t}}) &= \frac { p(\mathbf{x_{0:t}}^{(i)}|\mathbf{y_{1:t}}^{(i)})} {\pi(\mathbf{x_{0:t}}^{(i)}|\mathbf{y_{1:t}}^{(i)})} \\ &= \frac { p(\mathbf{x_{0:t-1}}^{(i)}|\mathbf{y_{1:t-1}}^{(i)})} {\pi(\mathbf{x_{0:t-1}}^{(i)}|\mathbf{y_{1:t-1}}^{(i)})} \frac {p(x_{t}^{(i)}|x_{t-1}^{(i)}) p(y_{t}|x_{t}^{(i)}) }{p(y_{t}| \mathbf{y_{1:{t-1}}}) \pi(x_t|\mathbf{x_{0:t-1}}^{(i)}, \mathbf{y_{1:t}}) } \\ &= w^{(i)}_{t-1}(\mathbf{x_{0:t-1}}^{(i)}) \frac {p(x_{t}^{(i)}|x_{t-1}^{(i)}) p(y_{t}|x_{t}^{(i)}) }{p(y_{t}|\mathbf{y_{1:t-1}}) \pi(x_t^{(i)}|\mathbf{x_{0:t-1}}^{(i)},\mathbf{y_{1:t}}) } \end{aligned}
對於當前tt時刻來說,p(yty1:t1)p(y_{t}|\mathbf{y_{1:t-1}})是確定的,而且對於所有的採樣樣本x0:t(i),iN\mathbf{x_{0:t}}^{(i)},i \in N都一致,因此還我們可以這麼表示w~t(i)\tilde w^{(i)}_t的更新:
w~t(i)(x0:t)w~t1(i)(x0:t1)p(xtxt1)p(ytxt)π(xtx0:t1,y1:t) \begin{aligned} \tilde w^{(i)}_t(\mathbf{x_{0:t}}) & \propto \tilde w^{(i)}_{t-1}(\mathbf{x_{0:t-1}}) \frac {p(x_{t}|x_{t-1}) p(y_{t}|x_{t}) }{\pi(x_t|\mathbf{x_{0:t-1},y_{1:t}}) } \end{aligned}
當我們採用先驗分佈作爲重要性分佈時,我們的重要性函數變成了:
π(x0:ty1:t)=p(x0:t)=p(x0)k=1tπ(xkxk1) \begin{aligned} \pi(\mathbf{x_{0:t}|y_{1:t}}) &= p(\mathbf{x_{0:t}}) =p(x_0) \prod_{k=1}^t \pi(x_k|x_{k-1}) \end{aligned}
因此ww的更新被簡化爲:w~t(i)(x0:t)w~t1(i)(x0:t1)p(ytxt(i))\tilde w^{(i)}_t(\mathbf{x_{0:t}}) \propto \tilde w^{(i)}_{t-1}(\mathbf{x_{0:t-1}}) p (y_{t}|x_t^{(i)})。SIS是一個不錯的方法,但本質上就是一個帶約束的重要性採樣方法,但是它在高維度空間的計算並不是很有效,比如當tt非常大時。

Bootstrap Filtering = Resampling + SIS

SIS的問題是:當t增加時,重要性權重的分佈的計算會越來越不準確,尤其是當時間t達到一定量時,通常只有很少的樣本(粒子)是有非零權重的,而大部分樣本(粒子)的權重都是0,因此會讓這個採樣分佈無法正確描述出先驗分佈。爲了處理這種退化(degeneracy),我們需要加入一個額外的重採樣(resampling)步驟。

重採樣的目的是擴增(multiply)那些權值較高的粒子個數而減少(eliminate)權值低的粒子,具體來說,假設一個粒子具有w~t\tilde w_t權值,重採樣會在此粒子附近再採樣Nw~tN \tilde w_t個粒子,若w~t=0\tilde w_t=0,那麼這個粒子會被淘汰(dead),剩下的(serviving)粒子會進入到下一個時刻,注意重採樣完後的每個粒子的權值都變成了:w~t(i)=1N,iN\tilde w_t^{(i)}=\frac{1}{N}, i \in N

假設我們的重要性採樣分佈就是先驗分佈,那麼Boostrap Filtering的過程可以被如下歸納:

  1. 初始化NN個粒子:{x0(i)=p(x0),iN}\{x^{(i)}_0=p(x_0),i\in N\},令t=1t=1
  2. 採樣NN個粒子:{x^t(i)p(xtxt1(i)),iN}\{\hat x_t^{(i)} \sim p(x_t|x_{t-1}^{(i)}),i \in N\},對於每個粒子,更新其採樣軌跡:x^0:t(i)=(x0:t1(i),x^t(i))\mathbf {\hat x_{0:t}}^{(i)} = (\mathbf {x_{0:t-1}}^{(i)},\hat x_t^{(i)})
  3. 估計每個粒子的權重:wt(i)=p(ytx^t(i))w_t^{(i)}=p(y_t|\hat x_t^{(i)}) 並歸一化得到w~t(i)\tilde w_t^{(i)}(由於上一步的重採樣使wt1(i)w_{t-1}^{(i)}都相同,所以不需要參與權重計算)。
  4. 根據每個粒子的權重w~t(i)\tilde w_t^{(i)},從{x^t(i),iN}\{\hat x_{t}^{(i)},i \in N\}中重新採樣N個粒子:{xt(i),iN}\{ x_{t}^{(i)},i \in N\},更新x0:t(i)=(x0:t1(i),xt(i))\mathbf { x_{0:t}}^{(i)} = (\mathbf {x_{0:t-1}}^{(i)}, x_t^{(i)}),此時w~t(i)=1N\tilde w_t^{(i)}=\frac{1}{N}
  5. 重複2-4步驟,且t=t+1t=t+1

Bootstrap Filtering有幾個優點:1. 易實現,計算簡單;2. 擴展性好,當遷移至別的問題時,只需要更改重要性採樣分佈即可;3. 天然支持並行計算,4.重採樣過程可以看成是一種黑匣子,輸入當前的權值和粒子索引,輸出每個粒子要重採樣的次數,因此這種黑匣子有很多種實現方法,這樣可以支持很多的複雜的模型在時間序列上進行推斷(inference)

Conclusion

這種方法其實代表了一種時間序列上的推斷框架,它有很多名字:粒子濾波 / Bootstrap Filtering / 序列化蒙特卡洛 / 序列化重要性採樣 + 重採樣,這種通用的思想可以被用到很多具體的推斷問題上,特別是partially observed問題,如機器人定位,partially observed MDP (POMDPs)。借用一張圖來表示Bootstrap Filtering:

在這裏插入圖片描述

Reference

https://www.stats.ox.ac.uk/~doucet/doucet_defreitas_gordon_smcbookintro.pdf

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