Markov Zinciri Monte Carlo'yu (MCMC) bir uzmana nasıl açıklarsınız?


240

Belki kavramı, neden kullanıldığı ve bir örnek.


14
İşte konuyla ilgili en sevdiğim kağıdıdır: citeseerx.ist.psu.edu/viewdoc/...

Bu sitede MCMC'nin grafiksel bir gösterimini ve bazı faydalı linkleri bulacaksınız.
Sergey,

3
MCMC algoritmasını anlamak için gerçekte ne için kullanıldığını ve verilen bir dağılıma nasıl yaklaştığını anlamanız gerekir. Bütün sezgi ve uygulamaları hakkında blog yazdım. Bunları burada ziyaret edebilirsiniz: mlwhiz.com/blog/2015/08/19/MCMC_Algorithms_Beta_Distribution mlwhiz.com/blog/2015/08/21/MCMC_Algorithms_Cryptography
Rahul Agarwal

Lütfen MCMC'nin ayrıntılı bir açıklamasının sunulduğu aşağıdaki depoya bakın. github.com/bashhwu/Sampling-based-inference/blob/master/…
Beşar Muhammed

Yanıtlar:


223

İlk önce Markov zincirinin ne olduğunu anlamamız gerekir. Aşağıdaki Wikipedia hava durumu örneğini düşünün . Herhangi bir günde havaların yalnızca iki ülkeye sınıflandırılabileceğini varsayalım: güneşli ve yağmurlu. Geçmiş deneyimlere dayanarak, aşağıdakileri biliyoruz:

P(Next day is Sunny|Given today is Rainy)=0.50

Ertesi gün hava güneşli ya da yağmurlu olduğu için şöyle:

P(Next day is Rainy|Given today is Rainy)=0.50

Benzer şekilde, izin verelim:

P(Next day is Rainy|Given today is Sunny)=0.10

Bu nedenle, şöyle:

P(Next day is Sunny|Given today is Sunny)=0.90

Yukarıdaki dört sayı, havanın bir durumdan diğerine geçme ihtimalini temsil eden bir geçiş matrisi olarak kompakt şekilde gösterilebilir:

P=[SRS0.90.1R0.50.5]

Cevapları takip eden birkaç soru sorabiliriz:


S1: Bugün hava güneşliyse o zaman hava yarın ne olacak?

Y1: Kesin olarak ne olacağını bilmiyoruz, söyleyebileceğimiz en iyi şey, güneşli olma ihtimalinin ve yağmurlu olma ihtimalinin olmasıdır.10 %90%10%


S2: Peki ya bugünden iki gün sonra?

A2: Bir günlük hava tahmini: güneşli, yağmurlu. Bu nedenle, bundan iki gün sonra:10 %90%10%

İlk gün güneşli, ertesi gün de güneşli olabilir. Bu olanların şansı: .0.9×0.9

Veya

İlk gün yağmurlu, ikinci gün güneşli olabilir. Bu olma ihtimali: .0.1×0.5

Bu nedenle, iki gün içinde havanın güneşli olması ihtimali:

