MCMC算法深入理解
MCMC(Markov Chain Monte Carlo),即馬爾科夫鏈蒙特卡洛方法,是以馬爾科夫平穩狀態作為理論基礎,蒙特卡洛方法作為手段的概率序列生成技術。
?
MCMC理論基礎
如果轉移矩陣為P的馬爾科夫鏈平穩狀態和我們研究的概率質量函數(概率密度函數)分布一致,那么我么從任意初始值開始,經過一定次數的概率轉以后,后續的轉移值組成的序列必然服從馬爾科夫平穩狀態分布,也就是服從我們研究的概率分布,這樣就生成了我們研究的概率分布的模擬數據序列。
對于任意初始值X0,經過n次概率轉移后,生成值符合平穩狀態分布,并且后續概率轉移始終符合平穩狀態分布,所以我們可以認為從第n次開始的轉移值序列符合平穩狀態分布。數學表達如下
1、????????? 初始值為X0,X0通過轉移矩陣P生成馬氏鏈序列。
?
2、????????? 馬氏鏈經過n次轉移后達到平穩狀態。
?
3、????????? 則從第n次開始的轉移序列符合平穩狀態分布。
?
我們用城市化進程中人口轉移模型來闡述一下這個思想的物理意義。我們假設第一代人為農村人。農村人下一代為農村人,第3代為城市人,城市人接下來9代為城市人,第10代為農村人(我們模擬農村人轉化為城市人概率為0.5,城市人轉化為農村人概率為0.1)。如下表,按照這種規律生成的隨機序列農村人城市人比例為1:5,與之前計算的平穩分布17:83基本相等。實際上該模型下的馬氏鏈平穩條件為:0.5 * 農村人 = 0.1 * 城市人,可以推測出農村人 : 城市人 =? 1 : 5,與我們的模擬是一致的。
我們已經知道,使馬爾科夫鏈的平穩狀態等同于我們研究的概率分布,就可以構造出符合該概率分布的隨機序列。現在的問題是如何構造出這樣的馬爾科夫鏈,使得其穩定分布等于我們研究的概率分布。
?
細致平穩條件
如下更強的馬爾科夫鏈穩定狀態定理可以解決這個問題
定義顯而易見,從任意狀態i轉移到狀態j的速率等于從狀態j轉移到狀態i的速率,則狀態轉移穩定。城市化進程的例子充分說明了這一點。定理中π分布就是我們研究的概率分布,我們構造出P,則構造出了穩定狀態滿足π分布馬爾科夫鏈。
?
算法實現
我們隨機初始化一個轉移矩陣Q(比如均勻分布),q(i, j)表示從狀態i轉移到狀態j的概率。一般情況下Q顯然不滿足細致平穩條件,即
p(i)q(i, j) != p(j)q(j, i)
我們構造α(i, j)與α(j, i),使等式成立,即
?
其中
α(i, j) = p(j)q(j, i) α(j, i) = p(i)q(i, j)
這樣,我們通Q與α,構造了一個符合細致平穩條件的Q’。
Q一般來說是我們熟悉的概率分布,計算機易于模擬,但是Q’怎么模擬呢?在構造Q’的過程中,我們引入的α(i, j)稱作接受率,我們生成一個符合Q分布的狀態后,再以α(i, j)的概率來接受狀態轉移。(實際上q(j, i)α(i, j)就是轉移矩陣Q’中狀態i轉移到j的概率,我們以α(i, j)接受狀態轉移就是在進行乘以轉移矩陣Q’運算)
MCMC算法如下
?
上述算法還有一個小缺陷,接受率α(i, j)可能較小,導致狀態轉移概率太小,收斂較慢。實際上,對于細致平穩條件,等式兩邊同時乘以一個倍數,也是成立的。于是我們把細致平穩條件改造為
p(i)q(i, j) α(i, j)/ α(j, i) = p(j)q(j, i)
則可以用如下接受率進行狀態轉移
?
改進后的MCMC算法如下
?
?
?
參考:
https://www.jianshu.com/p/28d32aa7cc45
《LDA數學八卦》
轉載于:https://www.cnblogs.com/coshaho/p/9743500.html
總結
以上是生活随笔為你收集整理的MCMC算法深入理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vim 离线安装_VIM学习笔记 插件列
- 下一篇: 华为OV小米鸿蒙,华为鸿蒙开源,小米OV