1. 程式人生 > >MCMC取樣和M-H取樣

MCMC取樣和M-H取樣

MCMC之馬爾可夫鏈之中我們介紹到,給定一個概率分佈π,很難直接找到對應的馬爾可夫鏈狀態轉移矩陣P。只要解決這個問題,我們便可以找到一種通用的概率分佈取樣方法,進而用於蒙特卡羅模擬。下面我們來介紹如何找到馬爾可夫鏈所對應的狀態轉移矩陣P。

1.馬爾可夫鏈細緻平穩條件

解決平穩分佈π所對應的馬爾可夫鏈狀態轉移矩陣P之前,我們先看一下馬爾可夫鏈的細緻平穩條件。其定義為:如果非週期馬爾可夫鏈的狀態轉移矩陣P和概率分佈π(x)對於所有的i,j滿足下列方程,則概率分佈π(x)是狀態轉移矩陣P的平穩分佈。
π

( i ) P ( i , j ) =
π ( j ) P ( j , i )
\pi(i)P(i,j) = \pi(j)P(j,i)
證明如下,由細緻平穩條件有
i = 1 π ( i ) P ( i , j ) = i = 1 π ( j ) P ( j , i ) = π ( j ) i = 1 P ( j , i ) = π ( j ) \sum _{i=1}^{\infty}\pi(i) P(i,j) = \sum _{i=1} ^{\infty} \pi(j) P(j,i) = \pi(j) \sum _{i=1} ^{\infty}P(j,i) = \pi(j)
將上式用矩陣表示為
π P = π \pi P = \pi
上式滿足馬爾可夫鏈的收斂性質,也就是說,只要我們找到可以使概率分佈π(x)滿足細緻平穩分佈的矩陣P即可。不過僅僅從細緻平穩條件還是很難找到合適的矩陣P,比如我們的目標平穩分佈使π(x),隨機找一個馬爾可夫鏈狀態轉移矩陣Q,他是很難滿足細緻平穩條件的,即
π ( i ) Q ( i , j ) π ( j ) Q ( j , i ) \pi (i) Q(i,j) \neq \pi(j) Q(j,i)
那麼有什麼辦法可以使這個等式相等呢?

2.MCMC取樣

由於一般情況下,目標平穩分佈π(x)和某一馬爾可夫鏈狀態轉移矩陣Q不滿足細緻平穩條件,即
π ( i ) Q ( i , j ) π ( j ) Q ( j , i ) \pi (i) Q(i,j) \neq \pi(j) Q(j,i)
我們對上式進行一些變換,使細緻平穩條件成立。方法是引入一個α(i,j),使得上式等式能夠成立,即
π ( i ) Q ( i , j ) α ( i , j ) = π ( j ) Q ( j , i ) α ( j , i ) \pi (i) Q(i,j) \alpha (i,j) = \pi(j) Q(j,i) \alpha(j,i)
問題是什麼樣的α可以使上式成立?其實很簡單,只要滿足
α ( i , j ) = π ( j ) Q ( j , i ) ;   α ( j , i ) = π ( i ) Q ( i , j ) \alpha (i,j) = \pi (j)Q(j,i); \ \alpha(j,i)=\pi(i)Q(i,j)
這樣,我們便找到使分佈π(x)對應的馬爾可夫鏈狀態轉移矩陣P,滿足
P ( i , j ) = Q ( i , j ) α ( i , j ) P(i,j) = Q(i,j)\alpha(i,j)
從上面可以得到,目標矩陣P可以通過任意一個馬爾可夫鏈狀態轉移矩陣Q乘以α(i,j)得到。α(i,j)我們一般稱之為接受率,取值在[0,1]之間,可以理解為一個概率值。也就是說,目標矩陣P可以通過任意一個馬爾可夫鏈狀態轉移矩陣Q以一定的接受率得到。

其實很像我們在MCMC之蒙特卡羅方法中提到的接受-拒絕取樣,那裡是以常用分佈通過一定的接受-拒絕概率得到一個非常見分佈。這裡是通過常見的馬爾可夫鏈狀態轉移矩陣Q通過一定的接受-拒絕概率得到目標轉移矩陣P,兩者解決問題的思路是相同的。下面,我們來總結下MCMC的取樣過程

  • 輸入任意選定的馬爾可夫鏈狀態轉移矩陣Q,平穩分佈π(x),設定狀態轉移次數閾值n1,需要的樣本個數n2。
  • 從任意簡單概率分佈取樣得到初始值 x 0 x_0
  • for t=0 to n1+n2-1
    • 從條件概率分佈 Q ( x x t ) Q(x|x_t) 中取樣得到樣本 x x_*
    • 從均勻分佈取樣u ~ uniform[0, 1]。
    • 如果 u < α ( x t , x ) = π ( x ) Q ( X , x t ) u < \alpha (x_t, x_*) = \pi(x_*)Q(X_*, x_t) ,則接受轉移 x t > x x_t -> x_* ,即 x t + 1 = x x_{t+1} = x_*
    • 否則不接受轉移,即 t = m a x ( t 1 , 0 ) t = max(t-1, 0)

