Come spiegheresti Markov Chain Monte Carlo (MCMC) a un laico?


240

Forse il concetto, perché viene utilizzato e un esempio.


14
Ecco il mio articolo preferito sull'argomento: citeseerx.ist.psu.edu/viewdoc/…

Su questo sito troverai una bella rappresentazione grafica di MCMC e alcuni link utili.
Sergey,

3
Per capire l'algoritmo MCMC devi capire a cosa serve veramente e come converge a una data distribuzione. Ho scritto un blog sull'intera intuizione e le relative domande. Puoi visitarli qui: mlwhiz.com/blog/2015/08/19/MCMC_Algorithms_Beta_Distribution mlwhiz.com/blog/2015/08/21/MCMC_Algorithms_Cryptography
Rahul Agarwal

Fare riferimento al seguente repository in cui viene presentata una spiegazione dettagliata di MCMC. github.com/bashhwu/Sampling-based-inference/blob/master/…
Bashar Mohammad

Risposte:


223

Innanzitutto, dobbiamo capire cos'è una catena Markov. Considera il seguente esempio di tempo da Wikipedia. Supponiamo che il tempo in un dato giorno possa essere classificato solo in due stati: soleggiato e piovoso. Sulla base dell'esperienza passata, conosciamo quanto segue:

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

Poiché il tempo del giorno successivo è soleggiato o piovoso, ne consegue che:

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

Allo stesso modo, lasciamo:

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

Pertanto, ne consegue che:

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

I quattro numeri precedenti possono essere rappresentati in modo compatto come una matrice di transizione che rappresenta le probabilità che il tempo si sposti da uno stato a un altro stato come segue:

P=[SRS0.90.1R0.50.5]

Potremmo porre diverse domande le cui risposte seguono:


D1: Se il tempo oggi è soleggiato allora che tempo sarà domani?

A1: Dal momento che non sappiamo cosa accadrà di sicuro, la cosa migliore che possiamo dire è che esiste una probabilità del che sia probabile che sia soleggiato e del che pioverà.10 %90%10%


Q2: che dire circa due giorni da oggi?

A2: Previsione di un giorno: soleggiato,10 %90%10% piovoso. Pertanto, tra due giorni:

Il primo giorno può essere soleggiato e anche il giorno successivo può essere soleggiato. Le probabilità che ciò accada sono:0.9×0.9 .

O

Il primo giorno può essere piovoso e il secondo giorno può essere soleggiato. Le probabilità che ciò accada sono:0.1×0.5 .

Pertanto, la probabilità che il tempo sia soleggiato in due giorni è:

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

Allo stesso modo, la probabilità che pioverà è:

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


Nell'algebra lineare (matrici di transizione) questi calcoli corrispondono a tutte le permutazioni nelle transizioni da un passaggio al successivo (da soleggiato a soleggiato ( ), da soleggiato a piovoso ( ), da piovoso a soleggiato ( ) o rainy-to-rainy ( )) con le probabilità calcolate:S 2 R R 2 S R 2 RS2SS2RR2SR2R

inserisci qui la descrizione dell'immagine

Nella parte inferiore dell'immagine vediamo come calcolare la probabilità di uno stato futuro ( o ) date le probabilità (funzione di massa di probabilità, ) per ogni stato (soleggiato o piovoso) al tempo zero (ora ot + 2 P M F t 0t+1t+2PMFt0 ) come semplice moltiplicazione di matrici.

Se continuate previsioni meteo come questo si noterà che alla fine il previsioni esimo giorno, dove è molto grande (diciamo ), si deposita alle seguenti probabilità 'equilibrio':n 30nn30

P(Sunny)=0.833

e

P(Rainy)=0.167

In altre parole, le previsioni per l' -esimo giorno e l' giorno rimangono invariate. Inoltre, puoi anche verificare che le probabilità di "equilibrio" non dipendano dal tempo oggi. Otterresti le stesse previsioni per il tempo se inizi partendo dal presupposto che il tempo oggi è soleggiato o piovoso.n + 1nn+1

L'esempio sopra funzionerà solo se le probabilità di transizione dello stato soddisfano diverse condizioni che non discuterò qui. Tuttavia, nota le seguenti caratteristiche di questa "bella" catena di Markov (belle = le probabilità di transizione soddisfano le condizioni):

Indipendentemente dallo stato iniziale iniziale, alla fine raggiungeremo una distribuzione di probabilità di equilibrio degli stati.

Markov Chain Monte Carlo sfrutta la funzionalità di cui sopra come segue:

Vogliamo generare estrazioni casuali da una distribuzione target. Quindi identifichiamo un modo per costruire una "bella" catena di Markov in modo tale che la sua distribuzione di probabilità di equilibrio sia la nostra distribuzione target.

