受限玻尔兹曼机准备知识——MCMC方法和Gibbs采样
先點明幾個名詞
MCMC方法:馬爾可夫鏈-蒙特卡洛方法 ?(千萬別叫成梅特羅波利斯蒙特卡羅方法了)
Metropolis-Hastings采樣:梅特羅波利斯-哈斯廷斯采樣
Gibbs采樣:吉布斯采樣
還是介紹一下學習MCMC和Gibbs采樣比較好的一個資料:隨機采樣方法與整理和受限玻爾茲曼機(RBM)學習筆記(一)預備知識(資料挺好的,本文就差不多是這兩個資料的精簡版,主要圍繞啊MCMC和Gibbs講解)
吉布斯采樣在后面一個博客有matlab代碼:http://blog.csdn.net/zb1165048017/article/details/51778694
MCMC方法在后面有理論和代碼分析:https://blog.csdn.net/zb1165048017/article/details/80584031
蒙特卡洛方法
回憶一下前面一個文章蒙特卡洛方法,其中有一步驟就是用來計算積分的,轉換成一個函數乘以一個概率密度函數。說過一句話“樣本的容量足夠大時,可以認為該事件的發生頻率即為其概率”。當n足夠大的時候,可以得到
也就是g(x)在p(x)分布上的均值。然后就可以用均值近似積分的值
其實不難發現
還是拿那個用一個圓和其外接正方形理解,就相當于,我們做了N次試驗,每次試驗都是丟一堆點到這個正方形包圍區域,然后正方形內的點數(這個地方這樣想比較方便:點構成面,那么我們就可以把正方形的面積想象成無數個點)也就是正方形近似的面積了,同理,被丟到圓內的點構成了圓的面積。回到那個用均值計算積分的累加式上,它就相當于我做了n次丟點的實驗,所有的點構成了樣本f(x),而1/p(x)就代表了點落在圓內的概率大小。
【注】概率密度函數:表示瞬時值落在某指定范圍內的概率,因此是幅值的函數,它隨所取范圍的幅值而變化。
馬爾可夫鏈蒙特卡洛方法(MCMC方法)
前面已經介紹過關于HMM的相關知識了,主要就是分別用何種方法解決哪三種問題。馬爾可夫鏈(通常我們說的就是一階的情況)闡述的是事物發生的當前狀態只與前面一個狀態有關,比如明天天氣狀態只與今天的天氣有關,與前天或者以前的天氣狀態無關。具體表述就是
代表的是第(t+1)時刻的狀態為 i 的概率為它的前一時刻 t 的所有可能狀態 k 乘以狀態 k 到狀態 i 的轉移概率。
舉個栗子哈~~還是天氣的那個以明天的天氣為起點,我們想預測后天的天氣為晴的概率多大,我們需要知道明天的天氣,但是明天天氣有很多種可能,由初始概率可以知道明天天氣分別為陰、晴、多云等的概率,然后分別乘以陰天到晴天的概率、晴天到晴天的轉移概率、多云到晴天的轉移概率等,然后相加就可以得到后天晴天的概率。在前面的文章有栗子,有需要可以去看看栗子就可以了。
然后出現了這樣一個理論:當我們一直進行狀態轉移,到達一定次數的時候,這個狀態發生的概率就會趨于穩定了,就比如,我們用天氣一直預測,今天的比如晴天,我預測明天天氣分別為陰、晴、多云的概率,然后用明天可能出現的天氣情況預測后天的天氣情況,然后我們一直計算,假如計算到達今年12月份最后一天的天氣概率,就會發現這個概率跟12月份下旬的每天的天氣概率分布情況差不多,差距很小。用數學的方法表示就是:
代表的就是我們以初始狀態的天氣概率,不斷的乘以這個轉移矩陣(乘一次就是轉移了一次,乘兩次就是轉移了兩次),當乘的次數越來越多的時候,概率分布變化會逐漸趨近與穩定。就像前面MC中說過的,我們不斷的采樣,最終的狀態一定是一個穩定狀態,最接近樣本分布的狀態。
上面這個情況稱為馬氏鏈定理:對于各態遍歷的馬爾可夫鏈(滿足兩個條件:非周期性,也就是狀態轉移不是按照某種規律循環,而是隨機轉移的;另一個條件是不可約,也就是每一個狀態都可有其它任何一種狀態轉移過來,不可能存在一種狀態轉移的概率為0),不管初始的概率如何取值,隨著轉移次數的增多,隨機變量的取值分布最終會收斂于唯一的平穩分布。這個就是MCMC理論的基礎。
現在的問題就是這個轉移概率矩陣去怎么選擇,讓我們的初始狀態沿著馬爾可夫鏈按照這個轉移概率矩陣去轉移,最終得到的平穩分布正好是我們需要的概率分布。采樣的時候,我們直接按照這個概率轉移幾次,達到我們需要的概率分布的時候,便去采樣就可以了。隨之便出現了下一個方法:梅特羅波利斯哈斯廷斯采樣。
梅特羅波利斯哈斯廷斯采樣
首先有一個概念需要知道叫做細致平穩條件:
如果非周期的馬氏轉移矩陣P和分布π(x)滿足那么就成π(x)是馬氏鏈的平穩分布。式子被稱為細致平穩條件。也就是我們從狀態 i 轉移到狀態 j 的時候損失的概率質量,剛好可以用從 j 到 i 狀態轉移增加的概率質量補回來。
但是這個細致平穩條件我們一般是達不到的。隨后就有大牛想到加入了一個變量叫做轉移提議分布Q(j;i)表示當前狀態 i 提議轉移到 j 狀態,用它來建議下一步是個什么狀態,然后用一個概率去接受它。就跟相親一樣,老爸老媽給你建議某個妹子的概率是多少,但是這還不夠,你還得有一個接受她的概率才能和她結婚。
這個就是接受概率。到底接不接受呢?我們產生一個隨機的[0,1] 范圍的數,如果α 大于這個數就接受,小于就拒絕轉移,保持原狀態。
然后細指平穩條件就成了下面醬紫
然后推理一步
可以輕松發現,π(x)分布下的π(j)狀態,經過轉移,達到的狀態依舊是滿足π(x)分布,為π(i)。
所以梅特羅波利斯哈斯廷斯采樣的精髓在于(自我感覺哈),提出了一個轉移提議分布,讓細致平穩條件成為可能。此時新的轉移矩陣為
那么問題又來了,這里面有一個隨機數和接受概率的比較,兩個東西都比較隨機,造成了這種方法的不穩定性,如果接受概率一直灰常小,那么我每次都拒絕了,這狀態還咋轉移。于是,大牛又來了~~~
吉布斯采樣(Gibbs采樣)
后面有篇博文詳細介紹了吉布斯采樣:http://blog.csdn.net/zb1165048017/article/details/51778694
條件概率的計算公式復習一下先
然后看一個比較有意思的式子推導
可以很清晰的發現,兩個狀態的相互轉移概率其實是相等的,也就是滿足細致平穩條件。也就是說,我們固定一個,按照x這個方向去轉移狀態,到達下一個狀態,這個過程是滿足細致平穩分布的。
用其它文章的話來說就是
這跟上面的梅特羅波利斯蒙特卡洛方法有什么關系呢?其實關鍵就在于,Gibbs規定了轉移方向,在這個方向是,你的接受概率必須為1,其它方向必須為0,這便消除了隨機性的影響。
最后再舉一個栗子串一下,還是相親的栗子。剛開始的時候是滿世界找對象,世界上每個妹子在你面前出現的概率叫做初始概率,然后你在世界上行走去每個地方概率為轉移概率,然后不斷地走,走遍大江南北,世界各地,不斷的轉移狀態,你就會發現,每個地方的妹子的屬性(身高、年紀、性格等)分布差不多,給你一個新地方,你不去就能猜到那邊妹子的平均身高,平均年齡等特征,這時候,妹子們的狀態分布就會趨于一種平穩狀態。除非你改變去每個地方的概率,或者世界上突然被外星人抓走了一種類型妹子,這時候就會處于另一種穩態。這種就叫做馬爾可夫鏈蒙特卡洛方法。
然后有的人就很聰明了,他想,我到處嚇跑干啥,累死了,走遍各地,讓妹子的分布達到穩態,這還不得老了。接著父母就開始忙活了,父母幫兒子找媳婦,父母每次給兒子按照某種提議分布去建議兒子娶這個,娶那個,兒子每看到一個妹子就以一定的接受概率去接受它,這種方法就是梅特羅波利斯哈斯廷斯采樣。
最后,有人就發現,有些類型的妹子我非常喜歡,有些不喜歡,有些又有點拿捏不定,怎么辦?這時候,我不想麻煩了,不喜歡和拿捏不定的,我統統不要,我就要一種風格的妹子(妹子的各種屬性滿足某種分布,幾分萌萌噠,幾分瘦,幾分年紀等),然后看到從樣本中找到第一個這樣風格的妹子,接下來按照上一個選中的妹子風格和我們希望的風格分布,不斷采樣,找這種風格的妹子,當我找到數量足夠的妹子(即Gibbs里面的n),這時候我就得到了我喜歡的風格的妹子們了(期望的樣本分布)。
好吧,如果有什么不對的,謝謝大家指正,我會不斷完善的~~~~謝謝啦~~~
總結
以上是生活随笔為你收集整理的受限玻尔兹曼机准备知识——MCMC方法和Gibbs采样的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对搜狗搜索引擎的评价
- 下一篇: 2 Java基础语法(keyword,标