樣本集 ( x n 1 , x n 1 + 1 , . . . , x n 1 + n 2 1 ) (x_{n1},x_{n1+1},...,x_{n1+n2-1}) 即為我們需要的平穩分佈樣本集。

上述過程便是MCMC取樣理論,但很難在實際應用,為什麼呢? 因為 α ( x t , x ) \alpha(x_t,x_*) 可能非常小,比如0.1,導致大部分取樣值都被拒絕轉移,取樣效率很低。可能我們取樣可上百萬次,馬爾科夫鏈還沒有收斂。實際應用中,我們可以通過M-H取樣方法進行取樣。

3.M-H取樣

M-H取樣解決了MCMC取樣接受率過低的問題,我們首先回到MCMC取樣的細緻平穩條件
π ( i ) Q ( i , j ) α ( i , j ) = π ( j ) Q ( j , i ) α ( j , i ) \pi (i) Q(i,j) \alpha (i,j) = \pi(j) Q(j,i) \alpha(j,i)
取樣效率過低的原因是α(i,j)太小,比如0.1,α(j,i)為0.2,即
π ( i ) Q ( i , j ) 0.1 = π ( j ) Q ( j , i ) 0.2 \pi (i) Q(i,j) * 0.1 = \pi(j) Q(j,i) * 0.2
如果兩邊同時擴大5倍,細緻平穩條件仍然是滿足的,即
π ( i ) Q ( i , j ) 0.5 = π ( j ) Q ( j , i ) 1 \pi (i) Q(i,j) * 0.5 = \pi(j) Q(j,i) * 1

相關推薦

MCMC取樣M-H取樣

在MCMC之馬爾可夫鏈之中我們介紹到,給定一個概率分佈π,很難直接找到對應的馬爾可夫鏈狀態轉移矩陣P。只要解決這個問題,我們便可以找到一種通用的概率分佈取樣方法,進而用於蒙特卡羅模擬。下面我們來介紹如何找到馬爾可夫鏈所對應的狀態轉移矩陣P。 1.馬爾可夫鏈細緻平穩條件 解決平穩分

受限玻爾茲曼機準備知識——MCMC方法Gibbs取樣

先點明幾個名詞MCMC方法:馬爾可夫鏈-蒙特卡洛方法  (千萬別叫成梅特羅波利斯蒙特卡羅方法了)Metropolis-Hastings取樣:梅特羅波利斯-哈斯廷斯取樣Gibbs取樣:吉布斯取樣還是介紹一下學習MCMC和Gibbs取樣比較好的一個資料:隨機取樣方法與整理和受限玻