Se siamo in grado di costruire una catena del genere, partiamo arbitrariamente da qualche punto e ripetiamo la catena di Markov più volte (come il modo in cui prevediamo il tempo volte). Alla fine, i disegni che generiamo sembrerebbero provenire dalla nostra distribuzione target.n

Quindi approssimiamo le quantità di interesse (es. Media) prendendo la media campionaria delle estrazioni dopo aver scartato alcune estrazioni iniziali che è il componente Monte Carlo.

Esistono diversi modi per costruire catene di Markov "belle" (ad es. Campionatore Gibbs, algoritmo Metropolis-Hastings).


2
È una risposta ben scritta. Tuttavia, probabilmente perderebbe l'attenzione del laico nel punto in cui vengono discusse le matrici di transizione.
rraadd88,

1
Bella risposta. Penso che sarebbe utile spiegare prima (o in modo più dettagliato) il fatto che l'obiettivo finale è determinare una certa quantità di interesse (ad esempio la media o la modalità dei parametri dedotti). Questo è corretto vero?
Austin Shin,

101

Penso che ci sia un'intuizione piacevole e semplice da ottenere dall'algoritmo (catena di indipendenza) Metropolis-Hastings.

Innanzitutto, qual è l'obiettivo? L'obiettivo di MCMC è quello di prelevare campioni da una certa distribuzione di probabilità senza dover conoscere la sua altezza esatta in qualsiasi punto. Il modo in cui MCMC raggiunge questo obiettivo è "vagare" su quella distribuzione in modo tale che la quantità di tempo trascorso in ciascuna posizione sia proporzionale all'altezza della distribuzione. Se il processo "girovagare" è impostato correttamente, puoi assicurarti che questa proporzionalità (tra tempo impiegato e altezza della distribuzione) sia raggiunta.