P(Sunny 2 days from now=0.9×0.9+0.1×0.5=0.81+0.05=0.86

Benzer şekilde, yağmurlu olma ihtimali de:

P(Rainy 2 days from now=0.1×0.5+0.9×0.1=0.05+0.09=0.14


Doğrusal cebirde (geçiş matrisleri) bu hesaplamalar bir adımdan diğerine (güneşli-güneşli ( ), güneşli-yağmurlu ( ), yağmurlu-güneşli ( ) veya yağışlı yağış ( )) hesaplanan olasılıkları ile:S2SS2RR2SR2R

görüntü tanımını buraya girin

Görüntünün alt kısmında, sıfır anda (şimdi) her durum için (güneşli veya yağmurlu) olasılıklar (olasılık kütle fonksiyonu, ) göz önüne alındığında gelecekteki bir durumun ( veya ) olasılığının nasıl hesaplandığını görüyoruz. veya ) basit matris çarpımı olarak.t+1t+2PMFt0

Böyle hava tahmin devam ederse o eninde sonunda fark edecektir -inci günlük tahminleri, çok büyük (diyelim ki aşağıdaki 'denge' olasılıklara yerleşir,):nn30

P(Sunny)=0.833

ve

P(Rainy)=0.167

Başka bir deyişle, Gün ve gün için tahminleriniz aynı kalır. Ek olarak, “denge” olasılıklarının bugün hava durumuna bağlı olmadığını da kontrol edebilirsiniz. Bugün hava güneşli ya da yağmurlu olduğu varsayılarak, hava durumu için aynı tahminde bulunursunuz.nn+1

Yukarıdaki örnek, yalnızca devlete geçiş olasılıkları burada tartışmayacağım birkaç koşulu sağladığı takdirde işe yarayacaktır. Ancak, bu 'hoş' Markov zincirinin şu özelliklerine dikkat edin (nice = geçiş olasılıkları koşulları karşılar):

Başlangıçtaki başlangıç ​​durumuna bakılmaksızın, sonunda devletlerin denge olasılık dağılımına ulaşacağız.

Markov Zinciri Monte Carlo, yukarıdaki özelliği şu şekilde kullanıyor:

Hedef dağılımdan rastgele çekilişler üretmek istiyoruz. Daha sonra, denge olasılık dağılımımızın hedef dağılımımız olduğu şekilde 'güzel' bir Markov zinciri oluşturmanın bir yolunu belirliyoruz.

Eğer böyle bir zincir kurabilirsek, keyfi bir noktadan başlar ve Markov zincirini defalarca yineleriz (hava durumunu kere tahmin ettiğimiz gibi ). Sonunda, yarattığımız çekilişler hedef dağıtımımızdan geliyormuş gibi görünecektir.n

Daha sonra Monte Carlo bileşeni olan birkaç ilk çekilişi attıktan sonra çekilişlerin örnek ortalamasını alarak, ilgi miktarlarını (örneğin ortalama) yaklaşık olarak hesaplarız.

'Güzel' Markov zincirlerini oluşturmanın birkaç yolu vardır (örneğin, Gibbs örnekleyici, Metropolis-Hastings algoritması).


2
Güzel yazılmış cevap. Yine de, geçiş matrislerinin tartışıldığı noktada muhtemelen meslekten olmayan kişinin dikkatini kaybedecektir.
rraadd88

1
Mükemmel cevap. Nihai hedefin bir miktar ilgi miktarını (örneğin, çıkarılan parametrelerin ortalaması veya modu) belirlemek olduğu gerçeğini daha önce (veya daha ayrıntılı olarak) açıklamanın faydalı olacağını düşünüyorum. Bu doğru mu?
Austin Shin

101

(Bağımsızlık zinciri) Metropolis-Hastings algoritmasından kazanılmış basit ve basit bir sezginin olduğunu düşünüyorum.

İlk olarak, amaç nedir? MCMC'nin amacı, herhangi bir noktada tam yüksekliğini bilmeden bazı olasılık dağılımından örnekler çıkarmaktır. MCMC'nin bunu başarma şekli, her bir yerde harcanan zaman miktarının, dağılımın yüksekliği ile orantılı olduğu şekilde, o dağıtım üzerinde "dolaşmak" tır. "Etrafta dolaşmak" süreci doğru kurulursa, bu orantılığın (harcanan zaman ile dağılımın yüksekliği arasında) elde edilmesini sağlayabilirsiniz.

Sezgisel olarak, yapmak istediğimiz şey, bazı (topaklı) yüzeylerde, her bir yerde harcadığımız zamanın (ya da # numunelerin çizildiği) o konumdaki yüzeyin yüksekliğiyle orantılı olacak şekilde dolaşmaktır. Bu yüzden, örneğin, 50 m yükseklikte bir yakındaki tepede yaptığımız gibi 100 m yükseklikte bir tepenin üzerinde iki kat fazla zaman harcamak istiyoruz. İşin güzel yanı, yüzeydeki noktaların mutlak yüksekliklerini bilmesek bile bunu yapabilmemiz: bilmemiz gereken tüm göreceli yükseklikler. örneğin, eğer bir tepe A, tepe B'nin iki katı yüksekse, A'da B'de geçirdiğimizden iki kat daha fazla zaman geçirmek isteriz.

Metropolis-Hastings algoritmasının en basit çeşidi (bağımsızlık zinciri örneklemesi) bunu şöyle başarır: her (ayrık) zaman adımında, rastgele yeni bir "önerilen" konum seçtiğimizi varsayalım (tüm yüzey boyunca aynı şekilde seçilmiş). Önerilen yer şu an bulunduğumuz yerden yüksekse, o noktaya gidin. Önerilen konum daha düşükse, p olasılıklı yeni konuma gidin; burada p, bu noktanın yüksekliğinin geçerli konumun yüksekliğine oranıdır. (yani, kafa alma olasılığı p olan bir yazı tura atmak; eğer kafa gelirse, yeni konuma gidin; eğer gelirse, olduğumuz yerde kalın). Her zaman adımda bulunduğunuz konumların bir listesini tutun ve bu liste (tipik olarak) yüzeyin her bir bölümünde harcanan zamanın doğru bir oranına sahip olacaktır.

Yeni yerler önermek ve bunları kabul etmek için kurallar önermek için daha karmaşık planlar vardır, ancak temel fikir hala: (1) yeni bir "önerilen" yer seçmek; (2) bu konumun mevcut konumunuzla karşılaştırıldığında ne kadar yüksek veya düşük olduğunu bulmanız; (3) olasılıkla, bulunduğunuz yerin yüksekliğine orantılı olarak harcanan zamanın genel hedefine saygılı bir şekilde yerleştirilmeli veya taşınmalıdır.

Bu ne işe yarar? A'nın bilinmeyen bir sabit olduğu A * P'yi (hava durumu) değerlendirmemize izin veren olasılıklı bir hava durumu modelimiz olduğunu varsayalım. (Bu çoğu zaman olur - birçok model, A'nın ne olduğunu belirleyemeyeceğiniz şekilde formüle etmeye uygundur.) Bu yüzden P'yi tam olarak değerlendiremiyoruz ("yarın yağmur"). Ancak, MCMC örnekleyicisini bir süre çalıştırabilir ve sonra şunu sorabiliriz: Örneklerin (veya "konumların" ne kadarı "yarın yağmur" durumunda sona erdi. Bu kesir (modele dayalı) olasılıklı hava tahmini olacaktır.


6
+1. Kanımca, 'gezinmek' bu sayfada listelenenlerin en sezgisel benzetmesidir.
Zhubarb

“Herhangi bir noktada kesin yüksekliğini bilmeden” Bu MCMC'nin temel kısıtlaması değildir.
JeremyKun

Bu açıklamanın ders kitaplarında yer almasını diliyorum, böylece MH'nin ne yaptığını anlamak için çok fazla zaman harcamak zorunda kalmayacağız.
Pzt

89

Muhtemelen böyle bir şey söylerdim:

“Her zaman olasılıklar hakkında konuşmak istediğimizde, gerçekten bir yoğunluğu birleştiriyoruz. Bayesan analizinde, karşılaştığımız yoğunluğun çoğu analitik olarak izlenemez değil: onları bütünleştirebilirsiniz - eğer onları bütünleştirebiliyorsanız - çok fazla acı çekerek… O zaman yaptığımız şey rastgele değişkeni çok fazla benzetmek ve daha sonra benzetilmiş rastgele sayılarımızdan olasılıkları bulmak… Eğer X'in 10'dan küçük olma olasılığını bilmek istiyorsak, benzetilmiş rastgele değişkenin oranı 10'dan daha az sonuç verir ve bunu bizim tahmimiz olarak kullanırız. Bu “Monte Carlo” kısmı, rastgele sayılara dayanan olasılık tahminidir. doğal olarak rastgele.

"Öyleyse neden" Markov Zinciri "? Belli teknik şartlar altında, simüle etmeye çalıştığınız rasgele değişkenle aynı sınırlama dağılımına sahip olan bir hafızaya alma işlemi (yani bir Markovian olanı) oluşturabilirsiniz. İlişkili rasgele sayılar üreten farklı türde simülasyon işlemlerinin sayısı (yalnızca bu sayıların geçerli değerine bağlı olarak) ve sonuçları bir kez topladığınızda, görünen bir sayı yığınıyla sonuçlanacağını garanti edersiniz " sanki "bir şekilde bilmek istediğiniz karmaşık dağıtımdan bağımsız örnekler almayı başardınız.

"Örneğin, normal bir normal rastgele değişkenin 0,5'ten küçük olma olasılığını tahmin etmek istersem, standart bir normal dağılımdan on bin bağımsız gerçekleştirme üretebilirim ve 0,5'ten az sayıyı sayarım; 10000 toplam örneklemin 0,5'inden daha azında, P (Z <0,5) için tahminim gerçek değerden çok uzak olmayan 0.6905 olacaktır, bu bir Monte Carlo tahmini olurdu.

Prosedürden aldığım sayıların listesi normal rastgele değişkenler üreten bir şeyden çok sayıda çekiliş gibi dağıtılacak. Bu bana standart normal rastgele değişken için bir Markov Zinciri Monte Carlo simülasyonu verirdi. Bunu olasılıkları tahmin etmek için kullansaydım, bu bir MCMC tahmini olurdu. "


7
Bu iyi bir açıklama, ancak teknik olmayan bir meslekten olmayan için. OP'nin bazı istatistiksel analizler için sizi işe alan MBA'ye nasıl açıklanacağını bilmek istediğinden şüpheleniyorum! MCMC'yi en iyi sorta standart sapma kavramını anlayan birine (varyans çok soyut olabilir) nasıl anlarsınız?
Harlan,

10
@Harlan: Yuvaya çekmek için zor bir çizgi; Birisi en az bir rasgele değişken nedir bilmiyorsa, neden olasılıkları tahmin etmek ve bir yoğunluk fonksiyonunun bazı puslu fikir, sonra ben onu düşünüyorum değil mi isteyebilirsiniz olduğu anlamlı MCMC ait how ya da neden açıklamak mümkün Onlara göre, sadece “ne”, bu durumda kaynamış olur “Bu, simülasyonlarla başka türlü imkansız bir problemi sayısal olarak çözmenin bir yoludur, tıpkı kafasına inme olasılığını tahmin etmek için bir yazı tura atmak gibi”.
Zengin

1
Son paragraf için +1. Minimum teknik özelliklerle bu fikri iyi aktarıyor.
whuber

Güzel açıklama. Ben teknik olmayan bir insan için harika olduğunu düşünüyorum.
SmallChess

Şüphe - Son paragrafta, sayı listesi neden normal dağılımdan geliyor gibi görünüyor? Merkezi Limit Teoremi nedeniyle mi? Dahası, ya başka bir dağıtımı simüle etmek istiyorsak
Manoj Kumar

37

Masa oyunu Tekel'de arkadaşlarınızı yenmek için daha iyi bir strateji bulmak istediğinizi düşünün. Oyunda önemli olan şeyleri şu soruya göre basitleştirin: insanlar en çok hangi mülkleri kullanıyor? Cevap, tahtanın yapısına, oyunun kurallarına ve iki zarın atılmasına bağlıdır.

Soruyu cevaplamanın bir yolu budur. Tahtanın etrafındaki tek bir parçayı takip et ve zarları at ve kuralları takip et. Her bir mülke kaç kez girdiğinizi (veya sizin için işi yapmak için bir bilgisayarı programladığınızı) sayın. Sonunda, yeterli sabrınız varsa veya kuralları bilgisayarınızda yeterince iyi programladıysanız, hangi özelliklerin en fazla iş aldığına dair iyi bir resim oluşturacaksınız. Bu daha sık kazanmanıza yardımcı olacaktır.

Yaptığınız şey bir Markov Zinciri Monte Carlo (MCMC) analizi. Kurul kuralları tanımlar. Sonra nereye ineceğiniz sadece şimdi bulunduğunuz yere, daha önce nerede bulunduğunuza bağlı değildir ve belirli olasılıklar iki zar atışının dağılımı ile belirlenir. MCMC, bu fikrin yarının havasının ne olacağı veya gaz molekülleri tarafından rastgele patlatılan bir polen tanesinin sona ereceği gibi matematiksel veya fiziksel sistemlere uygulanmasıdır.


1
Açıklama basit Monte Carlo Simülasyonu gibi görünüyor, peki ya Markov Zinciri? Markov Zinciri'nin bu Monte Carlo Simülasyonu ile ilgisi nedir?
Emran Hussain

@Emran Graham Cookson'un cevabı, Monopoly ve Markov zincirleri arasındaki bağlantıyı zaten açıklıyor gibi görünüyor.
Glen_b

Tekel, her özelliğin / alanın bir düğüm / durum olduğu bir Markov zinciri olarak modellenebilir. Belirli bir alandayken, sonraki 12 boşluğa geçme ihtimaliniz vardır (2 zar kullanıyorsanız) - bunlar Markov zincirindeki kenarlar / bağlantılar. Her bir kenarın / bağlantının olasılığını hesaplamak

32

Tamam burada gayri resmi ve kaba bir açıklama için en iyi girişimim.

Bir Markov Zinciri, geleceğin yalnızca sürecin mevcut durumuna bağlı olduğunu, yani geçmişe değil, hafızada kaldığı özelliğine sahip rastgele bir süreçtir. Rasgele bir işlem örneği borsa olabilir. Markov Zincirinin bir örneği, Tekel veya Yılanlar ve Merdivenler gibi bir tahta oyunudur, gelecekteki pozisyonunuz (kalıbı yuvarladıktan sonra) önceki pozisyonlarınızdan hiçbirine değil sadece rulodan başladığınız yere bağlıdır. Markov Zinciri'nin ders kitabı örneği "sarhoş yürüyüşü" dür. Sarhoş olan ve yalnızca bir hızda yalnızca sola veya sağa hareket edebilen birini hayal edin. Sarhoş, eşit olasılıkla sola veya sağa hareket eder. Bu, sarhoşun geleceği / bir sonraki pozisyonunun sadece şu anda bulunduğu yere bağlı olduğu bir Markov Zinciridir.

Monte Carlo yöntemleri, incelenen bazı işlemlerden rastgele örneklenen hesaplama algoritmalarıdır (sadece komut dizileri). Onlar deterministical olarak bulmak için çok zor ya da zaman alıcı bir şeyi tahmin etmenin bir yoludur. Temel olarak bazı matematiksel veya fiziksel işlemlerin bir bilgisayar simülasyonu türüdür. Monte Carlo monikeri, bir kumarhane ve rastgele sayı üretimi arasındaki analojiden geliyor. Masa oyunu örneğimize daha önce dönersek, belki de Tekel tahtasında bazı özelliklerin diğerlerinden daha sık ziyaret edilip edilmediğini bilmek istiyoruz. Bir Monte Carlo denemesi, zarları tekrar tekrar yuvarlamayı ve her bir mülke kaç defa attığınızı içerir. Sayısal integralleri hesaplamak için de kullanılabilir. (Çok gayrı resmi olarak, bir integrali bir fonksiyon grafiğinin altındaki alan olarak düşünebiliriz. Monte Carlo entegrasyonu, fonksiyonun rastgele noktalarından bir örnek alarak ve bu çeşitli noktalarda bir tür ortalama hesaplayarak, yüksek boyutlu bir fonksiyonlarda harika çalışır. Örneklem büyüklüğünü artırarak, büyük sayılar yasası, fonksiyonumuzu gittikçe daha fazla kapsayarak yaklaşımımızın doğruluğunu artırabileceğimizi söyler.

Bu iki kavram, ortak problemleri çözmek için çok boyutlu integrallerin hesaplanması gereken Bayesian çıkarımı, hesaplamalı biyoloji vb. Bazı zor problemleri çözmek için bir araya getirilebilir. Buradaki fikir, birkaç adımdan sonra istenen olasılık dağılımına yaklaşan bir Markov Zinciri inşa etmektir. Çok sayıda adımdan sonra zincirin durumu daha sonra istenen dağıtımdan bir örnek olarak kullanılır ve işlem tekrarlanır. Markov Zinciri oluşturmak için farklı teknikler kullanan birçok farklı MCMC algoritması var. Yaygın olanları Metropolis-Hastings ve Gibbs Sampler.


1
Gerçekten de iyi bir açıklama. Sadece bir karışıklık giderilmedi. Söylediğiniz gibi, "amaç, istenen Olasılık Dağılımına yaklaşan bir Markov Zinciri inşa etmektir". Halen devletler için Kararlı Durum Olasılık Dağılımını zaten biliyoruz, öyleyse neden bir markov zinciri inşa etmemiz gerekiyor? Markov zincirinin amacı, bize ilk başta sahip olduğumuz sabit durum dağılımını sağlamak, değil mi? Bunu kastetmediğiniz sürece, n + 1'in şu anki duruma göre durum olasılığını hesaplamak için bir Markov Zinciri edinmek hala gereklidir.
Emran Hussain

16

Hackerlar için Bayesian Yöntemlerinden Alıntı

Bayesian manzara

NNp1p2

Exp(3)Exp(10)

Aşağıdaki görselleştirme bunu göstermektedir. Renk ne kadar koyu kırmızı olursa, bilinmeyenlerin o konumda olma olasılığı o kadar fazladır. Tersine, koyu mavi olan alanlar, önceliklerimizin orada bilinmeyenlere çok düşük bir olasılık verdiğini gösterir.

görüntü tanımını buraya girin

Bunlar, beynimizin yüzeyleri iyi anlayabildiği 2B uzayda basit örneklerdir. Uygulamada, önceliklerimizin yarattığı boşluklar ve yüzeyler çok daha yüksek boyutta olabilir.

XXyüksek dağlar yapmak için orijinal yüzeyi yukarı iter . İtme miktarı önceki olasılık tarafından karşılanır, böylece daha az önceki olasılık daha fazla direnç anlamına gelir. Dolayısıyla yukarıdaki iki katlı, önceki harekette, (0,0) köşesinin yakınında patlayabilecek bir dağ (veya çok sayıda dağ), yakın yerlerde daha fazla direnç olduğundan, (5,5) 'e yakın çıkan dağlardan çok daha yüksek olacaktır. (5,5). Dağ veya belki de daha genel olarak dağ sıraları, gerçek parametrelerin bulunmasının muhtemel olduğu arka olasılığını yansıtır.

λ

görüntü tanımını buraya girin

Uniform(0,5)

Siyah nokta gerçek parametreleri temsil eder. 1 örnek nokta ile bile, yukarıda benzetildiği gibi, dağlar gerçek parametreyi içermeye çalışır. Tabii ki, 1 büyüklüğünde bir örneklemin çıkarımı inanılmaz derecede saf ve böyle küçük bir örneklem büyüklüğünün seçilmesi sadece açıklayıcıydı.

MCMC'yi kullanarak manzarayı keşfetmek

NNNposterior dağılımdan değil, dağılımın kendisinden. Dağlık analojimizi sınırına kadar uzatan MCMC, tekrar tekrar "Aradığım dağdan geldiğim bu çakıl taşı ne kadar muhtemeldir?" Diye sormaya benzer bir görevi yerine getirir ve yeniden yapılanma umudundaki binlerce kabul edilmiş çakıl taşı iade ederek görevini tamamlar Orijinal dağ MCMC ve PyMC lingo'da, "çakıl taşları" nın döndürülen dizisi, genellikle izler olarak adlandırılan örneklerdir .

MCMC'nin akıllıca arama yaptığını söylediğimde, MCMC'nin umarım yüksek posterior olasılık alanlarına yaklaşacağını söylüyorum . MCMC bunu yakındaki konumları keşfederek ve daha yüksek olasılıklara sahip alanlara taşıyarak yapar. Yine, belki de "yakınsama", MCMC'nin ilerlemesini tanımlamak için doğru bir terim değildir. Birleştirme genellikle uzayda bir noktaya doğru hareket etmeyi ifade eder, ancak MCMC uzayda daha geniş bir alana doğru hareket eder ve o alanda rastgele yürür ve o bölgeden örnekler alır.

İlk başta, binlerce numuneyi kullanıcıya geri göndermek, posterior dağılımları tanımlamanın verimsiz bir yolu gibi görünebilir. Bunun son derece verimli olduğunu savunuyorum. Alternatif olasılıkları düşünün ::

  1. "Dağ sıraları" için matematiksel bir formül döndürmek, isteğe bağlı tepe noktaları ve vadilerle birlikte N boyutlu bir yüzey tanımlamayı içerir.
  2. Peyzajın "zirvesine" geri dönersek, matematiksel olarak mümkün ve en yüksek nokta olarak yapılabilecek mantıklı bir şey bilinmeyenlerin en muhtemel tahminine tekabül eder, daha önce savunduğumuz peyzaj şeklini göz ardı eder, daha önce posterior'un güvenini belirlemede çok önemlidir bilinmeyenlerde.

Hesaplamalı nedenlerin yanı sıra, muhtemelen örnekleri döndürmenin en güçlü nedeni, başka türlü anlaşılmaz sorunları çözmek için Büyük Sayılar Yasasını kolayca kullanabilmemizdir . Bu tartışmayı bir sonraki bölüm için erteledim.

MCMC'yi gerçekleştirecek algoritmalar

MCMC'yi gerçekleştiren geniş bir algoritma ailesi var. En basit haliyle, çoğu algoritma aşağıdaki gibi yüksek bir seviyede ifade edilebilir:

1. Start at current position.
2. Propose moving to a new position (investigate a pebble near you ).
3. Accept the position based on the position's adherence to the data 
and prior distributions (ask if the pebble likely came from the mountain).
4. If you accept: Move to the new position. Return to Step 1.
5. After a large number of iterations, return the positions.

Bu şekilde genel yöne doğru posterior dağılımların bulunduğu bölgelere doğru ilerliyor ve seyahatte az miktarda örnek alıyoruz. Posterior dağılıma ulaştığımızda, muhtemelen posterior dağılıma ait olduklarından örnekleri kolayca toplayabiliriz.

MCMC algoritmasının şu anki konumu aşırı düşük olasılıklı bir alandaysa, bu genellikle algoritmanın başladığı durumdur (tipik olarak uzayda rastgele bir konumda), algoritma muhtemelen arkadan olmayan konumlarda hareket eder. ama yakındaki her şeyden daha iyi. Dolayısıyla, algoritmanın ilk hareketleri postereri yansıtmaz.


2
Sorunun spesifik olarak MCMC ile ilgili olduğunu ve Bayesian çıkarımı ile ilgili olmadığını anladım, ancak Bayesian manzaraları bağlamında MCMC'yi çok anlaşılabilir buluyorum.
Cam.Davidson.Pilon

10

Bu yüzden burada istatistik / olasılık ders kitaplarından, Wikipedia'dan vb. Anlatılan çok sayıda cevap var. Bence onlar pazarlama bölümünde. Onlara teknik bir şeyi açıklamak zorunda kalırsam, "gösteri yapma" kuralını uygularım. Bu kuralı göz önüne alarak, muhtemelen onlara böyle bir şey gösteririm.

Buradaki fikir, hecelemeyi öğretebileceğim bir algoritmayı kodlamaya çalışmaktır - yüzlerce (binlerce?) Kuralın tümünü öğrenerek değil, sessiz bir e ile biten bir kelimeye bir son eklerken, sonuncuyu bırak sonu bir sesli harfle başlarsa . İşe yaramayacak sebeplerden biri bu kuralları bilmiyorum (az önce okuduğumun doğru olduğundan bile emin değilim). Bunun yerine, doğru yazılmış kelimelerin bir demetini göstererek ve algoritma - kalıp çıkarma ve kalıp tanıma işleminden bağımsız olarak Makine Öğreniminin özü olan sözcüklerden kuralları çıkarmasına izin vererek hecelemeyi öğreteceğim. .

Başarı kriteri, algoritmanın daha önce hiç görmediği bir kelimeyi doğru bir şekilde hecelemektir. tek bir kelimeyi değil, çok fazla kelimeyi hecelemeye çalışın, bu yüzden birkaç şanslı tahminle aldatılmamız muhtemel değildir).

Bir saat kadar önce, Herman Hesse romanı Siddhartha adlı muhteşem Gutenberg Sitesi'nden (düz bir metin dosyası olarak) indirdim . Bu romandaki kelimeleri algoritmayı nasıl hecelemeyi öğretmek için kullanacağım.

Bu yüzden, bu romanı tarayan algoritmayı, her seferinde üç harften (her kelimenin sonunda bir "boşluk" veya kelimenin sonunda bir ek karakteri var) kodladım. Üç harfli diziler size çok şey söyleyebilir - örneğin, 'q' harfini neredeyse her zaman 'u' takip eder; 'ty' dizisi genellikle bir kelimenin sonunda oluşur; z nadiren yapar, vb. (Not: Tam cümleleri konuşabilmeleri için tam anlamıyla bütün kelimeleri kolayca besleyebilirdim - aynen aynı fikir, koda birkaç kez.)

Bunların hiçbiri MCMC'yi içermiyor, ancak eğitimden sonra, algoritmaya birkaç rastgele harf (tohum olarak) verdiğimizde ve 'kelimeler' oluşturmaya başladığımızda oluyor. Algoritma nasıl sözcük oluşturur? 'Qua' bloğuna sahip olduğunu hayal edin; Bir sonraki hangi harfi ekler? Eğitim sırasında, algoritma romanda binlerce kelimeden büyük bir l * etter dizisi frekans matrisi * oluşturdu. Bu matristeki bir yerde üç harfli blok 'qua' ve diziyi takip edebilecek karakterlerin frekansları. Algoritma, muhtemelen takip edebilecek frekansları temel alan bir harf seçer. Bu yüzden, algoritmanın bir sonraki seçeceği harf kelime yapım kuyruğundaki son üçe bağlıdır.

Yani bu bir Markov Zinciri Monte Carlo algoritması.

Nasıl çalıştığını göstermenin en iyi yolunun, farklı eğitim seviyelerine dayanan sonuçları göstermek olduğunu düşünüyorum. Eğitim seviyesi, algoritmanın romanda yaptığı geçiş sayısını değiştirerek değişir - ne kadar çok olursa, harf sırası frekans matrislerinin aslına uygunluğu o kadar artar. Aşağıda, 'Siddharta' romanı üzerine eğitimden sonra, algoritma tarafından çıkarılan 100 karakterli karakter dizileri şeklinde sonuçlar verilmiştir.


Siddhartha adlı romandan tek bir geçiş :

sonra gerizekalı tüm mothany stand ger who kim canlı canlı theartim çamurlu sullintion onun sible açıkladı

(Hemen, neredeyse mükemmel Galce konuşmayı öğrendi; beklemiyordum.)


Romandan iki kez geçtikten sonra:

ack wor prenskinith şovu, görkemli bir tiyatronun arsındaki tövbede ova gibiydi.


10 geçişten sonra:

rağmen şimdi ack ile dua etmelisiniz şimdi su onun köpek kolu ağrı ayak her biri zayıf bellek


Ve işte kod (Python'da, bunun bir kaç tane olan sadece 3-4 satırda bir MCMC paketi kullanarak R'de yapılabileceğinden neredeyse eminim)

def create_words_string(raw_string) :
  """ in case I wanted to use training data in sentence/paragraph form; 
      this function will parse a raw text string into a nice list of words;
      filtering: keep only words having  more than 3 letters and remove 
      punctuation, etc.
  """
  pattern = r'\b[A-Za-z]{3,}\b'
  pat_obj = re.compile(pattern)
  words = [ word.lower() for word in pat_obj.findall(raw_string) ]
  pattern = r'\b[vixlm]+\b'
  pat_obj = re.compile(pattern)
  return " ".join([ word for word in words if not pat_obj.search(word) ])

def create_markov_dict(words_string):
  # initialize variables
  wb1, wb2, wb3 = " ", " ", " "
  l1, l2, l3 = wb1, wb2, wb3
  dx = {}
  for ch in words_string :
    dx.setdefault( (l1, l2, l3), [] ).append(ch)
    l1, l2, l3 = l2, l3, ch
  return dx

def generate_newtext(markov_dict) :
  simulated_text = ""
  l1, l2, l3 = " ", " ", " "
  for c in range(100) :
    next_letter = sample( markov_dict[(l1, l2, l3)], 1)[0]
    simulated_text += next_letter
    l1, l2, l3 = l2, l3, next_letter
  return simulated_text

if __name__=="__main__" :
  # n = number of passes through the training text
  n = 1
  q1 = create_words_string(n * raw_str)
  q2 = create_markov_dict(q1)
  q3 = generate_newtext(q2)
  print(q3)

12
İngilizce'yi hecelemek için bir Markov modeli geliştirdiniz ve verilere uygun hale getirdiniz. Ancak takılan modelden örnekleme MCMC değildir . (Örnekleri "istenen dağılım" nedir? Açıkça, "İngilizce düzgün şekilde hecelenen sözcükler" üzerindeki dağılım değil, çünkü model hala eğitimden sonra hata yapıyor). Egzersizi eleştirmek istemem; dil için Markov zincir modelinin güzel bir gösterimi. Fakat MCMC'nin ana fikri, bir Markov Zinciri tasarlamaktır , böylece denge dağılımı, aklınızdaki bazı dağılıma tekabül eder ve bunun bunu başardığı açık değildir.
jpillow

2

MCMC tipik olarak ham Monte Carlo simülasyon tekniklerine bir alternatif olarak kullanılır. Hem MCMC hem de diğer Monte Carlo teknikleri zor integralleri değerlendirmek için kullanılır, ancak MCMC daha genel olarak kullanılabilir.

Örneğin, istatistiklerde sık karşılaşılan bir sorun, bazı olasılıksal / stokastik modellerle ilgili ortalama sonucu hesaplamaktır. Hem MCMC hem de Monte Carlo teknikleri, gerçek ortalamayı tahmin etmek için kullanabileceğimiz bir dizi simülasyon sonucu üreterek bu sorunu çözecektir.

Hem MCMC hem de kaba Monte Carlo teknikleri, belirli bir sonuca eşit olan simülasyonların uzun dönem oranı, bu sonucun modellenen olasılığına eşit olacaktır *. Bu nedenle, yeterince simülasyon üreterek, her iki yöntemin de ürettiği sonuçlar doğru olacaktır.

* Genel olarak ölçülebilir kümeler hakkında konuşmam gerektiğine rağmen eşit diyorum . Bununla birlikte bir görevli, muhtemelen buna ilgi duymaz *

Bununla birlikte, ham Monte Carlo, her biri modellenen dağılıma göre dağıtılan birçok bağımsız simülasyon üretmeyi içerirken, MCMC uzun vadede her bir sonucu istenen sıklıkta "ziyaret" yapan rastgele bir yürüyüş üretmeyi içerir.

Bu nedenle MCMC'nin püf noktası, her bir sonucu istenen uzun süreli frekanslarla "ziyaret edecek" rastgele bir yürüyüş seçmek.

Basit bir örnek, "A" sonuç olasılığının 0,5 ve sonuç "B" nin 0,5 olduğunu söyleyen bir modelden taklit etmek olabilir. Bu durumda, "A" pozisyonunda rastgele yürümeye başladım ve her adımda olasılık 0,2 (veya 0'dan büyük olan başka bir olasılık) olan diğer pozisyona geçtiğini belirttiyseniz, rastgele yürüyüşün, adımların yaklaşık% 50'sinde “A” ve “B” nin her birini ziyaret etmiş olacağı adım sayısı - modelimizin öngördüğü olasılıklarla tutarlı.

Bu açıkça çok sıkıcı bir örnek. Bununla birlikte, MCMC'nin standart Monte Carlo veya diğer tekniklerin uygulanmasının zor olduğu durumlarda sıklıkla uygulanabilir olduğu ortaya çıkmaktadır.

Ne olduğu ve burada neyin işe yaradığının temellerini kapsayan bir makale bulabilirsiniz:

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


Sorular ve cevaplar şeklinde yüksek kalitede istatistiksel bilgilerin kalıcı bir deposunu oluşturmaya çalışıyoruz. Link-rot'a tabi sadece link cevaplarından kaçınmaya çalışıyoruz ; Bu, bu kendi başına bir cevaptan çok bir yorumdur. Mümkünse, bağlantıdaki bilginin bir özetini vererek genişletebilir misiniz (veya sizin için bir yoruma dönüştürebiliriz).
Glen_b

1

Ben DNA kanıtını yorumlamak için sürekli sürekli olasılık genotipleme yazılımı kullanan bir DNA analisti ve bunun bir jüriye nasıl çalıştığını açıklamak zorundayım. Kuşkusuz, fazlasıyla sadeleştiriyoruz ve bunun bir kısmını farkına varıyorum sadeleştirme, genel anlayışın geliştirilmesi adına belirli detayların doğruluğunu feda ediyor. Ancak, bu sürecin DNA yorumunda akademik derecelere ve yıllara dayanan mesleki tecrübeye dayanmadan nasıl kullanıldığını bir jüri anlayışı bağlamında özümsemişlerdir :)

Amaç: Yazılım, metropol Hastings MCMC'yi ve DNA profillerinin bilinen davranışlarını taklit eden biyolojik bir model kullanır (model, bilinmeyen vakalarda karşılaşılan aralığı temsil eden bilinen koşullardan birçok DNA profilini laboratuvar analiz ederek elde edilen doğrulama verilerine dayanarak oluşturulmuştur). 8 bağımsız zincir var ve yakınsayı ve kabullenmeyi arttırmanın yeniden çalıştırılıp çalıştırılmayacağını belirlemek için yakınsama değerlendirdik (varsayılan burnin 100k kabul ediyor ve 400k kabul ettikten sonra)

Savunma / Savunma Bakanlığı tarafından MCMC hakkında sorulduğunda: Markov zinciri Monte Carlo anlamına geldiğini ve karmaşık problem çözme için kullanılan özel bir sınıf / tür algoritmayı temsil ettiğini ve bir algoritmanın sadece bir dizi prosedür veya rutine atıfta bulunan süslü bir kelime olduğunu açıklıyoruz. bir bilgisayar tarafından yürütülen ... mcmc algoritmaları, bir çözüm önererek, bu çözümü simüle ederek çalışır, daha sonra bu simülasyonun gözlemlenen gerçek kanıt verilerini ne kadar iyi yansıttığını değerlendirir ... kanıt gözlemine uygun olan bir simülasyonun ... Gözlemlere iyi uymayan bir simülasyon ... önerilen çözümlerin birçok tekrarlanan örneklemesi / tahmininde, Markov zincirleri düşük olasılıklı çözümlerden uzaktaki gözlemci olana kadar gözlenen kanıt profilini daha iyi sığdıran / açıklayan yüksek olasılıklı çözümlere doğru ilerlemektedir. elde,yani algoritmanın, önemli ölçüde artan olasılıklar sağlayacak yeni teklifleri örnekleme yeteneği sınırlıdır.

Metropol Hastings hakkında sorulduğunda: bir teklifi kabul etme veya reddetme karar verme sürecini açıklayan MCMC algoritmasına yapılan bir iyileştirme olduğunu açıklıyoruz ... genellikle bu "sıcak / soğuk" çocuk oyununun bir analojisiyle açıklanır ancak "kullanmayı düşünmüş olabilirim" jüri özellikle gençken sağa veya sola kaydırın !! : p Ancak sıcak / soğuk analojimizi kullanarak her zaman sıcak bir tahminde bulunuruz ve zaman zaman soğuk bir tahminde bulunuruz ve zaman zaman soğuk bir tahminin kabul edilmesinin amacını açıklarız ve zincirlerin daha geniş bir olasılık yelpazesini örneklemesini sağlamaktır. fiili denge öncesi belirli bir teklifin etrafında sıkışıp kalmaya karşı

Eklemek / açıklığa kavuşturmak için düzenlendi: sıcak / soğuk analojisi ile çocuk oyununda liderin odanın içinde bir hedef nesne / alan seçtiğini ve oyuncuların sıradaki pozisyonlarına göre hangi yöne hareket edeceklerini tahmin ederek sırayla aldıklarını açıklıyoruz. Lider onlara, sıcak bir tahminde bulunmadıklarında pozisyonlarını değiştirmelerini / hamle yapmalarını ve soğuk bir tahminde bulunmaları halinde sırasını kaybetmelerini / pozisyonda kalmalarını söyler. Benzer şekilde, bizim yazılımımızın içinde hareket etme / kabul etme kararı, yalnızca teklifin şu anda tutulan pozisyonun olasılığına kıyasla olasılığına bağlıdır ... Ancak, hedef çocuk oyununda lider tarafından önceden tanımlanmış / bilinir. Yazılımımızdaki hedef önceden tanımlanmış değil - tamamen bilinmiyor (neden?

Dediğim gibi, süper süper temel ve anlama becerisini geliştirmek için kesinlikle teknik detaydan yoksun - orta okul düzeyinde bir eğitim hakkında açıklama yapmak için çalışıyoruz. Önerilerinizi yapmaktan çekinmeyin. Onları dahil edeceğim.


0

Bu soru geniş ama cevaplar oldukça rahat. Alternatif olarak, bu görebilir kağıt Metropolis- Hastings algoritmaları Gibbs örnekleme Metropolis- içinde-Gibbs ve yardımcı değişken yöntemler, dilim örnekleme, yinelemeli önerileri, yönlü örnekleme Langevin dahil MCMC algoritmaları geniş bir sınıf bir kısa matematiksel tanımını vermektedir Yazarlar tarafından tartışıldığı gibi Hamiltonian Monte Carlo, NUTS örneklemesi, sözde marjinal Metropolis-Hastings algoritmaları ve sözde marjinal Hamiltonian Monte Carlo.

Güvenilir bir inceleme burada verilmiştir .

İçeriğini stackexchange biçiminde geliştirmek için daha fazla zaman bulacağım.


0

f(x,y)=z=x2+2xy(x,y)f(x,y)f(x,y)

f(x,y,z,t,s,...,zzz)

Bu videoda (5: 50'den başlayarak) çok iyi bir sezgi ifadesi var.

Bu resimde yeşil (çok boyutlu) dallarda bulunan noktaları örneklemek istediğinizi düşünün. Eğer siyah süper boşluğun her yerine noktalar atarsanız ve değerlerini kontrol ederseniz, çok fazla örnekleme (arama) enerjisi harcarsınız. Bu nedenle, örnekleme stratejinizi (otomatikleştirilebilen) yeşil dallara (önemli olan yerlerde) daha yakın puanlar almak için kontrol etmek daha mantıklı olacaktır. Yeşil dallar kazayla bir kez çarpılarak (veya kontrol edilerek) bulunur ve örnekleme çabasının geri kalanı (kırmızı noktalar) daha sonra üretilir. Kırmızının yeşil çizgiye çekilmesinin nedeni, örnekleme motorunuz olarak çalışan Markov zincir geçiş matrisidir.

Bu nedenle, meslekten olmayanların açısından MCMC, özellikle büyük ve 'karanlık' (çok boyutlu) bir alanda çalışırken, enerji tasarrufu sağlayan (düşük maliyetli) bir örnekleme yöntemidir.

görüntü tanımını buraya girin


1
"Layman" ın farklı bir tanımına sahip olduğumuzu düşünüyorum
Neil McGuigan

hahaha. Monte-Carlo'yu “görevli” olarak da ekleyebilirim ama örnekleme / Monte-Carlo bir soru değildi.
Amir
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.