日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

作為一種隨機采樣方法,馬爾科夫鏈蒙特卡羅(Markov Chain Monte Carlo,以下簡稱MCMC)在機器學習,深度學習以及自然語言處理等領域都有廣泛的應用,是很多復雜算法求解的基礎。

從名字我們可以看出,MCMC由兩個MC組成,即蒙特卡羅方法(Monte Carlo Simulation,簡稱MC)和馬爾科夫鏈(Markov Chain ,也簡稱MC)。要弄懂MCMC的原理我們首先得搞清楚蒙特卡羅方法和馬爾科夫鏈的原理。

蒙特卡羅方法

蒙特卡羅原來是一個賭場的名稱,用它作為名字大概是因為蒙特卡羅方法是一種隨機模擬的方法,這很像賭博場里面的扔骰子的過程。原理是通過大量隨機樣本,去了解一個系統,進而得到所要計算的值。

它非常強大和靈活,又相當簡單易懂,很容易實現。對于許多問題來說,它往往是最簡單的計算方法,有時甚至是唯一可行的方法。

給定統計樣本集,如何估計產生這個樣本集的隨機變量概率密度函數,是我們比較熟悉的概率密度估計問題。

求解概率密度估計問題的常用方法是最大似然估計、最大后驗估計等。但是,我們思考概率密度估計問題的逆問題:給定一個概率分布p(x),如何讓計算機生成滿足這個概率分布的樣本。

這個問題就是統計模擬中研究的重要問題–采樣(Sampling)。

如果有一個我們很難求解出f(x)f(x)的原函數的函數, 現要求其在定義域 [a, b] 上的積分, 如果這個函數是均勻分布, 那么我們可以采樣 [a,b] 區間的 n 個值:${x 0,x_1,…x {n-1}}$,用它們的均值來代表 [a,b] 區間上所有的 f(x) 的值。這樣我們上面的定積分的近似求解為:

如果不是均勻分布, 并 假設我們可以得到 xx 在[a,b][a,b]的概率分布函數p(x)p(x) ,那么我們的定積分求和可以這樣進行:

上式最右邊的這個形式就是蒙特卡羅方法的一般形式。當然這里是連續函數形式的蒙特卡羅方法,但是在離散時一樣成立。

可以看出,最上面我們假設x在[a,b]之間是均勻分布的時候,p(xi)=1/(b−a),帶入我們有概率分布的蒙特卡羅積分的上式,可以得到:

也就是說,我們最上面的均勻分布也可以作為一般概率分布函數p(x)p(x)在均勻分布時候的特例。那么我們現在的問題轉到了如何在已知分布求出 x 的分布p(x)p(x)對應的若干個樣本上來。

采樣方法

主要有概率分布采樣及接受-拒絕采樣方法.

概率分布采樣

如果求出了xx的概率分布,我們可以基于概率分布去采樣基于這個概率分布的 n 個xx的樣本集,帶入蒙特卡羅求和的式子即可求解。但是還有一個關鍵的問題需要解決,即如何基于概率分布去采樣基于這個概率分布的 n 個xx的樣本集。

一般而言均勻分布 Uniform(0,1) 的樣本是相對容易生成的。 通過線性同余發生器可以生成偽隨機數,我們用確定性算法生成[0,1]之間的偽隨機數序列后,

這些序列的各種統計指標和均勻分布 Uniform(0,1) 的理論計算結果非常接近。這樣的偽隨機序列就有比較好的統計性質,可以被當成真實的隨機數使用。線性同余隨機數生成器如下:

式中a,c,ma,c,m是數學推導出的合適的常數。這種算法產生的下一個隨機數完全依賴當前的隨機數,當隨機數序列足夠大的時候,隨機數會出現重復子序列的情況。

當然,也有很多更加先進的隨機數產生算法出現,比如 numpy 用的是 Mersenne Twister 等.

而其他常見的概率分布,無論是離散的分布還是連續的分布,它們的樣本都可以通過 Uniform(0,1) 的樣本轉換而得, 但是如何產生滿足其他分布下的隨機數呢?

比如二維正態分布的樣本(Z1,Z2)(Z1,Z2)可以通過通過獨立采樣得到的 uniform(0,1) 樣本對(X1,X2)(X1,X2)通過如下的式子轉換而得:

其他一些常見的連續分布,比如 t分布 , F分布 , Beta分布 , Gamma分布 等,都可以通過類似的方式從 uniform(0,1) 得到的采樣樣本轉化得到。在Python的 numpy , scikit-learn 等類庫中,都有生成這些常用分布樣本的函數可以使用。

不過很多時候,我們的x的概率分布不是常見的分布,這意味著我們沒法方便的得到這些非常見的概率分布的樣本集。那這個問題怎么解決呢?

接受-拒絕采樣

對于概率分布不是常見的分布,一個可行的辦法是采用接受-拒絕采樣來得到該分布的樣本。既然 p(x)p(x) 太復雜在程序中沒法直接采樣,那么我設定一個程序可采樣的分布 q(xq(x) 比如高斯分布,然后按照一定的方法拒絕某些樣本,以達到接近 p(x)p(x) 分布的目的,其中q(x)q(x)叫做 proposal distribution 。

具體采用過程如下,設定一個方便采樣的常用概率分布函數 q(x),以及一個常量 k,使得 p(x) 總在 kq(x) 的下方。

蒙特卡羅方法概述

 

首先,采樣得到 q(x) 的一個樣本$z 0$,采樣方法如上,使用 uniform(0,1) 轉換得到。然后,從均勻分布(0,kq(z0))(0,kq(z0))中采樣得到一個值uu。如果uu落在了上圖中的灰色區域,則拒絕這次抽樣,否則接受這個樣本z0z0。重復以上過程得到 n 個接受的樣本 $z_0,z_1,…z {n−1}$,則最后的蒙特卡羅方法求解結果為:

整個過程中,我們通過一系列的接受拒絕決策來達到用q(x)模擬p(x)概率分布的目的。

小結

使用接受-拒絕采樣,我們可以解決一些概率分布不是常見的分布的時候,得到其采樣集并用蒙特卡羅方法求和的目的。但是接受-拒絕采樣也只能部分滿足我們的需求,在很多時候我們還是很難得到我們的概率分布的樣本集。比如:

  1. 對于一些二維分布p(x,y)p(x,y),有時候我們只能得到條件分布p(x|y)p(x|y)和p(y|x)p(y|x),卻很難得到二維分布p(x,y)p(x,y)一般形式,這時我們無法用接受-拒絕采樣得到其樣本集。
  2. 對于一些高維的復雜非常見分布p(x1,x2,…,xn)p(x1,x2,…,xn),我們要找到一個合適的q(x)和q(x)和k$非常困難。

從上面可以看出,要想將蒙特卡羅方法作為一個通用的采樣模擬求和的方法,必須解決如何方便得到各種復雜概率分布的對應的采樣樣本集的問題。

此時就需要使用一些更加復雜的隨機模擬的方法來生成樣本。比如馬爾科夫鏈蒙特卡羅方法,了解這個算法我們首先要對馬爾科夫鏈的平穩分布的性質有基本的認識。

分享到:
標簽:蒙特 卡羅
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定