Intuitivamente, ciò che vogliamo fare è camminare su una superficie (grumosa) in modo tale che la quantità di tempo che trascorriamo (o # campioni disegnati) in ciascuna posizione sia proporzionale all'altezza della superficie in quella posizione. Quindi, ad esempio, vorremmo trascorrere il doppio del tempo su una collina che si trova a un'altitudine di 100 metri rispetto a una collina vicina che si trova a un'altitudine di 50 metri. La cosa bella è che possiamo farlo anche se non conosciamo le altezze assolute dei punti in superficie: tutto ciò che dobbiamo sapere sono le altezze relative . ad esempio, se una collina A è due volte più alta della collina B, allora vorremmo trascorrere il doppio del tempo ad A rispetto a B.

La variante più semplice dell'algoritmo Metropolis-Hastings (campionamento della catena di indipendenza) raggiunge questo come segue: supponiamo che in ogni (discreto) intervallo temporale, scegliamo una nuova posizione "proposta" casuale (selezionata uniformemente su tutta la superficie). Se la posizione proposta è superiore a quella in cui ci troviamo ora, spostati su di essa. Se la posizione proposta è inferiore, spostati nella nuova posizione con probabilità p, dove p è il rapporto tra l'altezza di quel punto e l'altezza della posizione corrente. (ad esempio, lancia una moneta con una probabilità p di ottenere teste; se esce testa, spostati nella nuova posizione; se esce croce, rimani dove siamo). Tieni un elenco delle posizioni in cui ti trovavi ad ogni passaggio e quell'elenco avrà (asyptotically) la giusta proporzione di tempo trascorso in ogni parte della superficie.

Esistono schemi più complicati per proporre nuove posizioni e le regole per accettarle, ma l'idea di base è ancora: (1) scegliere una nuova posizione "proposta"; (2) capire quanto più in alto o più in basso tale posizione viene confrontata con la posizione corrente; (3) probabilmente posizionati o spostati in quella posizione in modo da rispettare l'obiettivo generale di trascorrere del tempo proporzionalmente all'altezza della posizione.

A cosa serve questo? Supponiamo di avere un modello probabilistico del tempo che ci permetta di valutare A * P (tempo), dove A è una costante sconosciuta. (Ciò accade spesso: molti modelli sono convenienti da formulare in modo tale da non poter determinare cos'è A). Quindi non possiamo valutare esattamente P ("pioggia domani"). Tuttavia, possiamo eseguire il campionatore MCMC per un po 'e poi chiedere: quale frazione dei campioni (o "posizioni") è finita nello stato "pioggia domani". Quella frazione sarà la previsione probabilistica (basata sul modello).


6
+1. Secondo me, il "girovagare" è l'analogia più intuitiva tra quelle elencate in questa pagina.
Zhubarb,

"senza dover conoscere la sua altezza esatta in nessun punto" Questa non è la restrizione fondamentale di MCMC.
JeremyKun,

Vorrei che questa spiegazione fosse contenuta nei libri di testo in modo da non dover dedicare molto tempo a sbattere la testa per capire cosa sta facendo MH.
lun

89

Probabilmente direi qualcosa del genere:

"Ogni volta che vogliamo parlare di probabilità, stiamo davvero integrando una densità. Nell'analisi bayesiana, molte delle densità che ci vengono in mente non sono tracciabili analiticamente: puoi integrarle solo se riesci a integrarle del tutto - con molta sofferenza. Quindi, ciò che facciamo è simulare molto la variabile casuale e quindi capire le probabilità dai nostri numeri casuali simulati. Se vogliamo sapere la probabilità che X sia inferiore a 10, contiamo il la percentuale di variabili casuali simulate risulta inferiore a 10 e la utilizza come nostra stima. Questa è la parte "Monte Carlo", è una stima della probabilità basata su numeri casuali. Con abbastanza numeri casuali simulati, la stima è molto buona, ma è ancora intrinsecamente casuale.

"Allora perché" Markov Chain "? Perché in determinate condizioni tecniche, è possibile generare un processo senza memoria (noto anche come Markoviano) che ha la stessa distribuzione limitante della variabile casuale che si sta tentando di simulare. numero di diversi tipi di processi di simulazione che generano numeri casuali correlati (basato solo sul valore corrente di quei numeri) e hai la garanzia che, una volta raggruppati abbastanza risultati, finirai con un mucchio di numeri che sembrano " come se "tu fossi riuscito in qualche modo a prelevare campioni indipendenti dalla complicata distribuzione che volevi conoscere.

"Ad esempio, se voglio stimare la probabilità che una variabile casuale normale standard sia inferiore a 0,5, potrei generare diecimila realizzazioni indipendenti da una distribuzione normale standard e contare il numero inferiore a 0,5; supponiamo di avere 6905 che erano meno di 0,5 su 10000 campioni totali, la mia stima per P (Z <0,5) sarebbe 0,6905, che non è molto lontana dal valore reale. Sarebbe una stima di Monte Carlo.

l'elenco dei numeri che ottengo dalla procedura verrà distribuito come un gran numero di estrazioni da qualcosa che genera normali variabili casuali. Questo mi darebbe una simulazione Monte Carlo Chain Monte Carlo per una normale variabile casuale standard. Se lo usassi per stimare le probabilità, sarebbe una stima MCMC. "


7
Questa è una buona spiegazione, ma non per un laico non tecnico. Sospetto che l'OP volesse sapere come spiegarlo, diciamo, all'MBA che ti ha assunto per fare delle analisi statistiche! Come descriveresti MCMC a qualcuno che, nella migliore delle ipotesi, capisce il concetto di deviazione standard (la varianza, tuttavia, potrebbe essere troppo astratta)?
Harlan,

10
@Harlan: è una linea dura da cavalcare; se qualcuno non sa almeno cosa sia una variabile casuale, perché potremmo voler stimare le probabilità e avere un'idea vaga di una funzione di densità, allora non penso che sia possibile spiegare in modo significativo come o perché di MCMC per loro, solo il "cosa", che in questo caso si ridurrebbe a "è un modo di risolvere numericamente un problema altrimenti impossibile mediante simulazione, come lanciare una moneta molto per stimare la probabilità che atterra sulle teste".
Rich

1
+1 per l'ultimo paragrafo. Con un minimo di tecnicismi trasmette bene l'idea.
whuber

Bella spiegazione. Penso che questo sia ottimo per una persona non tecnica.
SmallChess,

Dubbio - Nell'ultimo paragrafo, perché l'elenco dei numeri sembra provenire da una distribuzione normale? È a causa del teorema del limite centrale? Inoltre, se volessimo simulare qualche altra distribuzione?
Manoj Kumar,

37

Immagina di voler trovare una strategia migliore per battere i tuoi amici nel gioco da tavolo Monopoly. Semplifica le cose che contano nel gioco alla domanda: su quali proprietà approdano maggiormente le persone? La risposta dipende dalla struttura del tabellone, dalle regole del gioco e dai tiri di due dadi.

Un modo per rispondere alla domanda è questo. Segui un singolo pezzo attorno al tabellone mentre lanci i dadi e segui le regole. Conta quante volte atterri su ciascuna proprietà (o programma un computer per fare il lavoro per te). Alla fine, se hai abbastanza pazienza o hai programmato le regole abbastanza bene nel tuo computer, costruirai una buona immagine di quali proprietà ottengono più affari. Questo dovrebbe aiutarti a vincere più spesso.

Quello che hai fatto è un'analisi di Markov Chain Monte Carlo (MCMC). La scheda definisce le regole. La destinazione successiva dipende solo da dove ti trovi adesso, non da dove sei stato prima e le probabilità specifiche sono determinate dalla distribuzione dei tiri di due dadi. MCMC è l'applicazione di questa idea a sistemi matematici o fisici come quello che sarà il tempo di domani o dove finirà un granello di polline che viene casualmente schiacciato da molecole di gas.


1
La spiegazione sembra una semplice simulazione Monte Carlo, ma per quanto riguarda Markov Chain? In che modo Markov Chain è legato a questa simulazione Monte Carlo?
Emran Hussain,

La risposta di @Emran Graham Cookson sembra spiegare già una connessione tra le catene di Monopoli e Markov.
Glen_b,

Il monopolio può essere modellato come una catena di Markov in cui ogni proprietà / spazio è un nodo / stato. Quando ti trovi in ​​uno spazio particolare, hai varie probabilità di spostarti nei prossimi 12 spazi (se usi 2 dadi): questi sono i bordi / connessioni nella catena di Markov. È facile capire la probabilità di ogni fronte / connessione: gwydir.demon.co.uk/jo/probability/calcdice.htm#sum

32

OK, ecco il mio miglior tentativo di spiegazione informale e volgare.

Una catena di Markov è un processo casuale che ha la proprietà che il futuro dipende solo dallo stato attuale del processo e non dal passato, ovvero è privo di memoria. Un esempio di un processo casuale potrebbe essere la borsa. Un esempio di una catena di Markov sarebbe un gioco da tavolo come Monopoli o Serpenti e scale dove la tua posizione futura (dopo aver tirato il dado) dipenderà solo da dove sei partito prima del tiro, non da nessuna delle tue posizioni precedenti. Un esempio da manuale di una catena di Markov è la "passeggiata degli ubriachi". Immagina qualcuno che è ubriaco e può muoversi solo a sinistra o a destra di un ritmo. L'ubriaco si sposta a sinistra o a destra con uguale probabilità. Questa è una catena di Markov in cui la posizione futura / successiva dell'ubriaco dipende solo da dove si trova attualmente.

I metodi Monte Carlo sono algoritmi computazionali (semplicemente insiemi di istruzioni) che campionano casualmente da alcuni processi in fase di studio. Sono un modo per stimare qualcosa che è troppo difficile o richiede tempo per trovare in modo deterministico. Sono fondamentalmente una forma di simulazione al computer di alcuni processi matematici o fisici. Il moniker Monte Carlo nasce dall'analogia tra un casinò e la generazione di numeri casuali. Tornando al nostro esempio di gioco da tavolo in precedenza, forse vogliamo sapere se alcune proprietà sulla scheda Monopoli vengono visitate più spesso di altre. Un esperimento di Monte Carlo implicherebbe il lancio ripetuto dei dadi e il conteggio del numero di volte in cui atterri su ciascuna proprietà. Può anche essere utilizzato per il calcolo di integrali numerici. (In modo molto informale, possiamo pensare a un integrale come l'area sotto il grafico di alcune funzioni. ) L'integrazione di Monte Carlo funziona alla grande su funzioni ad alta dimensione prendendo un campione casuale di punti della funzione e calcolando un tipo di media in questi vari punti. Aumentando la dimensione del campione, la legge dei grandi numeri ci dice che possiamo aumentare la precisione della nostra approssimazione coprendo sempre più la funzione.

Questi due concetti possono essere messi insieme per risolvere alcuni problemi difficili in settori come l'inferenza bayesiana, la biologia computazionale, ecc. In cui è necessario calcolare integrali multidimensionali per risolvere problemi comuni. L'idea è quella di costruire una catena di Markov che converge alla distribuzione di probabilità desiderata dopo una serie di passaggi. Lo stato della catena dopo un gran numero di passaggi viene quindi utilizzato come campione dalla distribuzione desiderata e il processo viene ripetuto. Esistono molti algoritmi MCMC diversi che utilizzano tecniche diverse per generare la catena di Markov. Quelli comuni includono il Metropolis-Hastings e il Gibbs Sampler.


1
Una buona spiegazione davvero. Solo una confusione non viene cancellata. Come hai detto, "l'idea è quella di costruire una catena di Markov che converge alla desiderata distribuzione di probabilità". Sembra che conosciamo già la distribuzione di probabilità dello stato statico per gli stati, quindi perché dovremmo costruire una catena markov. Lo scopo della catena Markov è di fornirci la distribuzione dello stato stazionario, che già abbiamo in primo luogo, non è vero? A meno che tu non intendessi, ottenere una catena di Markov è ancora necessario per calcolare la probabilità dello stato di n + 1 in base allo stato corrente.
Emran Hussain,

16

Estratto dai metodi bayesiani per gli hacker

Il paesaggio bayesiano

NNp1p2

Exp(3)Exp(10)

La seguente visualizzazione lo dimostra. Più rosso scuro è il colore, maggiore è la probabilità che gli incogniti si trovino in quella posizione. Al contrario, le aree con un blu più scuro indicano che i nostri priori assegnano una probabilità molto bassa agli sconosciuti presenti.

inserisci qui la descrizione dell'immagine

Questi sono semplici esempi nello spazio 2D, in cui il nostro cervello è in grado di comprendere bene le superfici. In pratica, gli spazi e le superfici generati dai nostri priori possono avere dimensioni molto più elevate.

XXspinge verso l' alto la superficie originale per creare alte montagne . La quantità di push upè resistito dalla probabilità precedente, in modo che meno probabilità precedente significhi più resistenza. Pertanto, nel doppio caso precedente esponenziale precedente, una montagna (o più montagne) che potrebbe esplodere vicino all'angolo (0,0) sarebbe molto più alta delle montagne che esplodono più vicino a (5,5), poiché c'è più resistenza vicino (5,5). La montagna, o forse più in generale, le catene montuose, riflettono la probabilità posteriore di dove è possibile trovare i veri parametri.

λ

inserisci qui la descrizione dell'immagine

Uniform(0,5)

Il punto nero rappresenta i parametri reali. Anche con 1 punto campione, come è stato simulato sopra, le montagne tentano di contenere il parametro vero. Naturalmente, l'inferenza con una dimensione del campione di 1 è incredibilmente ingenua e la scelta di una dimensione del campione così piccola era solo illustrativa.

Esplorare il paesaggio usando MCMC

NNN campionidalla distribuzione posteriore, non dalla distribuzione stessa. Allungando al massimo la nostra analogia montuosa, MCMC svolge un compito simile a quello di chiedere ripetutamente "Quanto è probabile che questo ciottolo che ho trovato provenga dalla montagna che sto cercando?", E completa il suo compito restituendo migliaia di ciottoli accettati nella speranza di ricostruire la montagna originale. Nel gergo MCMC e PyMC, la sequenza restituita di "ciottoli" sono i campioni, più spesso chiamati tracce .

Quando dico che MCMC cerca in modo intelligente, intendo che MCMC converrà verso le aree ad alta probabilità posteriore. MCMC lo fa esplorando posizioni vicine e spostandosi in aree con maggiore probabilità. Ancora una volta, forse "convergere" non è un termine preciso per descrivere la progressione di MCMC. La convergenza di solito implica lo spostamento verso un punto nello spazio, ma MCMC si sposta verso un'area più ampia nello spazio e cammina casualmente in quell'area, raccogliendo campioni da quell'area.

Inizialmente, la restituzione di migliaia di campioni all'utente potrebbe sembrare un modo inefficace per descrivere le distribuzioni posteriori. Direi che questo è estremamente efficiente. Considera le possibilità alternative:

  1. Restituire una formula matematica per le "catene montuose" implicherebbe la descrizione di una superficie N-dimensionale con picchi e valli arbitrari.
  2. Restituire il "picco" del paesaggio, sebbene matematicamente possibile e una cosa sensata da fare in quanto il punto più alto corrisponde alla stima più probabile degli incogniti, ignora la forma del paesaggio, che abbiamo precedentemente sostenuto è molto importante nel determinare la fiducia posteriore in incognite.

Oltre alle ragioni computazionali, probabilmente la ragione più forte per la restituzione dei campioni è che possiamo facilmente usare La legge dei grandi numeri per risolvere problemi altrimenti intrattabili. Rinvio questa discussione per il prossimo capitolo.

Algoritmi per eseguire MCMC

Esiste una vasta famiglia di algoritmi che eseguono MCMC. Più semplicemente, la maggior parte degli algoritmi può essere espressa ad un livello elevato come segue:

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.

In questo modo ci spostiamo nella direzione generale verso le regioni in cui esistono le distribuzioni posteriori e raccogliamo i campioni con parsimonia durante il viaggio. Una volta raggiunta la distribuzione posteriore, possiamo facilmente raccogliere campioni poiché probabilmente appartengono tutti alla distribuzione posteriore.

Se la posizione corrente dell'algoritmo MCMC si trova in un'area di probabilità estremamente bassa, come spesso accade quando l'algoritmo inizia (in genere in una posizione casuale nello spazio), l'algoritmo si sposterà in posizioni che probabilmente non sono posteriori ma meglio di tutto il resto nelle vicinanze. Pertanto, i primi movimenti dell'algoritmo non riflettono il posteriore.


2
Capisco che il problema era legato in particolare a MCMC e non all'inferenza bayesiana, ma nel contesto dei paesaggi bayesiani trovo MCMC molto comprensibile.
Cam.Davidson.Pilon

10

Quindi ci sono molte risposte qui parafrasate da libri di statistica / probabilità, Wikipedia, ecc. Credo che abbiamo "laici" dove lavoro; Penso che siano nel reparto marketing. Se mai dovessi spiegare loro qualcosa di tecnico, applico la regola "mostra non dire". Con questa regola in mente, probabilmente mostrerei loro qualcosa del genere.

L'idea qui è quella di provare a codificare un algoritmo che posso insegnare a sillabare, non imparando tutte le centinaia (migliaia?) Di regole come Quando si aggiunge una fine a una parola che termina con una e silenziosa, rilasciare la e finale se il finale inizia con una vocale . Un motivo che non funzionerà è che non conosco quelle regole (non sono nemmeno sicuro che quello che ho appena recitato sia corretto). Invece ho intenzione di insegnargli a fare lo spelling mostrandogli un mucchio di parole scritte correttamente e lasciandolo estrarre le regole da quelle parole, che è più o meno l'essenza di Machine Learning, indipendentemente dall'algoritmo: estrazione dei pattern e riconoscimento dei pattern .

Il criterio di successo consiste nel pronunciare correttamente una parola che l'algoritmo non ha mai visto prima (mi rendo conto che può succedere per puro caso, ma ciò non accadrà ai ragazzi del marketing, quindi ignorerò - inoltre avrò l'algoritmo prova a scrivere non una parola, ma molto, quindi non è probabile che verremo ingannati da alcune ipotesi fortunate).

