序列蒙特卡羅(Sequential Monte Carlo)


發現網上看到的序列蒙特卡羅的中文理解很少,就稍微整理一下自己看到的,歡迎討論~

內容引入

許多現實世界的數據分析任務都涉及從一些給定的觀察數據中估計預測未知的數據。大多數應用場景下可以使用一些先驗知識來輔助建模,即貝葉斯模型【通過未知量的先驗分布以及與這些量與觀測值相關的似然函數得到后驗分布來刻畫和分析一些東西】。通常情況下,觀測數據是按時間順序記錄的,這有助於執行在線推理,不斷更新后驗分布。使用雷達測量跟蹤飛機、使用噪聲測量估計數字通信信號、使用股票市場數據估計金融工具的波動性等都屬於此類情況。

序列蒙特卡羅的另一種叫法是粒子濾波【利用粒子集來表示概率,通過尋找一組在狀態空間中傳播的隨機樣本來近似表示概率密度函數,用樣本均值代替積分運算,獲得系統狀態的最小方差估計過程】。

不得不提的一個是卡爾曼濾波 -- 用線性高斯狀態空間模型對數據進行建模,推導出精確的解析表達式來計算后驗分布的演化序列。還有一個是隱馬爾可夫模型HMM濾波器,將數據建模為部分觀察的有限狀態空間馬爾可夫鏈,也有可能得到一個解析解。這兩個濾波器在實際中是最為普遍和著名的,但在解決實際問題時,我們得到的數據通常涉及非高斯性、高維性和非線性因素,一般得不到解析解。這是一個滲透在大多數科學學科中的基礎性的重要問題。根據感興趣的領域,出現了許多不同的名稱,包括貝葉斯過濾,最優(非線性)過濾,隨機過濾和在線推理與學習。三十多年來,為了解決這一問題,人們提出了許多近似方案,如擴展卡爾曼濾波、高斯和逼近和基於網格的濾波器。前兩種方法沒有考慮到所考慮過程的所有顯著統計特征,常常導致較差的結果。基於網格的過濾器。基於確定性數值積分的方法,可以得到精確的結果,但很難實現,計算代價太高,在高維中沒有任何實際應用。

而序列蒙特卡羅 (Sequential Monte Carlo)是一種基於仿真的方法,為計算后驗分布提供了便捷,不一定非要計算出顯式結果。

模型描述

使用\(x\)來描述信號,\(y\)來描述觀測值。我們的目的是在時間上遞歸估計后驗分布\(p(x_{0:t}|y_{1:t})\)及其相關特征(均值、方差、協方差等)。

理論上帶入貝葉斯公式,都可以計算和預測,具體公式如下:

由於上述常數、后驗邊緣等涉及高維積分,真的不好計算。大家想了很多辦法來近似分布進行抽樣估計,如重要性抽樣、順序重要性抽樣等。

重要性采樣(Importance Sampling)

在之前整理蒙特卡羅離線策略的時候有過匯總 ,這里就不詳述啦(有想看的可以在之前發過的文章中看到)
一句話總結就是引入一個比較好產生的變量作為中間橋梁,來實現對另一個變量的采樣來計算均值。

序列重要性采樣(Sequential Importance Sampling)

在重要性采樣的基礎上對序列進行采樣的方法。隨着時間的增加,重要性權重變得越來越傾斜,最后可能退化為只有少數粒子具有非零權重。為了避免重要性權重的退化,引入了重采樣步驟。

The Bootstrap filter

重采樣是在每次權重更新之后,根據當前權重對所有粒子進行重采樣,之后將所有權重設定為相同。使用粒子數量代替了粒子權重,避免了權重不均勻情況的出現。
示意圖如下所示:

包含重采樣的序列重要性采樣

以下是算法流程圖:

可以理解為是上邊圖的延伸,從一維擴展到高維即可。

總結

感覺講的也不是很多,初步印象是從蒙特卡羅一組序列的轉移中加深到了兩組序列的關系,從一組已知的序列中轉化到另一組中,中間用到了重要性采樣和重采樣的方法。

參考鏈接

https://blog.csdn.net/ppp8300885/article/details/85127984


免責聲明!

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



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