題:
您如何向外行人解釋Markov Chain Monte Carlo(MCMC)?
Neil McGuigan
2010-07-20 04:21:05 UTC
view on stackexchange narkive permalink

也許是概念,使用原因以及示例。

這是我最喜歡的與該主題相關的論文:http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.13.7133&rep=rep1&type=pdf
要了解MCMC算法,您必須了解它的真正用途以及如何收斂到給定的分佈。我在博客中介紹了整個直覺及其應用。您可以在這裡訪問它們:http://mlwhiz.com/blog/2015/08/19/MCMC_Algorithms_Beta_Distribution/ http://mlwhiz.com/blog/2015/08/21/MCMC_Algorithms_Cryptography/
[在此站點上](http://www.lbreyer.com/java.html),您將找到MCMC的漂亮圖形表示形式以及一些有用的鏈接。
請參考以下回購,其中詳細介紹了MCMC。https://github.com/bashhwu/Sampling-based-inference/blob/master/MCMC_Part%20II.ipynb
十一 答案:
user28
2010-07-20 09:00:14 UTC
view on stackexchange narkive permalink

首先,我們需要了解什麼是馬爾可夫鏈。考慮下面來自維基百科的天氣示例。假設任何一天的天氣只能分為兩種狀態:晴天和多雨。根據過去的經驗,我們了解以下信息:

$ P(\ text {第二天是晴天} \,\ vert \,\ text {今天是雨天)} = 0.50 $

由於第二天的天氣晴朗或陰雨,因此:

$ P(\ text {第二天是雨天} \,\ vert \,\ text {鑑於今天是雨天) } = 0.50 $

類似地,讓:

$ P(\ text {第二天是下雨天} \,\ vert \,\ text {今天是晴天)} = 0.10 $

因此,得出的結果是:

$ P(\ text {第二天是晴天} \,\ vert \,\ text {今天是晴天)} = 0.90 $

以上四個數字可以緊湊地表示為一個過渡矩陣,該矩陣表示天氣從一個州移到另一州的概率,如下所示:

$ P = \ begin {bmatrix } & S & R \\ S& 0.9 & 0.1 \\ R& 0.5 & 0.5 \ end {bmatrix} $

我們可能會問幾個問題,其答案如下:


第一季度:如果今天天氣晴朗,那麼明天可能是什麼天氣?

A1:因為我們不知道會發生什麼,所以我們可以說的最好的情況是,可能有$ 90 \%$的可能是晴天,有$ 10 \%的可能性$會下雨。


第二季度:從今天起兩天怎麼樣?

A2:一日預測:$ 90 \%$晴,下雨了$ 10 \%$。因此,從現在起兩天:

第一天可能是晴天,第二天也可能是晴天。發生這種情況的可能性是:0.9美元乘以0.9美元。

或者

第一天可能會下雨,第二天可能會晴天。發生這種情況的可能性是:$ 0.1 \ times 0.5 $。

因此,兩天內天氣晴朗的可能性是:

$ P(\ text {晴天2天從現在開始} = 0.9 \ times 0.9 + 0.1 \ times 0.5 = 0.81 + 0.05 = 0.86 $

類似地,下雨的概率是:

$ P(\ text {從現在開始多雨2天} = 0.1 \乘以0.5 + 0.9 \乘以0.1 = 0.05 + 0.09 = 0.14 $


在線性代數(轉換矩陣)中,這些計算對應於從一個步驟到下一個步驟的所有轉換(晴天到晴天($ S_2S $),晴天到多雨( $ S_2R $),多雨至晴天($ R_2S $)或多雨至多雨($ R_2R $))及其計算的概率:

enter image description here

在圖像的下部,我們看到如何根據給定的概率(概率質量函數,$ PMF $)來計算未來狀態($ t + 1 $或$ t + 2 $)的概率零時間(現在或$ t_0 $)的每個州(晴天或陰雨天)都是簡單的矩陣乘法。

如果您繼續像這樣預測天氣,您會發現最終第n天的預報,其中$ n $非常大(例如$ 30 $),則滿足以下“均衡”概率:

$ P(\ text {Sunny})= 0.833 $

$ P(\ text {Rainy})= 0.167 $

輸入ot用她的話來說,您對第$ n $天和$ n + 1 $天的預測保持不變。此外,您還可以檢查“均衡”概率是否不取決於今天的天氣。假設今天天氣晴朗或下雨,您將獲得相同的天氣預報。

上面的示例僅在狀態轉換概率滿足幾個我不討論的條件時才有效這裡。但是,請注意此“好的”馬爾可夫鏈的以下特徵(好的=轉移概率滿足條件):

無論初始的初始狀態如何,我們最終都會達到狀態的均衡概率分佈。

馬爾可夫鏈蒙特卡洛(Markov Chain Monte Carlo)利用了以下功能:

我們想從目標分佈生成隨機抽獎。然後,我們確定一種構造“好的”馬爾可夫鏈的方法,以使其平衡概率分佈成為我們的目標分佈。

如果我們可以構建這樣的鏈,那麼我們可以任意地從某個點開始,並多次迭代馬爾可夫鏈(例如我們如何預測天氣$ n $次)。最終,我們生成的抽獎會好像來自目標分佈。

然後,我們通過捨棄一些初始抽獎(即蒙特卡洛分量)後的抽獎樣本平均值,來估算感興趣的數量(例如均值)。

有幾種方法構造“好的”馬爾可夫鏈(例如,吉布斯採樣器,Metropolis-Hastings算法)。

這是寫得很好的答案。但是,在討論過渡矩陣的那一刻,它可能會使外行人的注意力下降。
好答案。我認為儘早(或更詳細地)說明最終目標是確定一定數量的興趣(例如,推斷參數的均值或眾數)這一事實將很有幫助。這是對的嗎?
jpillow
2011-07-05 13:57:49 UTC
view on stackexchange narkive permalink

我認為從(獨立鏈)Metropolis-Hastings算法中可以得到一個很好而簡單的直覺。

首先,目標是什麼? MCMC的目標是從某種概率分佈中提取樣本,而不必知道其在任何點的確切高度。 MCMC實現此目的的方式是在該分佈上“徘徊”,使得在每個位置花費的時間與分佈的高度成比例。如果正確設置了“四處走動”的過程,則可以確保達到這種比例性(花費的時間和分佈的高度之間)。圍繞某個(塊狀)表面的方式,使得我們在每個位置花費(或抽取的樣本數量)的時間與該位置處的表面高度成比例。因此,例如,我們要在海拔100m的山頂上花費比在附近海拔50m的山上花費兩倍的時間。令人高興的是,即使我們不知道曲面上點的絕對高度,也可以執行此操作:我們所需要知道的只是 relative 高度。例如,如果一個山頂A的高度是山頂B的兩倍,那麼我們希望在A上花費的時間是在B上花費的時間的兩倍。

Metropolis-Hastings算法的最簡單變體(獨立鏈採樣)實現如下:假設在每個(離散)時間步中,我們選擇一個隨機的新“建議”位置(在整個表面上均勻選擇) 。如果建議的位置比我們現在的位置高,請移至該位置。如果建議的位置較低,則以概率p移動到新位置,其中p是該點的高度與當前位置的高度之比。 (即,擲硬幣的概率為p,獲得正面;如果正面出現,則移至新位置;如果正面出現,則留在我們所在的位置)。記錄每個時間步驟中您所去過的位置,該列表(漸近地)將在表面的每個部分中花費的時間比例正確。 (對於上述的A和B丘陵,從B到A的概率將是從A到B的概率的兩倍。)

對於提出新的位置和接受它們的規則,但是基本思想仍然是:(1)選擇一個新的“提議的”位置; (2)找出與您當前位置相比,該位置高低多少; (3)以尊重位置花費時間與位置高度成比例的總體目標的方式概率地呆在該位置或移動到該位置。

這有什麼用?假設我們有一個天氣概率模型,該模型使我們能夠評估A * P(天氣),其中A是一個未知常數。 (這種情況經常發生-許多模型很容易以無法確定A是什麼的方式來表述)。因此,我們無法精確地評估P(“明天有雨”)。但是,我們可以運行一會兒MCMC採樣器,然後詢問:在“明天有雨”狀態下,有多少樣本(或“位置”)結束了。這部分將是(基於模型的)概率天氣預報。

+1。我認為,“遊蕩”是本頁列出的最直觀的類比。
“無需知道其確切高度”這不是MCMC的核心限制。
我確實希望這種解釋出現在教科書中,這樣我們就不必花太多時間猛烈地了解MH的工作。
Rich
2010-07-20 05:52:13 UTC
view on stackexchange narkive permalink

我可能會這樣說:

“任何時候我們要談論概率時,我們實際上是在集成密度。在貝葉斯分析中,我們提出了很多密度的方法在分析上不是很容易處理的:您只能將它們集成-如果您可以完全集成它們-會遭受很多苦難,所以我們要做的是大量模擬隨機變量,然後從模擬隨機變量中找出概率如果我們想知道X小於10的概率,我們計算模擬隨機變量結果小於10的比例並將其用作我們的估計值,這就是“蒙特卡洛”部分,它是基於如果有足夠的模擬隨機數,估計值是很好的,但它本質上還是隨機的。

“那為什麼是“馬爾可夫鏈”?因為在某些技術條件下,您可以生成一個無記憶的過程(又稱馬爾可夫過程),該過程具有與您要模擬的隨機變量相同的限制分佈。您可以迭代生成關聯隨機數(僅基於這些數字的當前值)的多種不同類型的仿真過程中的任何一種,並且可以確保一旦匯總了足夠的結果,您將得到一個一堆看起來“好像”的數字,您設法以某種方式設法從您想知道的複雜分佈中提取獨立樣本。

“因此,例如,如果我想估算標準正態的概率隨機變量小於0.5,我可以從標準正態分佈中生成一萬個獨立實現,併計算小於0.5的數量;說我得到690個,小於10000總樣本中的0.5;我對P(Z<0的估計)。 5)為0.6905,與實際值相差不大,這是蒙特卡洛估計。

“現在想像我無法繪製獨立的普通隨機變量,而是從0開始,然後在每一步中向當前值添加-0.5至0.5之間的一些統一隨機數,然後基於進行特定測試,確定是否喜歡該新值;如果喜歡,則將新值用作當前值;否則,我將拒絕它並堅持舊值。新值和當前值,這是一條馬爾可夫鏈。如果我進行測試以決定是否正確保留新值(這是都會步行的Metropolis-Hastings,細節會變得有些複雜),即使我從不生成單個正態隨機變量,但是如果我執行此過程足夠長的時間,則從該過程中獲得的數字列表將像生成正態隨機變量的某些事物的大量平局一樣分佈。標準正態隨機變量的馬爾可夫鏈蒙特卡羅模擬,如果我用它來估計p機率,這是MCMC的估算值。”

這是一個很好的解釋,但不適用於非技術性的外行。我懷疑OP想要知道如何向聘請您進行統計分析的MBA進行解釋!您如何將MCMC描述為充其量只是充其量能理解標準差(雖然方差可能太抽象)的人?
@Harlan:這是一個艱難的跨越。如果某人至少不知道什麼是隨機變量,為什麼我們可能想要估計概率,並對密度函數有一些模糊的想法,那麼我認為*不可能*有意義地解釋其方式或原因對他們而言,只有“什麼”,在這種情況下,可以歸結為“這是一種通過仿真在數值上解決一個原本不可能解決的問題的方法,例如大量拋硬幣以估計它落在頭上的可能性”。
+1為最後一段。用最少的技術,它可以很好地傳達想法。
很酷的解釋。我認為這對非技術人員來說很棒。
懷疑-在最後一段中,為什麼數字列表似乎來自正態分佈?是因為中心極限定理嗎?此外,如果我們想模擬其他分佈怎麼辦?
“然後根據特定測試來決定我是否喜歡該新值”-您能否擴展此處可以使用的特定測試的類型和示例?
matt_black
2011-07-06 01:15:25 UTC
view on stackexchange narkive permalink

想像一下,您想找到一種更好的策略,在棋盤遊戲《大富翁》中擊敗您的朋友。將游戲中最重要的內容簡化為以下問題:人們最常使用哪些屬性?答案取決於棋盤的結構,遊戲規則和兩個骰子的投擲次數。

回答問題的一種方法是這樣。扔骰子並遵守規則時,只需在棋盤上跟隨一塊棋子即可。計算您進入每個物業的次數(或對計算機進行編程以幫助您完成工作)。最終,如果您有足夠的耐心,或者您在計算機中對規則進行了足夠好的編程,那麼您將可以很好地了解哪些屬性可以帶來最多的業務。這應該可以幫助您更頻繁地獲勝。

您所做的是Markov Chain Monte Carlo(MCMC)分析。董事會定義規則。接下來要降落的位置僅取決於您現在的位置,而不取決於您以前去過的地方,具體概率由兩個骰子的擲骰分佈決定。 MCMC將此想法應用於數學或物理系統,例如明天的天氣或氣體分子隨機散佈的花粉粒將最終出現的地方。

聽起來聽起來像是簡單的蒙特卡洛模擬,但是馬爾可夫鏈呢?馬爾可夫鏈與該蒙特卡洛模擬有何關係?
@Emran格雷厄姆·庫克森(Graham Cookson)的答案似乎已經在解釋壟斷和馬爾可夫鏈之間的聯繫。
可以將壟斷建模為馬爾可夫鏈,其中每個屬性/空間都是一個節點/狀態。當您在任何特定空間上時,您都有各種可能移動到下一個12個空間(如果使用2個骰子)-這些是馬爾可夫鏈中的邊/連接。計算每個邊緣/連接的概率很容易:http://gwydir.demon.co.uk/jo/probability/calcdice.htm#sum
Graham Cookson
2010-07-21 21:42:44 UTC
view on stackexchange narkive permalink

好的,這是我對非正式和粗略解釋的最佳嘗試。

馬爾可夫鍊是一個隨機過程,其特徵是未來僅取決於過程的當前狀態,而不取決於過去的狀態,即它是無記憶的。股票交易是隨機過程的一個例子。馬爾可夫鏈的一個例子是像“大富翁”或“蛇和梯子”這樣的棋盤遊戲,您的未來位置(擲骰子之後)將僅取決於擲骰前的開始位置,而不取決於您之前的任何位置。馬爾可夫鏈的教科書示例是“酒鬼漫步”。想像一個喝醉了的人只能左右移動一個步伐。醉漢以相等的概率向左或向右移動。這是一個馬爾可夫鏈,醉漢的未來/下一個職位僅取決於他目前的位置。

蒙特卡羅方法是一種計算算法(僅是指令集),可以從正在研究的某些過程中隨機採樣。它們是估計難以確定或難以找到的東西的一種方法。它們基本上是某種數學或物理過程的計算機模擬形式。蒙特卡洛的綽號來自賭場和隨機數生成之間的類比。回到前面的棋盤遊戲示例,也許我們想知道是否會比其他人更頻繁地訪問Monopoly棋盤上的某些屬性。蒙特卡洛實驗將涉及反复擲骰子併計算您落在每個屬性上的次數。它也可以用於計算數值積分。 (在非正式情況下,我們可以將積分視為某些函數的圖形下的面積。)蒙特卡洛積分在高維函數上的工作原理非常好,方法是對函數點進行隨機採樣並在這些函數的點處計算某種類型的平均值各方面。通過增加樣本數量,大數定律告訴我們,通過覆蓋越來越多的函數,可以提高逼近的準確性。

這兩個概念可以組合起來解決一些困難的問題。在貝葉斯推斷,計算生物學等領域,需要計算多維積分來解決常見問題。想法是構造一個馬爾可夫鏈,該馬爾可夫鏈在多個步驟後收斂到所需的概率分佈。然後將經過大量步驟後的鏈狀狀態用作所需分佈的樣本,並重複該過程。有許多不同的MCMC算法,它們使用不同的技術來生成馬爾可夫鏈。常見的包括Metropolis-Hastings和Gibbs Sampler。

確實是一個很好的解釋。只有一種混亂沒有消除。如您所說,“其想法是構建一個收斂到所需概率分佈的馬爾可夫鏈”。聽起來我們已經知道各州的穩態概率分佈,那麼為什麼我們需要構造馬爾可夫鏈。馬爾可夫鏈的目的是為我們提供最初已經具備的穩態分佈,不是嗎?除非您打算,否則仍然需要馬爾可夫鏈來基於當前狀態計算n +1的狀態概率。
Cam.Davidson.Pilon
2013-03-06 19:08:11 UTC
view on stackexchange narkive permalink

摘錄自黑客的貝葉斯方法

貝葉斯格局

當我們使用$ N $未知數設置貝葉斯推理問題時,我們在隱式創建一個用於存在先驗分佈的$ N $維空間。與該空間相關的是一個附加維,我們可以將其描述為維的 surface curve 空間,它反映特定點的先驗概率。空間的表面由我們先前的分佈定義。例如,如果我們有兩個未知數$ p_1 $和$ p_2 $,並且它們在[0,5]上都是統一的,則創建的空間是長度為5的正方形,而表面是位於正方形頂部的平面(

或者,如果兩個先驗分別是$ \ text {Exp}(3)$和$ \ text {Exp}(10)$,則空格全部為二維平面上的正數,先驗先導誘導的表面看起來像是從點(0,0)開始流過正數的瀑布。

下面的可視化演示了這一點。顏色越深紅色,未知物在該位置的可能性就越高。相反,具有深藍色的區域表示我們的先驗對存在的未知數的概率非常低。

enter image description here

這些是2D空間中的簡單示例,我們的大腦可以很好地理解表面。實際上,我們的先驗產生的空間和表面的尺寸可能更高。

如果這些表面描述了未知數上的先前分佈,那麼在我們觀察到數據$ X $之後,空間將發生什麼變化。數據$ X $不會改變空間,但會通過拉動並拉伸表面結構來改變空間的表面,以反映真實參數可能存在的位置。更多的數據意味著更多的拉伸和拉伸,並且與新形成的形狀相比,我們的原始形狀變得不完整或微不足道。數據更少,我們的原始形狀更多。無論如何,生成的表面都描述了後驗分佈。再次,我必須強調,不幸的是,不可能在更大的範圍內將其可視化。對於二維而言,數據實際上是推升原始表面以形成高大山脈增加的數量受到先驗概率的抵制,因此,先驗概率越小意味著阻力越大。因此,在上面的雙指數先驗情況下,可能在(0,0)角附近噴發的一座山(或多座山)將比在(5,5)附近噴發的山高得多,因為附近的阻力更大(5,5)。山脈,或更普遍的說,山脈反映了可能找到真實參數的後驗概率。

假設上述先驗條件表示兩個泊松分佈的不同參數$ \ lambda $ 。我們觀察到一些數據點並可視化新景觀。

enter image description here

左側的圖是具有$ \ text {Uniform}(0,5)$先驗的變形景觀,而右側的圖是具有指數先驗的變形景觀。後部景觀看起來彼此不同。指數優先級景觀對右上角的值的後置權重很小:這是因為先驗值在此處沒有太大的權重,而統一優先級景觀則很樂意在此後級權重。同樣,在指數情況下,最高點(對應最暗的紅色)朝(0,0)傾斜,這是由於指數先驗將更多先驗權放在(0,0)角上而導致的。

黑點表示真實參數。就像上面模擬的那樣,即使只有1個採樣點,山脈也會嘗試包含真實參數。當然,使用1個樣本大小進行推斷是非常幼稚的,選擇如此小的樣本大小僅是說明性的。

使用MCMC探索景觀

我們應該探索由我們先驗表面產生的變形後方空間,並觀察數據以找到後方山脈。但是,我們不能天真地搜索該空間:任何計算機科學家都會告訴您,遍歷$ N $維的空間在$ N $中是指數困難的:隨著我們增加$ N $,空間的大小會迅速膨脹(請參閱維度的詛咒)。我們有什麼希望找到這些隱藏的山脈? MCMC背後的想法是對空間進行智能搜索。說“搜索”意味著我們正在尋找一個特定的對象,這可能不是MCMC正在做什麼的準確描述。回想一下:MCMC從後驗分佈而不是分佈本身返回 samples 。將山區的類比延伸到極限,MCMC執行的任務類似於反复詢問“我發現這個小卵石有多大可能來自我正在尋找的山峰?”,並通過返回數千個被接受的小卵石來完成其任務,希望重建原始的山。在MCMC和PyMC術語中,返回的“卵石”序列是樣本,通常稱為 traces

當我說MCMC進行智能搜索時,我的意思是MCMC將會收斂到後驗概率較高的區域。 MCMC通過探索附近的位置並以較高的概率進入區域來做到這一點。同樣,也許“收斂”不是描述MCMC進程的準確術語。收斂通常意味著朝著空間中的點移動,但是MCMC朝著空間中的更寬的區域移動並隨機地在該區域中行走,從該區域中拾取樣本。

首先,將數千個樣本返回給用戶可能聽起來像是描述後驗分佈的一種無效方法。我認為這是非常有效的。考慮其他可能性:

  1. 返回“山脈範圍”的數學公式將涉及描述具有任意峰和谷的N維表面。
  2. 返回景觀的“峰值”雖然在數學上是可能的,並且做一件明智的事情作為最高點,這對應於最可能的未知數估計,但它忽略了景觀的形狀,這是我們先前所爭論的對於確定未知的後驗置信度非常重要。
  3. ol>

    除了計算原因外,返回樣本的最主要原因可能是我們可以輕鬆地使用大數定律解決其他棘手的問題。我將此討論推遲到下一章。

    執行MCMC的算法

    有很多執行MCMC的算法。最簡單的方法是,大多數算法可以按如下所示進行高級表達:

      1。從當前位置開始2。提議搬到新位置(調查您附近的卵石)3。根據位置對數據的依從性和先前的分佈接受位置(詢問卵石是否可能來自山峰)4。如果您接受:移至新位置。返回步驟1.5。經過大量的迭代後,返回位置。 

    這樣,我們就朝著後驗分佈所在的區域大體上移動,並在旅途中少量地收集樣本。一旦達到後驗分佈,我們就可以輕鬆收集樣本,因為它們很可能都屬於後驗分佈。

    如果MCMC算法的當前位置位於概率極低的區域(通常是算法開始時的情況(通常在空間中的隨機位置),則算法將在位置上移動可能不是來自後方的,但比附近的其他所有事物都好。因此,該算法的第一步不反映後驗。

我知道問題是與特定的MCMC有關,而不是與貝葉斯推斷有關,但是在貝葉斯景觀的背景下,我發現MCMC非常容易理解。
doug
2010-08-05 14:15:34 UTC
view on stackexchange narkive permalink

因此,這裡有很多答案可以從統計學/概率教科書,維基百科等中獲得解釋。我相信我們工作的地方是“外行”。我認為他們在市場部。如果我不得不向他們解釋任何技術性的問題,則可以應用“顯示不告訴”規則。牢記這個規則,我可能會向他們展示這樣的東西。

這裡的想法是嘗試編寫一種我可以教自己拼寫的算法,而不是通過學習所有數百個(數千個? )的規則,例如在以無聲e結尾的單詞中添加結尾時,如果結尾以元音開頭,則刪除最後一個e。無效的原因之一是我不知道這些規則(我什至不確定我剛才引用的規則是否正確)。相反,我將通過顯示一堆正確拼寫的單詞並讓其從這些單詞中提取規則來教它進行拼寫,這或多或少是機器學習的本質,而與算法無關-模式提取和模式識別

成功的標準是正確拼寫該算法從未見過的單詞(我意識到這完全是偶然的,但是營銷人員不會發生,所以我會忽略-另外,我將讓算法嘗試拼寫一個單詞,而不是一個單詞,因此,不太可能被一些幸運的猜測所欺騙。)

一個小時前,我下載了(作為純文本文件)來自赫曼·黑森(Herman Hesse)小說《悉達多》(Siddhartha)中出色的古騰堡計劃(Project Gutenberg Site)。我將用這本小說中的單詞來教算法如何拼寫。

因此,我在下面編碼了一次掃描該小說的算法,一次掃描三個字母(每個單詞的末尾都有一個附加字符,即“空白”或單詞的末尾)。三個字母的序列可以告訴您很多信息,例如,字母“ q”幾乎總是跟著“ u”; “ ty”序列通常出現在單詞的結尾; z很少這樣做,依此類推。 (注意:我可以很容易地給它餵整個單詞,以便訓練它說完整的句子-完全相同的想法,只是對代碼進行了一些調整。)

這都不涉及然而,MCMC發生在訓練後,當我們給算法幾個隨機字母(作為種子)並開始形成“單詞”時。該算法如何構建單詞?想像一下,它的塊為“ qua”;接下來會添加什麼字母?在訓練過程中,該算法從小說中的所有數千個單詞中構建了一個龐大的字母序列頻率矩陣。該矩陣中的某個位置是三個字母的塊“ qua”以及可能跟隨該序列的字符的頻率。該算法根據可能跟隨字母的頻率選擇字母。因此,該算法接下來要選擇的字母取決於(並且僅取決於)其字構建隊列中的最後三個字母。

這就是馬爾可夫鏈蒙特卡羅算法。

我認為,說明其工作方式的最好方法是根據不同級別的培訓來顯示結果。通過改變算法使算法新穎的通過次數來改變訓練水平-通過的次數越多,其字母序列頻率矩陣的保真度就越高。以下是經過對小說“悉達多”進行訓練後的結果(以算法輸出的100個字符的字符串的形式)。


em> Siddhartha :

然後,whoicks ger望而卻步,如果您對artim感到困惑不解,則可以估量他的智慧。

(直接說,它學會了幾乎完美的威爾士語;我沒想到。)


經過兩遍小說:

在prenskinith節目中的確認是一個不愉快的現象,他們在那兒過了一段時間


10次​​通過:

儘管如此,但現在應該祈禱一下,讓她的狗槓桿疼痛的腳浸水而不是記憶力較弱


這是代碼(在Python中,我幾乎可以確定這可以使用MCMC軟件包在R中完成,其中只有3-4行有幾行)

  def create_words_string(raw_string):“”“,以防我想以句子/段落形式使用訓練數據;此功能會將原始文本字符串解析為一個漂亮的單詞列表;過濾:僅保留具有超過3個字母並刪除標點符號等。“”“ pattern = r'\ b [A-Za-z] {3,} \ b'pat_obj = re.compile(patt ern)words = [pat_obj.findall(raw_string)中word的word.lower()] pattern = r'\ b [vixlm] + \ b'pat_obj = re.compile(pattern)返回“” .join([如果不是,則以字為單位pat_obj.search(word)])def create_markov_dict(words_string):#初始化變量wb1,wb2,wb3 =“”,“”,“ l1,l2,l3 = wb1,wb2,wb3 dx = { }對於words_string中的ch:dx.setdefault((l1,l2,l3),[]).append(ch)l1,l2,l3 = l2,l3,ch return dxdef generate_newtext(markov_dict):Simulation_text =“” l1, l2,l3 =“”,“”,“”對於範圍(100)中的c:next_letter = sample(markov_dict [(l1,l2,l3)],1)[0] Simulation_text + = next_letter l1,l2,l3 = l2,l3,next_letter返回simulated_textif __name __ ==“ __ main__”:#n =通過訓練文本的次數n = 1 q1 = create_words_string(n * raw_str)q2 = create_markov_dict(q1)q3 = generate_newtext(q2)print(q3 ) 
您已經建立了一個用於英語拼寫的馬爾可夫模型,並將其擬合到數據中。但是從擬合模型中採樣的不是_MCMC。 (它從中採樣的“期望分佈”是什麼?顯然,不是在“英語中正確拼寫的單詞”上的分佈,因為該模型在訓練後仍然會出錯)。我的意思不是批評這項運動。這很好地展示了語言的馬爾可夫鏈模型。但是MCMC的關鍵思想是設計一個馬爾可夫鏈,以使其平衡分佈與您所想到的某種分佈相對應,而且實現這一點並不明顯。
Richard Redding
2016-08-16 22:37:35 UTC
view on stackexchange narkive permalink
pMCMC通常用作原始蒙特卡洛模擬技術的替代方法。 MCMC和其他蒙特卡洛技術都用於評估困難積分,但MCMC可以更廣泛地使用。

例如,統計學中的一個常見問題是計算與某些概率/隨機模型有關的平均結果。 MCMC和蒙特卡洛技術都可以通過生成一系列模擬結果來解決此問題,我們可以使用這些結果來估計真實均值。

MCMC和原始蒙特卡洛技術都可以工作,因為與給定結果相等的模擬的長期比例將等於*該結果的建模概率。因此,通過生成足夠的模擬,這兩種方法所產生的結果將是準確的。

*我說的是 equal ,儘管通常我應該談論可測集。然而,非專業人士可能對此並不感興趣*

然而,儘管蒙特卡洛原油生產涉及許多獨立的模擬,每個模擬都是根據模型分佈進行分佈,而MCMC涉及產生一個隨機游動,從長遠來看會以期望的頻率“訪問”每個結果。運行頻率。

一個簡單的示例可能是從一個模型進行模擬,該模型表示結果“ A”的概率為0.5,結果“ B”的概率為0.5。在這種情況下,如果我在位置“ A”開始隨機遊走並規定在每一步中以0.2的概率(或任何其他大於0的概率)切換到另一個位置,則可以確定隨機遊走大約50%的步數會訪問“ A”和“ B”的步數,這與我們的模型所規定的概率一致。

這顯然是一個非常無聊的例子。但是,事實證明,MCMC通常適用於難以應用標準Monte Carlo或其他技術的情況。

您可以找到一篇文章,其中涵蓋了它的基本知識以及其工作原理此處:

http://wellredd.uk/basics-markov-chain-monte-carlo/

我們正在嘗試以問題和答案的形式建立永久的高質量統計信息存儲庫。我們嘗試避免受到鏈接腐爛的[僅鏈接的答案](/ stats.stackexchange.com/help/how-to-answer);因此,這本身不是評論,而是評論。如果可以的話,您可以擴展它嗎,也許在鏈接上提供信息的摘要(或者我們可以將其轉換為註釋)。
tiffCAKE
2017-08-10 11:52:10 UTC
view on stackexchange narkive permalink

我是一名DNA分析師,使用完全連續的概率基因分型軟件來解釋DNA證據,我必須向陪審團解釋其工作原理。誠然,我們過分簡化,我意識到其中一些過分簡化以提高整體理解為名而犧牲了具體細節的準確性。但是,在陪審團了解這種過程如何在沒有學術學位和多年專業經驗的情況下用於DNA解釋的情況下,他們得到了要點:)

背景:該軟件使用大都市黑斯廷斯(Hastings)MCMC和模仿DNA分佈圖已知行為的生物學模型(該模型是基於實驗室分析已知條件下許多DNA分佈圖(代表未知案例中遇到的範圍)而生成的驗證數據而建立的) 。有8個獨立的鏈,我們評估收斂性以確定是否重新運行以增加預存和後期接受(默認Burnin 100k接受和post 400k接受)

當檢方/辯方詢問MCMC時:我們解釋說它代表馬爾可夫鏈蒙特卡洛(Monte Carlo),代表用於復雜問題解決的特殊算法類別,該算法只是一個花哨的詞,指代一系列由計算機執行的程序或例程... mcmc算法的工作原理是提出一個解決方案,對該解決方案進行仿真,然後評估該仿真對所觀察到的實際證據數據的鏡像程度。概率比不能很好地擬合觀察結果的模擬...在許多重複的提議解決方案的採樣/猜測下,馬爾可夫鏈從低概率解決方案向高概率解決方案轉移,從而更好地擬合/解釋了所觀察到的證據概況,直到最終達到了平衡,這意味著該算法對新提案進行抽樣的能力有限,從而大大提高了概率

當被問及都市黑斯廷斯:我們解釋說它是MCMC算法的一種改進,描述了其接受或拒絕提案的決策過程...通常以“熱/冷”兒童遊戲的類比來解釋,但我可能有陪審團特別年輕時考慮使用“向右或向左滑動”! :p但是,使用我們的冷/熱比喻,我們總是接受熱猜測,偶爾會接受一小部分時間的冷猜測,並解釋了有時接受冷猜測的目的是為了確保鏈條採樣的可能性更大。反對在實際平衡之前陷入一個特定的提案

經過編輯以添加/闡明:通過熱/冷的類比,我們解釋了在兒童遊戲中,領導者選擇了房間內的目標對象/區域,而玩家輪流猜測相對於其當前位置的移動方向/位置。領隊告訴他們如果是很熱的話就改變他們的位置/採取行動,如果是很冷的話他們會失去轉彎/保持位置。同樣,在我們的軟件中,移動/接受的決定僅取決於提案的可能性,而不是當前持有職位的可能性...但是,目標是由兒童遊戲中的領導者預先定義/知道的,而我們軟件中的目標不是預先定義的-完全未知(這也是為什麼對我們的應用程序進行足夠的空間採樣並偶爾接受冷猜測更為重要)

就像我說的那樣,為了提高理解力,超級超級基礎知識和絕對缺乏技術細節-我們努力在中等教育水平上進行解釋。隨時提出建議。我將它們合併。

Khoa
2017-03-06 17:59:54 UTC
view on stackexchange narkive permalink

這個問題很廣泛,但答案通常很隨意。另外,您可以看到此論文,其中對各種MCMC算法進行了簡要的數學描述,包括Metropolis-Hastings算法,Gibbs採樣,Metropolis-in-Gibbs和輔助變量方法,切片採樣,遞歸如作者所討論的那樣,建議,定向採樣,Langevin和漢密爾頓蒙特卡洛,NUTS採樣,偽邊際Metropolis-Hastings算法和偽邊際漢密爾頓蒙特卡洛,如作者所討論的那樣。

此處

我會花更多時間以stackexchange的形式詳細說明其內容。

Amir
2017-04-30 04:38:23 UTC
view on stackexchange narkive permalink

首先,我們應該向外行人解釋蒙特卡洛抽樣。想像一下您沒有確切的函數形式(例如, $ f(x,y)= z = x ^ 2 + 2 * x * y $ span >),但歐洲(和Los Alamos)有一台機器(以數字方式)複製了此功能。我們可以放入盡可能多的 $(x,y)$ span>對,它將為我們提供值z。此數字重複是採樣,並且此過程是 $ f(x,y)$ span>的蒙特卡羅模擬。經過1,000次迭代後,我們幾乎知道函數 $ f(x,y)$ span>是什麼。

假設外行人知道蒙特卡洛,在MCMC中,當您從多維空間採樣時,您不想浪費您的CPU工作量/時間 $ f(x ,y,z,t,s,...,zzz)$ span>,就像標準的蒙特卡洛採樣一樣。關鍵區別在於,在MCMC中,您需要具有馬爾可夫鏈作為地圖來指導您的工作。

此視頻(始於5:50)具有很好的直覺。

想像一下,您想對這張圖片中綠色(多維)分支上的點進行採樣。如果將點扔到黑色超空間上並檢查它們的值,那麼您正在浪費大量採樣(搜索)能量。因此,控制您的採樣策略(可以自動執行)以選擇更靠近綠色分支的點(這很重要)會更有意義。一次偶然(或控制)的擊打即可發現綠枝,其餘的採樣努力(紅點)將在隨後產生。紅色吸引到綠線的原因是因為馬爾可夫鏈轉換矩陣可以用作您的採樣引擎。

因此,用通俗易懂的話來說,MCMC是一種節能(低成本)的採樣方法,尤其是在巨大的“黑暗”(多維)空間中工作時。

enter image description here

我認為我們對“外行人”有不同的定義
哈哈哈我也可以為“外行人”添加蒙特卡洛,但是採樣/蒙特卡洛不是問題。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 2.0許可。
Loading...