Circa un'ora fa ho scaricato (come un semplice file di testo) dall'eccellente Project Gutenberg Site, il romanzo di Herman Hesse Siddhartha . Userò le parole di questo romanzo per insegnare all'algoritmo come si scrive.

Così ho codificato l'algoritmo di seguito che ha scannerizzato questo romanzo, tre lettere alla volta (ogni parola ha un carattere aggiuntivo alla fine, che è "spazio bianco", o la fine della parola). Le sequenze di tre lettere possono dirti molto - per esempio, la lettera 'q' è quasi sempre seguita da 'u'; la sequenza "ty" di solito si verifica alla fine di una parola; z lo fa raramente, e così via. (Nota: avrei potuto facilmente fornirgli parole intere per addestrarlo a parlare in frasi complete - esattamente la stessa idea, solo alcune modifiche al codice.)

Niente di tutto ciò riguarda MCMC, ciò accade dopo l'allenamento, quando diamo all'algoritmo alcune lettere casuali (come seme) e inizia a formare "parole". In che modo l'algoritmo costruisce le parole? Immagina che abbia il blocco 'qua'; quale lettera aggiunge dopo? Durante l'addestramento, l'algoritmo ha creato un'enorme matrice di frequenza a sequenza etter * da tutte le migliaia di parole del romanzo. Da qualche parte in quella matrice c'è il blocco di tre lettere "qua" e le frequenze per i personaggi che potrebbero seguire la sequenza. L'algoritmo seleziona una lettera in base a quelle frequenze che potrebbero seguirla. Quindi la lettera che l'algoritmo seleziona successivamente dipende - e unicamente da - gli ultimi tre nella sua coda di costruzione delle parole.