python資料預處理 :樣本分佈不均(過取樣取樣

何為樣本分佈不均: 樣本分佈不均衡就是指樣本差異非常大,例如共1000條資料樣本的資料集中,其中佔有10條樣本分類,其特徵無論如何你和也無法實現完整特徵值的覆蓋,此時屬於嚴重的樣本分佈不均衡。 為何要解決樣本分佈不均: 樣本分部不均衡的資料集也是很常見的:比如惡意刷單、黃牛訂

PyTorch學習筆記(10)——上取樣PixelShuffle

去年曾經使用過FCN(全卷積神經網路)及其派生Unet,再加上在愛奇藝的時候做過一些超解析度重建的內容,其中用到了畢業於帝國理工的華人博士Shi Wenzhe(在Twitter任職)發表的PixelShuffle《Real-Time Single Image and Video

opencv013-影象上取樣下采樣(+高斯不同)

影象金字塔概念: 1. 我們在影象處理中常常會調整影象大小,最常見的就是放大(zoom in)和縮小(zoom out),儘管幾何變換也可以實現影象放大和縮小,但是這裡我們介紹影象金字塔 2. 一個影象金字塔式一系列的影象組成,最底下一張是影象尺寸最大,最上方的影象尺寸最

影象的上取樣下采樣

影象的上取樣(upsampling)與下采樣(subsampled) 縮小影象(或稱為下采樣(subsampled)或降取樣(downsampled))的主要目的有兩個: 1、使得影象符合顯示區域的大小;2、生成對應影象的縮圖。 放大影象(或稱為上取樣(upsampling)或影象插值(

數字影象處理筆記——頻域濾波、取樣頻譜混疊( Frequency domain filtering; sampling and aliasing)

頻域濾波 頻域濾波就是將訊號先做傅立葉變換再與濾波器頻域響應相乘,最後再做傅立葉反變換得到 低通濾波器 讓我們先來看看理想低通濾波器,理想低通濾波器的頻率響應是一箇中間是1,周圍是0的正方形或圓形,而在時域上是sinc函式,,我們看經過低通濾波器後的影象變得模糊了,但是會發現圖中多

ENVI5.3 影像重取樣 tiff 儲存

輸入---之前用envi4.5處理後的2013分類影像---輸出重取樣的影像 直接在工具欄搜尋 resize data---出來對話方塊, 這裡有幾種方法----sample line 指的行列號,可以直接除3,,變成1972*1998---就從30m變成90m. 重取樣方法有幾種,參考 E

隨機取樣隨機模擬:吉布斯取樣Gibbs Sampling

吉布斯取樣演算法詳解 為什麼要用吉布斯取樣 什麼是sampling? sampling就是以一定的概率分佈,看發生什麼事件。舉一個例子。甲只能E:吃飯、學習、打球,時間T:上午、下午、晚上,天氣W:晴朗、颳風、下雨。現在要一個sample,這個sample可以是:打

Xcode自定義.h.m中檔案的個性化註釋(公司、版本、作者、版權宣告等)

每個iOS開發者新建class檔案的時候都可以看到檔案最上面宣告的一些基本資訊。而這些資訊都是預設的,我們現在就要來自定義這些資訊。新增一些自己想要新增的,比如Github連結等等。 1.下面為預設的資訊 // // VideoCell.m // W

圖片的三級快取二次取樣使用的案例

首先跟大家介紹一下三級快取,當然快取的好處就是可以讓使用者體驗更好,通過首次訪問時將資料儲存起來,以後需要就直接在本地獲取資料,減少不必要的網路訪問次數,也減少了流量的開銷。但我們大部分應用都運用了此技術,所以三級快取運用面比較廣的。 所謂三級快取其實是一種載入圖片檔案的策

Pandas玩轉資料(九) -- 時間序列的取樣畫圖

資料分析彙總學習 import numpy as np import pandas as pd from pandas import Series, DataFrame # 生成一個時間序列 t_range = pd.date_range('2016-0

影象金字塔——上取樣下采樣

在影象處理中,影象的縮放常常會利用到。影象金字塔概念就和影象的縮放相關。如果把正常大小的圖片放在金字塔結構的中間,那麼金字塔的上部就相當於圖片的收縮,金字塔的地步就相當於圖片的放大。金字塔結構有兩種,分別是高斯金字塔和拉普拉斯金字塔。在本次學習中,接觸到的是高斯金字塔,我們

20180903影象的上取樣下采樣

參考: http://blog.csdn.net/majinlei121/article/details/46742339 http://blog.csdn.net/augusdi/article/details/9028365           縮小影象(或稱為下采

取樣、過取樣壓縮感知

連結:https://www.zhihu.com/question/20475750/answer/15249347,http://tiejunlab.com/viewthread.php?action=printable&tid=577    取樣定理是取樣過程

[7] OFDM過取樣引數選擇

2016.05.04 – 05.09 個人理解筆記。(無通訊基礎且急躁,片面/錯誤概率大大的。已待糾正) 05.04 在設計OFDM系統時,需要考慮諸如“子載波數量”、“保護間隔”、“OFDM符號週期”、“子載波間隔”、“每個子載波調製型別”以及“前向糾錯

python指令碼為已建立的ios .h.m檔案新增費程式碼

# -*- coding: utf-8 -*-import randomimport osdef getArray():    first = "abcdefghijklmnopqrstuvwxyz"    second = "ABCDEFGHIJKLMNOPQRSTUVWX

影象處理——上取樣下采樣

最近看一篇影象去霧的論文,看到演算法中使用了影象的下采樣和上取樣,就去了解了一下。上下采樣的評判標準為看重(chong)取樣時的取樣頻率與第一次取樣將連續訊號變為離散訊號時的取樣頻率相比的大小,若小於第一次的取樣頻率則為下采樣,若大於第一次的取樣頻率則為上取樣。下采樣在影象處

OC中在.h.m中宣告的屬性成員變數

區別 IOS5之前 在iOS第一版中,我們為輸出口同時聲明瞭屬性和底層例項變數,那時,屬性是OC語言的一個新的機制,並且要求你必須宣告與之對應的例項變數,例如: @interface MyViewController :UIViewController

在.h檔案.m檔案裡使用import指令有何區別?

有的程式設計師喜歡把所有import語句寫在.h檔案的頭部。而有的程式設計師則喜歡把import語句寫在.m檔案頭部。 你可能覺得寫在哪裡都無所謂。 那麼,import語句寫在.h檔案和.m檔案的哪一個都無所謂嗎? 這並不是真的。 通常,我習慣在.h檔案頭部加入所