Quindi questo è un algoritmo Markov Chain Monte Carlo.

Penso che forse il modo migliore per illustrare come funziona sia mostrare i risultati in base a diversi livelli di allenamento. Il livello di addestramento varia variando il numero di passaggi che l'algoritmo compie attraverso il romanzo: più passaggi passa, maggiore è la fedeltà delle sue matrici di frequenza in sequenza di lettere. Di seguito sono riportati i risultati - sotto forma di stringhe di 100 caratteri emessi dall'algoritmo - dopo l'allenamento sul romanzo "Siddharta".


Un singolo passaggio attraverso il romanzo, Siddhartha :

allora chi urla ger vaga tutta la mothany stand tu livido il cuore confuso sull'intione

(Immediatamente, si è imparato a parlare gallese quasi perfetto; non me l'aspettavo.)


Dopo due passaggi nel romanzo:

lo spettacolo di Wens Wens Prenskinith è stato visto per due volte il teatro in evidenza che frantumava la terra era l'ov lì


Dopo 10 passaggi:

nonostante, ma dovrebbe pregare con ack ora ha l'acqua, il suo cane fa leva sul dolore ai piedi e non sul debole ricordo


Ed ecco il codice (in Python, sono quasi certo che questo potrebbe essere fatto in R usando un pacchetto MCMC, di cui ce ne sono diversi, in sole 3-4 righe)

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
Hai creato un modello Markov per l'ortografia in inglese e adattato ai dati. Ma il campionamento dal modello montato non è MCMC. (Qual è la "distribuzione desiderata" da cui proviene? Chiaramente, non la distribuzione su "parole scritte correttamente in inglese", poiché il modello fa ancora errori dopo l'allenamento). Non intendo criticare l'esercizio; è una bella dimostrazione di un modello di catena Markov per il linguaggio. Ma l'idea chiave di MCMC è progettare una catena di Markov in modo che la sua distribuzione di equilibrio corrisponda a una qualche distribuzione che hai in mente, e non è ovvio che ciò ottenga ciò.
jpillow,

2

L'MCMC viene in genere utilizzato come alternativa alle tecniche di simulazione del Monte Carlo grezzo. Sia la MCMC che le altre tecniche Monte Carlo sono utilizzate per valutare integrali difficili, ma MCMC può essere usato più in generale.

Ad esempio, un problema comune nelle statistiche è calcolare l'esito medio relativo ad alcuni modelli probabilistici / stocastici. Entrambe le tecniche MCMC e Monte Carlo risolverebbero questo problema generando una sequenza di risultati simulati che potremmo usare per stimare la media reale.

Entrambe le tecniche MCMC e il greggio Monte Carlo funzionano in quanto la proporzione di simulazioni a lungo termine pari a un determinato risultato sarà uguale * alla probabilità modellata di tale risultato. Pertanto, generando abbastanza simulazioni, i risultati prodotti da entrambi i metodi saranno accurati.

* Dico uguale, anche se in generale dovrei parlare di set misurabili. Un profano, tuttavia, probabilmente non sarebbe interessato a questo *

Tuttavia, mentre il Monte Carlo grezzo comporta la produzione di molte simulazioni indipendenti, ognuna delle quali è distribuita secondo la distribuzione modellata, MCMC comporta la generazione di una camminata casuale che nel lungo periodo "visita" ogni risultato con la frequenza desiderata.

Il trucco per MCMC, quindi, è scegliere una passeggiata casuale che "visiterà" ogni risultato con le frequenze desiderate di lungo periodo.

Un semplice esempio potrebbe essere quello di simulare da un modello che dice che la probabilità del risultato "A" è 0,5 e del risultato "B" è 0,5. In questo caso, se avessi iniziato la camminata casuale in posizione "A" e avessi prescritto che in ogni passaggio passasse all'altra posizione con probabilità 0,2 (o qualsiasi altra probabilità maggiore di 0), potrei essere sicuro che dopo un numero di passi che la camminata casuale avrebbe visitato ciascuno di "A" e "B" in circa il 50% dei passi, coerentemente con le probabilità prescritte dal nostro modello.

Questo è ovviamente un esempio molto noioso. Tuttavia, risulta che MCMC è spesso applicabile in situazioni in cui è difficile applicare Monte Carlo standard o altre tecniche.

Puoi trovare un articolo che copre le basi di cosa è e perché funziona qui:

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


Stiamo cercando di creare un archivio permanente di informazioni statistiche di alta qualità sotto forma di domande e risposte. Cerchiamo di evitare le risposte solo link che sono soggette a link-rot; in quanto tale, si tratta più di un commento che di una risposta a sé stante. Se sei in grado, potresti espanderlo, magari fornendo un riepilogo delle informazioni al link (o potremmo convertirlo in un commento per te).
Glen_b,

1

Sono un analista del DNA che utilizza un software di genotipizzazione probabilistica completamente continuo per interpretare le prove del DNA e devo spiegare come funziona a una giuria. Certo, semplifichiamo eccessivamente e mi rendo conto di questo oltre alla semplificazione, sacrificando l'accuratezza di dettagli specifici in nome del miglioramento della comprensione generale. Ma, nel contesto di una giuria che comprende come questo processo viene utilizzato nell'interpretazione del DNA senza titoli accademici e anni di esperienza professionale, ottengono l'essenza :)

Contesto: il software utilizza la metropoli Hastings MCMC e un modello biologico che imita il comportamento noto dei profili del DNA (il modello è costruito sulla base di dati di validazione generati dal laboratorio analizzando molti profili del DNA da condizioni note che rappresentano l'intervallo riscontrato nel caso sconosciuto). Esistono 8 catene indipendenti e valutiamo la convergenza per determinare se eseguire nuovamente l'esecuzione aumentando il burn in e il post accetta (il burnin predefinito 100k accetta e il post 400k accetta)

Quando viene chiesto dall'accusa / difesa su MCMC: spieghiamo che sta per markov chain Monte Carlo e rappresenta una classe / tipo speciale di algoritmo utilizzato per la risoluzione di problemi complessi e che un algoritmo è solo una parola di fantasia che si riferisce a una serie di procedure o routine eseguito da un computer ... Gli algoritmi mcmc funzionano proponendo una soluzione, simulando quella soluzione, quindi valutando quanto bene quella simulazione rispecchi i dati delle prove reali osservati ... una simulazione che si adatta bene all'osservazione delle prove ha una probabilità maggiore di una simulazione che non si adatta bene all'osservazione ... su molti campionamenti / ipotesi ripetute delle soluzioni proposte, le catene di Markov si allontanano dalle soluzioni a bassa probabilità verso le soluzioni ad alta probabilità che meglio si adattano / spiegano il profilo delle prove osservate, fino a quando l'equilibrio non è raggiunto,ciò significa che l'algoritmo ha una capacità limitata di campionare nuove proposte con probabilità significativamente maggiori

Alla domanda sulla metropoli Hastings: spieghiamo che è un perfezionamento dell'algoritmo MCMC che descrive il suo processo decisionale che accetta o rifiuta una proposta ... di solito questo è spiegato con un'analogia del gioco per bambini "caldo / freddo", ma potrei aver considerato di usare " scorrere verso destra o sinistra "quando la giuria è particolarmente giovane !! : p Ma usando la nostra analogia caldo / freddo, accettiamo sempre un'ipotesi calda e occasionalmente accettiamo un'ipotesi fredda per una frazione del tempo e spieghiamo che lo scopo di accettare a volte l'ipotesi fredda è garantire che le catene campionino una gamma più ampia di possibilità come al contrario di rimanere bloccati attorno a una proposta particolare prima dell'equilibrio reale

Modificato per aggiungere / chiarire: con l'analogia caldo / freddo spieghiamo che nel gioco dei bambini, il leader sceglie un oggetto / area bersaglio all'interno della stanza e i giocatori si alternano facendo ipotesi su quale direzione muoversi rispetto alla loro posizione / posizione attuale. Il leader dice loro di cambiare posizione / fare la mossa se è un'ipotesi a caldo e perdono il turno / rimangono in posizione se è un'ipotesi fredda. Allo stesso modo, all'interno del nostro software, la decisione di spostare / accettare dipende solo dalla probabilità della proposta rispetto alla probabilità della posizione attualmente detenuta ... TUTTAVIA, l'obiettivo è predefinito / conosciuto dal leader nel gioco per bambini mentre il target all'interno del nostro software non è predefinito - è completamente sconosciuto (anche perché

Come ho detto, super super basilare e assolutamente privo di dettagli tecnici per migliorare la comprensione - ci sforziamo di spiegare a un livello di istruzione della scuola media. Sentiti libero di dare suggerimenti. Li incorporerò.


0

Questa domanda è ampia ma le risposte sono spesso piuttosto casuali. In alternativa, puoi vedere questo documento che fornisce una descrizione matematica concisa di un'ampia classe di algoritmi MCMC tra cui algoritmi di Metropolis-Hastings, campionamento di Gibbs, Metropolis-entro-Gibbs e metodi di variabili ausiliarie, campionamento di sezioni, proposte ricorsive, campionamento direzionale, Langevin e Monte Carlo Hamiltoniano, campionamento NUTS, algoritmi pseudo-marginali di Metropolis-Hastings e Monte Carlo Hamiltoniano pseudo-marginale, come discusso dagli autori.

Una recensione credibile è data qui

Troverò più tempo per elaborarne il contenuto nel formato di stackexchange.


0

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

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

Questo video (a partire dalle 5:50) ha un'ottima intuizione.

Immagina di voler campionare punti che si trovano sui rami verdi (multidimensionali) in questa immagine. Se lanci punti in tutto il super-spazio nero e ne controlli il valore, stai sprecando molto campionando (cercando) energia. Quindi avrebbe più senso controllare la tua strategia di campionamento (che può essere automatizzata) per raccogliere punti più vicini ai rami verdi (dove conta). I rami verdi possono essere trovati colpiti una volta accidentalmente (o controllati), e il resto dello sforzo di campionamento (punti rossi) verrà generato in seguito. Il motivo per cui il rosso viene attratto dalla linea verde è dovuto alla matrice di transizione della catena Markov che funziona come motore di campionamento.

Quindi, in parole povere, MCMC è un metodo di campionamento a basso consumo (a basso costo), specialmente quando si lavora in uno spazio enorme e "oscuro" (multidimensionale).

inserisci qui la descrizione dell'immagine


1
Penso che abbiamo una diversa definizione di "laico"
Neil McGuigan,

Hahaha. Posso aggiungere anche il Monte-Carlo per un "laico", ma il campionamento / Monte-Carlo non era una domanda.
Amir,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.